@lodestar/state-transition 1.41.0-dev.702f7932c2 → 1.41.0-dev.96f78af84b
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/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.map +1 -1
- package/lib/block/processExecutionPayloadBid.js +5 -0
- package/lib/block/processExecutionPayloadBid.js.map +1 -1
- package/lib/block/processExecutionPayloadEnvelope.js +5 -10
- package/lib/block/processExecutionPayloadEnvelope.js.map +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 +9 -18
- package/lib/cache/epochCache.d.ts.map +1 -1
- package/lib/cache/epochCache.js +28 -41
- 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/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/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 -4
- package/lib/util/seed.d.ts.map +1 -1
- package/lib/util/seed.js +80 -8
- 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 +7 -7
- package/src/block/isValidIndexedAttestation.ts +5 -5
- package/src/block/isValidIndexedPayloadAttestation.ts +2 -2
- package/src/block/processAttestationPhase0.ts +1 -1
- package/src/block/processAttestationsAltair.ts +1 -1
- package/src/block/processAttesterSlashing.ts +4 -4
- package/src/block/processDepositRequest.ts +8 -5
- package/src/block/processExecutionPayloadBid.ts +8 -0
- package/src/block/processExecutionPayloadEnvelope.ts +5 -16
- 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 +10 -1
- package/src/cache/epochCache.ts +41 -55
- package/src/cache/pubkeyCache.ts +62 -21
- package/src/cache/stateCache.ts +4 -8
- package/src/cache/syncCommitteeCache.ts +4 -5
- 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/util/gloas.ts +11 -3
- package/src/util/seed.ts +106 -18
- package/src/util/signatureSets.ts +23 -17
- package/src/util/weakSubjectivity.ts +1 -1
package/lib/cache/pubkeyCache.js
CHANGED
|
@@ -1,24 +1,49 @@
|
|
|
1
1
|
import { PublicKey } from "@chainsafe/blst";
|
|
2
|
+
import { PubkeyIndexMap } from "@chainsafe/pubkey-index-map";
|
|
3
|
+
class StandardPubkeyCache {
|
|
4
|
+
pubkey2index;
|
|
5
|
+
index2pubkey;
|
|
6
|
+
constructor(pubkey2index, index2pubkey) {
|
|
7
|
+
this.pubkey2index = pubkey2index ?? new PubkeyIndexMap();
|
|
8
|
+
this.index2pubkey = index2pubkey ?? [];
|
|
9
|
+
}
|
|
10
|
+
get size() {
|
|
11
|
+
return this.pubkey2index.size;
|
|
12
|
+
}
|
|
13
|
+
get(index) {
|
|
14
|
+
return this.index2pubkey[index];
|
|
15
|
+
}
|
|
16
|
+
getOrThrow(index) {
|
|
17
|
+
const pubkey = this.get(index);
|
|
18
|
+
if (!pubkey)
|
|
19
|
+
throw Error(`Missing pubkey for validator index ${index}`);
|
|
20
|
+
return pubkey;
|
|
21
|
+
}
|
|
22
|
+
getIndex(pubkey) {
|
|
23
|
+
return this.pubkey2index.get(pubkey);
|
|
24
|
+
}
|
|
25
|
+
set(index, pubkey) {
|
|
26
|
+
this.pubkey2index.set(pubkey, index);
|
|
27
|
+
// Pubkeys must be checked for group + inf. This must be done only once when the validator deposit is processed.
|
|
28
|
+
// Afterwards any public key in the state is considered validated.
|
|
29
|
+
// > Do not do any validation here
|
|
30
|
+
this.index2pubkey[index] = PublicKey.fromBytes(pubkey); // Optimize for aggregation
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function createPubkeyCache() {
|
|
34
|
+
return new StandardPubkeyCache();
|
|
35
|
+
}
|
|
2
36
|
/**
|
|
3
37
|
* Checks the pubkey indices against a state and adds missing pubkeys
|
|
4
38
|
*
|
|
5
|
-
* Mutates `
|
|
39
|
+
* Mutates `pubkeyCache`
|
|
6
40
|
*
|
|
7
|
-
* If pubkey
|
|
41
|
+
* If pubkey cache is empty: SLOW CODE - 🐢
|
|
8
42
|
*/
|
|
9
|
-
export function syncPubkeys(
|
|
10
|
-
if (pubkey2index.size !== index2pubkey.length) {
|
|
11
|
-
throw new Error(`Pubkey indices have fallen out of sync: ${pubkey2index.size} != ${index2pubkey.length}`);
|
|
12
|
-
}
|
|
43
|
+
export function syncPubkeys(pubkeyCache, validators) {
|
|
13
44
|
const newCount = validators.length;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const pubkey = validators[i].pubkey;
|
|
17
|
-
pubkey2index.set(pubkey, i);
|
|
18
|
-
// Pubkeys must be checked for group + inf. This must be done only once when the validator deposit is processed.
|
|
19
|
-
// Afterwards any public key is the state consider validated.
|
|
20
|
-
// > Do not do any validation here
|
|
21
|
-
index2pubkey[i] = PublicKey.fromBytes(pubkey); // Optimize for aggregation
|
|
45
|
+
for (let i = pubkeyCache.size; i < newCount; i++) {
|
|
46
|
+
pubkeyCache.set(i, validators[i].pubkey);
|
|
22
47
|
}
|
|
23
48
|
}
|
|
24
49
|
//# sourceMappingURL=pubkeyCache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pubkeyCache.js","sourceRoot":"","sources":["../../src/cache/pubkeyCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"pubkeyCache.js","sourceRoot":"","sources":["../../src/cache/pubkeyCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAoB3D,MAAM,mBAAmB;IACN,YAAY,CAAiB;IAC7B,YAAY,CAA4B;IAEzD,YAAY,YAA6B,EAAE,YAAwC;QACjF,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,IAAI,cAAc,EAAE,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,KAAqB;QACvB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,UAAU,CAAC,KAAqB;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM;YAAE,MAAM,KAAK,CAAC,sCAAsC,KAAK,EAAE,CAAC,CAAC;QACxE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,QAAQ,CAAC,MAAkB;QACzB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,GAAG,CAAC,KAAqB,EAAE,MAAkB;QAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrC,gHAAgH;QAChH,kEAAkE;QAClE,kCAAkC;QAClC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,2BAA2B;IACrF,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,mBAAmB,EAAE,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,WAAwB,EAAE,UAA8B;IAClF,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
|
|
@@ -128,7 +128,7 @@ export declare function createCachedBeaconState<T extends BeaconStateAllForks>(s
|
|
|
128
128
|
* Check loadState() api for more details
|
|
129
129
|
* // TODO: rename to loadUnfinalizedCachedBeaconState() due to ELECTRA
|
|
130
130
|
*/
|
|
131
|
-
export declare function loadCachedBeaconState<T extends
|
|
131
|
+
export declare function loadCachedBeaconState<T extends CachedBeaconStateAllForks>(cachedSeedState: T, stateBytes: Uint8Array, opts?: EpochCacheOpts, seedValidatorsBytes?: Uint8Array): T;
|
|
132
132
|
/**
|
|
133
133
|
* Attach an already computed BeaconStateCache to a BeaconState object
|
|
134
134
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stateCache.d.ts","sourceRoot":"","sources":["../../src/cache/stateCache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stateCache.d.ts","sourceRoot":"","sources":["../../src/cache/stateCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,UAAU,EAAE,uBAAuB,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAC,WAAW,EAAyB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,+EAA+E;IAC/E,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,UAAU,CAAC;IACrB,mHAAmH;IACnH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,4BAA4B,EAAE,MAAM,CAAC;IAC9C,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAC3C,eAAe,EAAE,WAAW,CAAC;CAC9B,CAAC;AAQF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,mBAAmB,IAAI,CAAC,GAAG,gBAAgB,CAAC;AAEpF,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AAC3E,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AAC3E,MAAM,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;AACjF,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;AAC7E,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;AACzE,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;AAC7E,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;AACvE,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;AAEzE,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;AAC/E,MAAM,MAAM,2BAA2B,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;AACnF;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,mBAAmB,EACnE,KAAK,EAAE,CAAC,EACR,aAAa,EAAE,uBAAuB,EACtC,IAAI,CAAC,EAAE,cAAc,GACpB,CAAC,GAAG,gBAAgB,CAYtB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,yBAAyB,EACvE,eAAe,EAAE,CAAC,EAClB,UAAU,EAAE,UAAU,EACtB,IAAI,CAAC,EAAE,cAAc,EACrB,mBAAmB,CAAC,EAAE,UAAU,GAC/B,CAAC,CAuBH;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,mBAAmB,EAChE,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,gBAAgB,GACtB,CAAC,GAAG,gBAAgB,CAoCtB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,mBAAmB,EAC/D,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC,GAChC,KAAK,IAAI,CAAC,GAAG,gBAAgB,CAE/B;AAKD,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAGzF;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAGvF"}
|
package/lib/cache/stateCache.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { PublicKey } from "@chainsafe/blst";
|
|
2
1
|
import { loadState } from "../util/loadState/loadState.js";
|
|
3
2
|
import { EpochCache } from "./epochCache.js";
|
|
4
3
|
import { createEmptyRewardCache } from "./rewardCache.js";
|
|
@@ -26,19 +25,16 @@ export function createCachedBeaconState(state, immutableData, opts) {
|
|
|
26
25
|
*/
|
|
27
26
|
export function loadCachedBeaconState(cachedSeedState, stateBytes, opts, seedValidatorsBytes) {
|
|
28
27
|
const { state: migratedState, modifiedValidators } = loadState(cachedSeedState.config, cachedSeedState, stateBytes, seedValidatorsBytes);
|
|
29
|
-
const {
|
|
28
|
+
const { pubkeyCache } = cachedSeedState.epochCtx;
|
|
30
29
|
// Get the validators sub tree once for all the loop
|
|
31
30
|
const validators = migratedState.validators;
|
|
32
31
|
for (const validatorIndex of modifiedValidators) {
|
|
33
32
|
const validator = validators.getReadonly(validatorIndex);
|
|
34
|
-
|
|
35
|
-
pubkey2index.set(pubkey, validatorIndex);
|
|
36
|
-
index2pubkey[validatorIndex] = PublicKey.fromBytes(pubkey);
|
|
33
|
+
pubkeyCache.set(validatorIndex, validator.pubkey);
|
|
37
34
|
}
|
|
38
35
|
return createCachedBeaconState(migratedState, {
|
|
39
36
|
config: cachedSeedState.config,
|
|
40
|
-
|
|
41
|
-
index2pubkey,
|
|
37
|
+
pubkeyCache,
|
|
42
38
|
}, { ...(opts ?? {}), ...{ skipSyncPubkeys: true } });
|
|
43
39
|
}
|
|
44
40
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stateCache.js","sourceRoot":"","sources":["../../src/cache/stateCache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stateCache.js","sourceRoot":"","sources":["../../src/cache/stateCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { PubkeyIndexMap } from "@chainsafe/pubkey-index-map";
|
|
2
1
|
import { CompositeViewDU } from "@chainsafe/ssz";
|
|
3
2
|
import { ValidatorIndex, ssz } from "@lodestar/types";
|
|
4
3
|
type ValidatorSyncCommitteeIndexMap = Map<ValidatorIndex, number[]>;
|
|
@@ -21,7 +20,9 @@ export declare class SyncCommitteeCacheEmpty implements SyncCommitteeCache {
|
|
|
21
20
|
get validatorIndexMap(): ValidatorSyncCommitteeIndexMap;
|
|
22
21
|
}
|
|
23
22
|
export declare function getSyncCommitteeCache(validatorIndices: Uint32Array): SyncCommitteeCache;
|
|
24
|
-
export declare function computeSyncCommitteeCache(syncCommittee: CompositeViewDU<typeof ssz.altair.SyncCommittee>,
|
|
23
|
+
export declare function computeSyncCommitteeCache(syncCommittee: CompositeViewDU<typeof ssz.altair.SyncCommittee>, pubkeyCache: {
|
|
24
|
+
getIndex(pubkey: Uint8Array): number | null;
|
|
25
|
+
}): SyncCommitteeCache;
|
|
25
26
|
/**
|
|
26
27
|
* Compute all position index in sync committee for all validatorIndexes in `syncCommitteeIndexes`.
|
|
27
28
|
* Helps reduce work necessary to verify a validatorIndex belongs in a sync committee and which.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommitteeCache.d.ts","sourceRoot":"","sources":["../../src/cache/syncCommitteeCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"syncCommitteeCache.d.ts","sourceRoot":"","sources":["../../src/cache/syncCommitteeCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAC,cAAc,EAAE,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAGpD,KAAK,8BAA8B,GAAG,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;AAEpE,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,gBAAgB,EAAE,WAAW,CAAC;IAC9B;;;;OAIG;IACH,iBAAiB,EAAE,8BAA8B,CAAC;CACnD,CAAC;AAEF,6CAA6C;AAC7C,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,IAAI,gBAAgB,IAAI,WAAW,CAElC;IAED,IAAI,iBAAiB,IAAI,8BAA8B,CAEtD;CACF;AAED,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,WAAW,GAAG,kBAAkB,CAKvF;AAED,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,eAAe,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,EAC/D,WAAW,EAAE;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAAA;CAAC,GACzD,kBAAkB,CAOpB;AAED;;;;GAIG;AACH,wBAAgB,qCAAqC,CACnD,gBAAgB,EAAE,SAAS,CAAC,cAAc,CAAC,GAC1C,8BAA8B,CAgBhC"}
|
|
@@ -14,8 +14,8 @@ export function getSyncCommitteeCache(validatorIndices) {
|
|
|
14
14
|
validatorIndexMap: computeValidatorSyncCommitteeIndexMap(validatorIndices),
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
export function computeSyncCommitteeCache(syncCommittee,
|
|
18
|
-
const validatorIndices = computeSyncCommitteeValidatorIndices(syncCommittee,
|
|
17
|
+
export function computeSyncCommitteeCache(syncCommittee, pubkeyCache) {
|
|
18
|
+
const validatorIndices = computeSyncCommitteeValidatorIndices(syncCommittee, pubkeyCache);
|
|
19
19
|
const validatorIndexMap = computeValidatorSyncCommitteeIndexMap(validatorIndices);
|
|
20
20
|
return {
|
|
21
21
|
validatorIndices,
|
|
@@ -45,11 +45,11 @@ export function computeValidatorSyncCommitteeIndexMap(validatorIndices) {
|
|
|
45
45
|
/**
|
|
46
46
|
* Extract validator indices from current and next sync committee
|
|
47
47
|
*/
|
|
48
|
-
function computeSyncCommitteeValidatorIndices(syncCommittee,
|
|
48
|
+
function computeSyncCommitteeValidatorIndices(syncCommittee, pubkeyCache) {
|
|
49
49
|
const pubkeys = syncCommittee.pubkeys.getAllReadonly();
|
|
50
50
|
const validatorIndices = new Uint32Array(pubkeys.length);
|
|
51
51
|
for (const [i, pubkey] of pubkeys.entries()) {
|
|
52
|
-
const validatorIndex =
|
|
52
|
+
const validatorIndex = pubkeyCache.getIndex(pubkey);
|
|
53
53
|
if (validatorIndex === null) {
|
|
54
54
|
throw Error(`SyncCommittee pubkey is unknown ${toPubkeyHex(pubkey)}`);
|
|
55
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommitteeCache.js","sourceRoot":"","sources":["../../src/cache/syncCommitteeCache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"syncCommitteeCache.js","sourceRoot":"","sources":["../../src/cache/syncCommitteeCache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAkB5C,6CAA6C;AAC7C,MAAM,OAAO,uBAAuB;IAClC,IAAI,gBAAgB;QAClB,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,iBAAiB;QACnB,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CAAC,gBAA6B;IACjE,OAAO;QACL,gBAAgB;QAChB,iBAAiB,EAAE,qCAAqC,CAAC,gBAAgB,CAAC;KAC3E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,aAA+D,EAC/D,WAA0D;IAE1D,MAAM,gBAAgB,GAAG,oCAAoC,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC1F,MAAM,iBAAiB,GAAG,qCAAqC,CAAC,gBAAgB,CAAC,CAAC;IAClF,OAAO;QACL,gBAAgB;QAChB,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qCAAqC,CACnD,gBAA2C;IAE3C,MAAM,GAAG,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEhD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5D,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAS,oCAAoC,CAC3C,aAA+D,EAC/D,WAA0D;IAE1D,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;IACvD,MAAM,gBAAgB,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,KAAK,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,MAAM,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC5B,MAAM,KAAK,CAAC,mCAAmC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,gBAAgB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
|
package/lib/index.d.ts
CHANGED
|
@@ -10,14 +10,16 @@ export { ProposerRewardType } from "./block/types.js";
|
|
|
10
10
|
export { type EffectiveBalanceIncrements, getEffectiveBalanceIncrementsWithLen, getEffectiveBalanceIncrementsZeroed, } from "./cache/effectiveBalanceIncrements.js";
|
|
11
11
|
export { EpochCache, type EpochCacheImmutableData, createEmptyEpochCacheImmutableData, } from "./cache/epochCache.js";
|
|
12
12
|
export { type EpochTransitionCache, beforeProcessEpoch } from "./cache/epochTransitionCache.js";
|
|
13
|
-
export { type
|
|
13
|
+
export { type PubkeyCache, createPubkeyCache, syncPubkeys } from "./cache/pubkeyCache.js";
|
|
14
14
|
export { type BeaconStateCache, createCachedBeaconState, isCachedBeaconState, isStateBalancesNodesPopulated, isStateValidatorsNodesPopulated, loadCachedBeaconState, } from "./cache/stateCache.js";
|
|
15
|
+
export { type SyncCommitteeCache } from "./cache/syncCommitteeCache.js";
|
|
15
16
|
export * from "./constants/index.js";
|
|
16
17
|
export type { EpochTransitionStep } from "./epoch/index.js";
|
|
17
18
|
export { type BeaconStateTransitionMetrics, getMetrics } from "./metrics.js";
|
|
18
19
|
export * from "./rewards/index.js";
|
|
19
20
|
export * from "./signatureSets/index.js";
|
|
20
21
|
export * from "./stateTransition.js";
|
|
22
|
+
export * from "./stateView/index.js";
|
|
21
23
|
export type { BeaconStateAllForks, BeaconStateAltair, BeaconStateBellatrix, BeaconStateCapella, BeaconStateDeneb, BeaconStateElectra, BeaconStateExecutions, BeaconStateFulu, BeaconStateGloas, BeaconStatePhase0, CachedBeaconStateAllForks, CachedBeaconStateAltair, CachedBeaconStateBellatrix, CachedBeaconStateCapella, CachedBeaconStateDeneb, CachedBeaconStateElectra, CachedBeaconStateExecutions, CachedBeaconStateFulu, CachedBeaconStateGloas, CachedBeaconStatePhase0, } from "./types.js";
|
|
22
24
|
export * from "./util/index.js";
|
|
23
25
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,iCAAiC,EAAE,yBAAyB,EAAC,MAAM,sCAAsC,CAAC;AAClH,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAC,2BAA2B,EAAC,MAAM,wCAAwC,CAAC;AAEnF,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAE/E,OAAO,EAAC,qBAAqB,EAAE,wBAAwB,EAAE,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AAEtH,OAAO,EAAC,sBAAsB,EAAC,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,KAAK,0BAA0B,EAC/B,oCAAoC,EACpC,mCAAmC,GACpC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,UAAU,EACV,KAAK,uBAAuB,EAC5B,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,KAAK,oBAAoB,EAAE,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AAC9F,OAAO,EAAC,KAAK,iBAAiB,EAAE,WAAW,EAAC,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,iCAAiC,EAAE,yBAAyB,EAAC,MAAM,sCAAsC,CAAC;AAClH,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAC,2BAA2B,EAAC,MAAM,wCAAwC,CAAC;AAEnF,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAE/E,OAAO,EAAC,qBAAqB,EAAE,wBAAwB,EAAE,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AAEtH,OAAO,EAAC,sBAAsB,EAAC,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,KAAK,0BAA0B,EAC/B,oCAAoC,EACpC,mCAAmC,GACpC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,UAAU,EACV,KAAK,uBAAuB,EAC5B,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,KAAK,oBAAoB,EAAE,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AAC9F,OAAO,EAAC,KAAK,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAC,MAAM,wBAAwB,CAAC;AAExF,OAAO,EACL,KAAK,gBAAgB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,EAC/B,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,KAAK,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AACtE,cAAc,sBAAsB,CAAC;AACrC,YAAY,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAC,KAAK,4BAA4B,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAC3E,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAEhB,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,cAAc,iBAAiB,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -13,7 +13,7 @@ export { ProposerRewardType } from "./block/types.js";
|
|
|
13
13
|
export { getEffectiveBalanceIncrementsWithLen, getEffectiveBalanceIncrementsZeroed, } from "./cache/effectiveBalanceIncrements.js";
|
|
14
14
|
export { EpochCache, createEmptyEpochCacheImmutableData, } from "./cache/epochCache.js";
|
|
15
15
|
export { beforeProcessEpoch } from "./cache/epochTransitionCache.js";
|
|
16
|
-
export { syncPubkeys } from "./cache/pubkeyCache.js";
|
|
16
|
+
export { createPubkeyCache, syncPubkeys } from "./cache/pubkeyCache.js";
|
|
17
17
|
// Main state caches
|
|
18
18
|
export { createCachedBeaconState, isCachedBeaconState, isStateBalancesNodesPopulated, isStateValidatorsNodesPopulated, loadCachedBeaconState, } from "./cache/stateCache.js";
|
|
19
19
|
export * from "./constants/index.js";
|
|
@@ -21,5 +21,6 @@ export { getMetrics } from "./metrics.js";
|
|
|
21
21
|
export * from "./rewards/index.js";
|
|
22
22
|
export * from "./signatureSets/index.js";
|
|
23
23
|
export * from "./stateTransition.js";
|
|
24
|
+
export * from "./stateView/index.js";
|
|
24
25
|
export * from "./util/index.js";
|
|
25
26
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,iCAAiC,EAAE,yBAAyB,EAAC,MAAM,sCAAsC,CAAC;AAClH,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAC,2BAA2B,EAAC,MAAM,wCAAwC,CAAC;AACnF,qCAAqC;AACrC,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,yBAAyB;AACzB,OAAO,EAAC,qBAAqB,EAAE,wBAAwB,EAAE,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AACtH,6BAA6B;AAC7B,OAAO,EAAC,sBAAsB,EAAC,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAEL,oCAAoC,EACpC,mCAAmC,GACpC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,UAAU,EAEV,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAA4B,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AAC9F,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,iCAAiC,EAAE,yBAAyB,EAAC,MAAM,sCAAsC,CAAC;AAClH,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAC,2BAA2B,EAAC,MAAM,wCAAwC,CAAC;AACnF,qCAAqC;AACrC,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,yBAAyB;AACzB,OAAO,EAAC,qBAAqB,EAAE,wBAAwB,EAAE,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AACtH,6BAA6B;AAC7B,OAAO,EAAC,sBAAsB,EAAC,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAEL,oCAAoC,EACpC,mCAAmC,GACpC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,UAAU,EAEV,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAA4B,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AAC9F,OAAO,EAAmB,iBAAiB,EAAE,WAAW,EAAC,MAAM,wBAAwB,CAAC;AACxF,oBAAoB;AACpB,OAAO,EAEL,uBAAuB,EACvB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,EAC/B,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,sBAAsB,CAAC;AAErC,OAAO,EAAoC,UAAU,EAAC,MAAM,cAAc,CAAC;AAC3E,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AAwBrC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ForkName, ForkPostBellatrix } from "@lodestar/params";
|
|
2
|
+
import { BeaconBlockBody } from "@lodestar/types";
|
|
3
|
+
import { BeaconStateAllForks, CachedBeaconStateAllForks } from "../types.js";
|
|
4
|
+
import { SyncCommitteeWitness } from "./types.js";
|
|
5
|
+
export declare function getSyncCommitteesWitness(fork: ForkName, state: BeaconStateAllForks): SyncCommitteeWitness;
|
|
6
|
+
export declare function getNextSyncCommitteeBranch(syncCommitteesWitness: SyncCommitteeWitness): Uint8Array[];
|
|
7
|
+
export declare function getCurrentSyncCommitteeBranch(syncCommitteesWitness: SyncCommitteeWitness): Uint8Array[];
|
|
8
|
+
export declare function getFinalizedRootProof(state: CachedBeaconStateAllForks): Uint8Array[];
|
|
9
|
+
export declare function getBlockBodyExecutionHeaderProof(fork: ForkPostBellatrix, body: BeaconBlockBody<ForkPostBellatrix>): Uint8Array[];
|
|
10
|
+
//# sourceMappingURL=proofs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proofs.d.ts","sourceRoot":"","sources":["../../src/lightClient/proofs.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,QAAQ,EACR,iBAAiB,EAElB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,eAAe,EAAmB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAC,mBAAmB,EAAE,yBAAyB,EAAC,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAC,oBAAoB,EAAC,MAAM,YAAY,CAAC;AAEhD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CA8CzG;AAED,wBAAgB,0BAA0B,CAAC,qBAAqB,EAAE,oBAAoB,GAAG,UAAU,EAAE,CAGpG;AAED,wBAAgB,6BAA6B,CAAC,qBAAqB,EAAE,oBAAoB,GAAG,UAAU,EAAE,CAGvG;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,GAAG,UAAU,EAAE,CAGpF;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,eAAe,CAAC,iBAAiB,CAAC,GACvC,UAAU,EAAE,CAGd"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Tree } from "@chainsafe/persistent-merkle-tree";
|
|
2
|
+
import { BLOCK_BODY_EXECUTION_PAYLOAD_GINDEX, FINALIZED_ROOT_GINDEX, FINALIZED_ROOT_GINDEX_ELECTRA, isForkPostElectra, } from "@lodestar/params";
|
|
3
|
+
import { ssz } from "@lodestar/types";
|
|
4
|
+
export function getSyncCommitteesWitness(fork, state) {
|
|
5
|
+
const n1 = state.node;
|
|
6
|
+
let witness;
|
|
7
|
+
let currentSyncCommitteeRoot;
|
|
8
|
+
let nextSyncCommitteeRoot;
|
|
9
|
+
if (isForkPostElectra(fork)) {
|
|
10
|
+
const n2 = n1.left;
|
|
11
|
+
const n5 = n2.right;
|
|
12
|
+
const n10 = n5.left;
|
|
13
|
+
const n21 = n10.right;
|
|
14
|
+
const n43 = n21.right;
|
|
15
|
+
currentSyncCommitteeRoot = n43.left.root; // n86
|
|
16
|
+
nextSyncCommitteeRoot = n43.right.root; // n87
|
|
17
|
+
// Witness branch is sorted by descending gindex
|
|
18
|
+
witness = [
|
|
19
|
+
n21.left.root, // 42
|
|
20
|
+
n10.left.root, // 20
|
|
21
|
+
n5.right.root, // 11
|
|
22
|
+
n2.left.root, // 4
|
|
23
|
+
n1.right.root, // 3
|
|
24
|
+
];
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
const n3 = n1.right; // [1]0110
|
|
28
|
+
const n6 = n3.left; // 1[0]110
|
|
29
|
+
const n13 = n6.right; // 10[1]10
|
|
30
|
+
const n27 = n13.right; // 101[1]0
|
|
31
|
+
currentSyncCommitteeRoot = n27.left.root; // n54 1011[0]
|
|
32
|
+
nextSyncCommitteeRoot = n27.right.root; // n55 1011[1]
|
|
33
|
+
// Witness branch is sorted by descending gindex
|
|
34
|
+
witness = [
|
|
35
|
+
n13.left.root, // 26
|
|
36
|
+
n6.left.root, // 12
|
|
37
|
+
n3.right.root, // 7
|
|
38
|
+
n1.left.root, // 2
|
|
39
|
+
];
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
witness,
|
|
43
|
+
currentSyncCommitteeRoot,
|
|
44
|
+
nextSyncCommitteeRoot,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function getNextSyncCommitteeBranch(syncCommitteesWitness) {
|
|
48
|
+
// Witness branch is sorted by descending gindex
|
|
49
|
+
return [syncCommitteesWitness.currentSyncCommitteeRoot, ...syncCommitteesWitness.witness];
|
|
50
|
+
}
|
|
51
|
+
export function getCurrentSyncCommitteeBranch(syncCommitteesWitness) {
|
|
52
|
+
// Witness branch is sorted by descending gindex
|
|
53
|
+
return [syncCommitteesWitness.nextSyncCommitteeRoot, ...syncCommitteesWitness.witness];
|
|
54
|
+
}
|
|
55
|
+
export function getFinalizedRootProof(state) {
|
|
56
|
+
const finalizedRootGindex = state.epochCtx.isPostElectra() ? FINALIZED_ROOT_GINDEX_ELECTRA : FINALIZED_ROOT_GINDEX;
|
|
57
|
+
return new Tree(state.node).getSingleProof(BigInt(finalizedRootGindex));
|
|
58
|
+
}
|
|
59
|
+
export function getBlockBodyExecutionHeaderProof(fork, body) {
|
|
60
|
+
const bodyView = ssz[fork].BeaconBlockBody.toView(body);
|
|
61
|
+
return new Tree(bodyView.node).getSingleProof(BigInt(BLOCK_BODY_EXECUTION_PAYLOAD_GINDEX));
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=proofs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proofs.js","sourceRoot":"","sources":["../../src/lightClient/proofs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* We aren't creating the sync committee proofs separately because our ssz library automatically adds leaves to composite types,
|
|
3
|
+
* so they're already included in the state proof, currently with no way to specify otherwise
|
|
4
|
+
*
|
|
5
|
+
* remove two offsets so the # of offsets in the state proof will be the # expected
|
|
6
|
+
* This is a hack, but properly setting the offsets in the state proof would require either removing witnesses needed for the committees
|
|
7
|
+
* or setting the roots of the committees in the state proof
|
|
8
|
+
* this will always be 1, syncProofLeavesLength
|
|
9
|
+
*
|
|
10
|
+
*
|
|
11
|
+
* With empty state (minimal)
|
|
12
|
+
* - `genesisTime = 0xffffffff`
|
|
13
|
+
* - `genesisValidatorsRoot = Buffer.alloc(32, 1)`
|
|
14
|
+
*
|
|
15
|
+
* Proof:
|
|
16
|
+
* ```
|
|
17
|
+
* offsets: [ 5, 4, 3, 2, 1 ]
|
|
18
|
+
* leaves: [
|
|
19
|
+
* '0xffffffff00000000000000000000000000000000000000000000000000000000',
|
|
20
|
+
* '0x0101010101010101010101010101010101010101010101010101010101010101',
|
|
21
|
+
* '0xb11b8bcf59425d6c99019cca1d2c2e47b51a2f74917a67ad132274f43e13ec43',
|
|
22
|
+
* '0x74bd1f2437cdf74b0904ee525d8da070a3fa27570942bf42cbab3dc5939600f0',
|
|
23
|
+
* '0x7f06739e5a42360c56e519a511675901c95402ea9877edc0d9a87471b1374a6a',
|
|
24
|
+
* '0x9f534204ba3c0b69fcb42a11987bfcbc5aea0463e5b0614312ded4b62cf3a380'
|
|
25
|
+
* ]
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export type SyncCommitteeWitness = {
|
|
29
|
+
/** Vector[Bytes32, 4] or Vector[Bytes32, 5] depending on the fork */
|
|
30
|
+
witness: Uint8Array[];
|
|
31
|
+
currentSyncCommitteeRoot: Uint8Array;
|
|
32
|
+
nextSyncCommitteeRoot: Uint8Array;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lightClient/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,qEAAqE;IACrE,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,wBAAwB,EAAE,UAAU,CAAC;IACrC,qBAAqB,EAAE,UAAU,CAAC;CACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lightClient/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { PubkeyIndexMap } from "@chainsafe/pubkey-index-map";
|
|
2
1
|
import { BeaconConfig } from "@lodestar/config";
|
|
3
2
|
import { ValidatorIndex, rewards } from "@lodestar/types";
|
|
3
|
+
import { PubkeyCache } from "../cache/pubkeyCache.js";
|
|
4
4
|
import { CachedBeaconStateAllForks } from "../types.js";
|
|
5
|
-
export declare function computeAttestationsRewards(config: BeaconConfig,
|
|
5
|
+
export declare function computeAttestationsRewards(config: BeaconConfig, pubkeyCache: PubkeyCache, state: CachedBeaconStateAllForks, validatorIds?: (ValidatorIndex | string)[]): Promise<rewards.AttestationsRewards>;
|
|
6
6
|
//# sourceMappingURL=attestationsRewards.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attestationsRewards.d.ts","sourceRoot":"","sources":["../../src/rewards/attestationsRewards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"attestationsRewards.d.ts","sourceRoot":"","sources":["../../src/rewards/attestationsRewards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAc9C,OAAO,EAAC,cAAc,EAAE,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAGxD,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAC,yBAAyB,EAA0B,MAAM,aAAa,CAAC;AAgB/E,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,yBAAyB,EAChC,YAAY,CAAC,EAAE,CAAC,cAAc,GAAG,MAAM,CAAC,EAAE,GACzC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAyBtC"}
|
|
@@ -4,7 +4,7 @@ import { beforeProcessEpoch } from "../cache/epochTransitionCache.js";
|
|
|
4
4
|
import { FLAG_ELIGIBLE_ATTESTER, FLAG_PREV_HEAD_ATTESTER_UNSLASHED, FLAG_PREV_SOURCE_ATTESTER_UNSLASHED, FLAG_PREV_TARGET_ATTESTER_UNSLASHED, hasMarkers, isInInactivityLeak, } from "../util/index.js";
|
|
5
5
|
const defaultAttestationsReward = { head: 0, target: 0, source: 0, inclusionDelay: 0, inactivity: 0 };
|
|
6
6
|
const defaultAttestationsPenalty = { target: 0, source: 0 };
|
|
7
|
-
export async function computeAttestationsRewards(config,
|
|
7
|
+
export async function computeAttestationsRewards(config, pubkeyCache, state, validatorIds) {
|
|
8
8
|
const fork = config.getForkName(state.slot);
|
|
9
9
|
if (fork === ForkName.phase0) {
|
|
10
10
|
throw Error("Unsupported fork. Attestations rewards calculation is not available in phase0");
|
|
@@ -12,7 +12,7 @@ export async function computeAttestationsRewards(config, pubkey2index, state, va
|
|
|
12
12
|
const stateAltair = state;
|
|
13
13
|
const transitionCache = beforeProcessEpoch(stateAltair);
|
|
14
14
|
const [idealRewards, penalties] = computeIdealAttestationsRewardsAndPenaltiesAltair(config, stateAltair, transitionCache);
|
|
15
|
-
const totalRewards = computeTotalAttestationsRewardsAltair(config,
|
|
15
|
+
const totalRewards = computeTotalAttestationsRewardsAltair(config, pubkeyCache, stateAltair, transitionCache, idealRewards, penalties, validatorIds);
|
|
16
16
|
return { idealRewards, totalRewards };
|
|
17
17
|
}
|
|
18
18
|
function computeIdealAttestationsRewardsAndPenaltiesAltair(config, state, transitionCache) {
|
|
@@ -70,12 +70,12 @@ function computeIdealAttestationsRewardsAndPenaltiesAltair(config, state, transi
|
|
|
70
70
|
return [idealRewards, attestationsPenalties];
|
|
71
71
|
}
|
|
72
72
|
// Same calculation as `getRewardsAndPenaltiesAltair` but returns the breakdown of rewards instead of aggregated
|
|
73
|
-
function computeTotalAttestationsRewardsAltair(config,
|
|
73
|
+
function computeTotalAttestationsRewardsAltair(config, pubkeyCache, state, transitionCache, idealRewards, penalties, validatorIds = []) {
|
|
74
74
|
const rewards = [];
|
|
75
75
|
const { flags } = transitionCache;
|
|
76
76
|
const { epochCtx } = state;
|
|
77
77
|
const validatorIndices = validatorIds
|
|
78
|
-
.map((id) => (typeof id === "number" ? id :
|
|
78
|
+
.map((id) => (typeof id === "number" ? id : pubkeyCache.getIndex(fromHex(id))))
|
|
79
79
|
.filter((index) => index !== undefined); // Validator indices to include in the result
|
|
80
80
|
const inactivityPenaltyDenominator = config.INACTIVITY_SCORE_BIAS * INACTIVITY_PENALTY_QUOTIENT_ALTAIR;
|
|
81
81
|
for (let i = 0; i < flags.length; i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attestationsRewards.js","sourceRoot":"","sources":["../../src/rewards/attestationsRewards.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attestationsRewards.js","sourceRoot":"","sources":["../../src/rewards/attestationsRewards.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BeaconConfig } from "@lodestar/config";
|
|
2
2
|
import { BeaconBlock, ValidatorIndex, rewards } from "@lodestar/types";
|
|
3
|
-
import {
|
|
3
|
+
import { PubkeyCache } from "../cache/pubkeyCache.js";
|
|
4
4
|
import { CachedBeaconStateAllForks } from "../cache/stateCache.js";
|
|
5
|
-
export declare function computeSyncCommitteeRewards(config: BeaconConfig,
|
|
5
|
+
export declare function computeSyncCommitteeRewards(config: BeaconConfig, pubkeyCache: PubkeyCache, block: BeaconBlock, preState: CachedBeaconStateAllForks, validatorIds?: (ValidatorIndex | string)[]): Promise<rewards.SyncCommitteeRewards>;
|
|
6
6
|
//# sourceMappingURL=syncCommitteeRewards.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommitteeRewards.d.ts","sourceRoot":"","sources":["../../src/rewards/syncCommitteeRewards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,WAAW,EAAE,cAAc,EAAU,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"syncCommitteeRewards.d.ts","sourceRoot":"","sources":["../../src/rewards/syncCommitteeRewards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,WAAW,EAAE,cAAc,EAAU,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAC,yBAAyB,EAA0B,MAAM,wBAAwB,CAAC;AAE1F,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,yBAAyB,EACnC,YAAY,GAAE,CAAC,cAAc,GAAG,MAAM,CAAC,EAAO,GAC7C,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CA4CvC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ForkName, SYNC_COMMITTEE_SIZE } from "@lodestar/params";
|
|
2
|
-
export async function computeSyncCommitteeRewards(config,
|
|
2
|
+
export async function computeSyncCommitteeRewards(config, pubkeyCache, block, preState, validatorIds = []) {
|
|
3
3
|
const fork = config.getForkName(block.slot);
|
|
4
4
|
if (fork === ForkName.phase0) {
|
|
5
5
|
throw Error("Cannot get sync rewards as phase0 block does not have sync committee");
|
|
@@ -28,7 +28,10 @@ export async function computeSyncCommitteeRewards(config, index2pubkey, block, p
|
|
|
28
28
|
const rewards = Array.from(rewardDeltas, ([validatorIndex, reward]) => ({ validatorIndex, reward }));
|
|
29
29
|
if (validatorIds.length) {
|
|
30
30
|
const filtersSet = new Set(validatorIds);
|
|
31
|
-
return rewards.filter((reward) =>
|
|
31
|
+
return rewards.filter((reward) => {
|
|
32
|
+
const pubkeyHex = pubkeyCache.get(reward.validatorIndex)?.toHex();
|
|
33
|
+
return filtersSet.has(reward.validatorIndex) || (pubkeyHex !== undefined && filtersSet.has(pubkeyHex));
|
|
34
|
+
});
|
|
32
35
|
}
|
|
33
36
|
return rewards;
|
|
34
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommitteeRewards.js","sourceRoot":"","sources":["../../src/rewards/syncCommitteeRewards.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAK/D,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"syncCommitteeRewards.js","sourceRoot":"","sources":["../../src/rewards/syncCommitteeRewards.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAK/D,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAAoB,EACpB,WAAwB,EACxB,KAAkB,EAClB,QAAmC,EACnC,eAA4C,EAAE;IAE9C,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,IAAI,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,sEAAsE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,WAAW,GAAG,KAA2B,CAAC;IAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,EAA6B,CAAC;IAEnE,iGAAiG;IACjG,MAAM,6BAA6B,GAAG,cAAc,CAAC,QAAQ,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,KAAK,CAC9G,CAAC,EACD,mBAAmB,CACpB,CAAC;IACF,MAAM,EAAC,qBAAqB,EAAC,GAAG,cAAc,CAAC,QAAQ,CAAC;IACxD,MAAM,EAAC,iBAAiB,EAAC,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;IAE3D,kFAAkF;IAClF,MAAM,YAAY,GAAgC,IAAI,GAAG,EAAE,CAAC;IAE5D,kEAAkE;IAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,6BAA6B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9D,MAAM,cAAc,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,oCAAoC;YACpC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,GAAG,qBAAqB,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,wCAAwC;YACxC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,GAAG,qBAAqB,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,cAAc,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC;IAEnG,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACzC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC;YAClE,OAAO,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACzG,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { BeaconConfig } from "@lodestar/config";
|
|
2
|
-
import {
|
|
3
|
-
import { CachedBeaconStateGloas } from "../types.js";
|
|
2
|
+
import { gloas } from "@lodestar/types";
|
|
4
3
|
import { ISignatureSet } from "../util/index.js";
|
|
5
|
-
export declare function getIndexedPayloadAttestationSignatureSet(
|
|
6
|
-
export declare function getPayloadAttestationDataSigningRoot(config: BeaconConfig,
|
|
4
|
+
export declare function getIndexedPayloadAttestationSignatureSet(config: BeaconConfig, indexedPayloadAttestation: gloas.IndexedPayloadAttestation): ISignatureSet;
|
|
5
|
+
export declare function getPayloadAttestationDataSigningRoot(config: BeaconConfig, data: gloas.PayloadAttestationData): Uint8Array;
|
|
7
6
|
//# sourceMappingURL=indexedPayloadAttestation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexedPayloadAttestation.d.ts","sourceRoot":"","sources":["../../src/signatureSets/indexedPayloadAttestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"indexedPayloadAttestation.d.ts","sourceRoot":"","sources":["../../src/signatureSets/indexedPayloadAttestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,KAAK,EAAM,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,aAAa,EAAgE,MAAM,kBAAkB,CAAC;AAE9G,wBAAgB,wCAAwC,CACtD,MAAM,EAAE,YAAY,EACpB,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,GACzD,aAAa,CAMf;AAED,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,KAAK,CAAC,sBAAsB,GACjC,UAAU,CAIZ"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { DOMAIN_PTC_ATTESTER } from "@lodestar/params";
|
|
2
2
|
import { ssz } from "@lodestar/types";
|
|
3
3
|
import { computeSigningRoot, createAggregateSignatureSetFromComponents } from "../util/index.js";
|
|
4
|
-
export function getIndexedPayloadAttestationSignatureSet(
|
|
5
|
-
return createAggregateSignatureSetFromComponents(indexedPayloadAttestation.attestingIndices, getPayloadAttestationDataSigningRoot(
|
|
4
|
+
export function getIndexedPayloadAttestationSignatureSet(config, indexedPayloadAttestation) {
|
|
5
|
+
return createAggregateSignatureSetFromComponents(indexedPayloadAttestation.attestingIndices, getPayloadAttestationDataSigningRoot(config, indexedPayloadAttestation.data), indexedPayloadAttestation.signature);
|
|
6
6
|
}
|
|
7
|
-
export function getPayloadAttestationDataSigningRoot(config,
|
|
8
|
-
const domain = config.getDomain(
|
|
7
|
+
export function getPayloadAttestationDataSigningRoot(config, data) {
|
|
8
|
+
const domain = config.getDomain(data.slot, DOMAIN_PTC_ATTESTER);
|
|
9
9
|
return computeSigningRoot(ssz.gloas.PayloadAttestationData, data, domain);
|
|
10
10
|
}
|
|
11
11
|
//# sourceMappingURL=indexedPayloadAttestation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexedPayloadAttestation.js","sourceRoot":"","sources":["../../src/signatureSets/indexedPayloadAttestation.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"indexedPayloadAttestation.js","sourceRoot":"","sources":["../../src/signatureSets/indexedPayloadAttestation.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAQ,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAgB,kBAAkB,EAAE,yCAAyC,EAAC,MAAM,kBAAkB,CAAC;AAE9G,MAAM,UAAU,wCAAwC,CACtD,MAAoB,EACpB,yBAA0D;IAE1D,OAAO,yCAAyC,CAC9C,yBAAyB,CAAC,gBAAgB,EAC1C,oCAAoC,CAAC,MAAM,EAAE,yBAAyB,CAAC,IAAI,CAAC,EAC5E,yBAAyB,CAAC,SAAS,CACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,MAAoB,EACpB,IAAkC;IAElC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAEhE,OAAO,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { BeaconConfig } from "@lodestar/config";
|
|
2
2
|
import { SignedBeaconBlock, SignedBlindedBeaconBlock, Slot, phase0 } from "@lodestar/types";
|
|
3
|
-
import {
|
|
3
|
+
import { PubkeyCache } from "../cache/pubkeyCache.js";
|
|
4
4
|
import { ISignatureSet } from "../util/signatureSets.js";
|
|
5
|
-
export declare function verifyProposerSignature(config: BeaconConfig,
|
|
5
|
+
export declare function verifyProposerSignature(config: BeaconConfig, pubkeyCache: PubkeyCache, signedBlock: SignedBeaconBlock | SignedBlindedBeaconBlock): boolean;
|
|
6
6
|
export declare function getBlockProposerSignatureSet(config: BeaconConfig, signedBlock: SignedBeaconBlock | SignedBlindedBeaconBlock): ISignatureSet;
|
|
7
7
|
export declare function getBlockHeaderProposerSignatureSetByParentStateSlot(config: BeaconConfig, parentStateSlot: Slot, signedBlockHeader: phase0.SignedBeaconBlockHeader): ISignatureSet;
|
|
8
8
|
export declare function getBlockHeaderProposerSignatureSetByHeaderSlot(config: BeaconConfig, signedBlockHeader: phase0.SignedBeaconBlockHeader): ISignatureSet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposer.d.ts","sourceRoot":"","sources":["../../src/signatureSets/proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,iBAAiB,EAAE,wBAAwB,EAAE,IAAI,EAAwB,MAAM,EAAM,MAAM,iBAAiB,CAAC;AACrH,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"proposer.d.ts","sourceRoot":"","sources":["../../src/signatureSets/proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,iBAAiB,EAAE,wBAAwB,EAAE,IAAI,EAAwB,MAAM,EAAM,MAAM,iBAAiB,CAAC;AACrH,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAC,aAAa,EAAuC,MAAM,0BAA0B,CAAC;AAE7F,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,iBAAiB,GAAG,wBAAwB,GACxD,OAAO,CAGT;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,iBAAiB,GAAG,wBAAwB,GACxD,aAAa,CAgBf;AAED,wBAAgB,mDAAmD,CACjE,MAAM,EAAE,YAAY,EACpB,eAAe,EAAE,IAAI,EACrB,iBAAiB,EAAE,MAAM,CAAC,uBAAuB,iBAGlD;AAED,wBAAgB,8CAA8C,CAC5D,MAAM,EAAE,YAAY,EACpB,iBAAiB,EAAE,MAAM,CAAC,uBAAuB,iBAGlD"}
|