@lodestar/beacon-node 1.43.0-dev.6641fd750e → 1.43.0-dev.9fa9f08ef6
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/lodestar/attesterSlashing.d.ts +8 -0
- package/lib/api/impl/lodestar/attesterSlashing.d.ts.map +1 -0
- package/lib/api/impl/lodestar/attesterSlashing.js +29 -0
- package/lib/api/impl/lodestar/attesterSlashing.js.map +1 -0
- package/lib/api/impl/lodestar/index.d.ts.map +1 -1
- package/lib/api/impl/lodestar/index.js +36 -1
- package/lib/api/impl/lodestar/index.js.map +1 -1
- package/lib/api/impl/validator/index.d.ts.map +1 -1
- package/lib/api/impl/validator/index.js +4 -3
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/GetBlobsTracker.d.ts +1 -1
- package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
- package/lib/chain/GetBlobsTracker.js +1 -2
- package/lib/chain/GetBlobsTracker.js.map +1 -1
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +2 -4
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
- package/lib/chain/blocks/importBlock.d.ts.map +1 -1
- package/lib/chain/blocks/importBlock.js +27 -35
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.d.ts +1 -1
- package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.js +10 -8
- package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
- package/lib/chain/blocks/index.js +1 -1
- package/lib/chain/blocks/index.js.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +3 -0
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +20 -0
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +5 -0
- package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeProcessor.js +6 -4
- package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
- package/lib/chain/blocks/types.d.ts +1 -1
- package/lib/chain/blocks/types.d.ts.map +1 -1
- package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts +14 -0
- package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -0
- package/lib/chain/blocks/verifyPayloadsDataAvailability.js +25 -0
- package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -0
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +17 -37
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +13 -1
- package/lib/chain/emitter.d.ts.map +1 -1
- package/lib/chain/emitter.js +5 -0
- package/lib/chain/emitter.js.map +1 -1
- package/lib/chain/errors/attestationError.d.ts +8 -1
- package/lib/chain/errors/attestationError.d.ts.map +1 -1
- package/lib/chain/errors/attestationError.js +4 -0
- package/lib/chain/errors/attestationError.js.map +1 -1
- package/lib/chain/forkChoice/index.d.ts.map +1 -1
- package/lib/chain/forkChoice/index.js +12 -4
- package/lib/chain/forkChoice/index.js.map +1 -1
- package/lib/chain/prepareNextSlot.d.ts.map +1 -1
- package/lib/chain/prepareNextSlot.js +22 -16
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/computeNewStateRoot.d.ts +3 -9
- package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
- package/lib/chain/produceBlock/computeNewStateRoot.js +5 -32
- package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -8
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +24 -19
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/regen/errors.d.ts +1 -11
- package/lib/chain/regen/errors.d.ts.map +1 -1
- package/lib/chain/regen/errors.js +0 -2
- package/lib/chain/regen/errors.js.map +1 -1
- package/lib/chain/regen/interface.d.ts +6 -12
- package/lib/chain/regen/interface.d.ts.map +1 -1
- package/lib/chain/regen/queued.d.ts +6 -11
- package/lib/chain/regen/queued.d.ts.map +1 -1
- package/lib/chain/regen/queued.js +8 -40
- package/lib/chain/regen/queued.js.map +1 -1
- package/lib/chain/regen/regen.d.ts +0 -5
- package/lib/chain/regen/regen.d.ts.map +1 -1
- package/lib/chain/regen/regen.js +7 -34
- package/lib/chain/regen/regen.js.map +1 -1
- package/lib/chain/stateCache/datastore/db.d.ts +5 -4
- package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
- package/lib/chain/stateCache/datastore/db.js +10 -32
- package/lib/chain/stateCache/datastore/db.js.map +1 -1
- package/lib/chain/stateCache/datastore/file.d.ts +1 -1
- package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
- package/lib/chain/stateCache/datastore/file.js +5 -5
- package/lib/chain/stateCache/datastore/file.js.map +1 -1
- package/lib/chain/stateCache/datastore/types.d.ts +1 -1
- package/lib/chain/stateCache/datastore/types.d.ts.map +1 -1
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts +1 -7
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
- package/lib/chain/stateCache/fifoBlockStateCache.js +0 -8
- package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +13 -30
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js +116 -215
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/stateCache/types.d.ts +8 -15
- package/lib/chain/stateCache/types.d.ts.map +1 -1
- package/lib/chain/stateCache/types.js.map +1 -1
- package/lib/chain/validation/aggregateAndProof.js +12 -0
- package/lib/chain/validation/aggregateAndProof.js.map +1 -1
- package/lib/chain/validation/attestation.d.ts.map +1 -1
- package/lib/chain/validation/attestation.js +12 -0
- package/lib/chain/validation/attestation.js.map +1 -1
- package/lib/chain/validation/executionPayloadEnvelope.js +2 -2
- package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
- package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
- package/lib/network/processor/gossipHandlers.js +19 -3
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/node/nodejs.d.ts.map +1 -1
- package/lib/node/nodejs.js +4 -2
- package/lib/node/nodejs.js.map +1 -1
- package/package.json +15 -15
- package/src/api/impl/lodestar/attesterSlashing.ts +43 -0
- package/src/api/impl/lodestar/index.ts +48 -2
- package/src/api/impl/validator/index.ts +6 -5
- package/src/chain/GetBlobsTracker.ts +1 -2
- package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +2 -4
- package/src/chain/blocks/importBlock.ts +26 -39
- package/src/chain/blocks/importExecutionPayload.ts +11 -7
- package/src/chain/blocks/index.ts +1 -1
- package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +27 -0
- package/src/chain/blocks/payloadEnvelopeProcessor.ts +6 -5
- package/src/chain/blocks/types.ts +1 -1
- package/src/chain/blocks/verifyPayloadsDataAvailability.ts +38 -0
- package/src/chain/chain.ts +16 -47
- package/src/chain/emitter.ts +12 -0
- package/src/chain/errors/attestationError.ts +6 -1
- package/src/chain/forkChoice/index.ts +12 -4
- package/src/chain/prepareNextSlot.ts +25 -16
- package/src/chain/produceBlock/computeNewStateRoot.ts +6 -43
- package/src/chain/produceBlock/produceBlockBody.ts +34 -20
- package/src/chain/regen/errors.ts +1 -6
- package/src/chain/regen/interface.ts +6 -12
- package/src/chain/regen/queued.ts +12 -48
- package/src/chain/regen/regen.ts +8 -36
- package/src/chain/stateCache/datastore/db.ts +10 -33
- package/src/chain/stateCache/datastore/file.ts +5 -6
- package/src/chain/stateCache/datastore/types.ts +2 -3
- package/src/chain/stateCache/fifoBlockStateCache.ts +1 -10
- package/src/chain/stateCache/persistentCheckpointsCache.ts +135 -246
- package/src/chain/stateCache/types.ts +8 -14
- package/src/chain/validation/aggregateAndProof.ts +13 -0
- package/src/chain/validation/attestation.ts +13 -0
- package/src/chain/validation/executionPayloadEnvelope.ts +2 -2
- package/src/network/processor/gossipHandlers.ts +23 -7
- package/src/node/nodejs.ts +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attestationError.d.ts","sourceRoot":"","sources":["../../../src/chain/errors/attestationError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAExD,oBAAY,oBAAoB;IAC9B;;OAEG;IACH,oBAAoB,2CAA2C;IAC/D;;OAEG;IACH,WAAW,kCAAkC;IAC7C;;;OAGG;IACH,SAAS,gCAAgC;IACzC;;OAEG;IACH,0BAA0B,iDAAiD;IAC3E;;;OAGG;IACH,2BAA2B,kDAAkD;IAC7E;;OAEG;IACH,yBAAyB,gDAAgD;IACzE;;OAEG;IACH,yBAAyB,gDAAgD;IACzE;;OAEG;IACH,wBAAwB,+CAA+C;IACvE;;OAEG;IACH,uBAAuB,8CAA8C;IACrE;;OAEG;IACH,yBAAyB,gDAAgD;IACzE;;OAEG;IACH,yCAAyC,gEAAgE;IACzG;;OAEG;IACH,gBAAgB,uCAAuC;IACvD;;OAEG;IACH,0BAA0B,iDAAiD;IAC3E;;OAEG;IACH,mBAAmB,0CAA0C;IAC7D;;OAEG;IACH,iBAAiB,wCAAwC;IACzD;;OAEG;IACH,mCAAmC,0DAA0D;IAC7F;;OAEG;IACH,uBAAuB,8CAA8C;IACrE;;OAEG;IACH,YAAY,mCAAmC;IAC/C;;OAEG;IACH,UAAU,iCAAiC;IAC3C;;OAEG;IACH,uBAAuB,8CAA8C;IACrE;;OAEG;IACH,iBAAiB,wCAAwC;IACzD;;OAEG;IACH,gCAAgC,uDAAuD;IACvF;;OAEG;IACH,eAAe,sCAAsC;IACrD;;OAEG;IACH,mBAAmB,0CAA0C;IAC7D;;OAEG;IACH,yCAAyC,gEAAgE;IACzG;;OAEG;IACH,4BAA4B,mDAAmD;IAC/E;;OAEG;IACH,mCAAmC,0DAA0D;IAC7F;;OAEG;IACH,kBAAkB,yCAAyC;IAC3D;;OAEG;IACH,2BAA2B,kDAAkD;IAC7E;;OAEG;IACH,wBAAwB,+CAA+C;IACvE,8BAA8B;IAC9B,sBAAsB,6CAA6C;IACnE;;OAEG;IACH,iCAAiC,wDAAwD;IACzF;;OAEG;IACH,+BAA+B,sDAAsD;IACrF;;OAEG;IACH,yBAAyB,gDAAgD;IACzE;;OAEG;IACH,4BAA4B,mDAAmD;IAC/E;;OAEG;IACH,qCAAqC,4DAA4D;
|
|
1
|
+
{"version":3,"file":"attestationError.d.ts","sourceRoot":"","sources":["../../../src/chain/errors/attestationError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAExD,oBAAY,oBAAoB;IAC9B;;OAEG;IACH,oBAAoB,2CAA2C;IAC/D;;OAEG;IACH,WAAW,kCAAkC;IAC7C;;;OAGG;IACH,SAAS,gCAAgC;IACzC;;OAEG;IACH,0BAA0B,iDAAiD;IAC3E;;;OAGG;IACH,2BAA2B,kDAAkD;IAC7E;;OAEG;IACH,yBAAyB,gDAAgD;IACzE;;OAEG;IACH,yBAAyB,gDAAgD;IACzE;;OAEG;IACH,wBAAwB,+CAA+C;IACvE;;OAEG;IACH,uBAAuB,8CAA8C;IACrE;;OAEG;IACH,yBAAyB,gDAAgD;IACzE;;OAEG;IACH,yCAAyC,gEAAgE;IACzG;;OAEG;IACH,gBAAgB,uCAAuC;IACvD;;OAEG;IACH,0BAA0B,iDAAiD;IAC3E;;OAEG;IACH,mBAAmB,0CAA0C;IAC7D;;OAEG;IACH,iBAAiB,wCAAwC;IACzD;;OAEG;IACH,mCAAmC,0DAA0D;IAC7F;;OAEG;IACH,uBAAuB,8CAA8C;IACrE;;OAEG;IACH,YAAY,mCAAmC;IAC/C;;OAEG;IACH,UAAU,iCAAiC;IAC3C;;OAEG;IACH,uBAAuB,8CAA8C;IACrE;;OAEG;IACH,iBAAiB,wCAAwC;IACzD;;OAEG;IACH,gCAAgC,uDAAuD;IACvF;;OAEG;IACH,eAAe,sCAAsC;IACrD;;OAEG;IACH,mBAAmB,0CAA0C;IAC7D;;OAEG;IACH,yCAAyC,gEAAgE;IACzG;;OAEG;IACH,4BAA4B,mDAAmD;IAC/E;;OAEG;IACH,mCAAmC,0DAA0D;IAC7F;;OAEG;IACH,kBAAkB,yCAAyC;IAC3D;;OAEG;IACH,2BAA2B,kDAAkD;IAC7E;;OAEG;IACH,wBAAwB,+CAA+C;IACvE,8BAA8B;IAC9B,sBAAsB,6CAA6C;IACnE;;OAEG;IACH,iCAAiC,wDAAwD;IACzF;;OAEG;IACH,+BAA+B,sDAAsD;IACrF;;OAEG;IACH,yBAAyB,gDAAgD;IACzE;;OAEG;IACH,4BAA4B,mDAAmD;IAC/E;;OAEG;IACH,qCAAqC,4DAA4D;IACjG;;OAEG;IACH,0BAA0B,iDAAiD;CAC5E;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAC,IAAI,EAAE,oBAAoB,CAAC,oBAAoB,CAAA;CAAC,GACjD;IAAC,IAAI,EAAE,oBAAoB,CAAC,WAAW,CAAC;IAAC,eAAe,EAAE,IAAI,CAAC;IAAC,qBAAqB,EAAE,IAAI,CAAA;CAAC,GAC5F;IAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC;IAAC,eAAe,EAAE,IAAI,CAAC;IAAC,uBAAuB,EAAE,IAAI,CAAA;CAAC,GAC5F;IAAC,IAAI,EAAE,oBAAoB,CAAC,0BAA0B,CAAA;CAAC,GACvD;IAAC,IAAI,EAAE,oBAAoB,CAAC,2BAA2B,CAAA;CAAC,GACxD;IAAC,IAAI,EAAE,oBAAoB,CAAC,yBAAyB,CAAC;IAAC,eAAe,EAAE,cAAc,CAAA;CAAC,GACvF;IAAC,IAAI,EAAE,oBAAoB,CAAC,yBAAyB,CAAC;IAAC,WAAW,EAAE,KAAK,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAC,GAClG;IAAC,IAAI,EAAE,oBAAoB,CAAC,wBAAwB,CAAC;IAAC,WAAW,EAAE,KAAK,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAC,GAClG;IAAC,IAAI,EAAE,oBAAoB,CAAC,uBAAuB,CAAC;IAAC,WAAW,EAAE,KAAK,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAC,GAChG;IAAC,IAAI,EAAE,oBAAoB,CAAC,yBAAyB,CAAC;IAAC,eAAe,EAAE,cAAc,CAAA;CAAC,GACvF;IAAC,IAAI,EAAE,oBAAoB,CAAC,yCAAyC,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAC,GACrF;IAAC,IAAI,EAAE,oBAAoB,CAAC,gBAAgB,CAAA;CAAC,GAC7C;IAAC,IAAI,EAAE,oBAAoB,CAAC,0BAA0B,CAAA;CAAC,GACvD;IAAC,IAAI,EAAE,oBAAoB,CAAC,mBAAmB,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAC,GAClE;IAAC,IAAI,EAAE,oBAAoB,CAAC,iBAAiB,CAAA;CAAC,GAC9C;IAAC,IAAI,EAAE,oBAAoB,CAAC,mCAAmC,CAAA;CAAC,GAChE;IAAC,IAAI,EAAE,oBAAoB,CAAC,uBAAuB,CAAC;IAAC,cAAc,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAC,GAClG;IAAC,IAAI,EAAE,oBAAoB,CAAC,YAAY,CAAC;IAAC,gBAAgB,EAAE,KAAK,CAAC;IAAC,YAAY,EAAE,KAAK,CAAA;CAAC,GACvF;IAAC,IAAI,EAAE,oBAAoB,CAAC,UAAU,CAAC;IAAC,gBAAgB,EAAE,KAAK,CAAC;IAAC,aAAa,EAAE,KAAK,CAAA;CAAC,GACtF;IAAC,IAAI,EAAE,oBAAoB,CAAC,uBAAuB,CAAC;IAAC,KAAK,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,IAAI,CAAA;CAAC,GACpF;IAAC,IAAI,EAAE,oBAAoB,CAAC,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,GAClF;IAAC,IAAI,EAAE,oBAAoB,CAAC,gCAAgC,CAAA;CAAC,GAC7D;IAAC,IAAI,EAAE,oBAAoB,CAAC,eAAe,CAAA;CAAC,GAC5C;IAAC,IAAI,EAAE,oBAAoB,CAAC,mBAAmB,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAC,GAC9F;IAAC,IAAI,EAAE,oBAAoB,CAAC,yCAAyC,CAAA;CAAC,GACtE;IAAC,IAAI,EAAE,oBAAoB,CAAC,4BAA4B,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GACxE;IAAC,IAAI,EAAE,oBAAoB,CAAC,mCAAmC,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAC,GAC9E;IAAC,IAAI,EAAE,oBAAoB,CAAC,kBAAkB,CAAA;CAAC,GAC/C;IAAC,IAAI,EAAE,oBAAoB,CAAC,2BAA2B,CAAA;CAAC,GACxD;IAAC,IAAI,EAAE,oBAAoB,CAAC,wBAAwB,CAAA;CAAC,GACrD;IAAC,IAAI,EAAE,oBAAoB,CAAC,sBAAsB,CAAC;IAAC,aAAa,EAAE,IAAI,CAAC;IAAC,eAAe,EAAE,IAAI,CAAA;CAAC,GAC/F;IAAC,IAAI,EAAE,oBAAoB,CAAC,iCAAiC,CAAA;CAAC,GAC9D;IAAC,IAAI,EAAE,oBAAoB,CAAC,+BAA+B,CAAA;CAAC,GAC5D;IAAC,IAAI,EAAE,oBAAoB,CAAC,yBAAyB,CAAA;CAAC,GACtD;IAAC,IAAI,EAAE,oBAAoB,CAAC,4BAA4B,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAC,GAC/E;IAAC,IAAI,EAAE,oBAAoB,CAAC,qCAAqC,CAAA;CAAC,GAClE;IAAC,IAAI,EAAE,oBAAoB,CAAC,0BAA0B,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAC,CAAC;AAEtF,qBAAa,gBAAiB,SAAQ,iBAAiB,CAAC,oBAAoB,CAAC;IAC3E,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAYpD;CACF"}
|
|
@@ -147,6 +147,10 @@ var AttestationErrorCode;
|
|
|
147
147
|
* Gloas: Current slot attestation is marking payload as present
|
|
148
148
|
*/
|
|
149
149
|
AttestationErrorCode["PREMATURELY_INDICATED_PAYLOAD_PRESENT"] = "ATTESTATION_ERROR_PREMATURELY_INDICATED_PAYLOAD_PRESENT";
|
|
150
|
+
/**
|
|
151
|
+
* Gloas: index-1 attestation but the execution payload has not been seen yet
|
|
152
|
+
*/
|
|
153
|
+
AttestationErrorCode["EXECUTION_PAYLOAD_NOT_SEEN"] = "ATTESTATION_ERROR_EXECUTION_PAYLOAD_NOT_SEEN";
|
|
150
154
|
})(AttestationErrorCode || (AttestationErrorCode = {}));
|
|
151
155
|
export class AttestationError extends GossipActionError {
|
|
152
156
|
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;SAE5C,oBAAoB;AAAhC,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;SAE5C,oBAAoB;AAAhC,IAAY,oBAqJX;AArJD,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;IACzE;;OAEG;IACH,uGAA+E,CAAA;IAC/E;;OAEG;IACH,yHAAiG,CAAA;IACjG;;OAEG;IACH,mGAA2E,CAAA;AAAC,CAC9E,EArJY,oBAAoB,KAApB,oBAAoB,QAqJ/B;AAyCD,MAAM,OAAO,gBAAiB,SAAQ,iBAAuC;IAC3E,WAAW,GAA2C;QACpD,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;IAAA,CACF;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chain/forkChoice/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAEL,UAAU,EAEV,uBAAuB,EAIvB,cAAc,IAAI,iBAAiB,EAEpC,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAEL,gBAAgB,EAKjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,IAAI,EAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,MAAM,EAAY,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAa,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG;IAE/C,qBAAqB,CAAC,EAAE,OAAO,UAAU,CAAC;CAC3C,CAAC;AAEF,oBAAY,gBAAgB;IAC1B,eAAe,sBAAsB;IACrC,WAAW,iBAAiB;CAC7B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,iBAAiB,EAC1B,WAAW,EAAE,IAAI,EACjB,KAAK,EAAE,gBAAgB,EACvB,gBAAgB,EAAE,OAAO,EACzB,IAAI,EAAE,cAAc,EACpB,uBAAuB,EAAE,uBAAuB,EAChD,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,MAAM,CAAC,EAAE,MAAM,GACd,UAAU,CAsBZ;AAED;;GAEG;AACH,wBAAgB,sCAAsC,CACpD,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,iBAAiB,EAC1B,WAAW,EAAE,IAAI,EACjB,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,cAAc,EACpB,uBAAuB,EAAE,uBAAuB,EAChD,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,MAAM,CAAC,EAAE,MAAM,GACd,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chain/forkChoice/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAEL,UAAU,EAEV,uBAAuB,EAIvB,cAAc,IAAI,iBAAiB,EAEpC,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAEL,gBAAgB,EAKjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,IAAI,EAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,MAAM,EAAY,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAa,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG;IAE/C,qBAAqB,CAAC,EAAE,OAAO,UAAU,CAAC;CAC3C,CAAC;AAEF,oBAAY,gBAAgB;IAC1B,eAAe,sBAAsB;IACrC,WAAW,iBAAiB;CAC7B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,iBAAiB,EAC1B,WAAW,EAAE,IAAI,EACjB,KAAK,EAAE,gBAAgB,EACvB,gBAAgB,EAAE,OAAO,EACzB,IAAI,EAAE,cAAc,EACpB,uBAAuB,EAAE,uBAAuB,EAChD,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,MAAM,CAAC,EAAE,MAAM,GACd,UAAU,CAsBZ;AAED;;GAEG;AACH,wBAAgB,sCAAsC,CACpD,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,iBAAiB,EAC1B,WAAW,EAAE,IAAI,EACjB,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,cAAc,EACpB,uBAAuB,EAAE,uBAAuB,EAChD,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,MAAM,CAAC,EAAE,MAAM,GACd,UAAU,CAuFZ;AAED;;GAEG;AACH,wBAAgB,wCAAwC,CACtD,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,iBAAiB,EAC1B,WAAW,EAAE,IAAI,EACjB,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,cAAc,EACpB,uBAAuB,EAAE,uBAAuB,EAChD,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,MAAM,CAAC,EAAE,MAAM,GACd,UAAU,CAiIZ"}
|
|
@@ -39,9 +39,13 @@ export function initializeForkChoiceFromFinalizedState(config, emitter, currentS
|
|
|
39
39
|
const forkchoiceConstructor = opts.forkchoiceConstructor ?? ForkChoice;
|
|
40
40
|
const isForkPostGloas = computeEpochAtSlot(state.slot) >= config.GLOAS_FORK_EPOCH;
|
|
41
41
|
// Determine justified checkpoint payload status
|
|
42
|
-
const justifiedPayloadStatus =
|
|
42
|
+
const justifiedPayloadStatus = isForkPostGloas
|
|
43
|
+
? PayloadStatus.PENDING
|
|
44
|
+
: getCheckpointPayloadStatus(config, state, justifiedCheckpoint.epoch);
|
|
43
45
|
// Determine finalized checkpoint payload status
|
|
44
|
-
const finalizedPayloadStatus =
|
|
46
|
+
const finalizedPayloadStatus = isForkPostGloas
|
|
47
|
+
? PayloadStatus.PENDING
|
|
48
|
+
: getCheckpointPayloadStatus(config, state, finalizedCheckpoint.epoch);
|
|
45
49
|
return new forkchoiceConstructor(config, new ForkChoiceStore(currentSlot, justifiedCheckpoint, finalizedCheckpoint, justifiedBalances, justifiedBalancesGetter, justifiedPayloadStatus, finalizedPayloadStatus, {
|
|
46
50
|
onJustified: (cp) => emitter.emit(ChainEvent.forkChoiceJustified, cp),
|
|
47
51
|
onFinalized: (cp) => emitter.emit(ChainEvent.forkChoiceFinalized, cp),
|
|
@@ -61,7 +65,9 @@ export function initializeForkChoiceFromFinalizedState(config, emitter, currentS
|
|
|
61
65
|
unrealizedFinalizedRoot: toRootHex(finalizedCheckpoint.root),
|
|
62
66
|
...(isStatePostBellatrix(state) && state.isExecutionStateType && state.isMergeTransitionComplete
|
|
63
67
|
? {
|
|
64
|
-
executionPayloadBlockHash:
|
|
68
|
+
executionPayloadBlockHash: isStatePostGloas(state)
|
|
69
|
+
? toRootHex(state.latestBlockHash)
|
|
70
|
+
: toRootHex(state.latestExecutionPayloadHeader.blockHash),
|
|
65
71
|
// TODO GLOAS: executionPayloadNumber is not tracked in BeaconState post-gloas (EIP-7732 removed
|
|
66
72
|
// latestExecutionPayloadHeader). Using 0 as unavailable fallback until a solution is found.
|
|
67
73
|
executionPayloadNumber: isStatePostGloas(state) ? 0 : state.payloadBlockNumber,
|
|
@@ -123,7 +129,9 @@ export function initializeForkChoiceFromUnfinalizedState(config, emitter, curren
|
|
|
123
129
|
unfinalizedState.isExecutionStateType &&
|
|
124
130
|
unfinalizedState.isMergeTransitionComplete
|
|
125
131
|
? {
|
|
126
|
-
executionPayloadBlockHash:
|
|
132
|
+
executionPayloadBlockHash: isStatePostGloas(unfinalizedState)
|
|
133
|
+
? toRootHex(unfinalizedState.latestBlockHash)
|
|
134
|
+
: toRootHex(unfinalizedState.latestExecutionPayloadHeader.blockHash),
|
|
127
135
|
// TODO GLOAS: executionPayloadNumber is not tracked in BeaconState post-gloas (EIP-7732 removed
|
|
128
136
|
// latestExecutionPayloadHeader). Using 0 as unavailable fallback until a solution is found.
|
|
129
137
|
executionPayloadNumber: isStatePostGloas(unfinalizedState) ? 0 : unfinalizedState.payloadBlockNumber,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chain/forkChoice/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,UAAU,EACV,eAAe,EAEf,aAAa,EACb,UAAU,EAGV,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,sBAAsB,EAEtB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAO,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAS,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAC,UAAU,EAAoB,MAAM,eAAe,CAAC;SAOhD,gBAAgB;AAA5B,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,yDAAqC,CAAA;IACrC,gDAA4B,CAAA;AAAC,CAC/B,EAHY,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAuB,EACvB,OAA0B,EAC1B,WAAiB,EACjB,KAAuB,EACvB,gBAAyB,EACzB,IAAoB,EACpB,uBAAgD,EAChD,OAAuB,EACvB,MAAe,EACH;IACZ,OAAO,gBAAgB;QACrB,CAAC,CAAC,sCAAsC,CACpC,MAAM,EACN,OAAO,EACP,WAAW,EACX,KAAK,EACL,IAAI,EACJ,uBAAuB,EACvB,OAAO,EACP,MAAM,CACP;QACH,CAAC,CAAC,wCAAwC,CACtC,MAAM,EACN,OAAO,EACP,WAAW,EACX,KAAK,EACL,IAAI,EACJ,uBAAuB,EACvB,OAAO,EACP,MAAM,CACP,CAAC;AAAA,CACP;AAED;;GAEG;AACH,MAAM,UAAU,sCAAsC,CACpD,MAAuB,EACvB,OAA0B,EAC1B,WAAiB,EACjB,KAAuB,EACvB,IAAoB,EACpB,uBAAgD,EAChD,OAAuB,EACvB,MAAe,EACH;IACZ,MAAM,EAAC,WAAW,EAAE,UAAU,EAAC,GAAG,KAAK,CAAC,uBAAuB,EAAE,CAAC;IAClE,MAAM,mBAAmB,GAAG,EAAC,GAAG,UAAU,EAAC,CAAC;IAC5C,MAAM,mBAAmB,GAAG;QAC1B,GAAG,UAAU;QACb,iGAAiG;QACjG,kHAAkH;QAClH,yDAAyD;QACzD,6EAA6E;QAC7E,KAAK,EAAE,UAAU,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC;KACxE,CAAC;IAEF,MAAM,iBAAiB,GAAG,KAAK,CAAC,yCAAyC,EAAE,CAAC;IAE5E,yDAAyD;IACzD,sDAAsD;IACtD,MAAM,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,IAAI,UAAU,CAAC;IAEvE,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC;IAElF,gDAAgD;IAChD,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chain/forkChoice/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareNextSlot.d.ts","sourceRoot":"","sources":["../../src/chain/prepareNextSlot.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EACL,gBAAgB,
|
|
1
|
+
{"version":3,"file":"prepareNextSlot.d.ts","sourceRoot":"","sources":["../../src/chain/prepareNextSlot.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EACL,gBAAgB,EAMjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAC,MAAM,EAAiC,MAAM,iBAAiB,CAAC;AAGvE,OAAO,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAI5C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAM5C,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAK1C;;;;;;;;;;GAUG;AACH,qBAAa,wBAAwB;IAEjC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,YACmB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EAUrC;IAED;;OAEG;IACH,kBAAkB,uCA+LhB;IAEF,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAQlF;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { routes } from "@lodestar/api";
|
|
2
|
-
import {
|
|
2
|
+
import { getSafeExecutionBlockHash } from "@lodestar/fork-choice";
|
|
3
3
|
import { ForkSeq, SLOTS_PER_EPOCH, isForkPostBellatrix } from "@lodestar/params";
|
|
4
|
-
import { StateHashTreeRootSource, computeEpochAtSlot, computeTimeAtSlot, isStatePostBellatrix, } from "@lodestar/state-transition";
|
|
4
|
+
import { StateHashTreeRootSource, computeEpochAtSlot, computeTimeAtSlot, isStatePostBellatrix, isStatePostGloas, } from "@lodestar/state-transition";
|
|
5
5
|
import { fromHex, isErrorAborted, sleep } from "@lodestar/utils";
|
|
6
6
|
import { GENESIS_SLOT, ZERO_HASH_HEX } from "../constants/constants.js";
|
|
7
7
|
import { BuilderStatus } from "../execution/builder/http.js";
|
|
@@ -64,6 +64,8 @@ export class PrepareNextSlotScheduler {
|
|
|
64
64
|
// calling updateHead() here before we produce a block to reduce reorg possibility
|
|
65
65
|
const headBlock = this.chain.recomputeForkChoiceHead(ForkchoiceCaller.prepareNextSlot);
|
|
66
66
|
const { slot: headSlot, blockRoot: headRoot } = headBlock;
|
|
67
|
+
// may be updated below if we predict a proposer-boost-reorg
|
|
68
|
+
let updatedHeadRoot = headRoot;
|
|
67
69
|
// PS: previously this was comparing slots, but that gave no leway on the skipped
|
|
68
70
|
// slots on epoch bounday. Making it more fluid.
|
|
69
71
|
if (prepareSlot - headSlot > PREPARE_EPOCH_LIMIT * SLOTS_PER_EPOCH) {
|
|
@@ -98,7 +100,6 @@ export class PrepareNextSlotScheduler {
|
|
|
98
100
|
const proposerIndex = prepareState.getBeaconProposer(prepareSlot);
|
|
99
101
|
const feeRecipient = this.chain.beaconProposerCache.get(proposerIndex);
|
|
100
102
|
let updatedPrepareState = prepareState;
|
|
101
|
-
let updatedHeadRoot = headRoot;
|
|
102
103
|
if (feeRecipient) {
|
|
103
104
|
// If we are proposing next slot, we need to predict if we can proposer-boost-reorg or not
|
|
104
105
|
const proposerHead = this.chain.predictProposerHead(clockSlot);
|
|
@@ -124,27 +125,35 @@ export class PrepareNextSlotScheduler {
|
|
|
124
125
|
this.logger.error("Builder disabled as the check status api failed", { prepareSlot }, e);
|
|
125
126
|
});
|
|
126
127
|
}
|
|
128
|
+
}
|
|
129
|
+
if (!isStatePostBellatrix(updatedPrepareState)) {
|
|
130
|
+
throw new Error("Expected Bellatrix state for payload attributes");
|
|
131
|
+
}
|
|
132
|
+
let parentBlockHash;
|
|
133
|
+
if (isStatePostGloas(updatedPrepareState)) {
|
|
134
|
+
parentBlockHash = this.chain.forkChoice.shouldExtendPayload(updatedHeadRoot)
|
|
135
|
+
? updatedPrepareState.latestExecutionPayloadBid.blockHash
|
|
136
|
+
: updatedPrepareState.latestExecutionPayloadBid.parentBlockHash;
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
parentBlockHash = updatedPrepareState.latestExecutionPayloadHeader.blockHash;
|
|
140
|
+
}
|
|
141
|
+
if (feeRecipient) {
|
|
127
142
|
const preparationTime = computeTimeAtSlot(this.config, prepareSlot, this.chain.genesisTime) - Date.now() / 1000;
|
|
128
143
|
this.metrics?.blockPayload.payloadAdvancePrepTime.observe(preparationTime);
|
|
129
|
-
if (!isStatePostBellatrix(updatedPrepareState)) {
|
|
130
|
-
throw new Error("Expected Bellatrix state for payload preparation");
|
|
131
|
-
}
|
|
132
144
|
const safeBlockHash = getSafeExecutionBlockHash(this.chain.forkChoice);
|
|
133
145
|
const finalizedBlockHash = this.chain.forkChoice.getFinalizedBlock().executionPayloadBlockHash ?? ZERO_HASH_HEX;
|
|
134
146
|
// awaiting here instead of throwing an async call because there is no other task
|
|
135
|
-
// left for scheduler and this gives nice
|
|
147
|
+
// left for scheduler and this gives nice semantics to catch and log errors in the
|
|
136
148
|
// try/catch wrapper here.
|
|
137
149
|
await prepareExecutionPayload(this.chain, this.logger, fork, // State is of execution type
|
|
138
|
-
fromHex(updatedHeadRoot), safeBlockHash, finalizedBlockHash, updatedPrepareState, feeRecipient);
|
|
150
|
+
fromHex(updatedHeadRoot), parentBlockHash, safeBlockHash, finalizedBlockHash, updatedPrepareState, feeRecipient);
|
|
139
151
|
this.logger.verbose("PrepareNextSlotScheduler prepared new payload", {
|
|
140
152
|
prepareSlot,
|
|
141
153
|
proposerIndex,
|
|
142
154
|
feeRecipient,
|
|
143
155
|
});
|
|
144
156
|
}
|
|
145
|
-
if (!isStatePostBellatrix(updatedPrepareState)) {
|
|
146
|
-
throw new Error("Expected Bellatrix state for payload attributes");
|
|
147
|
-
}
|
|
148
157
|
this.computeStateHashTreeRoot(updatedPrepareState, isEpochTransition);
|
|
149
158
|
// If emitPayloadAttributes is true emit a SSE payloadAttributes event
|
|
150
159
|
if (this.chain.opts.emitPayloadAttributes === true &&
|
|
@@ -153,6 +162,7 @@ export class PrepareNextSlotScheduler {
|
|
|
153
162
|
prepareState: updatedPrepareState,
|
|
154
163
|
prepareSlot,
|
|
155
164
|
parentBlockRoot: fromHex(headRoot),
|
|
165
|
+
parentBlockHash,
|
|
156
166
|
// The likely consumers of this API are builders and will anyway ignore the
|
|
157
167
|
// feeRecipient, so just pass zero hash for now till a real use case arises
|
|
158
168
|
feeRecipient: "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
@@ -168,11 +178,7 @@ export class PrepareNextSlotScheduler {
|
|
|
168
178
|
// + if next slot is a skipped slot, it'd help getting target checkpoint state faster to validate attestations
|
|
169
179
|
if (isEpochTransition) {
|
|
170
180
|
this.metrics?.precomputeNextEpochTransition.count.inc({ result: "success" }, 1);
|
|
171
|
-
|
|
172
|
-
// Pre-Gloas: payloadStatus is always FULL → payloadPresent = true
|
|
173
|
-
// Post-Gloas: FULL → true, EMPTY → false, PENDING → false (conservative, treat as block state)
|
|
174
|
-
const payloadPresent = headBlock.payloadStatus === PayloadStatus.FULL;
|
|
175
|
-
const previousHits = this.chain.regen.updatePreComputedCheckpoint(headRoot, nextEpoch, payloadPresent);
|
|
181
|
+
const previousHits = this.chain.regen.updatePreComputedCheckpoint(headRoot, nextEpoch);
|
|
176
182
|
if (previousHits === 0) {
|
|
177
183
|
this.metrics?.precomputeNextEpochTransition.waste.inc();
|
|
178
184
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareNextSlot.js","sourceRoot":"","sources":["../../src/chain/prepareNextSlot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AAErC,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"prepareNextSlot.js","sourceRoot":"","sources":["../../src/chain/prepareNextSlot.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IBeaconStateView
|
|
2
|
-
import { BeaconBlock, BlindedBeaconBlock, Gwei, Root
|
|
1
|
+
import { IBeaconStateView } from "@lodestar/state-transition";
|
|
2
|
+
import { BeaconBlock, BlindedBeaconBlock, Gwei, Root } from "@lodestar/types";
|
|
3
3
|
import { Metrics } from "../../metrics/index.js";
|
|
4
4
|
/**
|
|
5
5
|
* Instead of running fastStateTransition(), only need to process block since
|
|
@@ -9,12 +9,6 @@ import { Metrics } from "../../metrics/index.js";
|
|
|
9
9
|
export declare function computeNewStateRoot(metrics: Metrics | null, state: IBeaconStateView, block: BeaconBlock | BlindedBeaconBlock): {
|
|
10
10
|
newStateRoot: Root;
|
|
11
11
|
proposerReward: Gwei;
|
|
12
|
-
|
|
12
|
+
postState: IBeaconStateView;
|
|
13
13
|
};
|
|
14
|
-
/**
|
|
15
|
-
* Compute the state root after processing an execution payload envelope.
|
|
16
|
-
* Similar to `computeNewStateRoot` but for payload envelope processing.
|
|
17
|
-
*
|
|
18
|
-
*/
|
|
19
|
-
export declare function computePayloadEnvelopeStateRoot(metrics: Metrics | null, postBlockState: IBeaconStateViewGloas, envelope: gloas.ExecutionPayloadEnvelope): Root;
|
|
20
14
|
//# sourceMappingURL=computeNewStateRoot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computeNewStateRoot.d.ts","sourceRoot":"","sources":["../../../src/chain/produceBlock/computeNewStateRoot.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"computeNewStateRoot.d.ts","sourceRoot":"","sources":["../../../src/chain/produceBlock/computeNewStateRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,gBAAgB,EAEjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAE5E,OAAO,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,WAAW,GAAG,kBAAkB,GACtC;IAAC,YAAY,EAAE,IAAI,CAAC;IAAC,cAAc,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,gBAAgB,CAAA;CAAC,CAiCzE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DataAvailabilityStatus, ExecutionPayloadStatus,
|
|
1
|
+
import { DataAvailabilityStatus, ExecutionPayloadStatus, StateHashTreeRootSource, } from "@lodestar/state-transition";
|
|
2
2
|
import { ZERO_HASH } from "../../constants/index.js";
|
|
3
3
|
/**
|
|
4
4
|
* Instead of running fastStateTransition(), only need to process block since
|
|
@@ -8,7 +8,7 @@ import { ZERO_HASH } from "../../constants/index.js";
|
|
|
8
8
|
export function computeNewStateRoot(metrics, state, block) {
|
|
9
9
|
// Set signature to zero to re-use stateTransition() function which requires the SignedBeaconBlock type
|
|
10
10
|
const blockEmptySig = { message: block, signature: ZERO_HASH };
|
|
11
|
-
const
|
|
11
|
+
const postState = state.stateTransition(blockEmptySig, {
|
|
12
12
|
// ExecutionPayloadStatus.valid: Assume payload valid, it has been produced by a trusted EL
|
|
13
13
|
executionPayloadStatus: ExecutionPayloadStatus.valid,
|
|
14
14
|
// DataAvailabilityStatus.available: Assume the blobs to be available, have just been produced by trusted EL
|
|
@@ -22,40 +22,13 @@ export function computeNewStateRoot(metrics, state, block) {
|
|
|
22
22
|
// Preserve cache in source state, since the resulting state is not added to the state cache
|
|
23
23
|
dontTransferCache: true,
|
|
24
24
|
}, { metrics });
|
|
25
|
-
const { attestations, syncAggregate, slashing } =
|
|
25
|
+
const { attestations, syncAggregate, slashing } = postState.proposerRewards;
|
|
26
26
|
const proposerReward = BigInt(attestations + syncAggregate + slashing);
|
|
27
27
|
const hashTreeRootTimer = metrics?.stateHashTreeRootTime.startTimer({
|
|
28
28
|
source: StateHashTreeRootSource.computeNewStateRoot,
|
|
29
29
|
});
|
|
30
|
-
const newStateRoot =
|
|
30
|
+
const newStateRoot = postState.hashTreeRoot();
|
|
31
31
|
hashTreeRootTimer?.();
|
|
32
|
-
return { newStateRoot, proposerReward,
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Compute the state root after processing an execution payload envelope.
|
|
36
|
-
* Similar to `computeNewStateRoot` but for payload envelope processing.
|
|
37
|
-
*
|
|
38
|
-
*/
|
|
39
|
-
export function computePayloadEnvelopeStateRoot(metrics, postBlockState, envelope) {
|
|
40
|
-
const signedEnvelope = {
|
|
41
|
-
message: envelope,
|
|
42
|
-
signature: G2_POINT_AT_INFINITY,
|
|
43
|
-
};
|
|
44
|
-
const processEnvelopeTimer = metrics?.blockPayload.executionPayloadEnvelopeProcessingTime.startTimer();
|
|
45
|
-
const postPayloadState = postBlockState.processExecutionPayloadEnvelope(signedEnvelope, {
|
|
46
|
-
// Signature is zero-ed (G2_POINT_AT_INFINITY), skip verification
|
|
47
|
-
verifySignature: false,
|
|
48
|
-
// State root is being computed here, the envelope doesn't have it yet
|
|
49
|
-
verifyStateRoot: false,
|
|
50
|
-
// Preserve cache in source state, since the resulting state is not added to the state cache
|
|
51
|
-
dontTransferCache: true,
|
|
52
|
-
});
|
|
53
|
-
processEnvelopeTimer?.();
|
|
54
|
-
const hashTreeRootTimer = metrics?.stateHashTreeRootTime.startTimer({
|
|
55
|
-
source: StateHashTreeRootSource.computePayloadEnvelopeStateRoot,
|
|
56
|
-
});
|
|
57
|
-
const stateRoot = postPayloadState.hashTreeRoot();
|
|
58
|
-
hashTreeRootTimer?.();
|
|
59
|
-
return stateRoot;
|
|
32
|
+
return { newStateRoot, proposerReward, postState };
|
|
60
33
|
}
|
|
61
34
|
//# sourceMappingURL=computeNewStateRoot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computeNewStateRoot.js","sourceRoot":"","sources":["../../../src/chain/produceBlock/computeNewStateRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"computeNewStateRoot.js","sourceRoot":"","sources":["../../../src/chain/produceBlock/computeNewStateRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EAEtB,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAC;AAGnD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAuB,EACvB,KAAuB,EACvB,KAAuC,EACkC;IACzE,uGAAuG;IACvG,MAAM,aAAa,GAAG,EAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAC,CAAC;IAE7D,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,CACrC,aAAa,EACb;QACE,2FAA2F;QAC3F,sBAAsB,EAAE,sBAAsB,CAAC,KAAK;QACpD,4GAA4G;QAC5G,sBAAsB,EAAE,sBAAsB,CAAC,SAAS;QACxD,uFAAuF;QACvF,eAAe,EAAE,KAAK;QACtB,8DAA8D;QAC9D,cAAc,EAAE,KAAK;QACrB,4EAA4E;QAC5E,gBAAgB,EAAE,KAAK;QACvB,4FAA4F;QAC5F,iBAAiB,EAAE,IAAI;KACxB,EACD,EAAC,OAAO,EAAC,CACV,CAAC;IAEF,MAAM,EAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAC,GAAG,SAAS,CAAC,eAAe,CAAC;IAC1E,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,GAAG,aAAa,GAAG,QAAQ,CAAC,CAAC;IAEvE,MAAM,iBAAiB,GAAG,OAAO,EAAE,qBAAqB,CAAC,UAAU,CAAC;QAClE,MAAM,EAAE,uBAAuB,CAAC,mBAAmB;KACpD,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;IAC9C,iBAAiB,EAAE,EAAE,CAAC;IAEtB,OAAO,EAAC,YAAY,EAAE,cAAc,EAAE,SAAS,EAAC,CAAC;AAAA,CAClD"}
|
|
@@ -45,12 +45,6 @@ export type ProduceFullGloas = {
|
|
|
45
45
|
executionRequests: electra.ExecutionRequests;
|
|
46
46
|
blobsBundle: BlobsBundle<ForkPostGloas>;
|
|
47
47
|
cells: fulu.Cell[][];
|
|
48
|
-
/**
|
|
49
|
-
* Cached payload envelope state root computed during block production.
|
|
50
|
-
* This is the state root after running `processExecutionPayloadEnvelope` on the
|
|
51
|
-
* post-block state, and later used to construct the `ExecutionPayloadEnvelope`.
|
|
52
|
-
*/
|
|
53
|
-
payloadEnvelopeStateRoot: Root;
|
|
54
48
|
};
|
|
55
49
|
export type ProduceFullFulu = {
|
|
56
50
|
type: BlockType.Full;
|
|
@@ -96,17 +90,18 @@ export declare function produceBlockBody<T extends BlockType>(this: BeaconChain,
|
|
|
96
90
|
export declare function prepareExecutionPayload(chain: {
|
|
97
91
|
executionEngine: IExecutionEngine;
|
|
98
92
|
config: ChainForkConfig;
|
|
99
|
-
}, logger: Logger, fork: ForkPostBellatrix, parentBlockRoot: Root, safeBlockHash: RootHex, finalizedBlockHash: RootHex, state: IBeaconStateViewBellatrix, suggestedFeeRecipient: string): Promise<{
|
|
93
|
+
}, logger: Logger, fork: ForkPostBellatrix, parentBlockRoot: Root, parentBlockHash: Bytes32, safeBlockHash: RootHex, finalizedBlockHash: RootHex, state: IBeaconStateViewBellatrix, suggestedFeeRecipient: string): Promise<{
|
|
100
94
|
prepType: PayloadPreparationType;
|
|
101
95
|
payloadId: PayloadId;
|
|
102
96
|
}>;
|
|
103
97
|
export declare function getPayloadAttributesForSSE(fork: ForkPostBellatrix, chain: {
|
|
104
98
|
config: ChainForkConfig;
|
|
105
99
|
forkChoice: IForkChoice;
|
|
106
|
-
}, { prepareState, prepareSlot, parentBlockRoot, feeRecipient }: {
|
|
100
|
+
}, { prepareState, prepareSlot, parentBlockRoot, parentBlockHash, feeRecipient }: {
|
|
107
101
|
prepareState: IBeaconStateViewBellatrix;
|
|
108
102
|
prepareSlot: Slot;
|
|
109
103
|
parentBlockRoot: Root;
|
|
104
|
+
parentBlockHash: Bytes32;
|
|
110
105
|
feeRecipient: string;
|
|
111
106
|
}): SSEPayloadAttributes;
|
|
112
107
|
export declare function produceCommonBlockBody<T extends BlockType>(this: BeaconChain, blockType: T, currentState: IBeaconStateView, { randaoReveal, graffiti, slot, parentBlock }: BlockAttributes): Promise<CommonBlockBody>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"produceBlockBody.d.ts","sourceRoot":"","sources":["../../../src/chain/produceBlock/produceBlockBody.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,WAAW,EAAE,UAAU,EAA4B,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAEL,QAAQ,EACR,iBAAiB,EAEjB,aAAa,EACb,YAAY,EACZ,aAAa,EAMd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,gBAAgB,EAChB,KAAK,yBAAyB,
|
|
1
|
+
{"version":3,"file":"produceBlockBody.d.ts","sourceRoot":"","sources":["../../../src/chain/produceBlock/produceBlockBody.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getSafeExecutionBlockHash } from "@lodestar/fork-choice";
|
|
2
2
|
import { BUILDER_INDEX_SELF_BUILD, ForkSeq, isForkPostAltair, isForkPostBellatrix, isForkPostGloas, } from "@lodestar/params";
|
|
3
|
-
import { G2_POINT_AT_INFINITY, computeTimeAtSlot,
|
|
4
|
-
import { fromHex, sleep, toHex, toPubkeyHex, toRootHex } from "@lodestar/utils";
|
|
3
|
+
import { G2_POINT_AT_INFINITY, computeTimeAtSlot, isStatePostBellatrix, isStatePostCapella, isStatePostGloas, } from "@lodestar/state-transition";
|
|
4
|
+
import { byteArrayEquals, fromHex, sleep, toHex, toPubkeyHex, toRootHex } from "@lodestar/utils";
|
|
5
5
|
import { ZERO_HASH_HEX } from "../../constants/index.js";
|
|
6
6
|
import { numToQuantity } from "../../execution/engine/utils.js";
|
|
7
7
|
import { getExpectedGasLimit, } from "../../execution/index.js";
|
|
@@ -74,7 +74,10 @@ export async function produceBlockBody(blockType, currentState, blockAttr) {
|
|
|
74
74
|
feeRecipient,
|
|
75
75
|
});
|
|
76
76
|
// Get execution payload from EL
|
|
77
|
-
const
|
|
77
|
+
const parentBlockHash = this.forkChoice.shouldExtendPayload(toRootHex(parentBlockRoot))
|
|
78
|
+
? currentState.latestExecutionPayloadBid.blockHash
|
|
79
|
+
: currentState.latestExecutionPayloadBid.parentBlockHash;
|
|
80
|
+
const prepareRes = await prepareExecutionPayload(this, this.logger, fork, parentBlockRoot, parentBlockHash, safeBlockHash, finalizedBlockHash ?? ZERO_HASH_HEX, currentState, feeRecipient);
|
|
78
81
|
const { prepType, payloadId } = prepareRes;
|
|
79
82
|
Object.assign(logMeta, { executionPayloadPrepType: prepType });
|
|
80
83
|
if (prepType !== PayloadPreparationType.Cached) {
|
|
@@ -98,8 +101,8 @@ export async function produceBlockBody(blockType, currentState, blockAttr) {
|
|
|
98
101
|
}
|
|
99
102
|
// Create self-build execution payload bid
|
|
100
103
|
const bid = {
|
|
101
|
-
parentBlockHash
|
|
102
|
-
parentBlockRoot
|
|
104
|
+
parentBlockHash,
|
|
105
|
+
parentBlockRoot,
|
|
103
106
|
blockHash: executionPayload.blockHash,
|
|
104
107
|
prevRandao: currentState.getRandaoMix(currentState.epoch),
|
|
105
108
|
feeRecipient: executionPayload.feeRecipient,
|
|
@@ -166,7 +169,7 @@ export async function produceBlockBody(blockType, currentState, blockAttr) {
|
|
|
166
169
|
// tests because merge-mock requires an fcU to be issued prior to fetch payload
|
|
167
170
|
// header.
|
|
168
171
|
if (executionBuilder.issueLocalFcUWithFeeRecipient !== undefined) {
|
|
169
|
-
await prepareExecutionPayload(this, this.logger, fork, parentBlockRoot, safeBlockHash, finalizedBlockHash ?? ZERO_HASH_HEX, currentState, executionBuilder.issueLocalFcUWithFeeRecipient);
|
|
172
|
+
await prepareExecutionPayload(this, this.logger, fork, parentBlockRoot, currentState.latestExecutionPayloadHeader.blockHash, safeBlockHash, finalizedBlockHash ?? ZERO_HASH_HEX, currentState, executionBuilder.issueLocalFcUWithFeeRecipient);
|
|
170
173
|
}
|
|
171
174
|
// For MeV boost integration, this is where the execution header will be
|
|
172
175
|
// fetched from the payload id and a blinded block will be produced instead of
|
|
@@ -249,7 +252,7 @@ export async function produceBlockBody(blockType, currentState, blockAttr) {
|
|
|
249
252
|
feeRecipient,
|
|
250
253
|
});
|
|
251
254
|
// https://github.com/ethereum/consensus-specs/blob/v1.6.1/specs/deneb/validator.md#constructing-the-beaconblockbody
|
|
252
|
-
const prepareRes = await prepareExecutionPayload(this, this.logger, fork, parentBlockRoot, safeBlockHash, finalizedBlockHash ?? ZERO_HASH_HEX, currentState, feeRecipient);
|
|
255
|
+
const prepareRes = await prepareExecutionPayload(this, this.logger, fork, parentBlockRoot, currentState.latestExecutionPayloadHeader.blockHash, safeBlockHash, finalizedBlockHash ?? ZERO_HASH_HEX, currentState, feeRecipient);
|
|
253
256
|
const { prepType, payloadId } = prepareRes;
|
|
254
257
|
Object.assign(logMeta, { executionPayloadPrepType: prepType });
|
|
255
258
|
if (prepType !== PayloadPreparationType.Cached) {
|
|
@@ -381,12 +384,11 @@ export async function produceBlockBody(blockType, currentState, blockAttr) {
|
|
|
381
384
|
/**
|
|
382
385
|
* Produce ExecutionPayload for post-merge.
|
|
383
386
|
*/
|
|
384
|
-
export async function prepareExecutionPayload(chain, logger, fork, parentBlockRoot, safeBlockHash, finalizedBlockHash, state, suggestedFeeRecipient) {
|
|
385
|
-
const parentHash = state.latestBlockHash;
|
|
387
|
+
export async function prepareExecutionPayload(chain, logger, fork, parentBlockRoot, parentBlockHash, safeBlockHash, finalizedBlockHash, state, suggestedFeeRecipient) {
|
|
386
388
|
const timestamp = computeTimeAtSlot(chain.config, state.slot, state.genesisTime);
|
|
387
389
|
const prevRandao = state.getRandaoMix(state.epoch);
|
|
388
390
|
const payloadIdCached = chain.executionEngine.payloadIdCache.get({
|
|
389
|
-
headBlockHash: toRootHex(
|
|
391
|
+
headBlockHash: toRootHex(parentBlockHash),
|
|
390
392
|
finalizedBlockHash,
|
|
391
393
|
timestamp: numToQuantity(timestamp),
|
|
392
394
|
prevRandao: toHex(prevRandao),
|
|
@@ -414,9 +416,10 @@ export async function prepareExecutionPayload(chain, logger, fork, parentBlockRo
|
|
|
414
416
|
prepareState: state,
|
|
415
417
|
prepareSlot: state.slot,
|
|
416
418
|
parentBlockRoot,
|
|
419
|
+
parentBlockHash,
|
|
417
420
|
feeRecipient: suggestedFeeRecipient,
|
|
418
421
|
});
|
|
419
|
-
payloadId = await chain.executionEngine.notifyForkchoiceUpdate(fork, toRootHex(
|
|
422
|
+
payloadId = await chain.executionEngine.notifyForkchoiceUpdate(fork, toRootHex(parentBlockHash), safeBlockHash, finalizedBlockHash, attributes);
|
|
420
423
|
logger.verbose("Prepared payload id from execution engine", { payloadId });
|
|
421
424
|
}
|
|
422
425
|
// Should never happen, notifyForkchoiceUpdate() with payload attributes always
|
|
@@ -436,17 +439,17 @@ async function prepareExecutionPayloadHeader(chain, fork, state, proposerPubKey)
|
|
|
436
439
|
const parentHash = state.latestExecutionPayloadHeader.blockHash;
|
|
437
440
|
return chain.executionBuilder.getHeader(fork, state.slot, parentHash, proposerPubKey);
|
|
438
441
|
}
|
|
439
|
-
export function getPayloadAttributesForSSE(fork, chain, { prepareState, prepareSlot, parentBlockRoot, feeRecipient, }) {
|
|
440
|
-
const parentHash = prepareState.latestBlockHash;
|
|
442
|
+
export function getPayloadAttributesForSSE(fork, chain, { prepareState, prepareSlot, parentBlockRoot, parentBlockHash, feeRecipient, }) {
|
|
441
443
|
const payloadAttributes = preparePayloadAttributes(fork, chain, {
|
|
442
444
|
prepareState,
|
|
443
445
|
prepareSlot,
|
|
444
446
|
parentBlockRoot,
|
|
447
|
+
parentBlockHash,
|
|
445
448
|
feeRecipient,
|
|
446
449
|
});
|
|
447
450
|
let parentBlockNumber;
|
|
448
451
|
if (isForkPostGloas(fork)) {
|
|
449
|
-
const parentBlock = chain.forkChoice.getBlockHexAndBlockHash(toRootHex(parentBlockRoot), toRootHex(
|
|
452
|
+
const parentBlock = chain.forkChoice.getBlockHexAndBlockHash(toRootHex(parentBlockRoot), toRootHex(parentBlockHash));
|
|
450
453
|
if (parentBlock?.executionPayloadBlockHash == null) {
|
|
451
454
|
throw Error(`Parent block not found in fork choice root=${toRootHex(parentBlockRoot)}`);
|
|
452
455
|
}
|
|
@@ -460,12 +463,12 @@ export function getPayloadAttributesForSSE(fork, chain, { prepareState, prepareS
|
|
|
460
463
|
proposalSlot: prepareSlot,
|
|
461
464
|
parentBlockNumber,
|
|
462
465
|
parentBlockRoot,
|
|
463
|
-
parentBlockHash
|
|
466
|
+
parentBlockHash,
|
|
464
467
|
payloadAttributes,
|
|
465
468
|
};
|
|
466
469
|
return ssePayloadAttributes;
|
|
467
470
|
}
|
|
468
|
-
function preparePayloadAttributes(fork, chain, { prepareState, prepareSlot, parentBlockRoot, feeRecipient, }) {
|
|
471
|
+
function preparePayloadAttributes(fork, chain, { prepareState, prepareSlot, parentBlockRoot, parentBlockHash, feeRecipient, }) {
|
|
469
472
|
const timestamp = computeTimeAtSlot(chain.config, prepareSlot, prepareState.genesisTime);
|
|
470
473
|
const prevRandao = prepareState.getRandaoMix(prepareState.epoch);
|
|
471
474
|
const payloadAttributes = {
|
|
@@ -477,13 +480,15 @@ function preparePayloadAttributes(fork, chain, { prepareState, prepareSlot, pare
|
|
|
477
480
|
if (!isStatePostCapella(prepareState)) {
|
|
478
481
|
throw new Error("Expected Capella state for withdrawals");
|
|
479
482
|
}
|
|
480
|
-
if (isStatePostGloas(prepareState)
|
|
483
|
+
if (isStatePostGloas(prepareState)) {
|
|
484
|
+
const isExtendingPayload = byteArrayEquals(parentBlockHash, prepareState.latestExecutionPayloadBid.blockHash);
|
|
481
485
|
// When the parent block is empty, state.payloadExpectedWithdrawals holds a batch
|
|
482
486
|
// already deducted from CL balances but never credited on the EL (the envelope
|
|
483
487
|
// was not delivered). The next payload must carry those same withdrawals to
|
|
484
488
|
// restore CL/EL consistency, otherwise validators permanently lose that balance.
|
|
485
|
-
payloadAttributes.withdrawals =
|
|
486
|
-
prepareState.
|
|
489
|
+
payloadAttributes.withdrawals = isExtendingPayload
|
|
490
|
+
? prepareState.getExpectedWithdrawals().expectedWithdrawals
|
|
491
|
+
: prepareState.payloadExpectedWithdrawals;
|
|
487
492
|
}
|
|
488
493
|
else {
|
|
489
494
|
// withdrawals logic is now fork aware as it changes on electra fork post capella
|