@lodestar/state-transition 1.40.0 → 1.41.0-dev.0087e7a664
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/block/externalData.d.ts +2 -1
- package/lib/block/externalData.d.ts.map +1 -1
- package/lib/block/externalData.js +2 -0
- package/lib/block/externalData.js.map +1 -1
- package/lib/block/index.d.ts +3 -3
- package/lib/block/isValidIndexedAttestation.d.ts +3 -3
- package/lib/block/isValidIndexedAttestation.d.ts.map +1 -1
- package/lib/block/isValidIndexedAttestation.js +4 -4
- package/lib/block/isValidIndexedAttestation.js.map +1 -1
- package/lib/block/isValidIndexedPayloadAttestation.js +1 -1
- package/lib/block/isValidIndexedPayloadAttestation.js.map +1 -1
- package/lib/block/processAttestationPhase0.js +1 -1
- package/lib/block/processAttestationPhase0.js.map +1 -1
- package/lib/block/processAttestationsAltair.js +1 -1
- package/lib/block/processAttestationsAltair.js.map +1 -1
- package/lib/block/processAttesterSlashing.d.ts +2 -2
- package/lib/block/processAttesterSlashing.d.ts.map +1 -1
- package/lib/block/processAttesterSlashing.js +3 -3
- package/lib/block/processAttesterSlashing.js.map +1 -1
- package/lib/block/processDepositRequest.d.ts +1 -1
- package/lib/block/processDepositRequest.d.ts.map +1 -1
- package/lib/block/processDepositRequest.js +6 -5
- package/lib/block/processDepositRequest.js.map +1 -1
- package/lib/block/processExecutionPayloadBid.d.ts +1 -1
- package/lib/block/processExecutionPayloadBid.d.ts.map +1 -1
- package/lib/block/processExecutionPayloadBid.js +5 -0
- package/lib/block/processExecutionPayloadBid.js.map +1 -1
- package/lib/block/processExecutionPayloadEnvelope.d.ts +5 -2
- package/lib/block/processExecutionPayloadEnvelope.d.ts.map +1 -1
- package/lib/block/processExecutionPayloadEnvelope.js +25 -24
- package/lib/block/processExecutionPayloadEnvelope.js.map +1 -1
- package/lib/block/processPayloadAttestation.d.ts +1 -1
- package/lib/block/processProposerSlashing.d.ts +2 -2
- package/lib/block/processProposerSlashing.d.ts.map +1 -1
- package/lib/block/processProposerSlashing.js +3 -3
- package/lib/block/processProposerSlashing.js.map +1 -1
- package/lib/block/processRandao.js +1 -1
- package/lib/block/processRandao.js.map +1 -1
- package/lib/block/processSyncCommittee.js +1 -1
- package/lib/block/processSyncCommittee.js.map +1 -1
- package/lib/block/processVoluntaryExit.js +1 -1
- package/lib/block/processVoluntaryExit.js.map +1 -1
- package/lib/block/processWithdrawalRequest.js +2 -2
- package/lib/block/processWithdrawalRequest.js.map +1 -1
- package/lib/block/processWithdrawals.d.ts.map +1 -1
- package/lib/block/processWithdrawals.js +9 -1
- package/lib/block/processWithdrawals.js.map +1 -1
- package/lib/cache/epochCache.d.ts +11 -18
- package/lib/cache/epochCache.d.ts.map +1 -1
- package/lib/cache/epochCache.js +41 -40
- package/lib/cache/epochCache.js.map +1 -1
- package/lib/cache/pubkeyCache.d.ts +21 -6
- package/lib/cache/pubkeyCache.d.ts.map +1 -1
- package/lib/cache/pubkeyCache.js +39 -14
- package/lib/cache/pubkeyCache.js.map +1 -1
- package/lib/cache/stateCache.d.ts +1 -1
- package/lib/cache/stateCache.d.ts.map +1 -1
- package/lib/cache/stateCache.js +3 -7
- package/lib/cache/stateCache.js.map +1 -1
- package/lib/cache/syncCommitteeCache.d.ts +3 -2
- package/lib/cache/syncCommitteeCache.d.ts.map +1 -1
- package/lib/cache/syncCommitteeCache.js +4 -4
- package/lib/cache/syncCommitteeCache.js.map +1 -1
- package/lib/epoch/index.d.ts +1 -1
- package/lib/epoch/processBuilderPendingPayments.d.ts +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/lightClient/proofs.d.ts +10 -0
- package/lib/lightClient/proofs.d.ts.map +1 -0
- package/lib/lightClient/proofs.js +63 -0
- package/lib/lightClient/proofs.js.map +1 -0
- package/lib/lightClient/types.d.ts +34 -0
- package/lib/lightClient/types.d.ts.map +1 -0
- package/lib/lightClient/types.js +2 -0
- package/lib/lightClient/types.js.map +1 -0
- package/lib/rewards/attestationsRewards.d.ts +2 -2
- package/lib/rewards/attestationsRewards.d.ts.map +1 -1
- package/lib/rewards/attestationsRewards.js +4 -4
- package/lib/rewards/attestationsRewards.js.map +1 -1
- package/lib/rewards/syncCommitteeRewards.d.ts +2 -2
- package/lib/rewards/syncCommitteeRewards.d.ts.map +1 -1
- package/lib/rewards/syncCommitteeRewards.js +5 -2
- package/lib/rewards/syncCommitteeRewards.js.map +1 -1
- package/lib/signatureSets/indexedPayloadAttestation.d.ts +3 -4
- package/lib/signatureSets/indexedPayloadAttestation.d.ts.map +1 -1
- package/lib/signatureSets/indexedPayloadAttestation.js +4 -4
- package/lib/signatureSets/indexedPayloadAttestation.js.map +1 -1
- package/lib/signatureSets/proposer.d.ts +2 -2
- package/lib/signatureSets/proposer.d.ts.map +1 -1
- package/lib/signatureSets/proposer.js +2 -2
- package/lib/signatureSets/proposer.js.map +1 -1
- package/lib/signatureSets/randao.d.ts +2 -2
- package/lib/signatureSets/randao.d.ts.map +1 -1
- package/lib/signatureSets/randao.js +2 -2
- package/lib/signatureSets/randao.js.map +1 -1
- package/lib/signatureSets/voluntaryExits.d.ts +2 -2
- package/lib/signatureSets/voluntaryExits.d.ts.map +1 -1
- package/lib/signatureSets/voluntaryExits.js +2 -2
- package/lib/signatureSets/voluntaryExits.js.map +1 -1
- package/lib/slot/upgradeStateToGloas.d.ts.map +1 -1
- package/lib/slot/upgradeStateToGloas.js +50 -0
- package/lib/slot/upgradeStateToGloas.js.map +1 -1
- package/lib/stateTransition.d.ts +2 -1
- package/lib/stateTransition.d.ts.map +1 -1
- package/lib/stateTransition.js +2 -1
- package/lib/stateTransition.js.map +1 -1
- package/lib/stateView/beaconStateView.d.ts +144 -0
- package/lib/stateView/beaconStateView.d.ts.map +1 -0
- package/lib/stateView/beaconStateView.js +496 -0
- package/lib/stateView/beaconStateView.js.map +1 -0
- package/lib/stateView/index.d.ts +3 -0
- package/lib/stateView/index.d.ts.map +1 -0
- package/lib/stateView/index.js +3 -0
- package/lib/stateView/index.js.map +1 -0
- package/lib/stateView/interface.d.ts +118 -0
- package/lib/stateView/interface.d.ts.map +1 -0
- package/lib/stateView/interface.js +2 -0
- package/lib/stateView/interface.js.map +1 -0
- package/lib/testUtils/cache.d.ts +2 -0
- package/lib/testUtils/cache.d.ts.map +1 -0
- package/lib/testUtils/cache.js +7 -0
- package/lib/testUtils/cache.js.map +1 -0
- package/lib/testUtils/index.d.ts +6 -0
- package/lib/testUtils/index.d.ts.map +1 -0
- package/lib/testUtils/index.js +6 -0
- package/lib/testUtils/index.js.map +1 -0
- package/lib/testUtils/infura.d.ts +3 -0
- package/lib/testUtils/infura.d.ts.map +1 -0
- package/lib/testUtils/infura.js +8 -0
- package/lib/testUtils/infura.js.map +1 -0
- package/lib/testUtils/interop.d.ts +2 -0
- package/lib/testUtils/interop.d.ts.map +1 -0
- package/lib/testUtils/interop.js +24 -0
- package/lib/testUtils/interop.js.map +1 -0
- package/lib/testUtils/params.d.ts +18 -0
- package/lib/testUtils/params.d.ts.map +1 -0
- package/lib/testUtils/params.js +20 -0
- package/lib/testUtils/params.js.map +1 -0
- package/lib/testUtils/state.d.ts +20 -0
- package/lib/testUtils/state.d.ts.map +1 -0
- package/lib/testUtils/state.js +78 -0
- package/lib/testUtils/state.js.map +1 -0
- package/lib/testUtils/testFileCache.d.ts +17 -0
- package/lib/testUtils/testFileCache.d.ts.map +1 -0
- package/lib/testUtils/testFileCache.js +96 -0
- package/lib/testUtils/testFileCache.js.map +1 -0
- package/lib/testUtils/util.d.ts +50 -0
- package/lib/testUtils/util.d.ts.map +1 -0
- package/lib/testUtils/util.js +329 -0
- package/lib/testUtils/util.js.map +1 -0
- package/lib/util/gloas.d.ts.map +1 -1
- package/lib/util/gloas.js +10 -3
- package/lib/util/gloas.js.map +1 -1
- package/lib/util/seed.d.ts +20 -12
- package/lib/util/seed.d.ts.map +1 -1
- package/lib/util/seed.js +80 -72
- package/lib/util/seed.js.map +1 -1
- package/lib/util/signatureSets.d.ts +7 -7
- package/lib/util/signatureSets.d.ts.map +1 -1
- package/lib/util/signatureSets.js +18 -12
- package/lib/util/signatureSets.js.map +1 -1
- package/lib/util/weakSubjectivity.js +1 -1
- package/lib/util/weakSubjectivity.js.map +1 -1
- package/package.json +12 -7
- package/src/block/externalData.ts +2 -0
- package/src/block/index.ts +3 -3
- package/src/block/isValidIndexedAttestation.ts +5 -5
- package/src/block/isValidIndexedPayloadAttestation.ts +4 -4
- package/src/block/processAttestationPhase0.ts +1 -1
- package/src/block/processAttestationsAltair.ts +2 -2
- package/src/block/processAttesterSlashing.ts +4 -4
- package/src/block/processDepositRequest.ts +8 -5
- package/src/block/processExecutionPayloadBid.ts +12 -4
- package/src/block/processExecutionPayloadEnvelope.ts +40 -37
- package/src/block/processOperations.ts +1 -1
- package/src/block/processPayloadAttestation.ts +2 -2
- package/src/block/processProposerSlashing.ts +4 -4
- package/src/block/processRandao.ts +1 -1
- package/src/block/processSyncCommittee.ts +1 -1
- package/src/block/processVoluntaryExit.ts +1 -1
- package/src/block/processWithdrawalRequest.ts +2 -2
- package/src/block/processWithdrawals.ts +11 -2
- package/src/cache/epochCache.ts +62 -54
- package/src/cache/pubkeyCache.ts +62 -21
- package/src/cache/stateCache.ts +4 -8
- package/src/cache/syncCommitteeCache.ts +4 -5
- package/src/epoch/index.ts +1 -1
- package/src/epoch/processBuilderPendingPayments.ts +2 -2
- package/src/index.ts +3 -1
- package/src/lightClient/proofs.ts +83 -0
- package/src/lightClient/types.ts +33 -0
- package/src/rewards/attestationsRewards.ts +5 -5
- package/src/rewards/syncCommitteeRewards.ts +6 -5
- package/src/signatureSets/indexedPayloadAttestation.ts +4 -6
- package/src/signatureSets/proposer.ts +3 -3
- package/src/signatureSets/randao.ts +3 -7
- package/src/signatureSets/voluntaryExits.ts +3 -3
- package/src/slot/upgradeStateToGloas.ts +74 -0
- package/src/stateTransition.ts +2 -1
- package/src/stateView/beaconStateView.ts +744 -0
- package/src/stateView/index.ts +2 -0
- package/src/stateView/interface.ts +196 -0
- package/src/testUtils/cache.ts +8 -0
- package/src/testUtils/index.ts +5 -0
- package/src/testUtils/infura.ts +10 -0
- package/src/testUtils/interop.ts +29 -0
- package/src/testUtils/params.ts +23 -0
- package/src/testUtils/state.ts +110 -0
- package/src/testUtils/testFileCache.ts +127 -0
- package/src/testUtils/util.ts +429 -0
- package/src/util/gloas.ts +11 -3
- package/src/util/seed.ts +106 -89
- package/src/util/signatureSets.ts +23 -17
- package/src/util/weakSubjectivity.ts +1 -1
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
import { PublicKey } from "@chainsafe/blst";
|
|
2
|
+
import { BitArray, fromHexString } from "@chainsafe/ssz";
|
|
3
|
+
import { createBeaconConfig, createChainForkConfig } from "@lodestar/config";
|
|
4
|
+
import { config } from "@lodestar/config/default";
|
|
5
|
+
import { EPOCHS_PER_ETH1_VOTING_PERIOD, EPOCHS_PER_HISTORICAL_VECTOR, ForkSeq, MAX_ATTESTATIONS, MAX_EFFECTIVE_BALANCE, SLOTS_PER_EPOCH, SLOTS_PER_HISTORICAL_ROOT, } from "@lodestar/params";
|
|
6
|
+
import { ssz } from "@lodestar/types";
|
|
7
|
+
import { getEffectiveBalanceIncrements } from "../cache/effectiveBalanceIncrements.js";
|
|
8
|
+
import { computeCommitteeCount, computeEpochAtSlot, createCachedBeaconState, createPubkeyCache, interopSecretKey, newFilledArray, processSlots, } from "../index.js";
|
|
9
|
+
import { getNextSyncCommittee } from "../util/syncCommittee.js";
|
|
10
|
+
import { getActiveValidatorIndices } from "../util/validator.js";
|
|
11
|
+
import { interopPubkeysCached } from "./interop.js";
|
|
12
|
+
let phase0State = null;
|
|
13
|
+
let phase0CachedState23637 = null;
|
|
14
|
+
let phase0CachedState23638 = null;
|
|
15
|
+
let phase0SignedBlock = null;
|
|
16
|
+
let altairState = null;
|
|
17
|
+
let altairCachedState23637 = null;
|
|
18
|
+
let altairCachedState23638 = null;
|
|
19
|
+
/**
|
|
20
|
+
* Number of validators in prater is 210000 as of May 2021
|
|
21
|
+
*/
|
|
22
|
+
export const numValidators = 250000;
|
|
23
|
+
export const keypairsMod = 100;
|
|
24
|
+
/**
|
|
25
|
+
* As of Jul 07 2021, the performance state has
|
|
26
|
+
* out.prevEpochUnslashedStake.targetStake 7750000000000000n
|
|
27
|
+
* out.currEpochUnslashedTargetStake 7750000000000000n
|
|
28
|
+
* This prefix represent the total stake in Peta Wei
|
|
29
|
+
*/
|
|
30
|
+
export const perfStateId = `${numValidators} vs - 7PWei`;
|
|
31
|
+
/** Cache interop secret keys */
|
|
32
|
+
const secretKeyByModIndex = new Map();
|
|
33
|
+
const epoch = 23638;
|
|
34
|
+
export const perfStateEpoch = epoch;
|
|
35
|
+
export function getPubkeys(vc = numValidators) {
|
|
36
|
+
const pubkeysMod = interopPubkeysCached(keypairsMod);
|
|
37
|
+
const pubkeysModObj = pubkeysMod.map((pk) => PublicKey.fromBytes(pk));
|
|
38
|
+
const pubkeys = Array.from({ length: vc }, (_, i) => pubkeysMod[i % keypairsMod]);
|
|
39
|
+
return { pubkeysMod, pubkeysModObj, pubkeys };
|
|
40
|
+
}
|
|
41
|
+
/** Get secret key of a validatorIndex, if the pubkeys are generated with `getPubkeys()` */
|
|
42
|
+
export function getSecretKeyFromIndex(validatorIndex) {
|
|
43
|
+
return interopSecretKey(validatorIndex % keypairsMod);
|
|
44
|
+
}
|
|
45
|
+
/** Get secret key of a validatorIndex, if the pubkeys are generated with `getPubkeys()` */
|
|
46
|
+
export function getSecretKeyFromIndexCached(validatorIndex) {
|
|
47
|
+
const keyIndex = validatorIndex % keypairsMod;
|
|
48
|
+
let sk = secretKeyByModIndex.get(keyIndex);
|
|
49
|
+
if (!sk) {
|
|
50
|
+
sk = interopSecretKey(keyIndex);
|
|
51
|
+
secretKeyByModIndex.set(keyIndex, sk);
|
|
52
|
+
}
|
|
53
|
+
return sk;
|
|
54
|
+
}
|
|
55
|
+
function getPubkeyCaches({ pubkeysMod }) {
|
|
56
|
+
// Manually sync pubkeys to prevent doing BLS opts 110_000 times
|
|
57
|
+
const pubkeyCache = createPubkeyCache();
|
|
58
|
+
for (let i = 0; i < numValidators; i++) {
|
|
59
|
+
const pubkey = pubkeysMod[i % keypairsMod];
|
|
60
|
+
pubkeyCache.set(i, pubkey);
|
|
61
|
+
}
|
|
62
|
+
return { pubkeyCache };
|
|
63
|
+
}
|
|
64
|
+
export function generatePerfTestCachedStatePhase0(opts) {
|
|
65
|
+
// Generate only some publicKeys
|
|
66
|
+
const { pubkeys, pubkeysMod, pubkeysModObj } = getPubkeys();
|
|
67
|
+
const { pubkeyCache } = getPubkeyCaches({ pubkeys, pubkeysMod, pubkeysModObj });
|
|
68
|
+
if (!phase0State) {
|
|
69
|
+
const state = buildPerformanceStatePhase0();
|
|
70
|
+
// no justificationBits
|
|
71
|
+
phase0State = ssz.phase0.BeaconState.toViewDU(state);
|
|
72
|
+
// cache roots
|
|
73
|
+
phase0State.hashTreeRoot();
|
|
74
|
+
}
|
|
75
|
+
if (!phase0CachedState23637) {
|
|
76
|
+
const state = phase0State.clone();
|
|
77
|
+
state.slot -= 1;
|
|
78
|
+
phase0CachedState23637 = createCachedBeaconState(state, {
|
|
79
|
+
config: createBeaconConfig(config, state.genesisValidatorsRoot),
|
|
80
|
+
pubkeyCache,
|
|
81
|
+
});
|
|
82
|
+
const currentEpoch = computeEpochAtSlot(state.slot - 1);
|
|
83
|
+
const previousEpoch = currentEpoch - 1;
|
|
84
|
+
// previous epoch attestations
|
|
85
|
+
const numPrevAttestations = SLOTS_PER_EPOCH * MAX_ATTESTATIONS;
|
|
86
|
+
const activeValidatorCount = pubkeys.length;
|
|
87
|
+
const committeesPerSlot = computeCommitteeCount(activeValidatorCount);
|
|
88
|
+
for (let i = 0; i < numPrevAttestations; i++) {
|
|
89
|
+
const slotInEpoch = i % SLOTS_PER_EPOCH;
|
|
90
|
+
const slot = previousEpoch * SLOTS_PER_EPOCH + slotInEpoch;
|
|
91
|
+
const index = i % committeesPerSlot;
|
|
92
|
+
const shuffling = phase0CachedState23637.epochCtx.getShufflingAtEpoch(previousEpoch);
|
|
93
|
+
const committee = shuffling.committees[slotInEpoch][index];
|
|
94
|
+
phase0CachedState23637.previousEpochAttestations.push(ssz.phase0.PendingAttestation.toViewDU({
|
|
95
|
+
aggregationBits: BitArray.fromBoolArray(Array.from({ length: committee.length }, () => true)),
|
|
96
|
+
data: {
|
|
97
|
+
beaconBlockRoot: phase0CachedState23637.blockRoots.get(slotInEpoch % SLOTS_PER_HISTORICAL_ROOT),
|
|
98
|
+
index,
|
|
99
|
+
slot,
|
|
100
|
+
source: state.previousJustifiedCheckpoint,
|
|
101
|
+
target: state.currentJustifiedCheckpoint,
|
|
102
|
+
},
|
|
103
|
+
inclusionDelay: 1,
|
|
104
|
+
proposerIndex: i,
|
|
105
|
+
}));
|
|
106
|
+
}
|
|
107
|
+
// current epoch attestations
|
|
108
|
+
const numCurAttestations = (SLOTS_PER_EPOCH - 1) * MAX_ATTESTATIONS;
|
|
109
|
+
for (let i = 0; i < numCurAttestations; i++) {
|
|
110
|
+
const slotInEpoch = i % SLOTS_PER_EPOCH;
|
|
111
|
+
const slot = currentEpoch * SLOTS_PER_EPOCH + slotInEpoch;
|
|
112
|
+
const index = i % committeesPerSlot;
|
|
113
|
+
const shuffling = phase0CachedState23637.epochCtx.getShufflingAtEpoch(previousEpoch);
|
|
114
|
+
const committee = shuffling.committees[slotInEpoch][index];
|
|
115
|
+
phase0CachedState23637.currentEpochAttestations.push(ssz.phase0.PendingAttestation.toViewDU({
|
|
116
|
+
aggregationBits: BitArray.fromBoolArray(Array.from({ length: committee.length }, () => true)),
|
|
117
|
+
data: {
|
|
118
|
+
beaconBlockRoot: phase0CachedState23637.blockRoots.get(slotInEpoch % SLOTS_PER_HISTORICAL_ROOT),
|
|
119
|
+
index,
|
|
120
|
+
slot,
|
|
121
|
+
source: state.currentJustifiedCheckpoint,
|
|
122
|
+
target: {
|
|
123
|
+
epoch: currentEpoch,
|
|
124
|
+
root: phase0CachedState23637.blockRoots.get((currentEpoch * SLOTS_PER_EPOCH) % SLOTS_PER_HISTORICAL_ROOT),
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
inclusionDelay: 1,
|
|
128
|
+
proposerIndex: i,
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (!phase0CachedState23638) {
|
|
133
|
+
phase0CachedState23638 = processSlots(phase0CachedState23637, phase0CachedState23637.slot + 1);
|
|
134
|
+
phase0CachedState23638.slot += 1;
|
|
135
|
+
}
|
|
136
|
+
const resultingState = opts?.goBackOneSlot ? phase0CachedState23637 : phase0CachedState23638;
|
|
137
|
+
return resultingState.clone();
|
|
138
|
+
}
|
|
139
|
+
export function cachedStateAltairPopulateCaches(state) {
|
|
140
|
+
// Populate caches
|
|
141
|
+
state.blockRoots.getAllReadonly();
|
|
142
|
+
state.eth1DataVotes.getAllReadonly();
|
|
143
|
+
state.validators.getAllReadonly();
|
|
144
|
+
state.balances.getAll();
|
|
145
|
+
state.previousEpochParticipation.getAll();
|
|
146
|
+
state.currentEpochParticipation.getAll();
|
|
147
|
+
state.inactivityScores.getAll();
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Warning: This function has side effects on the cached state
|
|
151
|
+
* The order in which the caches are populated is important and can cause stable tests to fail.
|
|
152
|
+
*/
|
|
153
|
+
export function generatePerfTestCachedStateAltair(opts) {
|
|
154
|
+
const { pubkeys, pubkeysMod, pubkeysModObj } = getPubkeys(opts?.vc);
|
|
155
|
+
const { pubkeyCache } = getPubkeyCaches({ pubkeys, pubkeysMod, pubkeysModObj });
|
|
156
|
+
const altairConfig = createChainForkConfig({ ALTAIR_FORK_EPOCH: 0 });
|
|
157
|
+
const origState = generatePerformanceStateAltair(pubkeys);
|
|
158
|
+
if (!altairCachedState23637) {
|
|
159
|
+
const state = origState.clone();
|
|
160
|
+
state.slot -= 1;
|
|
161
|
+
altairCachedState23637 = createCachedBeaconState(state, {
|
|
162
|
+
config: createBeaconConfig(altairConfig, state.genesisValidatorsRoot),
|
|
163
|
+
pubkeyCache,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
if (!altairCachedState23638) {
|
|
167
|
+
altairCachedState23638 = processSlots(altairCachedState23637, altairCachedState23637.slot + 1);
|
|
168
|
+
altairCachedState23638.slot += 1;
|
|
169
|
+
}
|
|
170
|
+
const resultingState = opts?.goBackOneSlot ? altairCachedState23637 : altairCachedState23638;
|
|
171
|
+
return resultingState.clone();
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* This is generated from Medalla state 756416
|
|
175
|
+
*/
|
|
176
|
+
export function generatePerformanceStateAltair(pubkeysArg) {
|
|
177
|
+
if (!altairState) {
|
|
178
|
+
const pubkeys = pubkeysArg || getPubkeys().pubkeys;
|
|
179
|
+
const statePhase0 = buildPerformanceStatePhase0(pubkeys);
|
|
180
|
+
const state = statePhase0;
|
|
181
|
+
state.previousEpochParticipation = newFilledArray(pubkeys.length, 0b111);
|
|
182
|
+
state.currentEpochParticipation = state.previousEpochParticipation;
|
|
183
|
+
state.inactivityScores = Array.from({ length: pubkeys.length }, (_, i) => i % 2);
|
|
184
|
+
// Placeholder syncCommittees
|
|
185
|
+
state.currentSyncCommittee = ssz.altair.SyncCommittee.defaultValue();
|
|
186
|
+
state.nextSyncCommittee = state.currentSyncCommittee;
|
|
187
|
+
// Now the state is fully populated to convert to ViewDU
|
|
188
|
+
altairState = ssz.altair.BeaconState.toViewDU(state);
|
|
189
|
+
// Now set correct syncCommittees
|
|
190
|
+
const epoch = computeEpochAtSlot(state.slot);
|
|
191
|
+
const activeValidatorIndices = getActiveValidatorIndices(altairState, epoch);
|
|
192
|
+
const effectiveBalanceIncrements = getEffectiveBalanceIncrements(altairState);
|
|
193
|
+
const { syncCommittee } = getNextSyncCommittee(ForkSeq.altair, altairState, activeValidatorIndices, effectiveBalanceIncrements);
|
|
194
|
+
state.currentSyncCommittee = syncCommittee;
|
|
195
|
+
state.nextSyncCommittee = syncCommittee;
|
|
196
|
+
altairState = ssz.altair.BeaconState.toViewDU(state);
|
|
197
|
+
// cache roots
|
|
198
|
+
altairState.hashTreeRoot();
|
|
199
|
+
}
|
|
200
|
+
return altairState.clone();
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* This is generated from Medalla block 756417
|
|
204
|
+
*/
|
|
205
|
+
export function generatePerformanceBlockPhase0() {
|
|
206
|
+
if (!phase0SignedBlock) {
|
|
207
|
+
const block = ssz.phase0.SignedBeaconBlock.defaultValue();
|
|
208
|
+
const parentState = generatePerfTestCachedStatePhase0();
|
|
209
|
+
block.message.slot = parentState.slot;
|
|
210
|
+
block.message.proposerIndex = parentState.epochCtx.getBeaconProposer(parentState.slot);
|
|
211
|
+
block.message.parentRoot = ssz.phase0.BeaconBlockHeader.hashTreeRoot(parentState.latestBlockHeader);
|
|
212
|
+
block.message.stateRoot = fromHexString("0x6c86ca3c4c6688cf189421b8a68bf2dbc91521609965e6f4e207d44347061fee");
|
|
213
|
+
block.message.body.randaoReveal = fromHexString("0x8a5d2673c48f22f6ed19462efec35645db490df29eed2f56321dbe4a89b2463b0c902095a7ab74a2dc5b7f67edb1a19507ea3d4361d5af9cb0a524945c91638dfd6568841486813a2c45142659d6d9403f5081febb123a7931edbc248b9d0025");
|
|
214
|
+
// eth1Data, graffiti, attestations
|
|
215
|
+
phase0SignedBlock = block;
|
|
216
|
+
}
|
|
217
|
+
return phase0SignedBlock;
|
|
218
|
+
}
|
|
219
|
+
function buildPerformanceStatePhase0(pubkeysArg) {
|
|
220
|
+
const slot = epoch * SLOTS_PER_EPOCH;
|
|
221
|
+
const pubkeys = pubkeysArg || getPubkeys().pubkeys;
|
|
222
|
+
const currentEpoch = computeEpochAtSlot(slot - 1);
|
|
223
|
+
return {
|
|
224
|
+
// Misc
|
|
225
|
+
genesisTime: 1596546008,
|
|
226
|
+
genesisValidatorsRoot: fromHexString("0x04700007fabc8282644aed6d1c7c9e21d38a03a0c4ba193f3afe428824b3a673"),
|
|
227
|
+
slot: epoch * SLOTS_PER_EPOCH,
|
|
228
|
+
fork: {
|
|
229
|
+
currentVersion: fromHexString("0x00000001"),
|
|
230
|
+
previousVersion: fromHexString("0x00000001"),
|
|
231
|
+
epoch: 0,
|
|
232
|
+
},
|
|
233
|
+
// History
|
|
234
|
+
latestBlockHeader: {
|
|
235
|
+
slot: slot - 1,
|
|
236
|
+
proposerIndex: 80882,
|
|
237
|
+
parentRoot: fromHexString("0x5b83c3078e474b86af60043eda82a34c3c2e5ebf83146b14d9d909aea4163ef2"),
|
|
238
|
+
stateRoot: fromHexString("0x2761ae355e8a53c11e0e37d5e417f8984db0c53fa83f1bc65f89c6af35a196a7"),
|
|
239
|
+
bodyRoot: fromHexString("0x249a1962eef90e122fa2447040bfac102798b1dba9c73e5593bc5aa32eb92bfd"),
|
|
240
|
+
},
|
|
241
|
+
blockRoots: Array.from({ length: SLOTS_PER_HISTORICAL_ROOT }, (_, i) => Buffer.alloc(32, i)),
|
|
242
|
+
stateRoots: Array.from({ length: SLOTS_PER_HISTORICAL_ROOT }, (_, i) => Buffer.alloc(32, i)),
|
|
243
|
+
historicalRoots: [],
|
|
244
|
+
// Eth1
|
|
245
|
+
eth1Data: {
|
|
246
|
+
depositCount: pubkeys.length,
|
|
247
|
+
depositRoot: fromHexString("0xcb1f89a924cfd31224823db5a41b1643f10faa7aedf231f1e28887f6ee98c047"),
|
|
248
|
+
blockHash: fromHexString("0x701fb2869ce16d0f1d14f6705725adb0dec6799da29006dfc6fff83960298f21"),
|
|
249
|
+
},
|
|
250
|
+
// minus one so that inserting 1 from block works
|
|
251
|
+
eth1DataVotes: newFilledArray(EPOCHS_PER_ETH1_VOTING_PERIOD * SLOTS_PER_EPOCH - 1, {
|
|
252
|
+
depositCount: 1,
|
|
253
|
+
depositRoot: Buffer.alloc(32, 1),
|
|
254
|
+
blockHash: Buffer.alloc(32, 1),
|
|
255
|
+
}),
|
|
256
|
+
eth1DepositIndex: pubkeys.length,
|
|
257
|
+
// Registry
|
|
258
|
+
validators: pubkeys.map((_, i) => ({
|
|
259
|
+
pubkey: pubkeys[i],
|
|
260
|
+
withdrawalCredentials: Buffer.alloc(32, i),
|
|
261
|
+
effectiveBalance: 31000000000,
|
|
262
|
+
slashed: false,
|
|
263
|
+
activationEligibilityEpoch: 0,
|
|
264
|
+
activationEpoch: 0,
|
|
265
|
+
exitEpoch: Infinity,
|
|
266
|
+
withdrawableEpoch: Infinity,
|
|
267
|
+
})),
|
|
268
|
+
balances: Array.from({ length: pubkeys.length }, () => 31217089836),
|
|
269
|
+
randaoMixes: Array.from({ length: EPOCHS_PER_HISTORICAL_VECTOR }, (_, i) => Buffer.alloc(32, i)),
|
|
270
|
+
// Slashings
|
|
271
|
+
slashings: ssz.phase0.Slashings.defaultValue(),
|
|
272
|
+
previousEpochAttestations: [],
|
|
273
|
+
currentEpochAttestations: [],
|
|
274
|
+
// Finality
|
|
275
|
+
justificationBits: BitArray.fromBitLen(4),
|
|
276
|
+
previousJustifiedCheckpoint: {
|
|
277
|
+
epoch: currentEpoch - 2,
|
|
278
|
+
root: fromHexString("0x3fe60bf06a57b0956cd1f8181d26649cf8bf79e48bf82f55562e04b33d4785d4"),
|
|
279
|
+
},
|
|
280
|
+
currentJustifiedCheckpoint: {
|
|
281
|
+
epoch: currentEpoch - 1,
|
|
282
|
+
root: fromHexString("0x3ba0913d2fb5e4cbcfb0d39eb15803157c1e769d63b8619285d8fdabbd8181c7"),
|
|
283
|
+
},
|
|
284
|
+
finalizedCheckpoint: {
|
|
285
|
+
epoch: currentEpoch - 3,
|
|
286
|
+
root: fromHexString("0x122b8ff579d0c8f8a8b66326bdfec3f685007d2842f01615a0768870961ccc17"),
|
|
287
|
+
},
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
export function generateTestCachedBeaconStateOnlyValidators({ vc, slot, }) {
|
|
291
|
+
// Generate only some publicKeys
|
|
292
|
+
const { pubkeys, pubkeysMod } = getPubkeys(vc);
|
|
293
|
+
// Manually sync pubkeys to prevent doing BLS opts 110_000 times
|
|
294
|
+
const pubkeyCache = createPubkeyCache();
|
|
295
|
+
for (let i = 0; i < vc; i++) {
|
|
296
|
+
const pubkey = pubkeysMod[i % keypairsMod];
|
|
297
|
+
pubkeyCache.set(i, pubkey);
|
|
298
|
+
}
|
|
299
|
+
const state = ssz.phase0.BeaconState.defaultViewDU();
|
|
300
|
+
state.slot = slot;
|
|
301
|
+
const activeValidator = ssz.phase0.Validator.toViewDU({
|
|
302
|
+
pubkey: Buffer.alloc(48, 0),
|
|
303
|
+
withdrawalCredentials: Buffer.alloc(32, 0),
|
|
304
|
+
effectiveBalance: MAX_EFFECTIVE_BALANCE,
|
|
305
|
+
slashed: false,
|
|
306
|
+
activationEligibilityEpoch: 0,
|
|
307
|
+
activationEpoch: 0,
|
|
308
|
+
exitEpoch: Infinity,
|
|
309
|
+
withdrawableEpoch: Infinity,
|
|
310
|
+
});
|
|
311
|
+
for (let i = 0; i < vc; i++) {
|
|
312
|
+
const validator = activeValidator.clone();
|
|
313
|
+
validator.pubkey = pubkeys[i];
|
|
314
|
+
state.validators.push(validator);
|
|
315
|
+
}
|
|
316
|
+
state.balances = ssz.phase0.Balances.toViewDU(newFilledArray(pubkeys.length, MAX_EFFECTIVE_BALANCE));
|
|
317
|
+
state.randaoMixes = ssz.phase0.RandaoMixes.toViewDU(newFilledArray(EPOCHS_PER_HISTORICAL_VECTOR, Buffer.alloc(32, 0xdd)));
|
|
318
|
+
// Commit ViewDU changes
|
|
319
|
+
state.commit();
|
|
320
|
+
// Sanity check for .commit() above
|
|
321
|
+
if (state.validators.length !== vc) {
|
|
322
|
+
throw Error(`Wrong number of validators in the state: ${state.validators.length} !== ${vc}`);
|
|
323
|
+
}
|
|
324
|
+
return createCachedBeaconState(state, {
|
|
325
|
+
config: createBeaconConfig(config, state.genesisValidatorsRoot),
|
|
326
|
+
pubkeyCache,
|
|
327
|
+
}, { skipSyncPubkeys: true });
|
|
328
|
+
}
|
|
329
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/testUtils/util.ts"],"names":[],"mappings":"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"}
|
package/lib/util/gloas.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gloas.d.ts","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"AAUA,OAAO,EAAC,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAEzC,wBAAgB,6BAA6B,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAExF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAMtF;
|
|
1
|
+
{"version":3,"file":"gloas.d.ts","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"AAUA,OAAO,EAAC,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAEzC,wBAAgB,6BAA6B,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAExF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAMtF;AAOD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,YAAY,EAAE,YAAY,GAAG,cAAc,CAG9F;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,cAAc,EAAE,cAAc,GAAG,YAAY,CAGhG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,GAAG,OAAO,CAEtF;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,sBAAsB,EAC7B,YAAY,EAAE,YAAY,GACzB,MAAM,CAoBR;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,sBAAsB,EAC7B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAUT;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAWnG;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAO/G;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAOnG;AAED,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAOnG;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAExE"}
|
package/lib/util/gloas.js
CHANGED
|
@@ -10,26 +10,33 @@ export function getBuilderPaymentQuorumThreshold(state) {
|
|
|
10
10
|
BUILDER_PAYMENT_THRESHOLD_NUMERATOR;
|
|
11
11
|
return Math.floor(quorum / BUILDER_PAYMENT_THRESHOLD_DENOMINATOR);
|
|
12
12
|
}
|
|
13
|
+
function hasBuilderIndexFlag(index) {
|
|
14
|
+
// Equivalent to `(index & BUILDER_INDEX_FLAG) != 0`
|
|
15
|
+
return Math.floor(index / BUILDER_INDEX_FLAG) % 2 === 1;
|
|
16
|
+
}
|
|
13
17
|
/**
|
|
14
18
|
* Check if a validator index represents a builder (has the builder flag set).
|
|
15
19
|
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-is_builder_index
|
|
16
20
|
*/
|
|
17
21
|
export function isBuilderIndex(validatorIndex) {
|
|
18
|
-
|
|
22
|
+
// Note: Can't use bitwise AND (&) because BUILDER_INDEX_FLAG exceeds 32 bits in JS bitwise operations.
|
|
23
|
+
return hasBuilderIndexFlag(validatorIndex);
|
|
19
24
|
}
|
|
20
25
|
/**
|
|
21
26
|
* Convert a builder index to a flagged validator index for use in Withdrawal containers.
|
|
22
27
|
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-convert_builder_index_to_validator_index
|
|
23
28
|
*/
|
|
24
29
|
export function convertBuilderIndexToValidatorIndex(builderIndex) {
|
|
25
|
-
|
|
30
|
+
// Note: Can't use bitwise OR (|) because BUILDER_INDEX_FLAG exceeds 32 bits in JS bitwise operations.
|
|
31
|
+
return hasBuilderIndexFlag(builderIndex) ? builderIndex : builderIndex + BUILDER_INDEX_FLAG;
|
|
26
32
|
}
|
|
27
33
|
/**
|
|
28
34
|
* Convert a flagged validator index back to a builder index.
|
|
29
35
|
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-convert_validator_index_to_builder_index
|
|
30
36
|
*/
|
|
31
37
|
export function convertValidatorIndexToBuilderIndex(validatorIndex) {
|
|
32
|
-
|
|
38
|
+
// Note: Can't use bitwise AND (&) because BUILDER_INDEX_FLAG exceeds 32 bits in JS bitwise operations.
|
|
39
|
+
return hasBuilderIndexFlag(validatorIndex) ? validatorIndex - BUILDER_INDEX_FLAG : validatorIndex;
|
|
33
40
|
}
|
|
34
41
|
/**
|
|
35
42
|
* Check if a builder is active (deposited and not yet withdrawable).
|
package/lib/util/gloas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gloas.js","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,qCAAqC,EACrC,mCAAmC,EACnC,yBAAyB,EACzB,2BAA2B,EAC3B,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAC,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAC,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAC,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAG9C,MAAM,UAAU,6BAA6B,CAAC,qBAAiC;IAC7E,OAAO,qBAAqB,CAAC,CAAC,CAAC,KAAK,yBAAyB,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,KAA6B;IAC5E,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,4BAA4B,GAAG,2BAA2B,CAAC,GAAG,eAAe,CAAC;QACzG,mCAAmC,CAAC;IAEtC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,qCAAqC,CAAC,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,cAAsB;IACnD,OAAO,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"gloas.js","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"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"}
|
package/lib/util/seed.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ForkSeq } from "@lodestar/params";
|
|
2
2
|
import { Bytes32, DomainType, Epoch, ValidatorIndex } from "@lodestar/types";
|
|
3
3
|
import { EffectiveBalanceIncrements } from "../cache/effectiveBalanceIncrements.js";
|
|
4
|
-
import { BeaconStateAllForks,
|
|
4
|
+
import { BeaconStateAllForks, CachedBeaconStateAllForks } from "../types.js";
|
|
5
5
|
/**
|
|
6
6
|
* Compute proposer indices for an epoch
|
|
7
7
|
*/
|
|
@@ -46,9 +46,25 @@ export declare function naiveGetNextSyncCommitteeIndices(fork: ForkSeq, state: B
|
|
|
46
46
|
* In the worse case scenario, this could be >1000x speedup according to the perf test.
|
|
47
47
|
*/
|
|
48
48
|
export declare function getNextSyncCommitteeIndices(fork: ForkSeq, state: BeaconStateAllForks, activeValidatorIndices: Uint32Array, effectiveBalanceIncrements: EffectiveBalanceIncrements): Uint32Array;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Compute PTC for all slots in an epoch eagerly.
|
|
51
|
+
*/
|
|
52
|
+
export declare function computePayloadTimelinessCommitteesForEpoch(state: BeaconStateAllForks, epoch: number, committees: Uint32Array[][], effectiveBalanceIncrements: EffectiveBalanceIncrements): Uint32Array[];
|
|
53
|
+
/**
|
|
54
|
+
* Compute PTC for a single slot.
|
|
55
|
+
*/
|
|
56
|
+
export declare function computePayloadTimelinessCommitteeForSlot(slotSeed: Uint8Array, slotCommittees: Uint32Array[], effectiveBalanceIncrements: EffectiveBalanceIncrements): Uint32Array;
|
|
57
|
+
/**
|
|
58
|
+
* Optimized version of PTC indices computation.
|
|
59
|
+
* Avoids BigInt conversions and uses DataView for efficient byte reading.
|
|
60
|
+
*/
|
|
61
|
+
export declare function computePayloadTimelinessCommitteeIndices(effectiveBalanceIncrements: EffectiveBalanceIncrements, indices: Uint32Array, seed: Uint8Array): Uint32Array;
|
|
62
|
+
/**
|
|
63
|
+
* Naive version of PTC indices computation.
|
|
64
|
+
* Used to verify the optimized `computePayloadTimelinessCommitteeIndices`.
|
|
65
|
+
*
|
|
66
|
+
* SLOW CODE - 🐢
|
|
67
|
+
*/
|
|
52
68
|
export declare function naiveComputePayloadTimelinessCommitteeIndices(effectiveBalanceIncrements: EffectiveBalanceIncrements, indices: ArrayLike<ValidatorIndex>, seed: Uint8Array): ValidatorIndex[];
|
|
53
69
|
/**
|
|
54
70
|
* Return the shuffled validator index corresponding to ``seed`` (and ``index_count``).
|
|
@@ -57,15 +73,8 @@ export declare function naiveComputePayloadTimelinessCommitteeIndices(effectiveB
|
|
|
57
73
|
* https://link.springer.com/content/pdf/10.1007%2F978-3-642-32009-5_1.pdf
|
|
58
74
|
*
|
|
59
75
|
* See the 'generalized domain' algorithm on page 3.
|
|
60
|
-
* This is the naive implementation just to make sure lodestar follows the spec, this is not for production.
|
|
61
|
-
* The optimized version is in `getComputeShuffledIndexFn`.
|
|
62
76
|
*/
|
|
63
77
|
export declare function computeShuffledIndex(index: number, indexCount: number, seed: Bytes32): number;
|
|
64
|
-
type ComputeShuffledIndexFn = (index: number) => number;
|
|
65
|
-
/**
|
|
66
|
-
* An optimized version of `computeShuffledIndex`, this is for production.
|
|
67
|
-
*/
|
|
68
|
-
export declare function getComputeShuffledIndexFn(indexCount: number, seed: Bytes32): ComputeShuffledIndexFn;
|
|
69
78
|
/**
|
|
70
79
|
* Return the randao mix at a recent [[epoch]].
|
|
71
80
|
*/
|
|
@@ -74,5 +83,4 @@ export declare function getRandaoMix(state: BeaconStateAllForks, epoch: Epoch):
|
|
|
74
83
|
* Return the seed at [[epoch]].
|
|
75
84
|
*/
|
|
76
85
|
export declare function getSeed(state: BeaconStateAllForks, epoch: Epoch, domainType: DomainType): Uint8Array;
|
|
77
|
-
export {};
|
|
78
86
|
//# sourceMappingURL=seed.d.ts.map
|
package/lib/util/seed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/util/seed.ts"],"names":[],"mappings":"AAKA,OAAO,EAML,OAAO,EAQR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EAAC,0BAA0B,EAAC,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAC,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/util/seed.ts"],"names":[],"mappings":"AAKA,OAAO,EAML,OAAO,EAQR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EAAC,0BAA0B,EAAC,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAC,mBAAmB,EAAE,yBAAyB,EAAC,MAAM,aAAa,CAAC;AAG3E;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,aAAa,EAAE,WAAW,CAAA;CAAC,EACrD,0BAA0B,EAAE,0BAA0B,GACrD,MAAM,EAAE,CAeV;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,OAAO,EACb,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,EAClC,IAAI,EAAE,UAAU,GACf,cAAc,CAwChB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,UAAU,GACf,cAAc,CAwBhB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,SAAS,EAAE;IAAC,aAAa,EAAE,WAAW,CAAA;CAAC,EACvC,KAAK,EAAE,KAAK,GACX,cAAc,EAAE,CAgBlB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,mBAAmB,EAC1B,sBAAsB,EAAE,SAAS,CAAC,cAAc,CAAC,EACjD,0BAA0B,EAAE,0BAA0B,GACrD,cAAc,EAAE,CAkDlB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,mBAAmB,EAC1B,sBAAsB,EAAE,WAAW,EACnC,0BAA0B,EAAE,0BAA0B,GACrD,WAAW,CAwBb;AAED;;GAEG;AACH,wBAAgB,0CAA0C,CACxD,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,WAAW,EAAE,EAAE,EAC3B,0BAA0B,EAAE,0BAA0B,GACrD,WAAW,EAAE,CAoBf;AAED;;GAEG;AACH,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,UAAU,EACpB,cAAc,EAAE,WAAW,EAAE,EAC7B,0BAA0B,EAAE,0BAA0B,GACrD,WAAW,CAUb;AAED;;;GAGG;AACH,wBAAgB,wCAAwC,CACtD,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,UAAU,GACf,WAAW,CA8Cb;AAED;;;;;GAKG;AACH,wBAAgB,6CAA6C,CAC3D,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,EAClC,IAAI,EAAE,UAAU,GACf,cAAc,EAAE,CAyBlB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAiB7F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAE9E;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,CAIpG"}
|