@lodestar/beacon-node 1.50.0-dev.f2fb26d453 → 1.50.0-dev.fc618d94e9
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/blocks/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/blocks/index.js +6 -1
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/index.js +13 -0
- package/lib/api/impl/beacon/index.js.map +1 -1
- package/lib/api/impl/validator/index.d.ts +1 -0
- package/lib/api/impl/validator/index.d.ts.map +1 -1
- package/lib/api/impl/validator/index.js +17 -1
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/archiveStore/archiveStore.js +1 -1
- package/lib/chain/archiveStore/archiveStore.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts +2 -2
- package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
- package/lib/chain/archiveStore/historicalState/getHistoricalState.js +5 -7
- package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +1 -1
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/types.d.ts +2 -2
- package/lib/chain/archiveStore/historicalState/types.d.ts.map +1 -1
- package/lib/chain/archiveStore/historicalState/worker.js +1 -1
- package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
- package/lib/chain/archiveStore/interface.d.ts +1 -1
- package/lib/chain/archiveStore/interface.d.ts.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +2 -1
- package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlock.js +1 -1
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts +2 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +5 -4
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
- package/lib/chain/chain.d.ts +6 -4
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +40 -13
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +7 -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/envelopeReconstructionError.d.ts +5 -0
- package/lib/chain/errors/envelopeReconstructionError.d.ts.map +1 -1
- package/lib/chain/errors/envelopeReconstructionError.js +2 -0
- package/lib/chain/errors/envelopeReconstructionError.js.map +1 -1
- package/lib/chain/errors/gossipValidation.d.ts +3 -1
- package/lib/chain/errors/gossipValidation.d.ts.map +1 -1
- package/lib/chain/errors/gossipValidation.js +2 -0
- package/lib/chain/errors/gossipValidation.js.map +1 -1
- package/lib/chain/forkChoice/index.d.ts.map +1 -1
- package/lib/chain/forkChoice/index.js +2 -0
- package/lib/chain/forkChoice/index.js.map +1 -1
- package/lib/chain/interface.d.ts +2 -2
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/opPools/proposerPreferencesPool.d.ts +4 -4
- package/lib/chain/opPools/proposerPreferencesPool.d.ts.map +1 -1
- package/lib/chain/opPools/proposerPreferencesPool.js +14 -11
- package/lib/chain/opPools/proposerPreferencesPool.js.map +1 -1
- package/lib/chain/options.d.ts +1 -1
- package/lib/chain/options.d.ts.map +1 -1
- package/lib/chain/options.js +1 -1
- package/lib/chain/options.js.map +1 -1
- package/lib/chain/prepareNextSlot.d.ts.map +1 -1
- package/lib/chain/prepareNextSlot.js +5 -2
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/computeNewStateRoot.js +1 -1
- package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +6 -2
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/regen/regen.d.ts +2 -0
- package/lib/chain/regen/regen.d.ts.map +1 -1
- package/lib/chain/regen/regen.js +10 -4
- package/lib/chain/regen/regen.js.map +1 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +9 -2
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +23 -13
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
- package/lib/chain/validatorMonitor.d.ts +5 -1
- package/lib/chain/validatorMonitor.d.ts.map +1 -1
- package/lib/chain/validatorMonitor.js +64 -54
- package/lib/chain/validatorMonitor.js.map +1 -1
- package/lib/execution/engine/disabled.d.ts +0 -2
- package/lib/execution/engine/disabled.d.ts.map +1 -1
- package/lib/execution/engine/disabled.js +0 -6
- package/lib/execution/engine/disabled.js.map +1 -1
- package/lib/execution/engine/http.d.ts +1 -3
- package/lib/execution/engine/http.d.ts.map +1 -1
- package/lib/execution/engine/http.js +2 -17
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +2 -4
- package/lib/execution/engine/interface.d.ts.map +1 -1
- package/lib/execution/engine/mock.d.ts +0 -2
- package/lib/execution/engine/mock.d.ts.map +1 -1
- package/lib/execution/engine/mock.js +0 -8
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/types.d.ts +0 -8
- package/lib/execution/engine/types.d.ts.map +1 -1
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/metrics/metrics.d.ts +7 -3
- package/lib/metrics/metrics.d.ts.map +1 -1
- package/lib/metrics/metrics.js +4 -4
- package/lib/metrics/metrics.js.map +1 -1
- package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
- package/lib/network/processor/gossipHandlers.js +3 -0
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/gossipValidatorFn.d.ts +7 -3
- package/lib/network/processor/gossipValidatorFn.d.ts.map +1 -1
- package/lib/network/processor/gossipValidatorFn.js +7 -3
- package/lib/network/processor/gossipValidatorFn.js.map +1 -1
- package/lib/network/processor/index.d.ts +9 -0
- package/lib/network/processor/index.d.ts.map +1 -1
- package/lib/network/processor/index.js +77 -10
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js +1 -1
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js.map +1 -1
- package/lib/node/nodejs.d.ts.map +1 -1
- package/lib/node/nodejs.js +25 -3
- package/lib/node/nodejs.js.map +1 -1
- package/lib/sync/range/batch.d.ts +6 -0
- package/lib/sync/range/batch.d.ts.map +1 -1
- package/lib/sync/range/batch.js +10 -0
- package/lib/sync/range/batch.js.map +1 -1
- package/lib/sync/range/chain.d.ts.map +1 -1
- package/lib/sync/range/chain.js +5 -1
- package/lib/sync/range/chain.js.map +1 -1
- package/lib/sync/range/range.d.ts.map +1 -1
- package/lib/sync/range/range.js +50 -18
- package/lib/sync/range/range.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts.map +1 -1
- package/lib/sync/unknownBlock.js +5 -4
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/util/execution.d.ts +9 -11
- package/lib/util/execution.d.ts.map +1 -1
- package/lib/util/execution.js +5 -1
- package/lib/util/execution.js.map +1 -1
- package/package.json +16 -16
- package/src/api/impl/beacon/blocks/index.ts +7 -4
- package/src/api/impl/beacon/index.ts +15 -0
- package/src/api/impl/validator/index.ts +16 -2
- package/src/chain/archiveStore/archiveStore.ts +1 -1
- package/src/chain/archiveStore/historicalState/getHistoricalState.ts +5 -7
- package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +1 -1
- package/src/chain/archiveStore/historicalState/types.ts +2 -2
- package/src/chain/archiveStore/historicalState/worker.ts +1 -2
- package/src/chain/archiveStore/interface.ts +1 -1
- package/src/chain/blocks/payloadEnvelopeInput/types.ts +2 -1
- package/src/chain/blocks/verifyBlock.ts +1 -0
- package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +6 -3
- package/src/chain/chain.ts +47 -16
- package/src/chain/emitter.ts +7 -1
- package/src/chain/errors/envelopeReconstructionError.ts +3 -0
- package/src/chain/errors/gossipValidation.ts +2 -0
- package/src/chain/forkChoice/index.ts +2 -0
- package/src/chain/interface.ts +2 -2
- package/src/chain/opPools/proposerPreferencesPool.ts +14 -10
- package/src/chain/options.ts +2 -2
- package/src/chain/prepareNextSlot.ts +6 -3
- package/src/chain/produceBlock/computeNewStateRoot.ts +1 -1
- package/src/chain/produceBlock/produceBlockBody.ts +8 -1
- package/src/chain/regen/regen.ts +12 -4
- package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +31 -13
- package/src/chain/validatorMonitor.ts +75 -57
- package/src/execution/engine/disabled.ts +0 -8
- package/src/execution/engine/http.ts +1 -30
- package/src/execution/engine/interface.ts +2 -6
- package/src/execution/engine/mock.ts +1 -19
- package/src/execution/engine/types.ts +0 -10
- package/src/metrics/metrics.ts +21 -6
- package/src/network/processor/gossipHandlers.ts +3 -0
- package/src/network/processor/gossipValidatorFn.ts +13 -3
- package/src/network/processor/index.ts +89 -10
- package/src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts +1 -1
- package/src/node/nodejs.ts +31 -3
- package/src/sync/range/batch.ts +11 -0
- package/src/sync/range/chain.ts +6 -1
- package/src/sync/range/range.ts +50 -18
- package/src/sync/unknownBlock.ts +5 -4
- package/src/util/execution.ts +16 -8
package/lib/util/execution.js
CHANGED
|
@@ -294,7 +294,11 @@ async function reconstructEnvelopesBatch(executionEngine, metrics, headerEnvelop
|
|
|
294
294
|
// A zero-length block access list cannot be valid, RLP encodes an empty list as 0xc0
|
|
295
295
|
if (body == null || body.withdrawals == null || body.blockAccessList == null || body.blockAccessList.length === 0) {
|
|
296
296
|
metrics?.payloadEnvelopeReconstruction.envelopes.inc({ result: "unavailable" });
|
|
297
|
-
return {
|
|
297
|
+
return {
|
|
298
|
+
slot,
|
|
299
|
+
reason: "unavailable",
|
|
300
|
+
error: new EnvelopeReconstructionError({ code: EnvelopeReconstructionErrorCode.BODY_UNAVAILABLE, slot }, `execution client cannot serve the payload body or block access list for archived envelope slot=${slot}`),
|
|
301
|
+
};
|
|
298
302
|
}
|
|
299
303
|
try {
|
|
300
304
|
const envelope = signedHeaderEnvelopeToFull(headerEnvelope, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/util/execution.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/util/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AAGrC,OAAO,EAAC,yBAAyB,EAAC,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAA2D,wBAAwB,EAAE,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACxH,OAAO,EAAS,OAAO,EAAE,KAAK,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,0CAA0C,CAAC;AAChG,OAAO,EAAC,gBAAgB,EAAc,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAC,oBAAoB,EAAE,0BAA0B,EAAC,MAAM,+CAA+C,CAAC;AAC/G,OAAO,EAAC,UAAU,EAAoB,MAAM,qBAAqB,CAAC;AAClE,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,GAChC,MAAM,gDAAgD,CAAC;AAExD,OAAO,EAAmB,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AAGrF,OAAO,EAAC,0CAA0C,EAAC,MAAM,YAAY,CAAC;AACtE,OAAO,EACL,iBAAiB,EACjB,8BAA8B,EAC9B,sCAAsC,EACtC,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,0BAA0B,EAAC,MAAM,qBAAqB,CAAC;AAE/D,MAAM,CAAN,IAAY,sBAaX;AAbD,WAAY,sBAAsB;IAChC,8CAAoB,CAAA;IACpB,gEAAgE;IAChE,iEAAuC,CAAA;IACvC,0CAA0C;IAC1C,wEAA8C,CAAA;IAC9C,6DAA6D;IAC7D,wDAA8B,CAAA;IAC9B,6DAA6D;IAC7D,8DAAoC,CAAA;IACpC,0GAA0G;IAC1G,sDAA4B,CAAA;IAC5B,2CAAiB,CAAA;AACnB,CAAC,EAbW,sBAAsB,KAAtB,sBAAsB,QAajC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,MAAuB,EACvB,eAAiC,EACjC,OAAuB,EACvB,OAA0B,EAC1B,UAAuB;IAEvB,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,OAAO;IACT,CAAC;IAED,IAAI,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAuB,CAAC;IACpD,MAAM,QAAQ,GAAG,UAAU,CAAC,kBAAkB,EAAE,CAAC;IAEjD,OAAO,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;IACxC,OAAO,EAAE,KAAK,CAAC,4BAA4B,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,eAAe,GAAG,MAAM,eAAe;SAC1C,QAAQ,CACP,QAAQ,EACR,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAC,aAAa,EAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CACjD;SACA,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;QACZ,kGAAkG;QAClG,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEL,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;IAEpC,MAAM,YAAY,GAAuB,EAAE,CAAC;IAC5C,2FAA2F;IAC3F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAExC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;YAEnC,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1C,6DAA6D;gBAC7D,OAAO,EAAE,KAAK,CAAC,mCAAmC,CAAC,GAAG,EAAE,CAAC;gBACzD,SAAS;YACX,CAAC;YAED,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC;YACzC,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,YAAY,CAAC;YACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAChC,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACnE,MAAM,WAAW,GAAsB;gBACrC,KAAK;gBACL,IAAI;gBACJ,QAAQ,EAAE,KAAK;gBACf,aAAa;gBACb,iGAAiG;gBACjG,2BAA2B,EAAE,0CAA0C,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;gBAC5G,iBAAiB,EAAE,yBAAyB,CAAC,MAAM,EAAE,KAAK,CAAC;aAC5D,CAAC;YAEF,UAAU,CAAC,OAAO,CAAC;gBACjB,WAAW;gBACX,YAAY,EAAE,UAAU,CAAC,YAAY;gBACrC,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;gBACnC,MAAM,EAAE,gBAAgB,CAAC,MAAM;aAChC,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE;oBAChD,SAAS,EAAE,UAAU,CAAC,YAAY;oBAClC,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,KAAK;oBACL,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC;oBACnC,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;iBAChD,CAAC,CAAC;YACL,CAAC;YAED,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;IAC3D,OAAO,EAAE,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,MAAuB,EACvB,eAAiC,EACjC,OAA0B,EAC1B,KAAyC,EACzC,OAAuB,EACvB,mBAAkC;IAElC,MAAM,cAAc,GAAG,KAAK,YAAY,oBAAoB,CAAC;IAE7D,8CAA8C;IAC9C,IAAI,CAAC,cAAc,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO,sBAAsB,CAAC,OAAO,CAAC;IACxC,CAAC;IAED,oCAAoC;IACpC,IAAI,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;QACvB,OAAO,sBAAsB,CAAC,gBAAgB,CAAC;IACjD,CAAC;IAED,MAAM,eAAe,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAEnD,4CAA4C;IAC5C,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,sBAAsB,CAAC,mBAAmB,CAAC;IACpD,CAAC;IAED,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,yBAAyB,CAAC,UAAU,EAAE,CAAC;IACtE,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAwB,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;IACnH,KAAK,EAAE,EAAE,CAAC;IAEV,wDAAwD;IACxD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,sBAAsB,CAAC,YAAY,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC;IAE3C,oEAAoE;IACpE,IAAI,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;QACvB,OAAO,sBAAsB,CAAC,WAAW,CAAC;IAC5C,CAAC;IAED,IAAI,kBAAuC,CAAC;IAC5C,MAAM,SAAS,GAAG,OAAO,EAAE,OAAO,CAAC,gCAAgC,CAAC,UAAU,EAAE,CAAC;IACjF,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,cAAc,EAAE,CAAC;YACnB,kBAAkB,GAAG,0BAA0B,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,CAAC;QAC3G,CAAC;aAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC5B,kBAAkB,GAAG,8BAA8B,CACjD,MAAM,EACN,KAAK,CAAC,QAAQ,EAAqC,EACnD,cAAc,CACf,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,kBAAkB,GAAG,sCAAsC,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;YAAS,CAAC;QACT,SAAS,EAAE,EAAE,CAAC;IAChB,CAAC;IAED,oDAAoD;IACpD,MAAM,wBAAwB,GAAG,KAAK,CAAC,2BAA2B,EAAE,CAAC,OAAO,CAAC;IAC7E,MAAM,cAAc,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC;IAEtG,8HAA8H;IAC9H,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;IAC5D,yEAAyE;IAEzE,sEAAsE;IACtE,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAC3C,IAAI,wBAAwB,GAAG,CAAC,CAAC;IACjC,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,4CAA4C;YAC5C,wBAAwB,EAAE,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CAAC,8CAA8C,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;YACtF,CAAC;YACD,KAAK,CAAC,SAAS,CAAC;gBACd,aAAa;gBACb,MAAM,EAAE,0BAA0B,CAAC,MAAM;gBACzC,gBAAgB;aACjB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,wBAAwB,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CAAC,6CAA6C,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;YACrF,CAAC;YACD,KAAK,CAAC,SAAS,CAAC;gBACd,aAAa;gBACb,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,MAAM,EAAE,gBAAgB,CAAC,MAAM;gBAC/B,gBAAgB;aACjB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE;gBACtD,SAAS,EAAE,KAAK,CAAC,YAAY;gBAC7B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,cAAc,EAAE,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;aAC/G,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAEhE,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,CAC/B,EAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAAC,EACjC,wBAAwB,CAAC,MAAM,GAAG,wBAAwB,CAC3D,CAAC;IACF,OAAO,sBAAsB,CAAC,eAAe,CAAC;AAChD,CAAC;AAED,0HAA0H;AAC1H,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAgBzC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,2CAA2C,CAChE,EAAa,EACb,eAAiC,EACjC,MAAc,EACd,OAAuB,EACvB,SAAe,EACf,OAAa;IAEb,MAAM,OAAO,GAAG,EAAE,CAAC,+BAA+B,CAAC;IACnD,IAAI,KAAK,GAAiB,EAAE,CAAC;IAE7B,IAAI,KAAK,EAAE,MAAM,EAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAC,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAC,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAC,CAAC,EAAE,CAAC;QACnG,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC;QAC7E,IAAI,KAAK,CAAC,MAAM,KAAK,sBAAsB,EAAE,CAAC;YAC5C,KAAK,CAAC,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YACjE,KAAK,GAAG,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,SAAS,CAAC,CAAC,gBAAgB,CAC9B,eAAiC,EACjC,MAAc,EACd,OAAuB,EACvB,KAAmB;IAEnB,MAAM,eAAe,GAAiD,EAAE,CAAC;IACzE,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS;YAAE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,eAAe,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IAE3F,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,EAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAC,CAAC;YAC7D,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACrC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,6FAA6F;YAC7F,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,MAAM,CAAC,KAAK,CAAC,4DAA4D,EAAE,EAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/G,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,4DAA4D,EAAE,EAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAC,CAAC,CAAC;YACjG,CAAC;YACD,MAAM,IAAI,2BAA2B,CACnC,EAAC,IAAI,EAAE,+BAA+B,CAAC,gBAAgB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAC,EAC1E,gDAAgD,KAAK,CAAC,IAAI,EAAE,CAC7D,CAAC;QACJ,CAAC;QACD,MAAM,EAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,SAAS,CAAC,MAAM,CAAC,EAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oCAAoC,CACxD,eAAiC,EACjC,OAAuB,EACvB,eAA6D;IAE7D,MAAM,GAAG,GAA2D,EAAE,CAAC;IACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,IAAI,sBAAsB,EAAE,CAAC;QACxE,GAAG,CAAC,IAAI,CACN,GAAG,CAAC,MAAM,yBAAyB,CACjC,eAAe,EACf,OAAO,EACP,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,sBAAsB,CAAC,CACrD,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAA0D;IACtF,OAAO,QAAQ,IAAI,MAAM,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,yBAAyB,CACtC,eAAiC,EACjC,OAAuB,EACvB,eAA6D;IAE7D,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;IAElH,IAAI,MAAyE,CAAC;IAC9E,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,eAAe,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,6BAA6B,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QAC1D,MAAM,IAAI,2BAA2B,CACnC,EAAC,IAAI,EAAE,+BAA+B,CAAC,kBAAkB,EAAC,EAC1D,2CAA4C,CAAW,CAAC,OAAO,EAAE,CAClE,CAAC;IACJ,CAAC;IAED,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE;QAC/C,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC;QAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,qFAAqF;QACrF,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClH,OAAO,EAAE,6BAA6B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,aAAa,EAAC,CAAC,CAAC;YAC9E,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE,aAAa;gBACrB,KAAK,EAAE,IAAI,2BAA2B,CACpC,EAAC,IAAI,EAAE,+BAA+B,CAAC,gBAAgB,EAAE,IAAI,EAAC,EAC9D,kGAAkG,IAAI,EAAE,CACzG;aACF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,0BAA0B,CAAC,cAAc,EAAE;gBAC1D,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;aACtC,CAAC,CAAC;YACH,OAAO,EAAE,6BAA6B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAAC;YAC1E,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IACE,CAAC,YAAY,2BAA2B;gBACxC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,+BAA+B,CAAC,kBAAkB,EAClE,CAAC;gBACD,OAAO,EAAE,6BAA6B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,UAAU,EAAC,CAAC,CAAC;gBAC3E,OAAO,EAAE,6BAA6B,CAAC,eAAe,CAAC,GAAG,CAAC,EAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAC,CAAC,CAAC;gBAClF,OAAO,EAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC;YAC9C,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"bugs": {
|
|
12
12
|
"url": "https://github.com/ChainSafe/lodestar/issues"
|
|
13
13
|
},
|
|
14
|
-
"version": "1.50.0-dev.
|
|
14
|
+
"version": "1.50.0-dev.fc618d94e9",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
"@chainsafe/discv5": "^12.0.2",
|
|
105
105
|
"@chainsafe/enr": "^6.0.2",
|
|
106
106
|
"@chainsafe/libp2p-noise": "^17.0.0",
|
|
107
|
-
"@chainsafe/libp2p-quic": "^2.1.
|
|
107
|
+
"@chainsafe/libp2p-quic": "^2.1.5",
|
|
108
108
|
"@chainsafe/lodestar-z": "catalog:",
|
|
109
109
|
"@chainsafe/persistent-merkle-tree": "^1.3.1",
|
|
110
110
|
"@chainsafe/prometheus-gc-stats": "^1.0.0",
|
|
@@ -127,17 +127,17 @@
|
|
|
127
127
|
"@libp2p/prometheus-metrics": "^5.0.28",
|
|
128
128
|
"@libp2p/tcp": "^11.0.27",
|
|
129
129
|
"@libp2p/utils": "^7.4.0",
|
|
130
|
-
"@lodestar/api": "^1.50.0-dev.
|
|
131
|
-
"@lodestar/config": "^1.50.0-dev.
|
|
132
|
-
"@lodestar/db": "^1.50.0-dev.
|
|
133
|
-
"@lodestar/fork-choice": "^1.50.0-dev.
|
|
134
|
-
"@lodestar/logger": "^1.50.0-dev.
|
|
135
|
-
"@lodestar/params": "^1.50.0-dev.
|
|
136
|
-
"@lodestar/reqresp": "^1.50.0-dev.
|
|
137
|
-
"@lodestar/state-transition": "^1.50.0-dev.
|
|
138
|
-
"@lodestar/types": "^1.50.0-dev.
|
|
139
|
-
"@lodestar/utils": "^1.50.0-dev.
|
|
140
|
-
"@lodestar/validator": "^1.50.0-dev.
|
|
130
|
+
"@lodestar/api": "^1.50.0-dev.fc618d94e9",
|
|
131
|
+
"@lodestar/config": "^1.50.0-dev.fc618d94e9",
|
|
132
|
+
"@lodestar/db": "^1.50.0-dev.fc618d94e9",
|
|
133
|
+
"@lodestar/fork-choice": "^1.50.0-dev.fc618d94e9",
|
|
134
|
+
"@lodestar/logger": "^1.50.0-dev.fc618d94e9",
|
|
135
|
+
"@lodestar/params": "^1.50.0-dev.fc618d94e9",
|
|
136
|
+
"@lodestar/reqresp": "^1.50.0-dev.fc618d94e9",
|
|
137
|
+
"@lodestar/state-transition": "^1.50.0-dev.fc618d94e9",
|
|
138
|
+
"@lodestar/types": "^1.50.0-dev.fc618d94e9",
|
|
139
|
+
"@lodestar/utils": "^1.50.0-dev.fc618d94e9",
|
|
140
|
+
"@lodestar/validator": "^1.50.0-dev.fc618d94e9",
|
|
141
141
|
"@multiformats/multiaddr": "^13.0.1",
|
|
142
142
|
"datastore-core": "^12.0.1",
|
|
143
143
|
"datastore-level": "^13.0.1",
|
|
@@ -158,8 +158,8 @@
|
|
|
158
158
|
"devDependencies": {
|
|
159
159
|
"@libp2p/interface-internal": "^3.1.12",
|
|
160
160
|
"@libp2p/logger": "^6.2.13",
|
|
161
|
-
"@lodestar/spec-test-util": "^1.50.0-dev.
|
|
162
|
-
"@lodestar/test-utils": "^1.50.0-dev.
|
|
161
|
+
"@lodestar/spec-test-util": "^1.50.0-dev.fc618d94e9",
|
|
162
|
+
"@lodestar/test-utils": "^1.50.0-dev.fc618d94e9",
|
|
163
163
|
"@types/js-yaml": "^4.0.5",
|
|
164
164
|
"@types/qs": "^6.9.7",
|
|
165
165
|
"@types/tmp": "^0.2.3",
|
|
@@ -174,5 +174,5 @@
|
|
|
174
174
|
"beacon",
|
|
175
175
|
"blockchain"
|
|
176
176
|
],
|
|
177
|
-
"gitHead": "
|
|
177
|
+
"gitHead": "3dcc2888e0f0749b337f77efd442b1e603ad4e62"
|
|
178
178
|
}
|
|
@@ -1118,10 +1118,13 @@ export function getBeaconBlockApi({
|
|
|
1118
1118
|
: await chain.getExecutionPayloadEnvelope(slot, blockRootHex);
|
|
1119
1119
|
} catch (e) {
|
|
1120
1120
|
if (e instanceof EnvelopeReconstructionError) {
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1121
|
+
// The envelope is archived but our EL cannot serve it right now (EL down, or it does not
|
|
1122
|
+
// have the body / block access list): 503 so clients retry or ask another node, rather than
|
|
1123
|
+
// 500 for what is not a beacon node fault. A body root mismatch is a local inconsistency.
|
|
1124
|
+
const unavailable =
|
|
1125
|
+
e.type.code === EnvelopeReconstructionErrorCode.ENGINE_UNAVAILABLE ||
|
|
1126
|
+
e.type.code === EnvelopeReconstructionErrorCode.BODY_UNAVAILABLE;
|
|
1127
|
+
throw new ApiError(unavailable ? 503 : 500, `Failed to reconstruct execution payload envelope: ${e.message}`);
|
|
1125
1128
|
}
|
|
1126
1129
|
throw e;
|
|
1127
1130
|
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import {routes} from "@lodestar/api";
|
|
2
2
|
import {ApplicationMethods} from "@lodestar/api/server";
|
|
3
|
+
import {isForkPostGloas} from "@lodestar/params";
|
|
4
|
+
import {computeStartSlotAtEpoch} from "@lodestar/state-transition";
|
|
5
|
+
import {toRootHex} from "@lodestar/utils";
|
|
6
|
+
import {ApiError} from "../errors.js";
|
|
3
7
|
import {ApiModules} from "../types.js";
|
|
4
8
|
import {getBeaconBlockApi} from "./blocks/index.js";
|
|
5
9
|
import {getBeaconPoolApi} from "./pool/index.js";
|
|
@@ -31,5 +35,16 @@ export function getBeaconApi(
|
|
|
31
35
|
},
|
|
32
36
|
};
|
|
33
37
|
},
|
|
38
|
+
|
|
39
|
+
async getProposerPreferences({slot, dependentRoot}) {
|
|
40
|
+
// Preferences are broadcast up to one epoch ahead of their proposal slot, the first ones before Gloas is active
|
|
41
|
+
const fork = config.getForkName(slot ?? computeStartSlotAtEpoch(chain.clock.currentEpoch + 1));
|
|
42
|
+
if (!isForkPostGloas(fork)) {
|
|
43
|
+
throw new ApiError(400, `Proposer preferences are not supported before Gloas fork=${fork}`);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const preferences = chain.proposerPreferencesPool.getAll(slot, dependentRoot && toRootHex(dependentRoot));
|
|
47
|
+
return {data: preferences, meta: {version: fork}};
|
|
48
|
+
},
|
|
34
49
|
};
|
|
35
50
|
}
|
|
@@ -189,6 +189,7 @@ export enum EngineBlockSelectionReason {
|
|
|
189
189
|
BuilderTimeout = "builder_timeout",
|
|
190
190
|
BuilderPending = "builder_pending",
|
|
191
191
|
BuilderNoBid = "builder_no_bid",
|
|
192
|
+
BuilderCircuitBreaker = "builder_circuit_breaker",
|
|
192
193
|
BuilderCensorship = "builder_censorship",
|
|
193
194
|
BlockValue = "block_value",
|
|
194
195
|
EnginePreferred = "engine_preferred",
|
|
@@ -1160,8 +1161,21 @@ export function getValidatorApi(
|
|
|
1160
1161
|
: {}),
|
|
1161
1162
|
};
|
|
1162
1163
|
|
|
1163
|
-
|
|
1164
|
-
|
|
1164
|
+
if (circuitBreakerActive && engineResult.status === "fulfilled") {
|
|
1165
|
+
source = ProducedBlockSource.engine;
|
|
1166
|
+
bestResult = engineResult;
|
|
1167
|
+
metrics?.blockProductionSelectionResults.inc({
|
|
1168
|
+
source: ProducedBlockSource.engine,
|
|
1169
|
+
reason: EngineBlockSelectionReason.BuilderCircuitBreaker,
|
|
1170
|
+
});
|
|
1171
|
+
logger.info("Selected local block: builder circuit breaker is active", {
|
|
1172
|
+
reason: EngineBlockSelectionReason.BuilderCircuitBreaker,
|
|
1173
|
+
...logCtx,
|
|
1174
|
+
durationMs: engineResult.durationMs,
|
|
1175
|
+
...getBlockValueLogInfo(engineResult.value),
|
|
1176
|
+
});
|
|
1177
|
+
} else if (
|
|
1178
|
+
// handle shouldOverrideBuilder separately
|
|
1165
1179
|
engineResult.status === "fulfilled" &&
|
|
1166
1180
|
engineResult.value.shouldOverrideBuilder &&
|
|
1167
1181
|
(builderBidExpected || bidBlockResult.status === "fulfilled")
|
|
@@ -148,7 +148,7 @@ export class ArchiveStore {
|
|
|
148
148
|
genesisTime: this.chain.clock.genesisTime,
|
|
149
149
|
dbLocation: this.opts.dbName,
|
|
150
150
|
dataColumnDir: this.opts.dataColumnDir,
|
|
151
|
-
|
|
151
|
+
nativeStateTransition: this.opts.nativeStateTransition ?? false,
|
|
152
152
|
},
|
|
153
153
|
config: this.chain.config,
|
|
154
154
|
metrics: this.metrics,
|
|
@@ -17,7 +17,7 @@ export async function getNearestState(
|
|
|
17
17
|
slot: number,
|
|
18
18
|
config: BeaconConfig,
|
|
19
19
|
db: IBeaconDb,
|
|
20
|
-
|
|
20
|
+
nativeStateTransition: boolean
|
|
21
21
|
): Promise<IBeaconStateView> {
|
|
22
22
|
const stateBytesArr = await db.stateArchive.binaries({limit: 1, lte: slot, reverse: true});
|
|
23
23
|
if (!stateBytesArr.length) {
|
|
@@ -25,9 +25,7 @@ export async function getNearestState(
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
const stateBytes = stateBytesArr[0];
|
|
28
|
-
return
|
|
29
|
-
? createBeaconStateViewForHistoricalRegen({useNative: true, stateBytes})
|
|
30
|
-
: createBeaconStateViewForHistoricalRegen({useNative: false, config, stateBytes});
|
|
28
|
+
return createBeaconStateViewForHistoricalRegen({nativeStateTransition: nativeStateTransition, config, stateBytes});
|
|
31
29
|
}
|
|
32
30
|
|
|
33
31
|
/**
|
|
@@ -37,13 +35,13 @@ export async function getHistoricalState(
|
|
|
37
35
|
slot: number,
|
|
38
36
|
config: BeaconConfig,
|
|
39
37
|
db: IBeaconDb,
|
|
40
|
-
|
|
38
|
+
nativeStateTransition: boolean,
|
|
41
39
|
metrics?: HistoricalStateRegenMetrics
|
|
42
40
|
): Promise<Uint8Array> {
|
|
43
41
|
const regenTimer = metrics?.regenTime.startTimer();
|
|
44
42
|
|
|
45
43
|
const loadStateTimer = metrics?.loadStateTime.startTimer();
|
|
46
|
-
let state = await getNearestState(slot, config, db,
|
|
44
|
+
let state = await getNearestState(slot, config, db, nativeStateTransition).catch((e) => {
|
|
47
45
|
metrics?.regenErrorCount.inc({reason: RegenErrorType.loadState});
|
|
48
46
|
throw e;
|
|
49
47
|
});
|
|
@@ -54,7 +52,7 @@ export async function getHistoricalState(
|
|
|
54
52
|
for await (const block of db.blockArchive.valuesStream({gt: state.slot, lte: slot})) {
|
|
55
53
|
try {
|
|
56
54
|
state = state.stateTransition(
|
|
57
|
-
block,
|
|
55
|
+
{block},
|
|
58
56
|
{
|
|
59
57
|
verifyProposer: false,
|
|
60
58
|
verifySignatures: false,
|
|
@@ -36,7 +36,7 @@ export class HistoricalStateRegen implements HistoricalStateWorkerApi {
|
|
|
36
36
|
dataColumnDir: modules.opts.dataColumnDir,
|
|
37
37
|
metricsEnabled: Boolean(modules.metrics),
|
|
38
38
|
loggerOpts: modules.logger.toOpts(),
|
|
39
|
-
|
|
39
|
+
nativeStateTransition: modules.opts.nativeStateTransition,
|
|
40
40
|
};
|
|
41
41
|
|
|
42
42
|
const worker = new Worker(path.join(WORKER_DIR, "worker.js"), {
|
|
@@ -8,7 +8,7 @@ export type HistoricalStateRegenInitModules = {
|
|
|
8
8
|
genesisTime: number;
|
|
9
9
|
dbLocation: string;
|
|
10
10
|
dataColumnDir: string;
|
|
11
|
-
|
|
11
|
+
nativeStateTransition: boolean;
|
|
12
12
|
};
|
|
13
13
|
config: BeaconConfig;
|
|
14
14
|
logger: LoggerNode;
|
|
@@ -29,7 +29,7 @@ export type HistoricalStateWorkerData = {
|
|
|
29
29
|
dataColumnDir: string;
|
|
30
30
|
metricsEnabled: boolean;
|
|
31
31
|
loggerOpts: LoggerNodeOpts;
|
|
32
|
-
|
|
32
|
+
nativeStateTransition: boolean;
|
|
33
33
|
};
|
|
34
34
|
|
|
35
35
|
export type HistoricalStateWorkerApi = {
|
|
@@ -36,7 +36,6 @@ const abortController = new AbortController();
|
|
|
36
36
|
const metricsRegister = workerData.metricsEnabled ? new RegistryMetricCreator() : null;
|
|
37
37
|
let historicalStateRegenMetrics: HistoricalStateRegenMetrics | undefined;
|
|
38
38
|
let queueMetrics: QueueMetrics | undefined;
|
|
39
|
-
|
|
40
39
|
if (metricsRegister) {
|
|
41
40
|
const closeMetrics = collectNodeJSMetrics(metricsRegister, "lodestar_historical_state_worker_");
|
|
42
41
|
abortController.signal.addEventListener("abort", closeMetrics, {once: true});
|
|
@@ -65,7 +64,7 @@ const api: HistoricalStateWorkerApi = {
|
|
|
65
64
|
historicalStateRegenMetrics?.regenRequestCount.inc();
|
|
66
65
|
|
|
67
66
|
const stateBytes = await queue.push<Uint8Array>(() =>
|
|
68
|
-
getHistoricalState(slot, config, db, workerData.
|
|
67
|
+
getHistoricalState(slot, config, db, workerData.nativeStateTransition, historicalStateRegenMetrics)
|
|
69
68
|
);
|
|
70
69
|
const result = Transfer(stateBytes, [stateBytes.buffer]) as unknown as Uint8Array;
|
|
71
70
|
|
|
@@ -22,8 +22,9 @@ export enum PayloadEnvelopeInputSource {
|
|
|
22
22
|
* - finalized: below the finalized slot
|
|
23
23
|
* - prune: explicit prune by root
|
|
24
24
|
* - cap: insertion-order backstop cap (MAX_PAYLOAD_ENVELOPE_INPUT_CACHE_SIZE)
|
|
25
|
+
* - invalid: the cached envelope failed import with a definitive invalid verdict
|
|
25
26
|
*/
|
|
26
|
-
export type PayloadEnvelopeInputPruneReason = "belowParent" | "finalized" | "remove" | "cap";
|
|
27
|
+
export type PayloadEnvelopeInputPruneReason = "belowParent" | "finalized" | "remove" | "cap" | "invalid";
|
|
27
28
|
|
|
28
29
|
export type SourceMeta = {
|
|
29
30
|
source: PayloadEnvelopeInputSource;
|
|
@@ -188,6 +188,7 @@ export async function verifyBlocksInEpoch(
|
|
|
188
188
|
blockInputs,
|
|
189
189
|
// hack availability for state transition eval as availability is separately determined
|
|
190
190
|
blocks.map(() => DataAvailabilityStatus.Available),
|
|
191
|
+
this.serializedCache,
|
|
191
192
|
this.logger,
|
|
192
193
|
this.metrics,
|
|
193
194
|
this.validatorMonitor,
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
import {ErrorAborted, Logger, byteArrayEquals} from "@lodestar/utils";
|
|
8
8
|
import {Metrics} from "../../metrics/index.js";
|
|
9
9
|
import {nextEventLoop} from "../../util/eventLoop.js";
|
|
10
|
+
import {SerializedCache} from "../../util/serializedCache.js";
|
|
10
11
|
import {BlockError, BlockErrorCode} from "../errors/index.js";
|
|
11
12
|
import {BlockProcessOpts} from "../options.js";
|
|
12
13
|
import {ValidatorMonitor} from "../validatorMonitor.js";
|
|
@@ -25,6 +26,7 @@ export async function verifyBlocksStateTransitionOnly(
|
|
|
25
26
|
preState0: IBeaconStateView,
|
|
26
27
|
blocks: IBlockInput[],
|
|
27
28
|
dataAvailabilityStatuses: DataAvailabilityStatus[],
|
|
29
|
+
serializedCache: SerializedCache,
|
|
28
30
|
logger: Logger,
|
|
29
31
|
metrics: Metrics | null,
|
|
30
32
|
validatorMonitor: ValidatorMonitor | null,
|
|
@@ -37,7 +39,8 @@ export async function verifyBlocksStateTransitionOnly(
|
|
|
37
39
|
|
|
38
40
|
for (let i = 0; i < blocks.length; i++) {
|
|
39
41
|
const {validProposerSignature, validSignatures} = opts;
|
|
40
|
-
const
|
|
42
|
+
const blockInput = blocks[i];
|
|
43
|
+
const block = blockInput.getBlock();
|
|
41
44
|
const preState = i === 0 ? preState0 : postStates[i - 1];
|
|
42
45
|
const dataAvailabilityStatus = dataAvailabilityStatuses[i];
|
|
43
46
|
|
|
@@ -47,7 +50,7 @@ export async function verifyBlocksStateTransitionOnly(
|
|
|
47
50
|
let postState: IBeaconStateView;
|
|
48
51
|
try {
|
|
49
52
|
postState = preState.stateTransition(
|
|
50
|
-
block,
|
|
53
|
+
{block, ssz: serializedCache.get(block)},
|
|
51
54
|
{
|
|
52
55
|
// NOTE: Assume valid for now while sending payload to execution engine in parallel
|
|
53
56
|
// Latter verifyBlocksInEpoch() will make sure that payload is indeed valid
|
|
@@ -60,7 +63,7 @@ export async function verifyBlocksStateTransitionOnly(
|
|
|
60
63
|
verifySignatures: !useBlsBatchVerify && !validSignatures,
|
|
61
64
|
dontTransferCache: false,
|
|
62
65
|
},
|
|
63
|
-
{metrics, validatorMonitor}
|
|
66
|
+
{metrics: metrics?.stateTransition, validatorMonitor}
|
|
64
67
|
);
|
|
65
68
|
} catch (e) {
|
|
66
69
|
throw new BlockError(block, {
|
package/src/chain/chain.ts
CHANGED
|
@@ -71,7 +71,7 @@ import {BufferPool} from "../util/bufferPool.js";
|
|
|
71
71
|
import {Clock, ClockEvent, IClock} from "../util/clock.js";
|
|
72
72
|
import {CustodyConfig, getValidatorsCustodyRequirement} from "../util/dataColumns.js";
|
|
73
73
|
import {callInNextEventLoop} from "../util/eventLoop.js";
|
|
74
|
-
import {
|
|
74
|
+
import {ReconstructMissPolicy, isRebuildMiss, reconstructExecutionPayloadEnvelopes} from "../util/execution.js";
|
|
75
75
|
import {ensureDir, writeIfNotExist} from "../util/file.js";
|
|
76
76
|
import {isOptimisticBlock} from "../util/forkChoice.js";
|
|
77
77
|
import {JobItemQueue} from "../util/queue/itemQueue.js";
|
|
@@ -244,6 +244,7 @@ export class BeaconChain implements IBeaconChain {
|
|
|
244
244
|
protected readonly blockProcessor: BlockProcessor;
|
|
245
245
|
protected readonly payloadEnvelopeProcessor: PayloadEnvelopeProcessor;
|
|
246
246
|
protected readonly db: IBeaconDb;
|
|
247
|
+
private genesisStateRoot?: RootHex | null;
|
|
247
248
|
// this is only available if nHistoricalStates is enabled
|
|
248
249
|
private readonly cpStateDatastore?: CPStateDatastore;
|
|
249
250
|
private abortController = new AbortController();
|
|
@@ -432,6 +433,7 @@ export class BeaconChain implements IBeaconChain {
|
|
|
432
433
|
blockStateCache,
|
|
433
434
|
checkpointStateCache,
|
|
434
435
|
seenBlockInputCache: this.seenBlockInputCache,
|
|
436
|
+
serializedCache: this.serializedCache,
|
|
435
437
|
db,
|
|
436
438
|
metrics,
|
|
437
439
|
validatorMonitor,
|
|
@@ -702,6 +704,37 @@ export class BeaconChain implements IBeaconChain {
|
|
|
702
704
|
stateRoot: RootHex,
|
|
703
705
|
opts?: StateGetOpts
|
|
704
706
|
): Promise<{state: IBeaconStateView | Uint8Array; executionOptimistic: boolean; finalized: boolean} | null> {
|
|
707
|
+
const finalizedBlock = this.forkChoice.getFinalizedBlock();
|
|
708
|
+
const finalizedCheckpoint = this.forkChoice.getFinalizedCheckpoint();
|
|
709
|
+
// Checkpoint state only equals the block post-state if the block is at the epoch start slot
|
|
710
|
+
if (
|
|
711
|
+
finalizedBlock.stateRoot === stateRoot &&
|
|
712
|
+
finalizedBlock.slot === computeStartSlotAtEpoch(finalizedCheckpoint.epoch)
|
|
713
|
+
) {
|
|
714
|
+
const state = this.regen.getCheckpointStateSync({
|
|
715
|
+
epoch: finalizedCheckpoint.epoch,
|
|
716
|
+
rootHex: finalizedCheckpoint.rootHex,
|
|
717
|
+
});
|
|
718
|
+
if (state) {
|
|
719
|
+
return {
|
|
720
|
+
state,
|
|
721
|
+
executionOptimistic: isOptimisticBlock(finalizedBlock),
|
|
722
|
+
finalized: finalizedCheckpoint.epoch !== GENESIS_EPOCH,
|
|
723
|
+
};
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
if (this.genesisStateRoot === undefined) {
|
|
728
|
+
const genesisBlock = await this.db.blockArchive.get(GENESIS_SLOT);
|
|
729
|
+
this.genesisStateRoot = genesisBlock ? toRootHex(genesisBlock.message.stateRoot) : null;
|
|
730
|
+
}
|
|
731
|
+
if (this.genesisStateRoot === stateRoot) {
|
|
732
|
+
const state = await this.db.stateArchive.getBinary(GENESIS_SLOT);
|
|
733
|
+
if (state) {
|
|
734
|
+
return {state, executionOptimistic: false, finalized: finalizedCheckpoint.epoch !== GENESIS_EPOCH};
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
|
|
705
738
|
if (opts?.allowRegen) {
|
|
706
739
|
const state = await this.regen.getState(stateRoot, RegenCaller.restApi);
|
|
707
740
|
const block = this.forkChoice.getBlockDefaultStatus(
|
|
@@ -934,12 +967,13 @@ export class BeaconChain implements IBeaconChain {
|
|
|
934
967
|
|
|
935
968
|
/**
|
|
936
969
|
* Batch variant: archived header envelopes are rebuilt 32 per EL round-trip. Aligned with `requests`.
|
|
937
|
-
*
|
|
938
|
-
* returns null for that entry, for
|
|
970
|
+
* An archived envelope that cannot be rebuilt (EL-unavailable body or body root mismatch) is not the
|
|
971
|
+
* same as an unknown one: `"throw"` surfaces it, `"omit"` returns null for that entry, for
|
|
972
|
+
* peer-facing paths where the spec allows omission.
|
|
939
973
|
*/
|
|
940
974
|
async getSerializedExecutionPayloadEnvelopes(
|
|
941
975
|
requests: {blockSlot: Slot; blockRootHex: RootHex}[],
|
|
942
|
-
|
|
976
|
+
onMiss: ReconstructMissPolicy = "throw"
|
|
943
977
|
): Promise<(Uint8Array | null)[]> {
|
|
944
978
|
const out: (Uint8Array | null)[] = new Array(requests.length).fill(null);
|
|
945
979
|
const headerEnvelopes: gloas.SignedExecutionPayloadHeaderEnvelope[] = [];
|
|
@@ -978,14 +1012,14 @@ export class BeaconChain implements IBeaconChain {
|
|
|
978
1012
|
for (let j = 0; j < rebuilt.length; j++) {
|
|
979
1013
|
const result = rebuilt[j];
|
|
980
1014
|
if (isRebuildMiss(result)) {
|
|
981
|
-
if (
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
"Archived envelope failed body root check against EL bodies"
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
1015
|
+
if (onMiss === "throw") throw result.error;
|
|
1016
|
+
this.logger.debug(
|
|
1017
|
+
result.reason === "mismatch"
|
|
1018
|
+
? "Archived envelope failed body root check against EL bodies"
|
|
1019
|
+
: "EL cannot serve bodies for archived envelope, omitting",
|
|
1020
|
+
{slot: result.slot},
|
|
1021
|
+
result.error
|
|
1022
|
+
);
|
|
989
1023
|
continue;
|
|
990
1024
|
}
|
|
991
1025
|
out[headerEnvelopeIdxs[j]] = ssz.gloas.SignedExecutionPayloadEnvelope.serialize(result);
|
|
@@ -1016,10 +1050,7 @@ export class BeaconChain implements IBeaconChain {
|
|
|
1016
1050
|
const [result] = await reconstructExecutionPayloadEnvelopes(this.executionEngine, this.metrics, [
|
|
1017
1051
|
archived.headerEnvelope,
|
|
1018
1052
|
]);
|
|
1019
|
-
if (isRebuildMiss(result))
|
|
1020
|
-
if (result.reason === "mismatch") throw result.error;
|
|
1021
|
-
return null;
|
|
1022
|
-
}
|
|
1053
|
+
if (isRebuildMiss(result)) throw result.error;
|
|
1023
1054
|
return result;
|
|
1024
1055
|
}
|
|
1025
1056
|
|
package/src/chain/emitter.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {EventEmitter} from "node:events";
|
|
2
2
|
import {StrictEventEmitter} from "strict-event-emitter-types";
|
|
3
3
|
import {routes} from "@lodestar/api";
|
|
4
|
-
import {CheckpointWithHex} from "@lodestar/fork-choice";
|
|
4
|
+
import {CheckpointWithHex, PtcQuorumEvent} from "@lodestar/fork-choice";
|
|
5
5
|
import {IBeaconStateView} from "@lodestar/state-transition";
|
|
6
6
|
import {DataColumnSidecar, RootHex, Slot, deneb, phase0} from "@lodestar/types";
|
|
7
7
|
import {PeerIdStr} from "../util/peerId.js";
|
|
@@ -36,6 +36,11 @@ export enum ChainEvent {
|
|
|
36
36
|
* This event is guaranteed to be triggered whenever the fork choice finalized checkpoint is updated. This is either in response to a newly processed block or a new clock tick.
|
|
37
37
|
*/
|
|
38
38
|
forkChoiceFinalized = "forkChoice:finalized",
|
|
39
|
+
/**
|
|
40
|
+
* This event signals that the PTC verdict on a block was decided: a majority against payload presence or blob data
|
|
41
|
+
* availability, or a majority for both.
|
|
42
|
+
*/
|
|
43
|
+
forkChoicePtcQuorum = "forkChoice:ptcQuorum",
|
|
39
44
|
/**
|
|
40
45
|
* This event signals that dependent services (e.g. custody sampling) should update to account for the new target group count.
|
|
41
46
|
*/
|
|
@@ -112,6 +117,7 @@ export type IChainEvents = ApiEvents & {
|
|
|
112
117
|
|
|
113
118
|
[ChainEvent.forkChoiceJustified]: (checkpoint: CheckpointWithHex) => void;
|
|
114
119
|
[ChainEvent.forkChoiceFinalized]: (checkpoint: CheckpointWithHex) => void;
|
|
120
|
+
[ChainEvent.forkChoicePtcQuorum]: (data: PtcQuorumEvent) => void;
|
|
115
121
|
|
|
116
122
|
[ChainEvent.updateTargetCustodyGroupCount]: (targetGroupCount: number) => void;
|
|
117
123
|
|
|
@@ -4,6 +4,8 @@ import {LodestarError} from "@lodestar/utils";
|
|
|
4
4
|
export enum EnvelopeReconstructionErrorCode {
|
|
5
5
|
/** The EL failed to answer engine_getPayloadBodiesByHashV2 (transport / EL down). Transient. */
|
|
6
6
|
ENGINE_UNAVAILABLE = "ENVELOPE_RECONSTRUCTION_ERROR_ENGINE_UNAVAILABLE",
|
|
7
|
+
/** The EL does not have the block or its block access list (pruned, or not yet re-indexed after a restart). May recover. */
|
|
8
|
+
BODY_UNAVAILABLE = "ENVELOPE_RECONSTRUCTION_ERROR_BODY_UNAVAILABLE",
|
|
7
9
|
/** A body returned by the EL does not hash to the root stored in the header envelope. Local DB/EL inconsistency. */
|
|
8
10
|
BODY_ROOT_MISMATCH = "ENVELOPE_RECONSTRUCTION_ERROR_BODY_ROOT_MISMATCH",
|
|
9
11
|
/** A by-range stream stopped short at a slot that cannot be served; the response so far is still valid */
|
|
@@ -12,6 +14,7 @@ export enum EnvelopeReconstructionErrorCode {
|
|
|
12
14
|
|
|
13
15
|
export type EnvelopeReconstructionErrorType =
|
|
14
16
|
| {code: EnvelopeReconstructionErrorCode.ENGINE_UNAVAILABLE}
|
|
17
|
+
| {code: EnvelopeReconstructionErrorCode.BODY_UNAVAILABLE; slot: Slot}
|
|
15
18
|
| {
|
|
16
19
|
code: EnvelopeReconstructionErrorCode.BODY_ROOT_MISMATCH;
|
|
17
20
|
slot: Slot;
|
|
@@ -9,6 +9,8 @@ export enum GossipErrorCode {
|
|
|
9
9
|
INVALID_SERIALIZED_BYTES_ERROR_CODE = "GOSSIP_ERROR_INVALID_SERIALIZED_BYTES",
|
|
10
10
|
PAST_SLOT = "GOSSIP_ERROR_PAST_SLOT",
|
|
11
11
|
FUTURE_SLOT = "GOSSIP_ERROR_FUTURE_SLOT",
|
|
12
|
+
FATAL_PEER = "GOSSIP_ERROR_FATAL_PEER",
|
|
13
|
+
INVALID_SLOT = "GOSSIP_ERROR_INVALID_SLOT",
|
|
12
14
|
}
|
|
13
15
|
|
|
14
16
|
export class GossipActionError<T extends {code: string}> extends LodestarError<T> {
|
|
@@ -124,6 +124,7 @@ export function initializeForkChoiceFromFinalizedState(
|
|
|
124
124
|
onFinalized: (cp) => emitter.emit(ChainEvent.forkChoiceFinalized, cp),
|
|
125
125
|
onFastConfirmation: ({block, slot, currentSlot}) =>
|
|
126
126
|
emitter.emit(routes.events.EventType.fastConfirmation, {block, slot, currentSlot}),
|
|
127
|
+
onPtcQuorum: (data) => emitter.emit(ChainEvent.forkChoicePtcQuorum, data),
|
|
127
128
|
}
|
|
128
129
|
),
|
|
129
130
|
|
|
@@ -222,6 +223,7 @@ export function initializeForkChoiceFromUnfinalizedState(
|
|
|
222
223
|
onFinalized: (cp) => emitter.emit(ChainEvent.forkChoiceFinalized, cp),
|
|
223
224
|
onFastConfirmation: ({block, slot, currentSlot}) =>
|
|
224
225
|
emitter.emit(routes.events.EventType.fastConfirmation, {block, slot, currentSlot}),
|
|
226
|
+
onPtcQuorum: (data) => emitter.emit(ChainEvent.forkChoicePtcQuorum, data),
|
|
225
227
|
}
|
|
226
228
|
);
|
|
227
229
|
|
package/src/chain/interface.ts
CHANGED
|
@@ -30,7 +30,7 @@ import {Metrics} from "../metrics/metrics.js";
|
|
|
30
30
|
import {BufferPool} from "../util/bufferPool.js";
|
|
31
31
|
import {IClock} from "../util/clock.js";
|
|
32
32
|
import {CustodyConfig} from "../util/dataColumns.js";
|
|
33
|
-
import {
|
|
33
|
+
import {ReconstructMissPolicy} from "../util/execution.js";
|
|
34
34
|
import {SerializedCache} from "../util/serializedCache.js";
|
|
35
35
|
import {IArchiveStore} from "./archiveStore/interface.js";
|
|
36
36
|
import {CheckpointBalancesCache} from "./balancesCache.js";
|
|
@@ -239,7 +239,7 @@ export interface IBeaconChain {
|
|
|
239
239
|
getSerializedExecutionPayloadEnvelope(blockSlot: Slot, blockRootHex: string): Promise<Uint8Array | null>;
|
|
240
240
|
getSerializedExecutionPayloadEnvelopes(
|
|
241
241
|
requests: {blockSlot: Slot; blockRootHex: RootHex}[],
|
|
242
|
-
|
|
242
|
+
onMiss?: ReconstructMissPolicy
|
|
243
243
|
): Promise<(Uint8Array | null)[]>;
|
|
244
244
|
getExecutionPayloadEnvelope(
|
|
245
245
|
blockSlot: Slot,
|
|
@@ -6,8 +6,8 @@ import {toRootHex} from "@lodestar/utils";
|
|
|
6
6
|
*
|
|
7
7
|
* The primary consumer is `validateExecutionPayloadBid`, which looks up the matching
|
|
8
8
|
* preferences via `get(bid.slot, dependent_root)` to enforce the IGNORE-existence and
|
|
9
|
-
* REJECT-equality rules from the gloas spec. The beacon API
|
|
10
|
-
*
|
|
9
|
+
* REJECT-equality rules from the gloas spec. The beacon API `getProposerPreferences`
|
|
10
|
+
* endpoint reads from the same pool via `getAll`.
|
|
11
11
|
*
|
|
12
12
|
* `validator_index` is intentionally not part of the key: gossip validation enforces
|
|
13
13
|
* `proposers[proposalSlot % SLOTS_PER_EPOCH] === validatorIndex` against the shuffling
|
|
@@ -37,15 +37,19 @@ export class ProposerPreferencesPool {
|
|
|
37
37
|
byRoot.set(rootHex, signed);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
/** API read-out: flatten across branches, optionally filtered by slot. */
|
|
41
|
-
getAll(slot?: Slot): gloas.SignedProposerPreferences[] {
|
|
42
|
-
if (slot !== undefined) {
|
|
43
|
-
const byRoot = this.bySlot.get(slot);
|
|
44
|
-
return byRoot ? Array.from(byRoot.values()) : [];
|
|
45
|
-
}
|
|
40
|
+
/** API read-out: flatten across branches, optionally filtered by slot and dependent root. */
|
|
41
|
+
getAll(slot?: Slot, dependentRootHex?: RootHex): gloas.SignedProposerPreferences[] {
|
|
46
42
|
const out: gloas.SignedProposerPreferences[] = [];
|
|
47
|
-
for (const byRoot of this.bySlot
|
|
48
|
-
|
|
43
|
+
for (const [s, byRoot] of this.bySlot) {
|
|
44
|
+
if (slot !== undefined && s !== slot) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
for (const [root, signed] of byRoot) {
|
|
48
|
+
if (dependentRootHex !== undefined && root !== dependentRootHex) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
out.push(signed);
|
|
52
|
+
}
|
|
49
53
|
}
|
|
50
54
|
return out;
|
|
51
55
|
}
|