@lodestar/beacon-node 1.26.0-dev.3dcd668ca9 → 1.26.0-dev.3eef8ea470
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/api/impl/beacon/pool/index.js +11 -5
- package/lib/api/impl/beacon/pool/index.js.map +1 -1
- package/lib/api/impl/config/constants.d.ts +3 -0
- package/lib/api/impl/config/constants.js +4 -1
- package/lib/api/impl/config/constants.js.map +1 -1
- package/lib/chain/errors/attestationError.d.ts +7 -1
- package/lib/chain/errors/attestationError.js +4 -0
- package/lib/chain/errors/attestationError.js.map +1 -1
- package/lib/chain/opPools/attestationPool.d.ts +2 -2
- package/lib/chain/opPools/attestationPool.js +20 -14
- package/lib/chain/opPools/attestationPool.js.map +1 -1
- package/lib/chain/seenCache/seenAttestationData.d.ts +15 -7
- package/lib/chain/seenCache/seenAttestationData.js +33 -14
- package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
- package/lib/chain/validation/aggregateAndProof.js +2 -2
- package/lib/chain/validation/aggregateAndProof.js.map +1 -1
- package/lib/chain/validation/attestation.d.ts +18 -10
- package/lib/chain/validation/attestation.js +129 -81
- package/lib/chain/validation/attestation.js.map +1 -1
- package/lib/chain/validation/blobSidecar.d.ts +2 -1
- package/lib/chain/validation/blobSidecar.js +8 -7
- package/lib/chain/validation/blobSidecar.js.map +1 -1
- package/lib/chain/validation/block.js +3 -2
- package/lib/chain/validation/block.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +3 -1
- package/lib/execution/engine/interface.js +4 -0
- package/lib/execution/engine/interface.js.map +1 -1
- package/lib/execution/engine/types.d.ts +2 -2
- package/lib/execution/engine/types.js +67 -15
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/network/gossip/interface.d.ts +3 -3
- package/lib/network/gossip/topic.d.ts +13 -7
- package/lib/network/gossip/topic.js +22 -3
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/interface.d.ts +2 -2
- package/lib/network/network.d.ts +2 -2
- package/lib/network/network.js +4 -2
- package/lib/network/network.js.map +1 -1
- package/lib/network/processor/extractSlotRootFns.js +4 -4
- package/lib/network/processor/extractSlotRootFns.js.map +1 -1
- package/lib/network/processor/gossipHandlers.js +14 -7
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/gossipQueues/index.js +2 -3
- package/lib/network/processor/gossipQueues/index.js.map +1 -1
- package/lib/network/processor/index.js +1 -1
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/processor/types.d.ts +2 -1
- package/lib/network/reqresp/ReqRespBeaconNode.js +2 -1
- package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +2 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js +6 -5
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +2 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js +6 -5
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/index.js +2 -1
- package/lib/network/reqresp/handlers/index.js.map +1 -1
- package/lib/network/reqresp/rateLimit.d.ts +2 -2
- package/lib/network/reqresp/rateLimit.js +2 -0
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/reqresp/types.d.ts +2 -2
- package/lib/network/reqresp/types.js +4 -3
- package/lib/network/reqresp/types.js.map +1 -1
- package/lib/util/sszBytes.d.ts +42 -7
- package/lib/util/sszBytes.js +110 -15
- package/lib/util/sszBytes.js.map +1 -1
- package/lib/util/types.d.ts +3 -2
- package/lib/util/types.js +1 -1
- package/lib/util/types.js.map +1 -1
- package/package.json +17 -17
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { routes } from "@lodestar/api";
|
|
2
|
-
import { ForkName, SYNC_COMMITTEE_SUBNET_SIZE, isForkPostElectra } from "@lodestar/params";
|
|
2
|
+
import { ForkName, SYNC_COMMITTEE_SUBNET_SIZE, isForkPostElectra, } from "@lodestar/params";
|
|
3
3
|
import { isElectraAttestation, ssz } from "@lodestar/types";
|
|
4
4
|
import { AttestationError, AttestationErrorCode, GossipAction, SyncCommitteeError, } from "../../../../chain/errors/index.js";
|
|
5
5
|
import { validateApiAttesterSlashing } from "../../../../chain/validation/attesterSlashing.js";
|
|
6
6
|
import { validateApiBlsToExecutionChange } from "../../../../chain/validation/blsToExecutionChange.js";
|
|
7
|
-
import { validateApiAttestation } from "../../../../chain/validation/index.js";
|
|
7
|
+
import { toElectraSingleAttestation, validateApiAttestation } from "../../../../chain/validation/index.js";
|
|
8
8
|
import { validateApiProposerSlashing } from "../../../../chain/validation/proposerSlashing.js";
|
|
9
9
|
import { validateApiSyncCommittee } from "../../../../chain/validation/syncCommittee.js";
|
|
10
10
|
import { validateApiVoluntaryExit } from "../../../../chain/validation/voluntaryExit.js";
|
|
@@ -65,12 +65,18 @@ export function getBeaconPoolApi({ chain, logger, metrics, network, }) {
|
|
|
65
65
|
// when a validator is configured with multiple beacon node urls, this attestation data may come from another beacon node
|
|
66
66
|
// and the block hasn't been in our forkchoice since we haven't seen / processing that block
|
|
67
67
|
// see https://github.com/ChainSafe/lodestar/issues/5098
|
|
68
|
-
const { indexedAttestation, subnet, attDataRootHex, committeeIndex } = await validateGossipFnRetryUnknownRoot(validateFn, network, chain, slot, beaconBlockRoot);
|
|
68
|
+
const { indexedAttestation, subnet, attDataRootHex, committeeIndex, committeeValidatorIndex, committeeSize } = await validateGossipFnRetryUnknownRoot(validateFn, network, chain, slot, beaconBlockRoot);
|
|
69
69
|
if (network.shouldAggregate(subnet, slot)) {
|
|
70
|
-
const insertOutcome = chain.attestationPool.add(committeeIndex, attestation, attDataRootHex);
|
|
70
|
+
const insertOutcome = chain.attestationPool.add(committeeIndex, attestation, attDataRootHex, committeeValidatorIndex, committeeSize);
|
|
71
71
|
metrics?.opPool.attestationPoolInsertOutcome.inc({ insertOutcome });
|
|
72
72
|
}
|
|
73
|
-
|
|
73
|
+
if (isForkPostElectra(fork)) {
|
|
74
|
+
chain.emitter.emit(routes.events.EventType.singleAttestation, attestation);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
chain.emitter.emit(routes.events.EventType.attestation, attestation);
|
|
78
|
+
chain.emitter.emit(routes.events.EventType.singleAttestation, toElectraSingleAttestation(attestation, indexedAttestation.attestingIndices[0]));
|
|
79
|
+
}
|
|
74
80
|
const sentPeers = await network.publishBeaconAttestation(attestation, subnet);
|
|
75
81
|
metrics?.onPoolSubmitUnaggregatedAttestation(seenTimestampSec, indexedAttestation, subnet, sentPeers);
|
|
76
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/api/impl/beacon/pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AAErC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/api/impl/beacon/pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AAErC,OAAO,EACL,QAAQ,EAGR,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAwC,oBAAoB,EAAE,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACjG,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAC,2BAA2B,EAAC,MAAM,kDAAkD,CAAC;AAC7F,OAAO,EAAC,+BAA+B,EAAC,MAAM,sDAAsD,CAAC;AACrG,OAAO,EAAC,0BAA0B,EAAE,sBAAsB,EAAC,MAAM,uCAAuC,CAAC;AACzG,OAAO,EAAC,2BAA2B,EAAC,MAAM,kDAAkD,CAAC;AAC7F,OAAO,EAAC,wBAAwB,EAAC,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAC,wBAAwB,EAAC,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAC,gCAAgC,EAAC,MAAM,iDAAiD,CAAC;AACjG,OAAO,EAAC,QAAQ,EAAe,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAGpE,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,GACsD;IAC7D,OAAO;QACL,KAAK,CAAC,mBAAmB,CAAC,EAAC,IAAI,EAAE,cAAc,EAAC;YAC9C,2BAA2B;YAC3B,IAAI,YAAY,GAAkB,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/E,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAEvE,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,QAAQ,CAChB,GAAG,EACH,iFAAiF,IAAI,EAAE,CACxF,CAAC;YACJ,CAAC;YAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,cAAc,KAAK,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjG,CAAC;YAED,OAAO,EAAC,IAAI,EAAE,YAAY,EAAC,CAAC;QAC9B,CAAC;QAED,KAAK,CAAC,qBAAqB,CAAC,EAAC,IAAI,EAAE,cAAc,EAAC;YAChD,2BAA2B;YAC3B,IAAI,YAAY,GAAG,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACrG,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAE9C,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CACjD,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CACvF,CAAC;YAEF,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,cAAc,KAAK,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjG,CAAC;YAED,OAAO,EAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,EAAC,CAAC;QACrD,CAAC;QAED,KAAK,CAAC,wBAAwB;YAC5B,OAAO,EAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAC,CAAC;QACxD,CAAC;QAED,KAAK,CAAC,0BAA0B;YAC9B,6DAA6D;YAC7D,OAAO,EAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAC,EAAC,CAAC;QAC1F,CAAC;QAED,KAAK,CAAC,wBAAwB;YAC5B,OAAO,EAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAC,CAAC;QACxD,CAAC;QAED,KAAK,CAAC,qBAAqB;YACzB,OAAO,EAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAC,CAAC;QACrD,CAAC;QAED,KAAK,CAAC,4BAA4B;YAChC,OAAO,EAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,2BAA2B,EAAE,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC;QAClF,CAAC;QAED,KAAK,CAAC,sBAAsB,CAAC,EAAC,kBAAkB,EAAC;YAC/C,MAAM,IAAI,CAAC,wBAAwB,CAAC,EAAC,kBAAkB,EAAC,CAAC,CAAC;QAC5D,CAAC;QAED,KAAK,CAAC,wBAAwB,CAAC,EAAC,kBAAkB,EAAC;YACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YAC3C,MAAM,QAAQ,GAAgB,EAAE,CAAC;YAEjC,MAAM,OAAO,CAAC,GAAG,CACf,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE;gBAC9C,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBAC/D,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAC,WAAW,EAAE,cAAc,EAAE,IAAI,EAAC,CAAC,CAAC;oBAClG,MAAM,EAAC,IAAI,EAAE,eAAe,EAAC,GAAG,WAAW,CAAC,IAAI,CAAC;oBACjD,yHAAyH;oBACzH,4FAA4F;oBAC5F,wDAAwD;oBACxD,MAAM,EAAC,kBAAkB,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,uBAAuB,EAAE,aAAa,EAAC,GACxG,MAAM,gCAAgC,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;oBAE5F,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;wBAC1C,MAAM,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAC7C,cAAc,EACd,WAAW,EACX,cAAc,EACd,uBAAuB,EACvB,aAAa,CACd,CAAC;wBACF,OAAO,EAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,CAAC,EAAC,aAAa,EAAC,CAAC,CAAC;oBACpE,CAAC;oBAED,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC5B,KAAK,CAAC,OAAO,CAAC,IAAI,CAChB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,EACzC,WAAiD,CAClD,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,WAAgD,CAAC,CAAC;wBAC1G,KAAK,CAAC,OAAO,CAAC,IAAI,CAChB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,EACzC,0BAA0B,CACxB,WAAgD,EAChD,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CACvC,CACF,CAAC;oBACJ,CAAC;oBAED,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,wBAAwB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;oBAC9E,OAAO,EAAE,mCAAmC,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;gBACxG,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,MAAM,GAAG,EAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,EAAC,CAAC;oBAE5E,IAAI,CAAC,YAAY,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,oBAAoB,CAAC,yBAAyB,EAAE,CAAC;wBACpG,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;wBACnD,qGAAqG;wBACrG,qHAAqH;wBACrH,OAAO;oBACT,CAAC;oBAED,QAAQ,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAG,CAAW,CAAC,OAAO,EAAC,CAAC,CAAC;oBACzD,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,GAAG,EAAE,MAAM,EAAE,CAAU,CAAC,CAAC;oBAC3E,IAAI,CAAC,YAAY,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;wBACtE,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;oBAClF,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CACH,CAAC;YAEF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,YAAY,CAAC,+BAA+B,EAAE,QAAQ,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,KAAK,CAAC,2BAA2B,CAAC,EAAC,gBAAgB,EAAC;YAClD,MAAM,2BAA2B,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAC3D,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;YACtD,MAAM,OAAO,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;QAC1D,CAAC;QAED,KAAK,CAAC,6BAA6B,CAAC,EAAC,gBAAgB,EAAC;YACpD,uFAAuF;YACvF,MAAM,IAAI,CAAC,2BAA2B,CAAC,EAAC,gBAAgB,EAAC,CAAC,CAAC;QAC7D,CAAC;QAED,KAAK,CAAC,2BAA2B,CAAC,EAAC,gBAAgB,EAAC;YAClD,MAAM,2BAA2B,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAC3D,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;YACtD,MAAM,OAAO,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;QAC1D,CAAC;QAED,KAAK,CAAC,uBAAuB,CAAC,EAAC,mBAAmB,EAAC;YACjD,MAAM,wBAAwB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;YAC3D,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;YACtD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;YAC/E,MAAM,OAAO,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;QAC1D,CAAC;QAED,KAAK,CAAC,8BAA8B,CAAC,EAAC,qBAAqB,EAAC;YAC1D,MAAM,QAAQ,GAAgB,EAAE,CAAC;YAEjC,MAAM,OAAO,CAAC,GAAG,CACf,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,oBAAoB,EAAE,CAAC,EAAE,EAAE;gBAC1D,IAAI,CAAC;oBACH,iDAAiD;oBACjD,MAAM,+BAA+B,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;oBACnE,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC;oBAC9E,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;oBAE1E,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;oBAEvF,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,MAAM,OAAO,CAAC,2BAA2B,CAAC,oBAAoB,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,QAAQ,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAG,CAAW,CAAC,OAAO,EAAC,CAAC,CAAC;oBACzD,MAAM,CAAC,KAAK,CACV,4CAA4C,CAAC,GAAG,EAChD,EAAC,cAAc,EAAE,oBAAoB,CAAC,OAAO,CAAC,cAAc,EAAC,EAC7D,CAAU,CACX,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CACH,CAAC;YAEF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,YAAY,CAAC,2CAA2C,EAAE,QAAQ,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QAED;;;;;;;;;WASG;QACH,KAAK,CAAC,iCAAiC,CAAC,EAAC,UAAU,EAAC;YAClD,iDAAiD;YACjD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAS,CAAC;YAC/B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,wCAAwC;YACxC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YAEnC,MAAM,QAAQ,GAAgB,EAAE,CAAC;YAEjC,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE;gBACpC,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBAC5E,MAAM,kBAAkB,GAAG,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;oBACxF,IAAI,kBAAkB,KAAK,SAAS,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACxE,OAAO,CAAC,8BAA8B;oBACxC,CAAC;oBAED,4HAA4H;oBAC5H,+FAA+F;oBAC/F,MAAM,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;oBAExD,uGAAuG;oBACvG,mFAAmF;oBACnF,MAAM,OAAO,GAAa,EAAE,CAAC;oBAE7B,KAAK,MAAM,gBAAgB,IAAI,kBAAkB,EAAE,CAAC;wBAClD,2GAA2G;wBAC3G,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,0BAA0B,CAAC,CAAC;wBACzE,MAAM,mBAAmB,GAAG,gBAAgB,GAAG,0BAA0B,CAAC;wBAC1E,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;wBAE3E,sFAAsF;wBACtF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;4BACnE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACvB,CAAC;oBACH,CAAC;oBAED,wCAAwC;oBACxC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC7G,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,2EAA2E;oBAC3E,8DAA8D;oBAC9D,IAAK,CAAW,CAAC,OAAO,KAAK,wBAAwB,EAAE,CAAC;wBACtD,OAAO;oBACT,CAAC;oBAED,QAAQ,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAG,CAAW,CAAC,OAAO,EAAC,CAAC,CAAC;oBACzD,MAAM,CAAC,KAAK,CACV,+CAA+C,CAAC,GAAG,EACnD,EAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,cAAc,EAAC,EAChE,CAAU,CACX,CAAC;oBACF,IAAI,CAAC,YAAY,kBAAkB,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;wBACxE,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;oBACzF,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CACH,CAAC;YAEF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,YAAY,CAAC,4CAA4C,EAAE,QAAQ,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -45,5 +45,8 @@ export declare const specConstants: {
|
|
|
45
45
|
VERSIONED_HASH_VERSION_KZG: number;
|
|
46
46
|
UNSET_DEPOSIT_REQUESTS_START_INDEX: bigint;
|
|
47
47
|
FULL_EXIT_REQUEST_AMOUNT: number;
|
|
48
|
+
DEPOSIT_REQUEST_TYPE: number;
|
|
49
|
+
WITHDRAWAL_REQUEST_TYPE: number;
|
|
50
|
+
CONSOLIDATION_REQUEST_TYPE: number;
|
|
48
51
|
};
|
|
49
52
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ATTESTATION_SUBNET_COUNT, BASE_REWARDS_PER_EPOCH, BLOB_TX_TYPE, BLS_WITHDRAWAL_PREFIX, COMPOUNDING_WITHDRAWAL_PREFIX, DEPOSIT_CONTRACT_TREE_DEPTH, DOMAIN_AGGREGATE_AND_PROOF, DOMAIN_APPLICATION_BUILDER, DOMAIN_APPLICATION_MASK, DOMAIN_BEACON_ATTESTER, DOMAIN_BEACON_PROPOSER, DOMAIN_BLS_TO_EXECUTION_CHANGE, DOMAIN_CONTRIBUTION_AND_PROOF, DOMAIN_DEPOSIT, DOMAIN_RANDAO, DOMAIN_SELECTION_PROOF, DOMAIN_SYNC_COMMITTEE, DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF, DOMAIN_VOLUNTARY_EXIT, EPOCHS_PER_RANDOM_SUBNET_SUBSCRIPTION, ETH1_ADDRESS_WITHDRAWAL_PREFIX, FAR_FUTURE_EPOCH, FULL_EXIT_REQUEST_AMOUNT, GENESIS_EPOCH, GENESIS_SLOT, JUSTIFICATION_BITS_LENGTH, PROPOSER_WEIGHT, RANDOM_SUBNETS_PER_VALIDATOR, SYNC_COMMITTEE_SUBNET_COUNT, SYNC_REWARD_WEIGHT, TARGET_AGGREGATORS_PER_COMMITTEE, TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE, TIMELY_HEAD_FLAG_INDEX, TIMELY_HEAD_WEIGHT, TIMELY_SOURCE_FLAG_INDEX, TIMELY_SOURCE_WEIGHT, TIMELY_TARGET_FLAG_INDEX, TIMELY_TARGET_WEIGHT, UNSET_DEPOSIT_REQUESTS_START_INDEX, VERSIONED_HASH_VERSION_KZG, WEIGHT_DENOMINATOR, } from "@lodestar/params";
|
|
1
|
+
import { ATTESTATION_SUBNET_COUNT, BASE_REWARDS_PER_EPOCH, BLOB_TX_TYPE, BLS_WITHDRAWAL_PREFIX, COMPOUNDING_WITHDRAWAL_PREFIX, CONSOLIDATION_REQUEST_TYPE, DEPOSIT_CONTRACT_TREE_DEPTH, DEPOSIT_REQUEST_TYPE, DOMAIN_AGGREGATE_AND_PROOF, DOMAIN_APPLICATION_BUILDER, DOMAIN_APPLICATION_MASK, DOMAIN_BEACON_ATTESTER, DOMAIN_BEACON_PROPOSER, DOMAIN_BLS_TO_EXECUTION_CHANGE, DOMAIN_CONTRIBUTION_AND_PROOF, DOMAIN_DEPOSIT, DOMAIN_RANDAO, DOMAIN_SELECTION_PROOF, DOMAIN_SYNC_COMMITTEE, DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF, DOMAIN_VOLUNTARY_EXIT, EPOCHS_PER_RANDOM_SUBNET_SUBSCRIPTION, ETH1_ADDRESS_WITHDRAWAL_PREFIX, FAR_FUTURE_EPOCH, FULL_EXIT_REQUEST_AMOUNT, GENESIS_EPOCH, GENESIS_SLOT, JUSTIFICATION_BITS_LENGTH, PROPOSER_WEIGHT, RANDOM_SUBNETS_PER_VALIDATOR, SYNC_COMMITTEE_SUBNET_COUNT, SYNC_REWARD_WEIGHT, TARGET_AGGREGATORS_PER_COMMITTEE, TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE, TIMELY_HEAD_FLAG_INDEX, TIMELY_HEAD_WEIGHT, TIMELY_SOURCE_FLAG_INDEX, TIMELY_SOURCE_WEIGHT, TIMELY_TARGET_FLAG_INDEX, TIMELY_TARGET_WEIGHT, UNSET_DEPOSIT_REQUESTS_START_INDEX, VERSIONED_HASH_VERSION_KZG, WEIGHT_DENOMINATOR, WITHDRAWAL_REQUEST_TYPE, } from "@lodestar/params";
|
|
2
2
|
/**
|
|
3
3
|
* Hand-picked list of constants declared in consensus-spec .md files.
|
|
4
4
|
* This list is asserted to be up-to-date with the test `test/e2e/api/impl/config.test.ts`
|
|
@@ -59,5 +59,8 @@ export const specConstants = {
|
|
|
59
59
|
// electra
|
|
60
60
|
UNSET_DEPOSIT_REQUESTS_START_INDEX,
|
|
61
61
|
FULL_EXIT_REQUEST_AMOUNT,
|
|
62
|
+
DEPOSIT_REQUEST_TYPE,
|
|
63
|
+
WITHDRAWAL_REQUEST_TYPE,
|
|
64
|
+
CONSOLIDATION_REQUEST_TYPE,
|
|
62
65
|
};
|
|
63
66
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/api/impl/config/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,YAAY,EACZ,qBAAqB,EACrB,6BAA6B,EAC7B,2BAA2B,EAC3B,0BAA0B,EAC1B,0BAA0B,EAC1B,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,6BAA6B,EAC7B,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,qBAAqB,EACrB,qCAAqC,EACrC,qBAAqB,EACrB,qCAAqC,EACrC,8BAA8B,EAC9B,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,YAAY,EACZ,yBAAyB,EACzB,eAAe,EACf,4BAA4B,EAC5B,2BAA2B,EAC3B,kBAAkB,EAClB,gCAAgC,EAChC,wCAAwC,EACxC,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,kCAAkC,EAClC,0BAA0B,EAC1B,kBAAkB,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/api/impl/config/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,YAAY,EACZ,qBAAqB,EACrB,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,EAC1B,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,6BAA6B,EAC7B,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,qBAAqB,EACrB,qCAAqC,EACrC,qBAAqB,EACrB,qCAAqC,EACrC,8BAA8B,EAC9B,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,YAAY,EACZ,yBAAyB,EACzB,eAAe,EACf,4BAA4B,EAC5B,2BAA2B,EAC3B,kBAAkB,EAClB,gCAAgC,EAChC,wCAAwC,EACxC,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,kCAAkC,EAClC,0BAA0B,EAC1B,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAE1B;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,yBAAyB;IACzB,UAAU;IACV,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,sBAAsB;IACtB,2BAA2B;IAC3B,yBAAyB;IACzB,UAAU,EAAE,QAAQ;IACpB,yBAAyB;IACzB,qBAAqB;IACrB,8BAA8B;IAC9B,6BAA6B;IAC7B,kBAAkB;IAClB,sBAAsB;IACtB,sBAAsB;IACtB,aAAa;IACb,cAAc;IACd,qBAAqB;IACrB,sBAAsB;IACtB,0BAA0B;IAC1B,uBAAuB;IACvB,0BAA0B;IAE1B,sBAAsB;IACtB,gCAAgC;IAChC,4BAA4B;IAC5B,qCAAqC;IACrC,wBAAwB;IAExB,yBAAyB;IACzB,gCAAgC;IAChC,wBAAwB;IACxB,wBAAwB;IACxB,sBAAsB;IACtB,6BAA6B;IAC7B,oBAAoB;IACpB,oBAAoB;IACpB,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,kBAAkB;IAClB,kBAAkB;IAClB,qBAAqB;IACrB,qCAAqC;IACrC,6BAA6B;IAE7B,sBAAsB;IACtB,wCAAwC;IACxC,2BAA2B;IAE3B,0BAA0B;IAC1B,8BAA8B;IAE9B,cAAc;IACd,YAAY;IACZ,0BAA0B;IAE1B,UAAU;IACV,kCAAkC;IAClC,wBAAwB;IACxB,oBAAoB;IACpB,uBAAuB;IACvB,0BAA0B;CAC3B,CAAC"}
|
|
@@ -132,7 +132,11 @@ export declare enum AttestationErrorCode {
|
|
|
132
132
|
/**
|
|
133
133
|
* Electra: Invalid attestationData index: is non-zero
|
|
134
134
|
*/
|
|
135
|
-
NON_ZERO_ATTESTATION_DATA_INDEX = "ATTESTATION_ERROR_NON_ZERO_ATTESTATION_DATA_INDEX"
|
|
135
|
+
NON_ZERO_ATTESTATION_DATA_INDEX = "ATTESTATION_ERROR_NON_ZERO_ATTESTATION_DATA_INDEX",
|
|
136
|
+
/**
|
|
137
|
+
* Electra: Attester not in committee
|
|
138
|
+
*/
|
|
139
|
+
ATTESTER_NOT_IN_COMMITTEE = "ATTESTATION_ERROR_ATTESTER_NOT_IN_COMMITTEE"
|
|
136
140
|
}
|
|
137
141
|
export type AttestationErrorType = {
|
|
138
142
|
code: AttestationErrorCode.TARGET_STATE_MISSING;
|
|
@@ -230,6 +234,8 @@ export type AttestationErrorType = {
|
|
|
230
234
|
code: AttestationErrorCode.NOT_EXACTLY_ONE_COMMITTEE_BIT_SET;
|
|
231
235
|
} | {
|
|
232
236
|
code: AttestationErrorCode.NON_ZERO_ATTESTATION_DATA_INDEX;
|
|
237
|
+
} | {
|
|
238
|
+
code: AttestationErrorCode.ATTESTER_NOT_IN_COMMITTEE;
|
|
233
239
|
};
|
|
234
240
|
export declare class AttestationError extends GossipActionError<AttestationErrorType> {
|
|
235
241
|
getMetadata(): Record<string, string | number | null>;
|
|
@@ -134,6 +134,10 @@ export var AttestationErrorCode;
|
|
|
134
134
|
* Electra: Invalid attestationData index: is non-zero
|
|
135
135
|
*/
|
|
136
136
|
AttestationErrorCode["NON_ZERO_ATTESTATION_DATA_INDEX"] = "ATTESTATION_ERROR_NON_ZERO_ATTESTATION_DATA_INDEX";
|
|
137
|
+
/**
|
|
138
|
+
* Electra: Attester not in committee
|
|
139
|
+
*/
|
|
140
|
+
AttestationErrorCode["ATTESTER_NOT_IN_COMMITTEE"] = "ATTESTATION_ERROR_ATTESTER_NOT_IN_COMMITTEE";
|
|
137
141
|
})(AttestationErrorCode || (AttestationErrorCode = {}));
|
|
138
142
|
export class AttestationError extends GossipActionError {
|
|
139
143
|
getMetadata() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attestationError.js","sourceRoot":"","sources":["../../../src/chain/errors/attestationError.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAExD,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"attestationError.js","sourceRoot":"","sources":["../../../src/chain/errors/attestationError.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAExD,MAAM,CAAN,IAAY,oBAyIX;AAzID,WAAY,oBAAoB;IAC9B;;OAEG;IACH,uFAA+D,CAAA;IAC/D;;OAEG;IACH,qEAA6C,CAAA;IAC7C;;;OAGG;IACH,iEAAyC,CAAA;IACzC;;OAEG;IACH,mGAA2E,CAAA;IAC3E;;;OAGG;IACH,qGAA6E,CAAA;IAC7E;;OAEG;IACH,iGAAyE,CAAA;IACzE;;OAEG;IACH,iGAAyE,CAAA;IACzE;;OAEG;IACH,+FAAuE,CAAA;IACvE;;OAEG;IACH,6FAAqE,CAAA;IACrE;;OAEG;IACH,iGAAyE,CAAA;IACzE;;OAEG;IACH,iIAAyG,CAAA;IACzG;;OAEG;IACH,+EAAuD,CAAA;IACvD;;OAEG;IACH,mGAA2E,CAAA;IAC3E;;OAEG;IACH,qFAA6D,CAAA;IAC7D;;OAEG;IACH,iFAAyD,CAAA;IACzD;;OAEG;IACH,qHAA6F,CAAA;IAC7F;;OAEG;IACH,6FAAqE,CAAA;IACrE;;OAEG;IACH,uEAA+C,CAAA;IAC/C;;OAEG;IACH,mEAA2C,CAAA;IAC3C;;OAEG;IACH,6FAAqE,CAAA;IACrE;;OAEG;IACH,iFAAyD,CAAA;IACzD;;OAEG;IACH,+GAAuF,CAAA;IACvF;;OAEG;IACH,6EAAqD,CAAA;IACrD;;OAEG;IACH,qFAA6D,CAAA;IAC7D;;OAEG;IACH,iIAAyG,CAAA;IACzG;;OAEG;IACH,uGAA+E,CAAA;IAC/E;;OAEG;IACH,qHAA6F,CAAA;IAC7F;;OAEG;IACH,mFAA2D,CAAA;IAC3D;;OAEG;IACH,qGAA6E,CAAA;IAC7E;;OAEG;IACH,+FAAuE,CAAA;IACvE,8BAA8B;IAC9B,2FAAmE,CAAA;IACnE;;OAEG;IACH,iHAAyF,CAAA;IACzF;;OAEG;IACH,6GAAqF,CAAA;IACrF;;OAEG;IACH,iGAAyE,CAAA;AAC3E,CAAC,EAzIW,oBAAoB,KAApB,oBAAoB,QAyI/B;AAsCD,MAAM,OAAO,gBAAiB,SAAQ,iBAAuC;IAC3E,WAAW;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,oBAAoB,CAAC,mBAAmB;gBAC3C,OAAO,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC;YACvD,KAAK,oBAAoB,CAAC,mCAAmC;gBAC3D,uCAAuC;gBACvC,OAAO,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAC,CAAC;YAEtD;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Signature } from "@chainsafe/blst";
|
|
2
2
|
import { BitArray } from "@chainsafe/ssz";
|
|
3
3
|
import { ChainForkConfig } from "@lodestar/config";
|
|
4
|
-
import { Attestation, RootHex, Slot } from "@lodestar/types";
|
|
4
|
+
import { Attestation, RootHex, SingleAttestation, Slot } from "@lodestar/types";
|
|
5
5
|
import { IClock } from "../../util/clock.js";
|
|
6
6
|
import { InsertOutcome } from "./types.js";
|
|
7
7
|
type AggregateFastPhase0 = {
|
|
@@ -65,7 +65,7 @@ export declare class AttestationPool {
|
|
|
65
65
|
* - Valid committeeIndex
|
|
66
66
|
* - Valid data
|
|
67
67
|
*/
|
|
68
|
-
add(committeeIndex: CommitteeIndex, attestation:
|
|
68
|
+
add(committeeIndex: CommitteeIndex, attestation: SingleAttestation, attDataRootHex: RootHex, committeeValidatorIndex: number, committeeSize: number): InsertOutcome;
|
|
69
69
|
/**
|
|
70
70
|
* For validator API to get an aggregate
|
|
71
71
|
*/
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { aggregateSignatures } from "@chainsafe/blst";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { BitArray } from "@chainsafe/ssz";
|
|
3
|
+
import { MAX_COMMITTEES_PER_SLOT, isForkPostElectra } from "@lodestar/params";
|
|
4
|
+
import { isElectraSingleAttestation } from "@lodestar/types";
|
|
4
5
|
import { assert, MapDef } from "@lodestar/utils";
|
|
5
6
|
import { InsertOutcome, OpPoolError, OpPoolErrorCode } from "./types.js";
|
|
6
7
|
import { isElectraAggregate, pruneBySlot, signatureFromBytesNoCheck } from "./utils.js";
|
|
@@ -77,7 +78,7 @@ export class AttestationPool {
|
|
|
77
78
|
* - Valid committeeIndex
|
|
78
79
|
* - Valid data
|
|
79
80
|
*/
|
|
80
|
-
add(committeeIndex, attestation, attDataRootHex) {
|
|
81
|
+
add(committeeIndex, attestation, attDataRootHex, committeeValidatorIndex, committeeSize) {
|
|
81
82
|
const slot = attestation.data.slot;
|
|
82
83
|
const fork = this.config.getForkName(slot);
|
|
83
84
|
const lowestPermissibleSlot = this.lowestPermissibleSlot;
|
|
@@ -97,10 +98,10 @@ export class AttestationPool {
|
|
|
97
98
|
if (isForkPostElectra(fork)) {
|
|
98
99
|
// Electra only: this should not happen because attestation should be validated before reaching this
|
|
99
100
|
assert.notNull(committeeIndex, "Committee index should not be null in attestation pool post-electra");
|
|
100
|
-
assert.true(
|
|
101
|
+
assert.true(isElectraSingleAttestation(attestation), "Attestation should be type electra.SingleAttestation");
|
|
101
102
|
}
|
|
102
103
|
else {
|
|
103
|
-
assert.true(!
|
|
104
|
+
assert.true(!isElectraSingleAttestation(attestation), "Attestation should be type phase0.Attestation");
|
|
104
105
|
committeeIndex = null; // For pre-electra, committee index info is encoded in attDataRootIndex
|
|
105
106
|
}
|
|
106
107
|
// Pre-aggregate the contribution with existing items
|
|
@@ -112,10 +113,10 @@ export class AttestationPool {
|
|
|
112
113
|
const aggregate = aggregateByIndex.get(committeeIndex);
|
|
113
114
|
if (aggregate) {
|
|
114
115
|
// Aggregate mutating
|
|
115
|
-
return aggregateAttestationInto(aggregate, attestation);
|
|
116
|
+
return aggregateAttestationInto(aggregate, attestation, committeeValidatorIndex);
|
|
116
117
|
}
|
|
117
118
|
// Create new aggregate
|
|
118
|
-
aggregateByIndex.set(committeeIndex, attestationToAggregate(attestation));
|
|
119
|
+
aggregateByIndex.set(committeeIndex, attestationToAggregate(attestation, committeeValidatorIndex, committeeSize));
|
|
119
120
|
return InsertOutcome.NewData;
|
|
120
121
|
}
|
|
121
122
|
/**
|
|
@@ -173,8 +174,14 @@ export class AttestationPool {
|
|
|
173
174
|
/**
|
|
174
175
|
* Aggregate a new attestation into `aggregate` mutating it
|
|
175
176
|
*/
|
|
176
|
-
function aggregateAttestationInto(aggregate, attestation) {
|
|
177
|
-
|
|
177
|
+
function aggregateAttestationInto(aggregate, attestation, committeeValidatorIndex) {
|
|
178
|
+
let bitIndex;
|
|
179
|
+
if (isElectraSingleAttestation(attestation)) {
|
|
180
|
+
bitIndex = committeeValidatorIndex;
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
bitIndex = attestation.aggregationBits.getSingleTrueBit();
|
|
184
|
+
}
|
|
178
185
|
// Should never happen, attestations are verified against this exact condition before
|
|
179
186
|
assert.notNull(bitIndex, "Invalid attestation in pool, not exactly one bit set");
|
|
180
187
|
if (aggregate.aggregationBits.get(bitIndex) === true) {
|
|
@@ -187,13 +194,12 @@ function aggregateAttestationInto(aggregate, attestation) {
|
|
|
187
194
|
/**
|
|
188
195
|
* Format `contribution` into an efficient `aggregate` to add more contributions in with aggregateContributionInto()
|
|
189
196
|
*/
|
|
190
|
-
function attestationToAggregate(attestation) {
|
|
191
|
-
if (
|
|
197
|
+
function attestationToAggregate(attestation, committeeValidatorIndex, committeeSize) {
|
|
198
|
+
if (isElectraSingleAttestation(attestation)) {
|
|
192
199
|
return {
|
|
193
200
|
data: attestation.data,
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
committeeBits: attestation.committeeBits,
|
|
201
|
+
aggregationBits: BitArray.fromSingleBit(committeeSize, committeeValidatorIndex),
|
|
202
|
+
committeeBits: BitArray.fromSingleBit(MAX_COMMITTEES_PER_SLOT, attestation.committeeIndex),
|
|
197
203
|
signature: signatureFromBytesNoCheck(attestation.signature),
|
|
198
204
|
};
|
|
199
205
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attestationPool.js","sourceRoot":"","sources":["../../../src/chain/opPools/attestationPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"attestationPool.js","sourceRoot":"","sources":["../../../src/chain/opPools/attestationPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAC,uBAAuB,EAAE,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAgD,0BAA0B,EAAC,MAAM,iBAAiB,CAAC;AAC1G,OAAO,EAAC,MAAM,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAC,aAAa,EAAE,WAAW,EAAE,eAAe,EAAC,MAAM,YAAY,CAAC;AACvE,OAAO,EAAC,kBAAkB,EAAE,WAAW,EAAE,yBAAyB,EAAC,MAAM,YAAY,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB;;;;GAIG;AACH,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAkBzC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,eAAe;IAO1B,YACmB,MAAuB,EACvB,KAAa,EACb,iBAAyB,EACzB,2BAA2B,CAAC;QAH5B,WAAM,GAAN,MAAM,CAAiB;QACvB,UAAK,GAAL,KAAK,CAAQ;QACb,sBAAiB,GAAjB,iBAAiB,CAAQ;QACzB,6BAAwB,GAAxB,wBAAwB,CAAI;QAV9B,iCAA4B,GAAG,IAAI,MAAM,CAGxD,GAAG,EAAE,CAAC,IAAI,GAAG,EAAmD,CAAC,CAAC;QAC5D,0BAAqB,GAAG,CAAC,CAAC;IAO/B,CAAC;IAEJ,4EAA4E;IAC5E,mBAAmB;QACjB,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,KAAK,MAAM,wBAAwB,IAAI,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,EAAE,CAAC;YAClF,KAAK,MAAM,kBAAkB,IAAI,wBAAwB,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnE,gBAAgB,IAAI,kBAAkB,CAAC,IAAI,CAAC;YAC9C,CAAC;QACH,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,GAAG,CACD,cAA8B,EAC9B,WAA8B,EAC9B,cAAuB,EACvB,uBAA+B,EAC/B,aAAqB;QAErB,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAEzD,4CAA4C;QAC5C,IAAI,IAAI,GAAG,qBAAqB,EAAE,CAAC;YACjC,OAAO,aAAa,CAAC,GAAG,CAAC;QAC3B,CAAC;QAED,0EAA0E;QAC1E,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1D,OAAO,aAAa,CAAC,IAAI,CAAC;QAC5B,CAAC;QAED,wBAAwB;QACxB,MAAM,eAAe,GAAG,IAAI,CAAC,4BAA4B,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC7E,IAAI,eAAe,CAAC,IAAI,IAAI,yBAAyB,EAAE,CAAC;YACtD,MAAM,IAAI,WAAW,CAAC,EAAC,IAAI,EAAE,eAAe,CAAC,oBAAoB,EAAC,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,oGAAoG;YACpG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,qEAAqE,CAAC,CAAC;YACtG,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,EAAE,sDAAsD,CAAC,CAAC;QAC/G,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,CAAC,0BAA0B,CAAC,WAAW,CAAC,EAAE,+CAA+C,CAAC,CAAC;YACvG,cAAc,GAAG,IAAI,CAAC,CAAC,uEAAuE;QAChG,CAAC;QAED,qDAAqD;QACrD,IAAI,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC3D,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,gBAAgB,GAAG,IAAI,GAAG,EAAiC,CAAC;YAC5D,eAAe,CAAC,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACvD,IAAI,SAAS,EAAE,CAAC;YACd,qBAAqB;YACrB,OAAO,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC;QACnF,CAAC;QACD,uBAAuB;QACvB,gBAAgB,CAAC,GAAG,CAAC,cAAc,EAAE,sBAAsB,CAAC,WAAW,EAAE,uBAAuB,EAAE,aAAa,CAAC,CAAC,CAAC;QAClH,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAU,EAAE,cAA8B,EAAE,WAAoB;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;QAEvD,MAAM,SAAS,GAAG,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;QACrG,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,0CAA0C;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,+CAA+C,CAAC,CAAC;QAC9F,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,8CAA8C,CAAC,CAAC;QAC9F,CAAC;QAED,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAe;QACnB,WAAW,CAAC,IAAI,CAAC,4BAA4B,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAC1E,iGAAiG;QACjG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAAa;QAClB,MAAM,YAAY,GAAkB,EAAE,CAAC;QAEvC,MAAM,gBAAgB,GACpB,MAAM,KAAK,SAAS;YAClB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,CAAC;YACxD,CAAC,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAEtD,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE,CAAC;YAC/C,IAAI,eAAe,EAAE,CAAC;gBACpB,KAAK,MAAM,cAAc,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;oBACtD,KAAK,MAAM,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;wBAC9C,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAED,oDAAoD;AACpD,mDAAmD;AAEnD;;GAEG;AACH,SAAS,wBAAwB,CAC/B,SAAwB,EACxB,WAA8B,EAC9B,uBAA+B;IAE/B,IAAI,QAAuB,CAAC;IAE5B,IAAI,0BAA0B,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5C,QAAQ,GAAG,uBAAuB,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,WAAW,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;IAC5D,CAAC;IAED,qFAAqF;IACrF,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,sDAAsD,CAAC,CAAC;IAEjF,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;QACrD,OAAO,aAAa,CAAC,YAAY,CAAC;IACpC,CAAC;IAED,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9C,SAAS,CAAC,SAAS,GAAG,mBAAmB,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,yBAAyB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACnH,OAAO,aAAa,CAAC,UAAU,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAC7B,WAA8B,EAC9B,uBAA+B,EAC/B,aAAqB;IAErB,IAAI,0BAA0B,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5C,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,eAAe,EAAE,QAAQ,CAAC,aAAa,CAAC,aAAa,EAAE,uBAAuB,CAAC;YAC/E,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,uBAAuB,EAAE,WAAW,CAAC,cAAc,CAAC;YAC1F,SAAS,EAAE,yBAAyB,CAAC,WAAW,CAAC,SAAS,CAAC;SAC5D,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,mCAAmC;QACnC,eAAe,EAAE,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE;QACpD,SAAS,EAAE,yBAAyB,CAAC,WAAW,CAAC,SAAS,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAAsB;IAC/C,OAAO,EAAC,GAAG,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,EAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import { BitArray } from "@chainsafe/ssz";
|
|
2
1
|
import { CommitteeIndex, RootHex, Slot, SubnetID, phase0 } from "@lodestar/types";
|
|
3
2
|
import { Metrics } from "../../metrics/metrics.js";
|
|
4
3
|
import { InsertOutcome } from "../opPools/types.js";
|
|
5
|
-
export type SeenAttDataKey = AttDataBase64
|
|
4
|
+
export type SeenAttDataKey = AttDataBase64;
|
|
6
5
|
type AttDataBase64 = string;
|
|
7
|
-
type AttDataCommitteeBitsBase64 = string;
|
|
8
6
|
export type AttestationDataCacheEntry = {
|
|
9
7
|
committeeValidatorIndices: Uint32Array;
|
|
10
|
-
committeeBits?: BitArray;
|
|
11
8
|
committeeIndex: CommitteeIndex;
|
|
12
9
|
signingRoot: Uint8Array;
|
|
13
10
|
attDataRootHex: RootHex;
|
|
@@ -19,6 +16,7 @@ export declare enum RejectReason {
|
|
|
19
16
|
too_old = "too_old",
|
|
20
17
|
already_known = "already_known"
|
|
21
18
|
}
|
|
19
|
+
export declare const PRE_ELECTRA_SINGLE_ATTESTATION_COMMITTEE_INDEX = 0;
|
|
22
20
|
/**
|
|
23
21
|
* Cached seen AttestationData to improve gossip validation. For Electra, this still take into account attestationIndex
|
|
24
22
|
* even through it is moved outside of AttestationData.
|
|
@@ -29,11 +27,21 @@ export declare class SeenAttestationDatas {
|
|
|
29
27
|
private readonly metrics;
|
|
30
28
|
private readonly cacheSlotDistance;
|
|
31
29
|
private readonly maxCacheSizePerSlot;
|
|
32
|
-
private
|
|
30
|
+
private cacheEntryByAttDataByIndexBySlot;
|
|
33
31
|
private lowestPermissibleSlot;
|
|
34
32
|
constructor(metrics: Metrics | null, cacheSlotDistance?: number, maxCacheSizePerSlot?: number);
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Add an AttestationDataCacheEntry to the cache.
|
|
35
|
+
* - preElectra: add(slot, PRE_ELECTRA_SINGLE_ATTESTATION_COMMITTEE_INDEX, attDataBase64, cacheEntry)
|
|
36
|
+
* - electra: add(slot, committeeIndex, attDataBase64, cacheEntry)
|
|
37
|
+
*/
|
|
38
|
+
add(slot: Slot, committeeIndex: CommitteeIndex, attDataBase64: AttDataBase64, cacheEntry: AttestationDataCacheEntry): InsertOutcome;
|
|
39
|
+
/**
|
|
40
|
+
* Get an AttestationDataCacheEntry from the cache.
|
|
41
|
+
* - preElectra: get(slot, PRE_ELECTRA_SINGLE_ATTESTATION_COMMITTEE_INDEX, attDataBase64)
|
|
42
|
+
* - electra: get(slot, committeeIndex, attDataBase64)
|
|
43
|
+
*/
|
|
44
|
+
get(slot: Slot, committeeIndex: CommitteeIndex, attDataBase64: SeenAttDataKey): AttestationDataCacheEntry | null;
|
|
37
45
|
onSlot(clockSlot: Slot): void;
|
|
38
46
|
private onScrapeLodestarMetrics;
|
|
39
47
|
}
|
|
@@ -9,6 +9,9 @@ export var RejectReason;
|
|
|
9
9
|
// attestation data is already known
|
|
10
10
|
RejectReason["already_known"] = "already_known";
|
|
11
11
|
})(RejectReason || (RejectReason = {}));
|
|
12
|
+
// For pre-electra, there is no committeeIndex in SingleAttestation, so we hard code it to 0
|
|
13
|
+
// AttDataBase64 has committeeIndex instead
|
|
14
|
+
export const PRE_ELECTRA_SINGLE_ATTESTATION_COMMITTEE_INDEX = 0;
|
|
12
15
|
/**
|
|
13
16
|
* There are maximum 64 committees per slot, assuming 1 committee may have up to 3 different data due to some nodes
|
|
14
17
|
* are not up to date, we can have up to 192 different attestation data per slot.
|
|
@@ -31,31 +34,42 @@ export class SeenAttestationDatas {
|
|
|
31
34
|
this.metrics = metrics;
|
|
32
35
|
this.cacheSlotDistance = cacheSlotDistance;
|
|
33
36
|
this.maxCacheSizePerSlot = maxCacheSizePerSlot;
|
|
34
|
-
this.
|
|
37
|
+
this.cacheEntryByAttDataByIndexBySlot = new MapDef(() => new MapDef(() => new Map()));
|
|
35
38
|
this.lowestPermissibleSlot = 0;
|
|
36
39
|
metrics?.seenCache.attestationData.totalSlot.addCollect(() => this.onScrapeLodestarMetrics(metrics));
|
|
37
40
|
}
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Add an AttestationDataCacheEntry to the cache.
|
|
43
|
+
* - preElectra: add(slot, PRE_ELECTRA_SINGLE_ATTESTATION_COMMITTEE_INDEX, attDataBase64, cacheEntry)
|
|
44
|
+
* - electra: add(slot, committeeIndex, attDataBase64, cacheEntry)
|
|
45
|
+
*/
|
|
46
|
+
add(slot, committeeIndex, attDataBase64, cacheEntry) {
|
|
40
47
|
if (slot < this.lowestPermissibleSlot) {
|
|
41
48
|
this.metrics?.seenCache.attestationData.reject.inc({ reason: RejectReason.too_old });
|
|
42
49
|
return InsertOutcome.Old;
|
|
43
50
|
}
|
|
44
|
-
const
|
|
45
|
-
|
|
51
|
+
const cacheEntryByAttDataByIndex = this.cacheEntryByAttDataByIndexBySlot.getOrDefault(slot);
|
|
52
|
+
const cacheEntryByAttData = cacheEntryByAttDataByIndex.getOrDefault(committeeIndex);
|
|
53
|
+
if (cacheEntryByAttData.has(attDataBase64)) {
|
|
46
54
|
this.metrics?.seenCache.attestationData.reject.inc({ reason: RejectReason.already_known });
|
|
47
55
|
return InsertOutcome.AlreadyKnown;
|
|
48
56
|
}
|
|
49
|
-
if (
|
|
57
|
+
if (cacheEntryByAttData.size >= this.maxCacheSizePerSlot) {
|
|
50
58
|
this.metrics?.seenCache.attestationData.reject.inc({ reason: RejectReason.reached_limit });
|
|
51
59
|
return InsertOutcome.ReachLimit;
|
|
52
60
|
}
|
|
53
|
-
|
|
61
|
+
cacheEntryByAttData.set(attDataBase64, cacheEntry);
|
|
54
62
|
return InsertOutcome.NewData;
|
|
55
63
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Get an AttestationDataCacheEntry from the cache.
|
|
66
|
+
* - preElectra: get(slot, PRE_ELECTRA_SINGLE_ATTESTATION_COMMITTEE_INDEX, attDataBase64)
|
|
67
|
+
* - electra: get(slot, committeeIndex, attDataBase64)
|
|
68
|
+
*/
|
|
69
|
+
get(slot, committeeIndex, attDataBase64) {
|
|
70
|
+
const cacheEntryByAttDataByIndex = this.cacheEntryByAttDataByIndexBySlot.get(slot);
|
|
71
|
+
const cacheEntryByAttData = cacheEntryByAttDataByIndex?.get(committeeIndex);
|
|
72
|
+
const cacheEntry = cacheEntryByAttData?.get(attDataBase64);
|
|
59
73
|
if (cacheEntry) {
|
|
60
74
|
this.metrics?.seenCache.attestationData.hit.inc();
|
|
61
75
|
}
|
|
@@ -66,18 +80,23 @@ export class SeenAttestationDatas {
|
|
|
66
80
|
}
|
|
67
81
|
onSlot(clockSlot) {
|
|
68
82
|
this.lowestPermissibleSlot = Math.max(clockSlot - this.cacheSlotDistance, 0);
|
|
69
|
-
for (const slot of this.
|
|
83
|
+
for (const slot of this.cacheEntryByAttDataByIndexBySlot.keys()) {
|
|
70
84
|
if (slot < this.lowestPermissibleSlot) {
|
|
71
|
-
this.
|
|
85
|
+
this.cacheEntryByAttDataByIndexBySlot.delete(slot);
|
|
72
86
|
}
|
|
73
87
|
}
|
|
74
88
|
}
|
|
75
89
|
onScrapeLodestarMetrics(metrics) {
|
|
76
|
-
metrics?.seenCache.attestationData.totalSlot.set(this.
|
|
90
|
+
metrics?.seenCache.attestationData.totalSlot.set(this.cacheEntryByAttDataByIndexBySlot.size);
|
|
77
91
|
// tracking number of attestation data at current slot may not be correct if scrape time is not at the end of slot
|
|
78
92
|
// so we track it at the previous slot
|
|
79
93
|
const previousSlot = this.lowestPermissibleSlot + this.cacheSlotDistance - 1;
|
|
80
|
-
|
|
94
|
+
const cacheEntryByAttDataByIndex = this.cacheEntryByAttDataByIndexBySlot.get(previousSlot);
|
|
95
|
+
let count = 0;
|
|
96
|
+
for (const cacheEntryByAttDataBase64 of cacheEntryByAttDataByIndex?.values() ?? []) {
|
|
97
|
+
count += cacheEntryByAttDataBase64.size;
|
|
98
|
+
}
|
|
99
|
+
metrics?.seenCache.attestationData.countPerSlot.set(count);
|
|
81
100
|
}
|
|
82
101
|
}
|
|
83
102
|
//# sourceMappingURL=seenAttestationData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenAttestationData.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenAttestationData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"seenAttestationData.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenAttestationData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAoBlD,MAAM,CAAN,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,mDAAmD;IACnD,+CAA+B,CAAA;IAC/B,8BAA8B;IAC9B,mCAAmB,CAAA;IACnB,oCAAoC;IACpC,+CAA+B,CAAA;AACjC,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB;AAED,4FAA4F;AAC5F,2CAA2C;AAC3C,MAAM,CAAC,MAAM,8CAA8C,GAAG,CAAC,CAAC;AAEhE;;;GAGG;AACH,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAE5C;;GAEG;AACH,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,OAAO,oBAAoB;IAY/B,YACmB,OAAuB,EACvB,oBAAoB,2BAA2B;IAChE,uBAAuB;IACN,sBAAsB,+BAA+B;QAHrD,YAAO,GAAP,OAAO,CAAgB;QACvB,sBAAiB,GAAjB,iBAAiB,CAA8B;QAE/C,wBAAmB,GAAnB,mBAAmB,CAAkC;QAfhE,qCAAgC,GAAG,IAAI,MAAM,CAInD,GAAG,EAAE,CACH,IAAI,MAAM,CACR,GAAG,EAAE,CAAC,IAAI,GAAG,EAA4C,CAC1D,CACJ,CAAC;QACM,0BAAqB,GAAG,CAAC,CAAC;QAQhC,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;IACvG,CAAC;IAED;;;;OAIG;IACH,GAAG,CACD,IAAU,EACV,cAA8B,EAC9B,aAA4B,EAC5B,UAAqC;QAErC,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,YAAY,CAAC,OAAO,EAAC,CAAC,CAAC;YACnF,OAAO,aAAa,CAAC,GAAG,CAAC;QAC3B,CAAC;QAED,MAAM,0BAA0B,GAAG,IAAI,CAAC,gCAAgC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5F,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QACpF,IAAI,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,YAAY,CAAC,aAAa,EAAC,CAAC,CAAC;YACzF,OAAO,aAAa,CAAC,YAAY,CAAC;QACpC,CAAC;QAED,IAAI,mBAAmB,CAAC,IAAI,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzD,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,YAAY,CAAC,aAAa,EAAC,CAAC,CAAC;YACzF,OAAO,aAAa,CAAC,UAAU,CAAC;QAClC,CAAC;QAED,mBAAmB,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QACnD,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,IAAU,EAAE,cAA8B,EAAE,aAA6B;QAC3E,MAAM,0BAA0B,GAAG,IAAI,CAAC,gCAAgC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnF,MAAM,mBAAmB,GAAG,0BAA0B,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5E,MAAM,UAAU,GAAG,mBAAmB,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACrD,CAAC;QACD,OAAO,UAAU,IAAI,IAAI,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,SAAe;QACpB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAC7E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,gCAAgC,CAAC,IAAI,EAAE,EAAE,CAAC;YAChE,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACtC,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAEO,uBAAuB,CAAC,OAAgB;QAC9C,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC;QAC7F,kHAAkH;QAClH,sCAAsC;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC7E,MAAM,0BAA0B,GAAG,IAAI,CAAC,gCAAgC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC3F,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,yBAAyB,IAAI,0BAA0B,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;YACnF,KAAK,IAAI,yBAAyB,CAAC,IAAI,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;CACF"}
|
|
@@ -33,8 +33,6 @@ async function validateAggregateAndProof(fork, chain, signedAggregateAndProof, s
|
|
|
33
33
|
const { aggregationBits } = aggregate;
|
|
34
34
|
const attData = aggregate.data;
|
|
35
35
|
const attSlot = attData.slot;
|
|
36
|
-
const seenAttDataKey = serializedData ? getSeenAttDataKeyFromSignedAggregateAndProof(fork, serializedData) : null;
|
|
37
|
-
const cachedAttData = seenAttDataKey ? chain.seenAttestationDatas.get(attSlot, seenAttDataKey) : null;
|
|
38
36
|
let attIndex;
|
|
39
37
|
if (ForkSeq[fork] >= ForkSeq.electra) {
|
|
40
38
|
attIndex = aggregate.committeeBits.getSingleTrueBit();
|
|
@@ -50,6 +48,8 @@ async function validateAggregateAndProof(fork, chain, signedAggregateAndProof, s
|
|
|
50
48
|
else {
|
|
51
49
|
attIndex = attData.index;
|
|
52
50
|
}
|
|
51
|
+
const seenAttDataKey = serializedData ? getSeenAttDataKeyFromSignedAggregateAndProof(fork, serializedData) : null;
|
|
52
|
+
const cachedAttData = seenAttDataKey ? chain.seenAttestationDatas.get(attSlot, attIndex, seenAttDataKey) : null;
|
|
53
53
|
const attEpoch = computeEpochAtSlot(attSlot);
|
|
54
54
|
const attTarget = attData.target;
|
|
55
55
|
const targetEpoch = attTarget.epoch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregateAndProof.js","sourceRoot":"","sources":["../../../src/chain/validation/aggregateAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,yCAAyC,EACzC,+BAA+B,GAChC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAwE,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC3G,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,gBAAgB,EAAE,oBAAoB,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAExF,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,6BAA6B,EAC7B,mBAAmB,EACnB,4CAA4C,EAC5C,sCAAsC,EACtC,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,gCAAgC,EAAE,6BAA6B,EAAC,MAAM,0BAA0B,CAAC;AAQzG,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,IAAc,EACd,KAAmB,EACnB,uBAAgD;IAEhD,MAAM,4BAA4B,GAAG,IAAI,CAAC;IAC1C,MAAM,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE;QAC3E,4BAA4B;QAC5B,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,IAAc,EACd,KAAmB,EACnB,uBAAgD,EAChD,cAA0B;IAE1B,OAAO,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE,cAAc,CAAC,CAAC;AACzF,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,IAAc,EACd,KAAmB,EACnB,uBAAgD,EAChD,iBAAoC,IAAI,EACxC,OAAwE;IACtE,4BAA4B,EAAE,KAAK;IACnC,aAAa,EAAE,KAAK;CACrB;IAED,MAAM,EAAC,4BAA4B,EAAE,aAAa,EAAC,GAAG,IAAI,CAAC;IAC3D,2BAA2B;IAC3B,8CAA8C;IAC9C,wDAAwD;IACxD,4CAA4C;IAC5C,uBAAuB;IACvB,wCAAwC;IAExC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,OAAO,CAAC;IAC1D,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC;IAC9C,MAAM,EAAC,eAAe,EAAC,GAAG,SAAS,CAAC;IACpC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE7B,
|
|
1
|
+
{"version":3,"file":"aggregateAndProof.js","sourceRoot":"","sources":["../../../src/chain/validation/aggregateAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,yCAAyC,EACzC,+BAA+B,GAChC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAwE,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC3G,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,gBAAgB,EAAE,oBAAoB,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAExF,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,6BAA6B,EAC7B,mBAAmB,EACnB,4CAA4C,EAC5C,sCAAsC,EACtC,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,gCAAgC,EAAE,6BAA6B,EAAC,MAAM,0BAA0B,CAAC;AAQzG,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,IAAc,EACd,KAAmB,EACnB,uBAAgD;IAEhD,MAAM,4BAA4B,GAAG,IAAI,CAAC;IAC1C,MAAM,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE;QAC3E,4BAA4B;QAC5B,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,IAAc,EACd,KAAmB,EACnB,uBAAgD,EAChD,cAA0B;IAE1B,OAAO,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE,cAAc,CAAC,CAAC;AACzF,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,IAAc,EACd,KAAmB,EACnB,uBAAgD,EAChD,iBAAoC,IAAI,EACxC,OAAwE;IACtE,4BAA4B,EAAE,KAAK;IACnC,aAAa,EAAE,KAAK;CACrB;IAED,MAAM,EAAC,4BAA4B,EAAE,aAAa,EAAC,GAAG,IAAI,CAAC;IAC3D,2BAA2B;IAC3B,8CAA8C;IAC9C,wDAAwD;IACxD,4CAA4C;IAC5C,uBAAuB;IACvB,wCAAwC;IAExC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,OAAO,CAAC;IAC1D,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC;IAC9C,MAAM,EAAC,eAAe,EAAC,GAAG,SAAS,CAAC;IACpC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE7B,IAAI,QAAuB,CAAC;IAC5B,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,QAAQ,GAAI,SAAiC,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;QAC/E,mGAAmG;QACnG,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,oBAAoB,CAAC,iCAAiC,EAAC,CAAC,CAAC;QAClH,CAAC;QACD,qCAAqC;QACrC,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,oBAAoB,CAAC,+BAA+B,EAAC,CAAC,CAAC;QAChH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED,MAAM,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,4CAA4C,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClH,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEhH,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IACjC,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC;IAEpC,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,0BAA0B,CAAC,OAAO,CACjE,EAAC,MAAM,EAAE,WAAW,CAAC,+BAA+B,EAAC,EACrD,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,OAAO,CAClC,CAAC;IAEF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,4IAA4I;QAC5I,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,oBAAoB,CAAC,gBAAgB,EAAC,CAAC,CAAC;QACjG,CAAC;QAED,6IAA6I;QAC7I,0GAA0G;QAC1G,iFAAiF;QACjF,0BAA0B,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,uFAAuF;IACvF,wFAAwF;IACxF,MAAM,eAAe,GAAG,iBAAiB,CAAC,eAAe,CAAC;IAC1D,IAAI,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE;YAC9C,IAAI,EAAE,oBAAoB,CAAC,wBAAwB;YACnD,WAAW;YACX,eAAe;SAChB,CAAC,CAAC;IACL,CAAC;IAED,gHAAgH;IAChH,wDAAwD;IACxD,MAAM,cAAc,GAAG,aAAa;QAClC,CAAC,CAAC,aAAa,CAAC,cAAc;QAC9B,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,IACE,CAAC,4BAA4B;QAC7B,KAAK,CAAC,0BAA0B,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,eAAe,CAAC,EACtF,CAAC;QACD,MAAM,IAAI,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE;YAC9C,IAAI,EAAE,oBAAoB,CAAC,uBAAuB;YAClD,WAAW;YACX,aAAa,EAAE,cAAc;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,yGAAyG;IACzG,oGAAoG;IACpG,yFAAyF;IACzF,4BAA4B;IAE5B,sGAAsG;IACtG,qIAAqI;IACrI,MAAM,YAAY,GAAG,4BAA4B,CAC/C,KAAK,EACL,OAAO,CAAC,eAAe,EACvB,SAAS,CAAC,IAAI,EACd,OAAO,EACP,QAAQ,EACR,WAAW,CAAC,+BAA+B,EAC3C,KAAK,CAAC,IAAI,CAAC,YAAY,CACxB,CAAC;IAEF,oHAAoH;IACpH,kKAAkK;IAClK,oFAAoF;IAEpF,MAAM,SAAS,GAAG,MAAM,sCAAsC,CAC5D,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,WAAW,CAAC,yBAAyB,CACtC,CAAC;IAEF,4DAA4D;IAC5D,8EAA8E;IAC9E,MAAM,gBAAgB,GAAG,aAAa;QACpC,CAAC,CAAC,aAAa,CAAC,yBAAyB;QACzC,CAAC,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEtD,qEAAqE;IACrE,mGAAmG;IACnG,IAAI,SAAS,CAAC,eAAe,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACjE,MAAM,IAAI,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,oBAAoB,CAAC,gCAAgC,EAAC,CAAC,CAAC;IACjH,CAAC;IACD,MAAM,gBAAgB,GAAG,SAAS,CAAC,eAAe,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAErF,MAAM,yBAAyB,GAAuB;QACpD,gBAAgB;QAChB,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,SAAS,CAAC,SAAS;KAC/B,CAAC;IACF,MAAM,kBAAkB,GACtB,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO;QAC9B,CAAC,CAAE,yBAAwD;QAC3D,CAAC,CAAE,yBAAuD,CAAC;IAE/D,gCAAgC;IAChC,wDAAwD;IACxD,sFAAsF;IACtF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,mCAAmC;QACnC,MAAM,IAAI,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,oBAAoB,CAAC,0BAA0B,EAAC,CAAC,CAAC;IAC3G,CAAC;IAED,mGAAmG;IACnG,6HAA6H;IAC7H,IAAI,CAAC,+BAA+B,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC;QAChG,MAAM,IAAI,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,oBAAoB,CAAC,kBAAkB,EAAC,CAAC,CAAC;IACnG,CAAC;IAED,oEAAoE;IACpE,0HAA0H;IAC1H,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,oBAAoB,CAAC,2BAA2B,EAAC,CAAC,CAAC;IAC5G,CAAC;IAED,mGAAmG;IACnG,oEAAoE;IACpE,qFAAqF;IACrF,gDAAgD;IAChD,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,6BAA6B,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrH,MAAM,8BAA8B,GAAG,yCAAyC,CAC9E,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACrE,WAAW,EACX,kBAAkB,CAAC,SAAS,CAC7B,CAAC;IACF,MAAM,aAAa,GAAG;QACpB,6BAA6B,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,uBAAuB,CAAC;QACzF,gCAAgC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,uBAAuB,CAAC;QAC7F,8BAA8B;KAC/B,CAAC;IACF,2CAA2C;IAE3C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAC,CAAC,CAAC,EAAE,CAAC;QACtG,MAAM,IAAI,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,oBAAoB,CAAC,iBAAiB,EAAC,CAAC,CAAC;IAClG,CAAC;IAED,wFAAwF;IACxF,oFAAoF;IACpF,qCAAqC;IACrC,IAAI,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE;YAC9C,IAAI,EAAE,oBAAoB,CAAC,wBAAwB;YACnD,WAAW;YACX,eAAe;SAChB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACxD,KAAK,CAAC,0BAA0B,CAAC,GAAG,CAClC,WAAW,EACX,cAAc,EACd,EAAC,eAAe,EAAE,YAAY,EAAE,gBAAgB,CAAC,MAAM,EAAC,EACxD,KAAK,CACN,CAAC;IAEF,OAAO,EAAC,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAC,CAAC;AAChE,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { BeaconConfig } from "@lodestar/config";
|
|
2
2
|
import { ProtoBlock } from "@lodestar/fork-choice";
|
|
3
|
-
import { ForkName } from "@lodestar/params";
|
|
3
|
+
import { ForkName, ForkPostElectra, ForkPreElectra } from "@lodestar/params";
|
|
4
4
|
import { EpochShuffling, SingleSignatureSet } from "@lodestar/state-transition";
|
|
5
|
-
import {
|
|
5
|
+
import { CommitteeIndex, Epoch, IndexedAttestation, Root, RootHex, SingleAttestation, Slot, SubnetID, ValidatorIndex, phase0 } from "@lodestar/types";
|
|
6
6
|
import { Result } from "../../util/wrapError.js";
|
|
7
7
|
import { IBeaconChain } from "../interface.js";
|
|
8
8
|
import { RegenCaller } from "../regen/index.js";
|
|
@@ -12,16 +12,18 @@ export type BatchResult = {
|
|
|
12
12
|
batchableBls: boolean;
|
|
13
13
|
};
|
|
14
14
|
export type AttestationValidationResult = {
|
|
15
|
-
attestation:
|
|
15
|
+
attestation: SingleAttestation;
|
|
16
16
|
indexedAttestation: IndexedAttestation;
|
|
17
17
|
subnet: SubnetID;
|
|
18
18
|
attDataRootHex: RootHex;
|
|
19
19
|
committeeIndex: CommitteeIndex;
|
|
20
|
+
committeeValidatorIndex: number;
|
|
21
|
+
committeeSize: number;
|
|
20
22
|
};
|
|
21
23
|
export type AttestationOrBytes = ApiAttestation | GossipAttestation;
|
|
22
24
|
/** attestation from api */
|
|
23
25
|
export type ApiAttestation = {
|
|
24
|
-
attestation:
|
|
26
|
+
attestation: SingleAttestation;
|
|
25
27
|
serializedData: null;
|
|
26
28
|
};
|
|
27
29
|
/** attestation from gossip */
|
|
@@ -50,7 +52,7 @@ export declare function validateGossipAttestationsSameAttData(fork: ForkName, ch
|
|
|
50
52
|
*/
|
|
51
53
|
export declare function validateApiAttestation(fork: ForkName, chain: IBeaconChain, attestationOrBytes: ApiAttestation): Promise<AttestationValidationResult>;
|
|
52
54
|
/**
|
|
53
|
-
* Only deserialize the attestation if needed, use the cached AttestationData instead
|
|
55
|
+
* Only deserialize the single attestation if needed, use the cached AttestationData instead
|
|
54
56
|
* This is to avoid deserializing similar attestation multiple times which could help the gc
|
|
55
57
|
*/
|
|
56
58
|
declare function validateAttestationNoSignatureCheck(fork: ForkName, chain: IBeaconChain, attestationOrBytes: AttestationOrBytes,
|
|
@@ -98,15 +100,21 @@ export declare function getCommitteeIndices(shuffling: EpochShuffling, attestati
|
|
|
98
100
|
export declare function computeSubnetForSlot(shuffling: EpochShuffling, slot: number, committeeIndex: number): SubnetID;
|
|
99
101
|
/**
|
|
100
102
|
* Return fork-dependent seen attestation key
|
|
101
|
-
* - for pre-electra, it's the AttestationData base64
|
|
102
|
-
* - for electra and later, it's the AttestationData base64
|
|
103
|
+
* - for pre-electra, it's the AttestationData base64 from Attestation
|
|
104
|
+
* - for electra and later, it's the AttestationData base64 from SingleAttestation
|
|
105
|
+
* - consumers need to also pass slot + committeeIndex to get the correct SeenAttestationData
|
|
103
106
|
*/
|
|
104
|
-
export declare function getSeenAttDataKeyFromGossipAttestation(
|
|
107
|
+
export declare function getSeenAttDataKeyFromGossipAttestation(attestation: GossipAttestation): SeenAttDataKey | null;
|
|
105
108
|
/**
|
|
106
109
|
* Extract attestation data key from SignedAggregateAndProof Uint8Array to use cached data from SeenAttestationDatas
|
|
107
|
-
* - for pre-electra, it's the AttestationData base64
|
|
108
|
-
* -
|
|
110
|
+
* - for both electra + pre-electra, it's the AttestationData base64
|
|
111
|
+
* - consumers need to also pass slot + committeeIndex to get the correct SeenAttestationData
|
|
109
112
|
*/
|
|
110
113
|
export declare function getSeenAttDataKeyFromSignedAggregateAndProof(fork: ForkName, aggregateAndProof: Uint8Array): SeenAttDataKey | null;
|
|
114
|
+
export declare function getCommitteeIndexFromAttestationOrBytes(fork: ForkName, attestationOrBytes: AttestationOrBytes): CommitteeIndex | null;
|
|
115
|
+
/**
|
|
116
|
+
* Convert pre-electra single attestation (`phase0.Attestation`) to post-electra `SingleAttestation`
|
|
117
|
+
*/
|
|
118
|
+
export declare function toElectraSingleAttestation(attestation: SingleAttestation<ForkPreElectra>, attesterIndex: ValidatorIndex): SingleAttestation<ForkPostElectra>;
|
|
111
119
|
export {};
|
|
112
120
|
//# sourceMappingURL=attestation.d.ts.map
|