@lodestar/beacon-node 1.43.0-dev.6b7eebbf6d → 1.43.0-dev.921c57528b
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/chain/blocks/writePayloadEnvelopeInputToDb.d.ts.map +1 -1
- package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js +1 -10
- package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js.map +1 -1
- package/lib/chain/errors/executionPayloadBid.d.ts +5 -0
- package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -1
- package/lib/chain/errors/executionPayloadBid.js +1 -0
- package/lib/chain/errors/executionPayloadBid.js.map +1 -1
- package/lib/chain/prepareNextSlot.d.ts.map +1 -1
- package/lib/chain/prepareNextSlot.js +18 -10
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +11 -4
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +20 -18
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
- package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
- package/lib/chain/validation/executionPayloadBid.js +13 -1
- package/lib/chain/validation/executionPayloadBid.js.map +1 -1
- package/package.json +15 -15
- package/src/chain/blocks/writePayloadEnvelopeInputToDb.ts +8 -17
- package/src/chain/errors/executionPayloadBid.ts +6 -0
- package/src/chain/prepareNextSlot.ts +19 -10
- package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +22 -20
- package/src/chain/validation/executionPayloadBid.ts +14 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writePayloadEnvelopeInputToDb.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/writePayloadEnvelopeInputToDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,oBAAoB,EAAC,MAAM,0CAA0C,CAAC;AAG9E;;;;;;GAMG;AACH,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"writePayloadEnvelopeInputToDb.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/writePayloadEnvelopeInputToDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,oBAAoB,EAAC,MAAM,0CAA0C,CAAC;AAG9E;;;;;;GAMG;AACH,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAAC,IAAI,CAAC,CAWf"}
|
|
@@ -21,20 +21,11 @@ export async function writePayloadEnvelopeInputToDb(payloadInput) {
|
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
23
|
export async function persistPayloadEnvelopeInput(payloadInput) {
|
|
24
|
-
await writePayloadEnvelopeInputToDb
|
|
25
|
-
.call(this, payloadInput)
|
|
26
|
-
.catch((e) => {
|
|
24
|
+
await writePayloadEnvelopeInputToDb.call(this, payloadInput).catch((e) => {
|
|
27
25
|
this.logger.error("Error persisting payload envelope in hot db", {
|
|
28
26
|
slot: payloadInput.slot,
|
|
29
27
|
root: payloadInput.blockRootHex,
|
|
30
28
|
}, e);
|
|
31
|
-
})
|
|
32
|
-
.finally(() => {
|
|
33
|
-
this.seenPayloadEnvelopeInputCache.prune(payloadInput.blockRootHex);
|
|
34
|
-
this.logger.debug("Pruned payload envelope input", {
|
|
35
|
-
slot: payloadInput.slot,
|
|
36
|
-
root: payloadInput.blockRootHex,
|
|
37
|
-
});
|
|
38
29
|
});
|
|
39
30
|
}
|
|
40
31
|
//# sourceMappingURL=writePayloadEnvelopeInputToDb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writePayloadEnvelopeInputToDb.js","sourceRoot":"","sources":["../../../src/chain/blocks/writePayloadEnvelopeInputToDb.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAEjD,YAAkC,EACnB;IACf,MAAM,QAAQ,GAAG,YAAY,CAAC,kBAAkB,EAAE,CAAC;IACnD,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;IAE/C,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,aAAa;QACnC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;QAC7G,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEnD,mFAAmF;IACnF,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACpF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE;QACpD,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,IAAI,EAAE,YAAY;KACnB,CAAC,CAAC;AAAA,CACJ;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAE/C,YAAkC,EACnB;IACf,MAAM,6BAA6B
|
|
1
|
+
{"version":3,"file":"writePayloadEnvelopeInputToDb.js","sourceRoot":"","sources":["../../../src/chain/blocks/writePayloadEnvelopeInputToDb.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAEjD,YAAkC,EACnB;IACf,MAAM,QAAQ,GAAG,YAAY,CAAC,kBAAkB,EAAE,CAAC;IACnD,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;IAE/C,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,aAAa;QACnC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;QAC7G,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEnD,mFAAmF;IACnF,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACpF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE;QACpD,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,IAAI,EAAE,YAAY;KACnB,CAAC,CAAC;AAAA,CACJ;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAE/C,YAAkC,EACnB;IACf,MAAM,6BAA6B,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,6CAA6C,EAC7C;YACE,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,IAAI,EAAE,YAAY,CAAC,YAAY;SAChC,EACD,CAAC,CACF,CAAC;IAAA,CACH,CAAC,CAAC;AAAA,CACJ"}
|
|
@@ -6,6 +6,7 @@ export declare enum ExecutionPayloadBidErrorCode {
|
|
|
6
6
|
BID_ALREADY_KNOWN = "EXECUTION_PAYLOAD_BID_ERROR_BID_ALREADY_KNOWN",
|
|
7
7
|
BID_TOO_LOW = "EXECUTION_PAYLOAD_BID_ERROR_BID_TOO_LOW",
|
|
8
8
|
BID_TOO_HIGH = "EXECUTION_PAYLOAD_BID_ERROR_BID_TOO_HIGH",
|
|
9
|
+
TOO_MANY_KZG_COMMITMENTS = "EXECUTION_PAYLOAD_BID_ERROR_TOO_MANY_KZG_COMMITMENTS",
|
|
9
10
|
UNKNOWN_BLOCK_ROOT = "EXECUTION_PAYLOAD_BID_ERROR_UNKNOWN_BLOCK_ROOT",
|
|
10
11
|
INVALID_SLOT = "EXECUTION_PAYLOAD_BID_ERROR_INVALID_SLOT",
|
|
11
12
|
INVALID_SIGNATURE = "EXECUTION_PAYLOAD_BID_ERROR_INVALID_SIGNATURE"
|
|
@@ -31,6 +32,10 @@ export type ExecutionPayloadBidErrorType = {
|
|
|
31
32
|
code: ExecutionPayloadBidErrorCode.BID_TOO_HIGH;
|
|
32
33
|
bidValue: number;
|
|
33
34
|
builderBalance: number;
|
|
35
|
+
} | {
|
|
36
|
+
code: ExecutionPayloadBidErrorCode.TOO_MANY_KZG_COMMITMENTS;
|
|
37
|
+
blobKzgCommitmentsLen: number;
|
|
38
|
+
commitmentLimit: number;
|
|
34
39
|
} | {
|
|
35
40
|
code: ExecutionPayloadBidErrorCode.UNKNOWN_BLOCK_ROOT;
|
|
36
41
|
parentBlockRoot: RootHex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executionPayloadBid.d.ts","sourceRoot":"","sources":["../../../src/chain/errors/executionPayloadBid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAExD,oBAAY,4BAA4B;IACtC,oBAAoB,qDAAqD;IACzE,0BAA0B,2DAA2D;IACrF,iBAAiB,kDAAkD;IACnE,WAAW,4CAA4C;IACvD,YAAY,6CAA6C;IACzD,kBAAkB,mDAAmD;IACrE,YAAY,6CAA6C;IACzD,iBAAiB,kDAAkD;CACpE;AAED,MAAM,MAAM,4BAA4B,GACpC;IAAC,IAAI,EAAE,4BAA4B,CAAC,oBAAoB,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAAC,GACrF;IACE,IAAI,EAAE,4BAA4B,CAAC,0BAA0B,CAAC;IAC9D,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GACD;IACE,IAAI,EAAE,4BAA4B,CAAC,iBAAiB,CAAC;IACrD,YAAY,EAAE,YAAY,CAAC;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;CAC1B,GACD;IAAC,IAAI,EAAE,4BAA4B,CAAC,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAC,GAC7F;IAAC,IAAI,EAAE,4BAA4B,CAAC,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAC,GAC3F;IAAC,IAAI,EAAE,4BAA4B,CAAC,kBAAkB,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAC,GACjF;IAAC,IAAI,EAAE,4BAA4B,CAAC,YAAY,CAAC;IAAC,YAAY,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAC,GACzF;IAAC,IAAI,EAAE,4BAA4B,CAAC,iBAAiB,CAAC;IAAC,YAAY,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAC,CAAC;AAEnG,qBAAa,wBAAyB,SAAQ,iBAAiB,CAAC,4BAA4B,CAAC;CAAG"}
|
|
1
|
+
{"version":3,"file":"executionPayloadBid.d.ts","sourceRoot":"","sources":["../../../src/chain/errors/executionPayloadBid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAExD,oBAAY,4BAA4B;IACtC,oBAAoB,qDAAqD;IACzE,0BAA0B,2DAA2D;IACrF,iBAAiB,kDAAkD;IACnE,WAAW,4CAA4C;IACvD,YAAY,6CAA6C;IACzD,wBAAwB,yDAAyD;IACjF,kBAAkB,mDAAmD;IACrE,YAAY,6CAA6C;IACzD,iBAAiB,kDAAkD;CACpE;AAED,MAAM,MAAM,4BAA4B,GACpC;IAAC,IAAI,EAAE,4BAA4B,CAAC,oBAAoB,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAAC,GACrF;IACE,IAAI,EAAE,4BAA4B,CAAC,0BAA0B,CAAC;IAC9D,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GACD;IACE,IAAI,EAAE,4BAA4B,CAAC,iBAAiB,CAAC;IACrD,YAAY,EAAE,YAAY,CAAC;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;CAC1B,GACD;IAAC,IAAI,EAAE,4BAA4B,CAAC,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAC,GAC7F;IAAC,IAAI,EAAE,4BAA4B,CAAC,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAC,GAC3F;IACE,IAAI,EAAE,4BAA4B,CAAC,wBAAwB,CAAC;IAC5D,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;CACzB,GACD;IAAC,IAAI,EAAE,4BAA4B,CAAC,kBAAkB,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAC,GACjF;IAAC,IAAI,EAAE,4BAA4B,CAAC,YAAY,CAAC;IAAC,YAAY,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAC,GACzF;IAAC,IAAI,EAAE,4BAA4B,CAAC,iBAAiB,CAAC;IAAC,YAAY,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAC,CAAC;AAEnG,qBAAa,wBAAyB,SAAQ,iBAAiB,CAAC,4BAA4B,CAAC;CAAG"}
|
|
@@ -7,6 +7,7 @@ var ExecutionPayloadBidErrorCode;
|
|
|
7
7
|
ExecutionPayloadBidErrorCode["BID_ALREADY_KNOWN"] = "EXECUTION_PAYLOAD_BID_ERROR_BID_ALREADY_KNOWN";
|
|
8
8
|
ExecutionPayloadBidErrorCode["BID_TOO_LOW"] = "EXECUTION_PAYLOAD_BID_ERROR_BID_TOO_LOW";
|
|
9
9
|
ExecutionPayloadBidErrorCode["BID_TOO_HIGH"] = "EXECUTION_PAYLOAD_BID_ERROR_BID_TOO_HIGH";
|
|
10
|
+
ExecutionPayloadBidErrorCode["TOO_MANY_KZG_COMMITMENTS"] = "EXECUTION_PAYLOAD_BID_ERROR_TOO_MANY_KZG_COMMITMENTS";
|
|
10
11
|
ExecutionPayloadBidErrorCode["UNKNOWN_BLOCK_ROOT"] = "EXECUTION_PAYLOAD_BID_ERROR_UNKNOWN_BLOCK_ROOT";
|
|
11
12
|
ExecutionPayloadBidErrorCode["INVALID_SLOT"] = "EXECUTION_PAYLOAD_BID_ERROR_INVALID_SLOT";
|
|
12
13
|
ExecutionPayloadBidErrorCode["INVALID_SIGNATURE"] = "EXECUTION_PAYLOAD_BID_ERROR_INVALID_SIGNATURE";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executionPayloadBid.js","sourceRoot":"","sources":["../../../src/chain/errors/executionPayloadBid.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;SAE5C,4BAA4B;AAAxC,IAAY,
|
|
1
|
+
{"version":3,"file":"executionPayloadBid.js","sourceRoot":"","sources":["../../../src/chain/errors/executionPayloadBid.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;SAE5C,4BAA4B;AAAxC,IAAY,4BAUX;AAVD,WAAY,4BAA4B;IACtC,yGAAyE,CAAA;IACzE,qHAAqF,CAAA;IACrF,mGAAmE,CAAA;IACnE,uFAAuD,CAAA;IACvD,yFAAyD,CAAA;IACzD,iHAAiF,CAAA;IACjF,qGAAqE,CAAA;IACrE,yFAAyD,CAAA;IACzD,mGAAmE,CAAA;AAAC,CACtE,EAVY,4BAA4B,KAA5B,4BAA4B,QAUvC;AA2BD,MAAM,OAAO,wBAAyB,SAAQ,iBAA+C;CAAG"}
|
|
@@ -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,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,
|
|
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,uCAwMhB;IAEF,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAQlF;CACF"}
|
|
@@ -65,7 +65,7 @@ export class PrepareNextSlotScheduler {
|
|
|
65
65
|
const headBlock = this.chain.recomputeForkChoiceHead(ForkchoiceCaller.prepareNextSlot);
|
|
66
66
|
const { slot: headSlot, blockRoot: headRoot } = headBlock;
|
|
67
67
|
// may be updated below if we predict a proposer-boost-reorg
|
|
68
|
-
let
|
|
68
|
+
let updatedHead = headBlock;
|
|
69
69
|
// PS: previously this was comparing slots, but that gave no leway on the skipped
|
|
70
70
|
// slots on epoch bounday. Making it more fluid.
|
|
71
71
|
if (prepareSlot - headSlot > PREPARE_EPOCH_LIMIT * SLOTS_PER_EPOCH) {
|
|
@@ -116,7 +116,7 @@ export class PrepareNextSlotScheduler {
|
|
|
116
116
|
updatedPrepareState = await this.chain.regen.getBlockSlotState(proposerHead, prepareSlot,
|
|
117
117
|
// only transfer cache if epoch transition because that's the state we will use to stateTransition() the 1st block of epoch
|
|
118
118
|
{ dontTransferCache: !isEpochTransition }, RegenCaller.predictProposerHead);
|
|
119
|
-
|
|
119
|
+
updatedHead = proposerHead;
|
|
120
120
|
}
|
|
121
121
|
// Update the builder status, if enabled shoot an api call to check status
|
|
122
122
|
this.chain.updateBuilderStatus(clockSlot);
|
|
@@ -131,7 +131,7 @@ export class PrepareNextSlotScheduler {
|
|
|
131
131
|
}
|
|
132
132
|
let parentBlockHash;
|
|
133
133
|
if (isStatePostGloas(updatedPrepareState)) {
|
|
134
|
-
parentBlockHash = this.chain.forkChoice.shouldExtendPayload(
|
|
134
|
+
parentBlockHash = this.chain.forkChoice.shouldExtendPayload(updatedHead.blockRoot)
|
|
135
135
|
? updatedPrepareState.latestExecutionPayloadBid.blockHash
|
|
136
136
|
: updatedPrepareState.latestExecutionPayloadBid.parentBlockHash;
|
|
137
137
|
}
|
|
@@ -147,25 +147,33 @@ export class PrepareNextSlotScheduler {
|
|
|
147
147
|
// left for scheduler and this gives nice semantics to catch and log errors in the
|
|
148
148
|
// try/catch wrapper here.
|
|
149
149
|
await prepareExecutionPayload(this.chain, this.logger, fork, // State is of execution type
|
|
150
|
-
fromHex(
|
|
150
|
+
fromHex(updatedHead.blockRoot), parentBlockHash, safeBlockHash, finalizedBlockHash, updatedPrepareState, feeRecipient);
|
|
151
151
|
this.logger.verbose("PrepareNextSlotScheduler prepared new payload", {
|
|
152
152
|
prepareSlot,
|
|
153
153
|
proposerIndex,
|
|
154
154
|
feeRecipient,
|
|
155
155
|
});
|
|
156
156
|
}
|
|
157
|
+
if (ForkSeq[fork] >= ForkSeq.gloas) {
|
|
158
|
+
// Cutoff = slot of the parent of the block we'll actually build on (post-reorg).
|
|
159
|
+
// Steady state: cache holds just 2 entries — head (parent for next-slot production)
|
|
160
|
+
// and head.parent (proposer-boost-reorg fallback). Anything older is evicted.
|
|
161
|
+
const updatedHeadParent = this.chain.forkChoice.getBlockHexDefaultStatus(updatedHead.parentRoot);
|
|
162
|
+
if (updatedHeadParent) {
|
|
163
|
+
this.chain.seenPayloadEnvelopeInputCache.pruneBelow(updatedHeadParent.slot);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
157
166
|
this.computeStateHashTreeRoot(updatedPrepareState, isEpochTransition);
|
|
158
|
-
// If emitPayloadAttributes is true emit a SSE payloadAttributes event
|
|
159
|
-
|
|
167
|
+
// If emitPayloadAttributes is true emit a SSE payloadAttributes event for
|
|
168
|
+
// every slot. Without the flag, only emit the event if we are proposing in the next slot.
|
|
169
|
+
if ((feeRecipient || this.chain.opts.emitPayloadAttributes === true) &&
|
|
160
170
|
this.chain.emitter.listenerCount(routes.events.EventType.payloadAttributes)) {
|
|
161
171
|
const data = getPayloadAttributesForSSE(fork, this.chain, {
|
|
162
172
|
prepareState: updatedPrepareState,
|
|
163
173
|
prepareSlot,
|
|
164
|
-
parentBlockRoot: fromHex(
|
|
174
|
+
parentBlockRoot: fromHex(updatedHead.blockRoot),
|
|
165
175
|
parentBlockHash,
|
|
166
|
-
|
|
167
|
-
// feeRecipient, so just pass zero hash for now till a real use case arises
|
|
168
|
-
feeRecipient: "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
176
|
+
feeRecipient: feeRecipient ?? "0x0000000000000000000000000000000000000000",
|
|
169
177
|
});
|
|
170
178
|
this.chain.emitter.emit(routes.events.EventType.payloadAttributes, { data, version: fork });
|
|
171
179
|
}
|
|
@@ -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,yBAAyB,EAAC,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAoB,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAEL,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAS,OAAO,EAAE,cAAc,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAC,YAAY,EAAE,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAC,aAAa,EAAC,MAAM,8BAA8B,CAAC;AAE3D,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAC,mBAAmB,EAAC,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAC,0BAA0B,EAAE,uBAAuB,EAAC,MAAM,oCAAoC,CAAC;AACvG,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE7C,sCAAsC;AACtC,6GAA6G;AAC7G,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,yDAAyD;AACzD,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B;;;;;;;;;;GAUG;AACH,MAAM,OAAO,wBAAwB;IAEhB,KAAK;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IALzB,YACmB,KAAmB,EACnB,MAAuB,EACvB,OAAuB,EACvB,MAAc,EACd,MAAmB,EACpC;qBALiB,KAAK;sBACL,MAAM;uBACN,OAAO;sBACP,MAAM;sBACN,MAAM;QAEvB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAC1B,OAAO,EACP,GAAG,EAAE,CAAC;YACJ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAAA,CAChE,EACD,EAAC,IAAI,EAAE,IAAI,EAAC,CACb,CAAC;IAAA,CACH;IAED;;OAEG;IACH,kBAAkB,GAAG,KAAK,EAAE,SAAe,EAAiB,EAAE,CAAC;QAC7D,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,iBAAiB,GAAG,YAAY,KAAK,SAAS,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAElD,qCAAqC;QACrC,+DAA+D;QAC/D,IAAI,WAAW,IAAI,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC7F,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,2FAA2F;YAC3F,iCAAiC;YACjC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAExF,kFAAkF;YAClF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;YACvF,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAC,GAAG,SAAS,CAAC;YACxD,4DAA4D;YAC5D,IAAI,
|
|
1
|
+
{"version":3,"file":"prepareNextSlot.js","sourceRoot":"","sources":["../../src/chain/prepareNextSlot.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RootHex } from "@lodestar/types";
|
|
1
|
+
import { RootHex, Slot } from "@lodestar/types";
|
|
2
2
|
import { Logger } from "@lodestar/utils";
|
|
3
3
|
import { Metrics } from "../../metrics/metrics.js";
|
|
4
4
|
import { SerializedCache } from "../../util/serializedCache.js";
|
|
@@ -16,8 +16,15 @@ export type SeenPayloadEnvelopeInputModules = {
|
|
|
16
16
|
/**
|
|
17
17
|
* Cache for tracking PayloadEnvelopeInput instances, keyed by beacon block root.
|
|
18
18
|
*
|
|
19
|
-
* Created during block import when a block is processed.
|
|
20
|
-
*
|
|
19
|
+
* Created during block import when a block is processed. Two pruning paths:
|
|
20
|
+
* - `prepareNextSlot` calls `pruneBelow(headParentSlot)` every slot once the head we'll build
|
|
21
|
+
* on is known.
|
|
22
|
+
* - `onFinalized` calls `pruneBelow(finalizedSlot)` on every finalization for bulk cleanup.
|
|
23
|
+
*
|
|
24
|
+
* Steady state (linear chain, healthy progression): the cache holds ~2 entries — the head
|
|
25
|
+
* (parent for next-slot production) and its parent (proposer-boost-reorg fallback). It can
|
|
26
|
+
* transiently hold more during forks, range-sync bursts, or when `prepareNextSlot` skips
|
|
27
|
+
* ticks; subsequent ticks settle it back.
|
|
21
28
|
*/
|
|
22
29
|
export declare class SeenPayloadEnvelopeInput {
|
|
23
30
|
private readonly chainEvents;
|
|
@@ -31,8 +38,8 @@ export declare class SeenPayloadEnvelopeInput {
|
|
|
31
38
|
add(props: CreateFromBlockProps): PayloadEnvelopeInput;
|
|
32
39
|
get(blockRootHex: RootHex): PayloadEnvelopeInput | undefined;
|
|
33
40
|
hasPayload(blockRootHex: RootHex): boolean;
|
|
34
|
-
prune(blockRootHex: RootHex): void;
|
|
35
41
|
size(): number;
|
|
42
|
+
pruneBelow(slot: Slot): void;
|
|
36
43
|
private evictPayloadInput;
|
|
37
44
|
}
|
|
38
45
|
//# sourceMappingURL=seenPayloadEnvelopeInput.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenPayloadEnvelopeInput.d.ts","sourceRoot":"","sources":["../../../src/chain/seenCache/seenPayloadEnvelopeInput.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"seenPayloadEnvelopeInput.d.ts","sourceRoot":"","sources":["../../../src/chain/seenCache/seenPayloadEnvelopeInput.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAC,eAAe,EAAC,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAC,oBAAoB,EAAE,oBAAoB,EAAC,MAAM,yCAAyC,CAAC;AACnG,OAAO,EAAa,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAE5D,YAAY,EAAC,yBAAyB,EAAC,MAAM,yCAAyC,CAAC;AACvF,OAAO,EAAC,oBAAoB,EAAC,MAAM,yCAAyC,CAAC;AAE7E,MAAM,MAAM,+BAA+B,GAAG;IAC5C,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,eAAe,EAAE,eAAe,CAAC;IACjC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,aAAa,CAA4C;IAEjE,YAAY,EAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAC,EAAE,+BAA+B,EAuBnG;IAED,OAAO,CAAC,WAAW,CAEjB;IAEF,GAAG,CAAC,KAAK,EAAE,oBAAoB,GAAG,oBAAoB,CAQrD;IAED,GAAG,CAAC,YAAY,EAAE,OAAO,GAAG,oBAAoB,GAAG,SAAS,CAE3D;IAED,UAAU,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAEzC;IAED,IAAI,IAAI,MAAM,CAEb;IAED,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAS3B;IAED,OAAO,CAAC,iBAAiB;CAI1B"}
|
|
@@ -5,8 +5,15 @@ export { PayloadEnvelopeInput } from "../blocks/payloadEnvelopeInput/index.js";
|
|
|
5
5
|
/**
|
|
6
6
|
* Cache for tracking PayloadEnvelopeInput instances, keyed by beacon block root.
|
|
7
7
|
*
|
|
8
|
-
* Created during block import when a block is processed.
|
|
9
|
-
*
|
|
8
|
+
* Created during block import when a block is processed. Two pruning paths:
|
|
9
|
+
* - `prepareNextSlot` calls `pruneBelow(headParentSlot)` every slot once the head we'll build
|
|
10
|
+
* on is known.
|
|
11
|
+
* - `onFinalized` calls `pruneBelow(finalizedSlot)` on every finalization for bulk cleanup.
|
|
12
|
+
*
|
|
13
|
+
* Steady state (linear chain, healthy progression): the cache holds ~2 entries — the head
|
|
14
|
+
* (parent for next-slot production) and its parent (proposer-boost-reorg fallback). It can
|
|
15
|
+
* transiently hold more during forks, range-sync bursts, or when `prepareNextSlot` skips
|
|
16
|
+
* ticks; subsequent ticks settle it back.
|
|
10
17
|
*/
|
|
11
18
|
export class SeenPayloadEnvelopeInput {
|
|
12
19
|
chainEvents;
|
|
@@ -33,16 +40,7 @@ export class SeenPayloadEnvelopeInput {
|
|
|
33
40
|
});
|
|
34
41
|
}
|
|
35
42
|
onFinalized = (checkpoint) => {
|
|
36
|
-
|
|
37
|
-
const finalizedSlot = computeStartSlotAtEpoch(checkpoint.epoch);
|
|
38
|
-
let deletedCount = 0;
|
|
39
|
-
for (const [, input] of this.payloadInputs) {
|
|
40
|
-
if (input.slot < finalizedSlot) {
|
|
41
|
-
this.evictPayloadInput(input);
|
|
42
|
-
deletedCount++;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
this.logger?.debug("SeenPayloadEnvelopeInput.onFinalized deleted cached entries", { deletedCount });
|
|
43
|
+
this.pruneBelow(computeStartSlotAtEpoch(checkpoint.epoch));
|
|
46
44
|
};
|
|
47
45
|
add(props) {
|
|
48
46
|
if (this.payloadInputs.has(props.blockRootHex)) {
|
|
@@ -59,15 +57,19 @@ export class SeenPayloadEnvelopeInput {
|
|
|
59
57
|
hasPayload(blockRootHex) {
|
|
60
58
|
return this.payloadInputs.get(blockRootHex)?.hasPayloadEnvelope() ?? false;
|
|
61
59
|
}
|
|
62
|
-
prune(blockRootHex) {
|
|
63
|
-
const payloadInput = this.payloadInputs.get(blockRootHex);
|
|
64
|
-
if (payloadInput) {
|
|
65
|
-
this.evictPayloadInput(payloadInput);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
60
|
size() {
|
|
69
61
|
return this.payloadInputs.size;
|
|
70
62
|
}
|
|
63
|
+
pruneBelow(slot) {
|
|
64
|
+
let deletedCount = 0;
|
|
65
|
+
for (const [, input] of this.payloadInputs) {
|
|
66
|
+
if (input.slot < slot) {
|
|
67
|
+
this.evictPayloadInput(input);
|
|
68
|
+
deletedCount++;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
this.logger?.debug("SeenPayloadEnvelopeInput.pruneBelow deleted entries", { slot, deletedCount });
|
|
72
|
+
}
|
|
71
73
|
evictPayloadInput(payloadInput) {
|
|
72
74
|
this.serializedCache.delete(payloadInput.getSerializedCacheKeys());
|
|
73
75
|
this.payloadInputs.delete(payloadInput.blockRootHex);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenPayloadEnvelopeInput.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenPayloadEnvelopeInput.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAKnE,OAAO,EAAuB,oBAAoB,EAAC,MAAM,yCAAyC,CAAC;AACnG,OAAO,EAAC,UAAU,EAAoB,MAAM,eAAe,CAAC;AAG5D,OAAO,EAAC,oBAAoB,EAAC,MAAM,yCAAyC,CAAC;AAU7E
|
|
1
|
+
{"version":3,"file":"seenPayloadEnvelopeInput.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenPayloadEnvelopeInput.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executionPayloadBid.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/executionPayloadBid.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"executionPayloadBid.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/executionPayloadBid.ts"],"names":[],"mappings":"AAQA,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAGtC,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAGzC,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,YAAY,EACnB,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,GACzD,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,iCAAiC,CACrD,KAAK,EAAE,YAAY,EACnB,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,GACzD,OAAO,CAAC,IAAI,CAAC,CAEf"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PublicKey } from "@chainsafe/blst";
|
|
2
|
-
import { createSingleSignatureSetFromComponents, getExecutionPayloadBidSigningRoot, isActiveBuilder, isStatePostGloas, } from "@lodestar/state-transition";
|
|
2
|
+
import { computeEpochAtSlot, createSingleSignatureSetFromComponents, getExecutionPayloadBidSigningRoot, isActiveBuilder, isStatePostGloas, } from "@lodestar/state-transition";
|
|
3
3
|
import { toRootHex } from "@lodestar/utils";
|
|
4
4
|
import { ExecutionPayloadBidError, ExecutionPayloadBidErrorCode, GossipAction } from "../errors/index.js";
|
|
5
5
|
import { RegenCaller } from "../regen/index.js";
|
|
@@ -51,6 +51,18 @@ async function validateExecutionPayloadBid(chain, signedExecutionPayloadBid) {
|
|
|
51
51
|
// [REJECT] `bid.gas_limit` matches the `gas_limit` from the proposer's
|
|
52
52
|
// `SignedProposerPreferences` associated with `bid.slot`.
|
|
53
53
|
// TODO GLOAS: Implement this along with proposer preference
|
|
54
|
+
// [REJECT] The length of KZG commitments is less than or equal to the limitation defined in the
|
|
55
|
+
// consensus layer -- i.e. validate that
|
|
56
|
+
// `len(bid.blob_kzg_commitments) <= get_blob_parameters(compute_epoch_at_slot(bid.slot)).max_blobs_per_block`.
|
|
57
|
+
const blobKzgCommitmentsLen = bid.blobKzgCommitments.length;
|
|
58
|
+
const maxBlobsPerBlock = chain.config.getMaxBlobsPerBlock(computeEpochAtSlot(bid.slot));
|
|
59
|
+
if (blobKzgCommitmentsLen > maxBlobsPerBlock) {
|
|
60
|
+
throw new ExecutionPayloadBidError(GossipAction.REJECT, {
|
|
61
|
+
code: ExecutionPayloadBidErrorCode.TOO_MANY_KZG_COMMITMENTS,
|
|
62
|
+
blobKzgCommitmentsLen,
|
|
63
|
+
commitmentLimit: maxBlobsPerBlock,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
54
66
|
// [IGNORE] this is the first signed bid seen with a valid signature from the given builder for this slot.
|
|
55
67
|
if (chain.seenExecutionPayloadBids.isKnown(bid.slot, bid.builderIndex)) {
|
|
56
68
|
throw new ExecutionPayloadBidError(GossipAction.IGNORE, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executionPayloadBid.js","sourceRoot":"","sources":["../../../src/chain/validation/executionPayloadBid.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"executionPayloadBid.js","sourceRoot":"","sources":["../../../src/chain/validation/executionPayloadBid.ts"],"names":[],"mappings":"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"}
|
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.43.0-dev.
|
|
14
|
+
"version": "1.43.0-dev.921c57528b",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -135,18 +135,18 @@
|
|
|
135
135
|
"@libp2p/peer-id": "^6.0.4",
|
|
136
136
|
"@libp2p/prometheus-metrics": "^5.0.14",
|
|
137
137
|
"@libp2p/tcp": "^11.0.13",
|
|
138
|
-
"@lodestar/api": "^1.43.0-dev.
|
|
139
|
-
"@lodestar/config": "^1.43.0-dev.
|
|
140
|
-
"@lodestar/db": "^1.43.0-dev.
|
|
141
|
-
"@lodestar/fork-choice": "^1.43.0-dev.
|
|
142
|
-
"@lodestar/light-client": "^1.43.0-dev.
|
|
143
|
-
"@lodestar/logger": "^1.43.0-dev.
|
|
144
|
-
"@lodestar/params": "^1.43.0-dev.
|
|
145
|
-
"@lodestar/reqresp": "^1.43.0-dev.
|
|
146
|
-
"@lodestar/state-transition": "^1.43.0-dev.
|
|
147
|
-
"@lodestar/types": "^1.43.0-dev.
|
|
148
|
-
"@lodestar/utils": "^1.43.0-dev.
|
|
149
|
-
"@lodestar/validator": "^1.43.0-dev.
|
|
138
|
+
"@lodestar/api": "^1.43.0-dev.921c57528b",
|
|
139
|
+
"@lodestar/config": "^1.43.0-dev.921c57528b",
|
|
140
|
+
"@lodestar/db": "^1.43.0-dev.921c57528b",
|
|
141
|
+
"@lodestar/fork-choice": "^1.43.0-dev.921c57528b",
|
|
142
|
+
"@lodestar/light-client": "^1.43.0-dev.921c57528b",
|
|
143
|
+
"@lodestar/logger": "^1.43.0-dev.921c57528b",
|
|
144
|
+
"@lodestar/params": "^1.43.0-dev.921c57528b",
|
|
145
|
+
"@lodestar/reqresp": "^1.43.0-dev.921c57528b",
|
|
146
|
+
"@lodestar/state-transition": "^1.43.0-dev.921c57528b",
|
|
147
|
+
"@lodestar/types": "^1.43.0-dev.921c57528b",
|
|
148
|
+
"@lodestar/utils": "^1.43.0-dev.921c57528b",
|
|
149
|
+
"@lodestar/validator": "^1.43.0-dev.921c57528b",
|
|
150
150
|
"@multiformats/multiaddr": "^13.0.1",
|
|
151
151
|
"datastore-core": "^11.0.2",
|
|
152
152
|
"datastore-fs": "^11.0.2",
|
|
@@ -169,7 +169,7 @@
|
|
|
169
169
|
"@libp2p/interface-internal": "^3.0.13",
|
|
170
170
|
"@libp2p/logger": "^6.2.2",
|
|
171
171
|
"@libp2p/utils": "^7.0.13",
|
|
172
|
-
"@lodestar/spec-test-util": "^1.43.0-dev.
|
|
172
|
+
"@lodestar/spec-test-util": "^1.43.0-dev.921c57528b",
|
|
173
173
|
"@types/js-yaml": "^4.0.5",
|
|
174
174
|
"@types/qs": "^6.9.7",
|
|
175
175
|
"@types/tmp": "^0.2.3",
|
|
@@ -186,5 +186,5 @@
|
|
|
186
186
|
"beacon",
|
|
187
187
|
"blockchain"
|
|
188
188
|
],
|
|
189
|
-
"gitHead": "
|
|
189
|
+
"gitHead": "d2197e8272cb6c23aaa5ec4b58e22e104a1f0fb1"
|
|
190
190
|
}
|
|
@@ -33,23 +33,14 @@ export async function persistPayloadEnvelopeInput(
|
|
|
33
33
|
this: BeaconChain,
|
|
34
34
|
payloadInput: PayloadEnvelopeInput
|
|
35
35
|
): Promise<void> {
|
|
36
|
-
await writePayloadEnvelopeInputToDb
|
|
37
|
-
.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"Error persisting payload envelope in hot db",
|
|
41
|
-
{
|
|
42
|
-
slot: payloadInput.slot,
|
|
43
|
-
root: payloadInput.blockRootHex,
|
|
44
|
-
},
|
|
45
|
-
e
|
|
46
|
-
);
|
|
47
|
-
})
|
|
48
|
-
.finally(() => {
|
|
49
|
-
this.seenPayloadEnvelopeInputCache.prune(payloadInput.blockRootHex);
|
|
50
|
-
this.logger.debug("Pruned payload envelope input", {
|
|
36
|
+
await writePayloadEnvelopeInputToDb.call(this, payloadInput).catch((e) => {
|
|
37
|
+
this.logger.error(
|
|
38
|
+
"Error persisting payload envelope in hot db",
|
|
39
|
+
{
|
|
51
40
|
slot: payloadInput.slot,
|
|
52
41
|
root: payloadInput.blockRootHex,
|
|
53
|
-
}
|
|
54
|
-
|
|
42
|
+
},
|
|
43
|
+
e
|
|
44
|
+
);
|
|
45
|
+
});
|
|
55
46
|
}
|
|
@@ -7,6 +7,7 @@ export enum ExecutionPayloadBidErrorCode {
|
|
|
7
7
|
BID_ALREADY_KNOWN = "EXECUTION_PAYLOAD_BID_ERROR_BID_ALREADY_KNOWN",
|
|
8
8
|
BID_TOO_LOW = "EXECUTION_PAYLOAD_BID_ERROR_BID_TOO_LOW",
|
|
9
9
|
BID_TOO_HIGH = "EXECUTION_PAYLOAD_BID_ERROR_BID_TOO_HIGH",
|
|
10
|
+
TOO_MANY_KZG_COMMITMENTS = "EXECUTION_PAYLOAD_BID_ERROR_TOO_MANY_KZG_COMMITMENTS",
|
|
10
11
|
UNKNOWN_BLOCK_ROOT = "EXECUTION_PAYLOAD_BID_ERROR_UNKNOWN_BLOCK_ROOT",
|
|
11
12
|
INVALID_SLOT = "EXECUTION_PAYLOAD_BID_ERROR_INVALID_SLOT",
|
|
12
13
|
INVALID_SIGNATURE = "EXECUTION_PAYLOAD_BID_ERROR_INVALID_SIGNATURE",
|
|
@@ -28,6 +29,11 @@ export type ExecutionPayloadBidErrorType =
|
|
|
28
29
|
}
|
|
29
30
|
| {code: ExecutionPayloadBidErrorCode.BID_TOO_LOW; bidValue: number; currentHighestBid: number}
|
|
30
31
|
| {code: ExecutionPayloadBidErrorCode.BID_TOO_HIGH; bidValue: number; builderBalance: number}
|
|
32
|
+
| {
|
|
33
|
+
code: ExecutionPayloadBidErrorCode.TOO_MANY_KZG_COMMITMENTS;
|
|
34
|
+
blobKzgCommitmentsLen: number;
|
|
35
|
+
commitmentLimit: number;
|
|
36
|
+
}
|
|
31
37
|
| {code: ExecutionPayloadBidErrorCode.UNKNOWN_BLOCK_ROOT; parentBlockRoot: RootHex}
|
|
32
38
|
| {code: ExecutionPayloadBidErrorCode.INVALID_SLOT; builderIndex: BuilderIndex; slot: Slot}
|
|
33
39
|
| {code: ExecutionPayloadBidErrorCode.INVALID_SIGNATURE; builderIndex: BuilderIndex; slot: Slot};
|
|
@@ -83,7 +83,7 @@ export class PrepareNextSlotScheduler {
|
|
|
83
83
|
const headBlock = this.chain.recomputeForkChoiceHead(ForkchoiceCaller.prepareNextSlot);
|
|
84
84
|
const {slot: headSlot, blockRoot: headRoot} = headBlock;
|
|
85
85
|
// may be updated below if we predict a proposer-boost-reorg
|
|
86
|
-
let
|
|
86
|
+
let updatedHead = headBlock;
|
|
87
87
|
|
|
88
88
|
// PS: previously this was comparing slots, but that gave no leway on the skipped
|
|
89
89
|
// slots on epoch bounday. Making it more fluid.
|
|
@@ -148,7 +148,7 @@ export class PrepareNextSlotScheduler {
|
|
|
148
148
|
{dontTransferCache: !isEpochTransition},
|
|
149
149
|
RegenCaller.predictProposerHead
|
|
150
150
|
);
|
|
151
|
-
|
|
151
|
+
updatedHead = proposerHead;
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
// Update the builder status, if enabled shoot an api call to check status
|
|
@@ -166,7 +166,7 @@ export class PrepareNextSlotScheduler {
|
|
|
166
166
|
|
|
167
167
|
let parentBlockHash: Bytes32;
|
|
168
168
|
if (isStatePostGloas(updatedPrepareState)) {
|
|
169
|
-
parentBlockHash = this.chain.forkChoice.shouldExtendPayload(
|
|
169
|
+
parentBlockHash = this.chain.forkChoice.shouldExtendPayload(updatedHead.blockRoot)
|
|
170
170
|
? updatedPrepareState.latestExecutionPayloadBid.blockHash
|
|
171
171
|
: updatedPrepareState.latestExecutionPayloadBid.parentBlockHash;
|
|
172
172
|
} else {
|
|
@@ -189,7 +189,7 @@ export class PrepareNextSlotScheduler {
|
|
|
189
189
|
this.chain,
|
|
190
190
|
this.logger,
|
|
191
191
|
fork as ForkPostBellatrix, // State is of execution type
|
|
192
|
-
fromHex(
|
|
192
|
+
fromHex(updatedHead.blockRoot),
|
|
193
193
|
parentBlockHash,
|
|
194
194
|
safeBlockHash,
|
|
195
195
|
finalizedBlockHash,
|
|
@@ -203,21 +203,30 @@ export class PrepareNextSlotScheduler {
|
|
|
203
203
|
});
|
|
204
204
|
}
|
|
205
205
|
|
|
206
|
+
if (ForkSeq[fork] >= ForkSeq.gloas) {
|
|
207
|
+
// Cutoff = slot of the parent of the block we'll actually build on (post-reorg).
|
|
208
|
+
// Steady state: cache holds just 2 entries — head (parent for next-slot production)
|
|
209
|
+
// and head.parent (proposer-boost-reorg fallback). Anything older is evicted.
|
|
210
|
+
const updatedHeadParent = this.chain.forkChoice.getBlockHexDefaultStatus(updatedHead.parentRoot);
|
|
211
|
+
if (updatedHeadParent) {
|
|
212
|
+
this.chain.seenPayloadEnvelopeInputCache.pruneBelow(updatedHeadParent.slot);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
206
216
|
this.computeStateHashTreeRoot(updatedPrepareState, isEpochTransition);
|
|
207
217
|
|
|
208
|
-
// If emitPayloadAttributes is true emit a SSE payloadAttributes event
|
|
218
|
+
// If emitPayloadAttributes is true emit a SSE payloadAttributes event for
|
|
219
|
+
// every slot. Without the flag, only emit the event if we are proposing in the next slot.
|
|
209
220
|
if (
|
|
210
|
-
this.chain.opts.emitPayloadAttributes === true &&
|
|
221
|
+
(feeRecipient || this.chain.opts.emitPayloadAttributes === true) &&
|
|
211
222
|
this.chain.emitter.listenerCount(routes.events.EventType.payloadAttributes)
|
|
212
223
|
) {
|
|
213
224
|
const data = getPayloadAttributesForSSE(fork as ForkPostBellatrix, this.chain, {
|
|
214
225
|
prepareState: updatedPrepareState,
|
|
215
226
|
prepareSlot,
|
|
216
|
-
parentBlockRoot: fromHex(
|
|
227
|
+
parentBlockRoot: fromHex(updatedHead.blockRoot),
|
|
217
228
|
parentBlockHash,
|
|
218
|
-
|
|
219
|
-
// feeRecipient, so just pass zero hash for now till a real use case arises
|
|
220
|
-
feeRecipient: "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
229
|
+
feeRecipient: feeRecipient ?? "0x0000000000000000000000000000000000000000",
|
|
221
230
|
});
|
|
222
231
|
this.chain.emitter.emit(routes.events.EventType.payloadAttributes, {data, version: fork});
|
|
223
232
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {CheckpointWithHex} from "@lodestar/fork-choice";
|
|
2
2
|
import {computeStartSlotAtEpoch} from "@lodestar/state-transition";
|
|
3
|
-
import {RootHex} from "@lodestar/types";
|
|
3
|
+
import {RootHex, Slot} from "@lodestar/types";
|
|
4
4
|
import {Logger} from "@lodestar/utils";
|
|
5
5
|
import {Metrics} from "../../metrics/metrics.js";
|
|
6
6
|
import {SerializedCache} from "../../util/serializedCache.js";
|
|
@@ -21,8 +21,15 @@ export type SeenPayloadEnvelopeInputModules = {
|
|
|
21
21
|
/**
|
|
22
22
|
* Cache for tracking PayloadEnvelopeInput instances, keyed by beacon block root.
|
|
23
23
|
*
|
|
24
|
-
* Created during block import when a block is processed.
|
|
25
|
-
*
|
|
24
|
+
* Created during block import when a block is processed. Two pruning paths:
|
|
25
|
+
* - `prepareNextSlot` calls `pruneBelow(headParentSlot)` every slot once the head we'll build
|
|
26
|
+
* on is known.
|
|
27
|
+
* - `onFinalized` calls `pruneBelow(finalizedSlot)` on every finalization for bulk cleanup.
|
|
28
|
+
*
|
|
29
|
+
* Steady state (linear chain, healthy progression): the cache holds ~2 entries — the head
|
|
30
|
+
* (parent for next-slot production) and its parent (proposer-boost-reorg fallback). It can
|
|
31
|
+
* transiently hold more during forks, range-sync bursts, or when `prepareNextSlot` skips
|
|
32
|
+
* ticks; subsequent ticks settle it back.
|
|
26
33
|
*/
|
|
27
34
|
export class SeenPayloadEnvelopeInput {
|
|
28
35
|
private readonly chainEvents: ChainEventEmitter;
|
|
@@ -58,16 +65,7 @@ export class SeenPayloadEnvelopeInput {
|
|
|
58
65
|
}
|
|
59
66
|
|
|
60
67
|
private onFinalized = (checkpoint: CheckpointWithHex): void => {
|
|
61
|
-
|
|
62
|
-
const finalizedSlot = computeStartSlotAtEpoch(checkpoint.epoch);
|
|
63
|
-
let deletedCount = 0;
|
|
64
|
-
for (const [, input] of this.payloadInputs) {
|
|
65
|
-
if (input.slot < finalizedSlot) {
|
|
66
|
-
this.evictPayloadInput(input);
|
|
67
|
-
deletedCount++;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
this.logger?.debug("SeenPayloadEnvelopeInput.onFinalized deleted cached entries", {deletedCount});
|
|
68
|
+
this.pruneBelow(computeStartSlotAtEpoch(checkpoint.epoch));
|
|
71
69
|
};
|
|
72
70
|
|
|
73
71
|
add(props: CreateFromBlockProps): PayloadEnvelopeInput {
|
|
@@ -88,17 +86,21 @@ export class SeenPayloadEnvelopeInput {
|
|
|
88
86
|
return this.payloadInputs.get(blockRootHex)?.hasPayloadEnvelope() ?? false;
|
|
89
87
|
}
|
|
90
88
|
|
|
91
|
-
prune(blockRootHex: RootHex): void {
|
|
92
|
-
const payloadInput = this.payloadInputs.get(blockRootHex);
|
|
93
|
-
if (payloadInput) {
|
|
94
|
-
this.evictPayloadInput(payloadInput);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
89
|
size(): number {
|
|
99
90
|
return this.payloadInputs.size;
|
|
100
91
|
}
|
|
101
92
|
|
|
93
|
+
pruneBelow(slot: Slot): void {
|
|
94
|
+
let deletedCount = 0;
|
|
95
|
+
for (const [, input] of this.payloadInputs) {
|
|
96
|
+
if (input.slot < slot) {
|
|
97
|
+
this.evictPayloadInput(input);
|
|
98
|
+
deletedCount++;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
this.logger?.debug("SeenPayloadEnvelopeInput.pruneBelow deleted entries", {slot, deletedCount});
|
|
102
|
+
}
|
|
103
|
+
|
|
102
104
|
private evictPayloadInput(payloadInput: PayloadEnvelopeInput): void {
|
|
103
105
|
this.serializedCache.delete(payloadInput.getSerializedCacheKeys());
|
|
104
106
|
this.payloadInputs.delete(payloadInput.blockRootHex);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {PublicKey} from "@chainsafe/blst";
|
|
2
2
|
import {
|
|
3
|
+
computeEpochAtSlot,
|
|
3
4
|
createSingleSignatureSetFromComponents,
|
|
4
5
|
getExecutionPayloadBidSigningRoot,
|
|
5
6
|
isActiveBuilder,
|
|
@@ -76,6 +77,19 @@ async function validateExecutionPayloadBid(
|
|
|
76
77
|
// `SignedProposerPreferences` associated with `bid.slot`.
|
|
77
78
|
// TODO GLOAS: Implement this along with proposer preference
|
|
78
79
|
|
|
80
|
+
// [REJECT] The length of KZG commitments is less than or equal to the limitation defined in the
|
|
81
|
+
// consensus layer -- i.e. validate that
|
|
82
|
+
// `len(bid.blob_kzg_commitments) <= get_blob_parameters(compute_epoch_at_slot(bid.slot)).max_blobs_per_block`.
|
|
83
|
+
const blobKzgCommitmentsLen = bid.blobKzgCommitments.length;
|
|
84
|
+
const maxBlobsPerBlock = chain.config.getMaxBlobsPerBlock(computeEpochAtSlot(bid.slot));
|
|
85
|
+
if (blobKzgCommitmentsLen > maxBlobsPerBlock) {
|
|
86
|
+
throw new ExecutionPayloadBidError(GossipAction.REJECT, {
|
|
87
|
+
code: ExecutionPayloadBidErrorCode.TOO_MANY_KZG_COMMITMENTS,
|
|
88
|
+
blobKzgCommitmentsLen,
|
|
89
|
+
commitmentLimit: maxBlobsPerBlock,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
|
|
79
93
|
// [IGNORE] this is the first signed bid seen with a valid signature from the given builder for this slot.
|
|
80
94
|
if (chain.seenExecutionPayloadBids.isKnown(bid.slot, bid.builderIndex)) {
|
|
81
95
|
throw new ExecutionPayloadBidError(GossipAction.IGNORE, {
|