feat: evict invalid payloads from cache#9661
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces a mechanism to detach unverified payload envelopes from the cache upon verification or execution engine failures, allowing subsequent sync attempts to download fresh bytes instead of repeatedly failing on cached bad bytes. Envelopes verified via gossip or API are marked as verified and are not detached. Feedback suggests refining the eviction logic in importExecutionPayload.ts to only remove the unverified envelope on specific validation errors (such as signature or verification failures) rather than unconditionally on any error, preventing unnecessary re-downloads during transient execution engine errors.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| } catch (e) { | ||
| this.seenPayloadEnvelopeInputCache.removeUnverifiedPayloadEnvelope(blockRootHex); | ||
| throw e; | ||
| } |
There was a problem hiding this comment.
Unconditionally evicting the unverified payload envelope on any error caught during import can lead to unnecessary re-downloads and sync stalls. For example, if a transient error occurs (such as PayloadErrorCode.EXECUTION_ENGINE_ERROR due to ELERROR or UNAVAILABLE, or setup errors like PayloadErrorCode.BLOCK_NOT_IN_FORK_CHOICE / PayloadErrorCode.MISS_BLOCK_STATE), the envelope itself is still valid. We should only evict the envelope when we are certain it is invalid (i.e., for ENVELOPE_VERIFICATION_ERROR, INVALID_SIGNATURE, or EXECUTION_ENGINE_INVALID).
| } catch (e) { | |
| this.seenPayloadEnvelopeInputCache.removeUnverifiedPayloadEnvelope(blockRootHex); | |
| throw e; | |
| } | |
| } catch (e) { | |
| if ( | |
| e instanceof PayloadError && | |
| (e.type.code === PayloadErrorCode.ENVELOPE_VERIFICATION_ERROR || | |
| e.type.code === PayloadErrorCode.INVALID_SIGNATURE || | |
| e.type.code === PayloadErrorCode.EXECUTION_ENGINE_INVALID) | |
| ) { | |
| this.seenPayloadEnvelopeInputCache.removeUnverifiedPayloadEnvelope(blockRootHex); | |
| } | |
| throw e; | |
| } |
|
| Benchmark suite | Current: 01e3cbe | Previous: ea1ba2d | Ratio |
|---|---|---|---|
| isKnown best case - 1 super set check | 502.00 ns/op | 163.00 ns/op | 3.08 |
Full benchmark results
| Benchmark suite | Current: 01e3cbe | Previous: ea1ba2d | Ratio |
|---|---|---|---|
| getPubkeys - index2pubkey - req 1000 vs - 250000 vc | 1.0851 ms/op | 1.9443 ms/op | 0.56 |
| getPubkeys - validatorsArr - req 1000 vs - 250000 vc | 41.682 us/op | 45.800 us/op | 0.91 |
| BLS verify - blst | 786.15 us/op | 769.01 us/op | 1.02 |
| BLS verifyMultipleSignatures 3 - blst | 1.4131 ms/op | 1.3775 ms/op | 1.03 |
| BLS verifyMultipleSignatures 8 - blst | 2.2536 ms/op | 2.2079 ms/op | 1.02 |
| BLS verifyMultipleSignatures 32 - blst | 7.0697 ms/op | 7.3129 ms/op | 0.97 |
| BLS verifyMultipleSignatures 64 - blst | 13.909 ms/op | 13.846 ms/op | 1.00 |
| BLS verifyMultipleSignatures 128 - blst | 26.822 ms/op | 26.387 ms/op | 1.02 |
| BLS deserializing 10000 signatures | 676.83 ms/op | 653.82 ms/op | 1.04 |
| BLS deserializing 100000 signatures | 6.8612 s/op | 6.4407 s/op | 1.07 |
| BLS verifyMultipleSignatures - same message - 3 - blst | 802.68 us/op | 812.29 us/op | 0.99 |
| BLS verifyMultipleSignatures - same message - 8 - blst | 942.62 us/op | 941.51 us/op | 1.00 |
| BLS verifyMultipleSignatures - same message - 32 - blst | 1.5272 ms/op | 1.5040 ms/op | 1.02 |
| BLS verifyMultipleSignatures - same message - 64 - blst | 2.5385 ms/op | 2.3712 ms/op | 1.07 |
| BLS verifyMultipleSignatures - same message - 128 - blst | 4.2502 ms/op | 4.0764 ms/op | 1.04 |
| BLS aggregatePubkeys 32 - blst | 18.594 us/op | 17.787 us/op | 1.05 |
| BLS aggregatePubkeys 128 - blst | 66.575 us/op | 63.452 us/op | 1.05 |
| getSlashingsAndExits - default max | 53.434 us/op | 56.158 us/op | 0.95 |
| getSlashingsAndExits - 2k | 444.32 us/op | 383.98 us/op | 1.16 |
| proposeBlockBody type=full, size=empty | 709.56 us/op | 677.34 us/op | 1.05 |
| isKnown best case - 1 super set check | 502.00 ns/op | 163.00 ns/op | 3.08 |
| isKnown normal case - 2 super set checks | 166.00 ns/op | 162.00 ns/op | 1.02 |
| isKnown worse case - 16 super set checks | 168.00 ns/op | 162.00 ns/op | 1.04 |
| validate api signedAggregateAndProof - struct | 1.6123 ms/op | 1.5232 ms/op | 1.06 |
| validate gossip signedAggregateAndProof - struct | 1.6141 ms/op | 1.5203 ms/op | 1.06 |
| batch validate gossip attestation - vc 640000 - chunk 32 | 123.37 us/op | 109.17 us/op | 1.13 |
| batch validate gossip attestation - vc 640000 - chunk 64 | 113.10 us/op | 94.840 us/op | 1.19 |
| batch validate gossip attestation - vc 640000 - chunk 128 | 95.169 us/op | 89.233 us/op | 1.07 |
| batch validate gossip attestation - vc 640000 - chunk 256 | 100.40 us/op | 88.745 us/op | 1.13 |
| bytes32 toHexString | 296.00 ns/op | 292.00 ns/op | 1.01 |
| bytes32 Buffer.toString(hex) | 182.00 ns/op | 163.00 ns/op | 1.12 |
| bytes32 Buffer.toString(hex) from Uint8Array | 249.00 ns/op | 237.00 ns/op | 1.05 |
| bytes32 Buffer.toString(hex) + 0x | 182.00 ns/op | 166.00 ns/op | 1.10 |
| Return object 10000 times | 0.22520 ns/op | 0.21220 ns/op | 1.06 |
| Throw Error 10000 times | 3.6147 us/op | 3.3829 us/op | 1.07 |
| toHex | 102.07 ns/op | 98.014 ns/op | 1.04 |
| Buffer.from | 93.544 ns/op | 89.752 ns/op | 1.04 |
| shared Buffer | 62.097 ns/op | 63.822 ns/op | 0.97 |
| fastMsgIdFn sha256 / 200 bytes | 1.5500 us/op | 1.4600 us/op | 1.06 |
| fastMsgIdFn h32 xxhash / 200 bytes | 165.00 ns/op | 150.00 ns/op | 1.10 |
| fastMsgIdFn h64 xxhash / 200 bytes | 218.00 ns/op | 209.00 ns/op | 1.04 |
| fastMsgIdFn sha256 / 1000 bytes | 4.9800 us/op | 4.7100 us/op | 1.06 |
| fastMsgIdFn h32 xxhash / 1000 bytes | 256.00 ns/op | 241.00 ns/op | 1.06 |
| fastMsgIdFn h64 xxhash / 1000 bytes | 267.00 ns/op | 256.00 ns/op | 1.04 |
| fastMsgIdFn sha256 / 10000 bytes | 43.893 us/op | 41.641 us/op | 1.05 |
| fastMsgIdFn h32 xxhash / 10000 bytes | 1.3330 us/op | 1.2780 us/op | 1.04 |
| fastMsgIdFn h64 xxhash / 10000 bytes | 862.00 ns/op | 841.00 ns/op | 1.02 |
| send data - 1000 256B messages | 4.4061 ms/op | 4.5833 ms/op | 0.96 |
| send data - 1000 512B messages | 5.7595 ms/op | 5.4926 ms/op | 1.05 |
| send data - 1000 1024B messages | 6.1349 ms/op | 5.7289 ms/op | 1.07 |
| send data - 1000 1200B messages | 7.0070 ms/op | 6.3928 ms/op | 1.10 |
| send data - 1000 2048B messages | 18.204 ms/op | 12.096 ms/op | 1.50 |
| send data - 1000 4096B messages | 67.908 ms/op | 53.073 ms/op | 1.28 |
| send data - 1000 16384B messages | 463.95 ms/op | 337.64 ms/op | 1.37 |
| send data - 1000 65536B messages | 1.6312 s/op | 1.1146 s/op | 1.46 |
| enrSubnets - fastDeserialize 64 bits | 782.00 ns/op | 751.00 ns/op | 1.04 |
| enrSubnets - ssz BitVector 64 bits | 284.00 ns/op | 267.00 ns/op | 1.06 |
| enrSubnets - fastDeserialize 4 bits | 103.00 ns/op | 101.00 ns/op | 1.02 |
| enrSubnets - ssz BitVector 4 bits | 282.00 ns/op | 268.00 ns/op | 1.05 |
| prioritizePeers score -10:0 att 32-0.1 sync 2-0 | 223.55 us/op | 206.41 us/op | 1.08 |
| prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 | 255.15 us/op | 235.44 us/op | 1.08 |
| prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 | 373.01 us/op | 340.19 us/op | 1.10 |
| prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 | 680.67 us/op | 602.94 us/op | 1.13 |
| prioritizePeers score 0:0 att 64-1 sync 4-1 | 799.61 us/op | 695.72 us/op | 1.15 |
| array of 16000 items push then shift | 1.3599 us/op | 1.2866 us/op | 1.06 |
| LinkedList of 16000 items push then shift | 8.4420 ns/op | 6.8730 ns/op | 1.23 |
| array of 16000 items push then pop | 77.558 ns/op | 66.622 ns/op | 1.16 |
| LinkedList of 16000 items push then pop | 6.6760 ns/op | 5.9440 ns/op | 1.12 |
| array of 24000 items push then shift | 2.0388 us/op | 1.9030 us/op | 1.07 |
| LinkedList of 24000 items push then shift | 7.6080 ns/op | 6.6690 ns/op | 1.14 |
| array of 24000 items push then pop | 109.12 ns/op | 94.775 ns/op | 1.15 |
| LinkedList of 24000 items push then pop | 6.6580 ns/op | 5.9750 ns/op | 1.11 |
| intersect bitArray bitLen 8 | 4.9760 ns/op | 4.6960 ns/op | 1.06 |
| intersect array and set length 8 | 30.911 ns/op | 29.546 ns/op | 1.05 |
| intersect bitArray bitLen 128 | 24.936 ns/op | 23.934 ns/op | 1.04 |
| intersect array and set length 128 | 533.09 ns/op | 495.62 ns/op | 1.08 |
| bitArray.getTrueBitIndexes() bitLen 128 | 1.1530 us/op | 971.00 ns/op | 1.19 |
| bitArray.getTrueBitIndexes() bitLen 248 | 1.9480 us/op | 1.7240 us/op | 1.13 |
| bitArray.getTrueBitIndexes() bitLen 512 | 3.9830 us/op | 3.5660 us/op | 1.12 |
| Full columns - reconstruct all 6 blobs | 132.55 us/op | 112.06 us/op | 1.18 |
| Full columns - reconstruct half of the blobs out of 6 | 100.46 us/op | 62.559 us/op | 1.61 |
| Full columns - reconstruct single blob out of 6 | 37.089 us/op | 36.690 us/op | 1.01 |
| Half columns - reconstruct all 6 blobs | 418.25 ms/op | 392.39 ms/op | 1.07 |
| Half columns - reconstruct half of the blobs out of 6 | 210.62 ms/op | 194.85 ms/op | 1.08 |
| Half columns - reconstruct single blob out of 6 | 73.964 ms/op | 68.553 ms/op | 1.08 |
| Set add up to 64 items then delete first | 1.7183 us/op | 1.6743 us/op | 1.03 |
| OrderedSet add up to 64 items then delete first | 2.6353 us/op | 2.5369 us/op | 1.04 |
| Set add up to 64 items then delete last | 1.9738 us/op | 1.9367 us/op | 1.02 |
| OrderedSet add up to 64 items then delete last | 2.9715 us/op | 2.8008 us/op | 1.06 |
| Set add up to 64 items then delete middle | 1.9696 us/op | 1.9200 us/op | 1.03 |
| OrderedSet add up to 64 items then delete middle | 4.4731 us/op | 4.2991 us/op | 1.04 |
| Set add up to 128 items then delete first | 3.9441 us/op | 3.8459 us/op | 1.03 |
| OrderedSet add up to 128 items then delete first | 6.1125 us/op | 5.7834 us/op | 1.06 |
| Set add up to 128 items then delete last | 3.7754 us/op | 3.7476 us/op | 1.01 |
| OrderedSet add up to 128 items then delete last | 5.6921 us/op | 5.4552 us/op | 1.04 |
| Set add up to 128 items then delete middle | 3.7831 us/op | 3.6696 us/op | 1.03 |
| OrderedSet add up to 128 items then delete middle | 11.680 us/op | 11.253 us/op | 1.04 |
| Set add up to 256 items then delete first | 8.2890 us/op | 7.5473 us/op | 1.10 |
| OrderedSet add up to 256 items then delete first | 13.142 us/op | 11.925 us/op | 1.10 |
| Set add up to 256 items then delete last | 7.5545 us/op | 7.4801 us/op | 1.01 |
| OrderedSet add up to 256 items then delete last | 11.838 us/op | 11.336 us/op | 1.04 |
| Set add up to 256 items then delete middle | 7.7562 us/op | 7.2424 us/op | 1.07 |
| OrderedSet add up to 256 items then delete middle | 36.274 us/op | 34.757 us/op | 1.04 |
| runFastConfirmationRules vc:100000 bc:96 eq:0 | 5.2497 ms/op | 4.9622 ms/op | 1.06 |
| runFastConfirmationRules vc:600000 bc:96 eq:0 | 36.589 ms/op | 34.829 ms/op | 1.05 |
| runFastConfirmationRules vc:1000000 bc:96 eq:0 | 60.522 ms/op | 57.172 ms/op | 1.06 |
| runFastConfirmationRules vc:600000 bc:320 eq:0 | 36.237 ms/op | 34.692 ms/op | 1.04 |
| runFastConfirmationRules vc:100000 bc:96 eq:1000 | 1.3587 s/op | 1.0897 s/op | 1.25 |
| pass gossip attestations to forkchoice per slot | 2.5497 ms/op | 2.5593 ms/op | 1.00 |
| forkChoice updateHead vc 100000 bc 64 eq 0 | 474.69 us/op | 447.85 us/op | 1.06 |
| forkChoice updateHead vc 600000 bc 64 eq 0 | 2.7936 ms/op | 2.6317 ms/op | 1.06 |
| forkChoice updateHead vc 1000000 bc 64 eq 0 | 4.6361 ms/op | 4.3943 ms/op | 1.06 |
| forkChoice updateHead vc 600000 bc 320 eq 0 | 2.8381 ms/op | 2.6803 ms/op | 1.06 |
| forkChoice updateHead vc 600000 bc 1200 eq 0 | 2.9897 ms/op | 2.7279 ms/op | 1.10 |
| forkChoice updateHead vc 600000 bc 7200 eq 0 | 3.1081 ms/op | 3.0089 ms/op | 1.03 |
| forkChoice updateHead vc 600000 bc 64 eq 1000 | 2.8166 ms/op | 2.7078 ms/op | 1.04 |
| forkChoice updateHead vc 600000 bc 64 eq 10000 | 2.9820 ms/op | 2.7550 ms/op | 1.08 |
| forkChoice updateHead vc 600000 bc 64 eq 300000 | 6.9481 ms/op | 6.6388 ms/op | 1.05 |
| computeDeltas 1400000 validators 0% inactive | 13.997 ms/op | 13.290 ms/op | 1.05 |
| computeDeltas 1400000 validators 10% inactive | 12.782 ms/op | 12.482 ms/op | 1.02 |
| computeDeltas 1400000 validators 20% inactive | 12.010 ms/op | 11.619 ms/op | 1.03 |
| computeDeltas 1400000 validators 50% inactive | 9.7657 ms/op | 9.3103 ms/op | 1.05 |
| computeDeltas 2100000 validators 0% inactive | 20.090 ms/op | 19.561 ms/op | 1.03 |
| computeDeltas 2100000 validators 10% inactive | 19.148 ms/op | 17.988 ms/op | 1.06 |
| computeDeltas 2100000 validators 20% inactive | 18.036 ms/op | 17.535 ms/op | 1.03 |
| computeDeltas 2100000 validators 50% inactive | 14.638 ms/op | 13.680 ms/op | 1.07 |
| altair processAttestation - 250000 vs - 7PWei normalcase | 1.6750 ms/op | 1.7050 ms/op | 0.98 |
| altair processAttestation - 250000 vs - 7PWei worstcase | 2.4481 ms/op | 2.4994 ms/op | 0.98 |
| altair processAttestation - setStatus - 1/6 committees join | 106.56 us/op | 101.16 us/op | 1.05 |
| altair processAttestation - setStatus - 1/3 committees join | 208.65 us/op | 202.16 us/op | 1.03 |
| altair processAttestation - setStatus - 1/2 committees join | 295.46 us/op | 281.06 us/op | 1.05 |
| altair processAttestation - setStatus - 2/3 committees join | 383.38 us/op | 370.19 us/op | 1.04 |
| altair processAttestation - setStatus - 4/5 committees join | 529.70 us/op | 512.44 us/op | 1.03 |
| altair processAttestation - setStatus - 100% committees join | 633.74 us/op | 601.54 us/op | 1.05 |
| altair processBlock - 250000 vs - 7PWei normalcase | 3.1764 ms/op | 2.8397 ms/op | 1.12 |
| altair processBlock - 250000 vs - 7PWei normalcase hashState | 15.196 ms/op | 11.314 ms/op | 1.34 |
| altair processBlock - 250000 vs - 7PWei worstcase | 21.676 ms/op | 18.742 ms/op | 1.16 |
| altair processBlock - 250000 vs - 7PWei worstcase hashState | 41.748 ms/op | 38.269 ms/op | 1.09 |
| phase0 processBlock - 250000 vs - 7PWei normalcase | 1.3674 ms/op | 1.2984 ms/op | 1.05 |
| phase0 processBlock - 250000 vs - 7PWei worstcase | 17.981 ms/op | 17.332 ms/op | 1.04 |
| altair processEth1Data - 250000 vs - 7PWei normalcase | 315.32 us/op | 294.38 us/op | 1.07 |
| getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 | 5.9080 us/op | 3.6070 us/op | 1.64 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 | 28.734 us/op | 23.045 us/op | 1.25 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 | 7.6140 us/op | 6.1350 us/op | 1.24 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 | 5.2740 us/op | 3.6150 us/op | 1.46 |
| getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 | 96.762 us/op | 98.315 us/op | 0.98 |
| getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 | 1.4127 ms/op | 1.3511 ms/op | 1.05 |
| getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 | 1.8784 ms/op | 1.8043 ms/op | 1.04 |
| getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 | 1.8653 ms/op | 1.7746 ms/op | 1.05 |
| getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 | 3.7952 ms/op | 3.5217 ms/op | 1.08 |
| getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 | 2.1244 ms/op | 2.0242 ms/op | 1.05 |
| getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 | 4.0629 ms/op | 3.8673 ms/op | 1.05 |
| Tree 40 250000 create | 324.47 ms/op | 308.72 ms/op | 1.05 |
| Tree 40 250000 get(125000) | 106.80 ns/op | 99.066 ns/op | 1.08 |
| Tree 40 250000 set(125000) | 1.0855 us/op | 1.0680 us/op | 1.02 |
| Tree 40 250000 toArray() | 9.8718 ms/op | 9.4700 ms/op | 1.04 |
| Tree 40 250000 iterate all - toArray() + loop | 9.8169 ms/op | 10.071 ms/op | 0.97 |
| Tree 40 250000 iterate all - get(i) | 35.275 ms/op | 33.897 ms/op | 1.04 |
| Array 250000 create | 2.2257 ms/op | 2.0171 ms/op | 1.10 |
| Array 250000 clone - spread | 692.24 us/op | 648.03 us/op | 1.07 |
| Array 250000 get(125000) | 0.29600 ns/op | 0.28800 ns/op | 1.03 |
| Array 250000 set(125000) | 0.29700 ns/op | 0.30100 ns/op | 0.99 |
| Array 250000 iterate all - loop | 58.109 us/op | 55.464 us/op | 1.05 |
| phase0 afterProcessEpoch - 250000 vs - 7PWei | 38.839 ms/op | 37.797 ms/op | 1.03 |
| Array.fill - length 1000000 | 2.0927 ms/op | 1.8990 ms/op | 1.10 |
| Array push - length 1000000 | 8.5637 ms/op | 7.1925 ms/op | 1.19 |
| Array.get | 0.20928 ns/op | 0.20054 ns/op | 1.04 |
| Uint8Array.get | 0.25797 ns/op | 0.25027 ns/op | 1.03 |
| phase0 beforeProcessEpoch - 250000 vs - 7PWei | 12.301 ms/op | 13.033 ms/op | 0.94 |
| altair processEpoch - mainnet_e81889 | 272.16 ms/op | 245.85 ms/op | 1.11 |
| mainnet_e81889 - altair beforeProcessEpoch | 23.046 ms/op | 14.053 ms/op | 1.64 |
| mainnet_e81889 - altair processJustificationAndFinalization | 5.1470 us/op | 4.9080 us/op | 1.05 |
| mainnet_e81889 - altair processInactivityUpdates | 3.7358 ms/op | 3.5498 ms/op | 1.05 |
| mainnet_e81889 - altair processRewardsAndPenalties | 18.957 ms/op | 17.134 ms/op | 1.11 |
| mainnet_e81889 - altair processRegistryUpdates | 550.00 ns/op | 512.00 ns/op | 1.07 |
| mainnet_e81889 - altair processSlashings | 137.00 ns/op | 134.00 ns/op | 1.02 |
| mainnet_e81889 - altair processEth1DataReset | 132.00 ns/op | 124.00 ns/op | 1.06 |
| mainnet_e81889 - altair processEffectiveBalanceUpdates | 1.2239 ms/op | 1.7247 ms/op | 0.71 |
| mainnet_e81889 - altair processSlashingsReset | 717.00 ns/op | 691.00 ns/op | 1.04 |
| mainnet_e81889 - altair processRandaoMixesReset | 1.0970 us/op | 1.0580 us/op | 1.04 |
| mainnet_e81889 - altair processHistoricalRootsUpdate | 130.00 ns/op | 126.00 ns/op | 1.03 |
| mainnet_e81889 - altair processParticipationFlagUpdates | 433.00 ns/op | 508.00 ns/op | 0.85 |
| mainnet_e81889 - altair processSyncCommitteeUpdates | 111.00 ns/op | 103.00 ns/op | 1.08 |
| mainnet_e81889 - altair afterProcessEpoch | 41.832 ms/op | 40.252 ms/op | 1.04 |
| capella processEpoch - mainnet_e217614 | 793.25 ms/op | 835.54 ms/op | 0.95 |
| mainnet_e217614 - capella beforeProcessEpoch | 69.351 ms/op | 58.158 ms/op | 1.19 |
| mainnet_e217614 - capella processJustificationAndFinalization | 5.4650 us/op | 5.5080 us/op | 0.99 |
| mainnet_e217614 - capella processInactivityUpdates | 11.943 ms/op | 13.590 ms/op | 0.88 |
| mainnet_e217614 - capella processRewardsAndPenalties | 92.893 ms/op | 94.604 ms/op | 0.98 |
| mainnet_e217614 - capella processRegistryUpdates | 4.5270 us/op | 4.4830 us/op | 1.01 |
| mainnet_e217614 - capella processSlashings | 133.00 ns/op | 133.00 ns/op | 1.00 |
| mainnet_e217614 - capella processEth1DataReset | 128.00 ns/op | 128.00 ns/op | 1.00 |
| mainnet_e217614 - capella processEffectiveBalanceUpdates | 5.9757 ms/op | 7.0944 ms/op | 0.84 |
| mainnet_e217614 - capella processSlashingsReset | 676.00 ns/op | 689.00 ns/op | 0.98 |
| mainnet_e217614 - capella processRandaoMixesReset | 1.2450 us/op | 1.1910 us/op | 1.05 |
| mainnet_e217614 - capella processHistoricalRootsUpdate | 132.00 ns/op | 128.00 ns/op | 1.03 |
| mainnet_e217614 - capella processParticipationFlagUpdates | 426.00 ns/op | 432.00 ns/op | 0.99 |
| mainnet_e217614 - capella afterProcessEpoch | 108.47 ms/op | 111.73 ms/op | 0.97 |
| phase0 processEpoch - mainnet_e58758 | 258.97 ms/op | 281.80 ms/op | 0.92 |
| mainnet_e58758 - phase0 beforeProcessEpoch | 54.806 ms/op | 54.915 ms/op | 1.00 |
| mainnet_e58758 - phase0 processJustificationAndFinalization | 5.3600 us/op | 5.5380 us/op | 0.97 |
| mainnet_e58758 - phase0 processRewardsAndPenalties | 16.286 ms/op | 15.622 ms/op | 1.04 |
| mainnet_e58758 - phase0 processRegistryUpdates | 2.2730 us/op | 2.2700 us/op | 1.00 |
| mainnet_e58758 - phase0 processSlashings | 134.00 ns/op | 136.00 ns/op | 0.99 |
| mainnet_e58758 - phase0 processEth1DataReset | 128.00 ns/op | 125.00 ns/op | 1.02 |
| mainnet_e58758 - phase0 processEffectiveBalanceUpdates | 1.0140 ms/op | 1.0019 ms/op | 1.01 |
| mainnet_e58758 - phase0 processSlashingsReset | 1.3300 us/op | 884.00 ns/op | 1.50 |
| mainnet_e58758 - phase0 processRandaoMixesReset | 1.0470 us/op | 1.1550 us/op | 0.91 |
| mainnet_e58758 - phase0 processHistoricalRootsUpdate | 145.00 ns/op | 129.00 ns/op | 1.12 |
| mainnet_e58758 - phase0 processParticipationRecordUpdates | 990.00 ns/op | 1.1870 us/op | 0.83 |
| mainnet_e58758 - phase0 afterProcessEpoch | 33.024 ms/op | 34.342 ms/op | 0.96 |
| phase0 processEffectiveBalanceUpdates - 250000 normalcase | 1.2198 ms/op | 1.0179 ms/op | 1.20 |
| phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 1.6429 ms/op | 1.6334 ms/op | 1.01 |
| altair processInactivityUpdates - 250000 normalcase | 10.634 ms/op | 10.675 ms/op | 1.00 |
| altair processInactivityUpdates - 250000 worstcase | 10.699 ms/op | 11.357 ms/op | 0.94 |
| phase0 processRegistryUpdates - 250000 normalcase | 2.2360 us/op | 2.5520 us/op | 0.88 |
| phase0 processRegistryUpdates - 250000 badcase_full_deposits | 152.80 us/op | 147.03 us/op | 1.04 |
| phase0 processRegistryUpdates - 250000 worstcase 0.5 | 51.746 ms/op | 62.244 ms/op | 0.83 |
| altair processRewardsAndPenalties - 250000 normalcase | 14.416 ms/op | 13.869 ms/op | 1.04 |
| altair processRewardsAndPenalties - 250000 worstcase | 14.520 ms/op | 15.337 ms/op | 0.95 |
| phase0 getAttestationDeltas - 250000 normalcase | 5.4950 ms/op | 5.4385 ms/op | 1.01 |
| phase0 getAttestationDeltas - 250000 worstcase | 5.5496 ms/op | 5.9912 ms/op | 0.93 |
| phase0 processSlashings - 250000 worstcase | 63.073 us/op | 62.355 us/op | 1.01 |
| altair processSyncCommitteeUpdates - 250000 | 10.080 ms/op | 10.387 ms/op | 0.97 |
| BeaconState.hashTreeRoot - No change | 173.00 ns/op | 172.00 ns/op | 1.01 |
| BeaconState.hashTreeRoot - 1 full validator | 77.737 us/op | 72.347 us/op | 1.07 |
| BeaconState.hashTreeRoot - 32 full validator | 750.61 us/op | 850.03 us/op | 0.88 |
| BeaconState.hashTreeRoot - 512 full validator | 7.5171 ms/op | 7.6666 ms/op | 0.98 |
| BeaconState.hashTreeRoot - 1 validator.effectiveBalance | 90.562 us/op | 87.817 us/op | 1.03 |
| BeaconState.hashTreeRoot - 32 validator.effectiveBalance | 1.2498 ms/op | 1.1324 ms/op | 1.10 |
| BeaconState.hashTreeRoot - 512 validator.effectiveBalance | 15.722 ms/op | 16.611 ms/op | 0.95 |
| BeaconState.hashTreeRoot - 1 balances | 64.678 us/op | 86.681 us/op | 0.75 |
| BeaconState.hashTreeRoot - 32 balances | 619.20 us/op | 805.91 us/op | 0.77 |
| BeaconState.hashTreeRoot - 512 balances | 5.7132 ms/op | 5.9733 ms/op | 0.96 |
| BeaconState.hashTreeRoot - 250000 balances | 122.91 ms/op | 108.51 ms/op | 1.13 |
| aggregationBits - 2048 els - zipIndexesInBitList | 20.761 us/op | 19.879 us/op | 1.04 |
| regular array get 100000 times | 23.030 us/op | 23.404 us/op | 0.98 |
| wrappedArray get 100000 times | 22.983 us/op | 23.335 us/op | 0.98 |
| arrayWithProxy get 100000 times | 13.890 ms/op | 10.712 ms/op | 1.30 |
| ssz.Root.equals | 21.782 ns/op | 21.686 ns/op | 1.00 |
| byteArrayEquals | 21.515 ns/op | 21.530 ns/op | 1.00 |
| Buffer.compare | 9.3180 ns/op | 8.9580 ns/op | 1.04 |
| processSlot - 1 slots | 8.6630 us/op | 7.9750 us/op | 1.09 |
| processSlot - 32 slots | 1.7158 ms/op | 1.8668 ms/op | 0.92 |
| getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei | 4.4305 ms/op | 3.9693 ms/op | 1.12 |
| getCommitteeAssignments - req 1 vs - 250000 vc | 1.7012 ms/op | 1.6799 ms/op | 1.01 |
| getCommitteeAssignments - req 100 vs - 250000 vc | 3.4526 ms/op | 3.4313 ms/op | 1.01 |
| getCommitteeAssignments - req 1000 vs - 250000 vc | 3.6966 ms/op | 3.6797 ms/op | 1.00 |
| findModifiedValidators - 10000 modified validators | 798.55 ms/op | 744.57 ms/op | 1.07 |
| findModifiedValidators - 1000 modified validators | 478.79 ms/op | 646.44 ms/op | 0.74 |
| findModifiedValidators - 100 modified validators | 354.31 ms/op | 299.67 ms/op | 1.18 |
| findModifiedValidators - 10 modified validators | 297.99 ms/op | 245.77 ms/op | 1.21 |
| findModifiedValidators - 1 modified validators | 164.93 ms/op | 212.26 ms/op | 0.78 |
| findModifiedValidators - no difference | 148.31 ms/op | 200.97 ms/op | 0.74 |
| migrate state 1500000 validators, 3400 modified, 2000 new | 2.7486 s/op | 2.6453 s/op | 1.04 |
| RootCache.getBlockRootAtSlot - 250000 vs - 7PWei | 3.4400 ns/op | 3.8000 ns/op | 0.91 |
| state getBlockRootAtSlot - 250000 vs - 7PWei | 279.21 ns/op | 359.27 ns/op | 0.78 |
| computeProposerIndex 100000 validators | 1.3494 ms/op | 1.3134 ms/op | 1.03 |
| getNextSyncCommitteeIndices 1000 validators | 2.8872 ms/op | 2.8707 ms/op | 1.01 |
| getNextSyncCommitteeIndices 10000 validators | 25.512 ms/op | 25.065 ms/op | 1.02 |
| getNextSyncCommitteeIndices 100000 validators | 87.074 ms/op | 82.997 ms/op | 1.05 |
| computeProposers - vc 250000 | 547.51 us/op | 560.33 us/op | 0.98 |
| computeEpochShuffling - vc 250000 | 39.383 ms/op | 41.287 ms/op | 0.95 |
| getNextSyncCommittee - vc 250000 | 9.4061 ms/op | 9.5593 ms/op | 0.98 |
| nodejs block root to RootHex using toHex | 109.14 ns/op | 102.74 ns/op | 1.06 |
| nodejs block root to RootHex using toRootHex | 64.103 ns/op | 65.219 ns/op | 0.98 |
| nodejs fromHex(blob) | 796.41 us/op | 745.88 us/op | 1.07 |
| nodejs fromHexInto(blob) | 666.44 us/op | 661.40 us/op | 1.01 |
| nodejs block root to RootHex using the deprecated toHexString | 510.13 ns/op | 540.41 ns/op | 0.94 |
| nodejs byteArrayEquals 32 bytes (block root) | 25.709 ns/op | 25.925 ns/op | 0.99 |
| nodejs byteArrayEquals 48 bytes (pubkey) | 37.025 ns/op | 37.255 ns/op | 0.99 |
| nodejs byteArrayEquals 96 bytes (signature) | 38.516 ns/op | 37.709 ns/op | 1.02 |
| nodejs byteArrayEquals 1024 bytes | 44.823 ns/op | 47.529 ns/op | 0.94 |
| nodejs byteArrayEquals 131072 bytes (blob) | 1.7902 us/op | 1.7672 us/op | 1.01 |
| browser block root to RootHex using toHex | 146.82 ns/op | 145.83 ns/op | 1.01 |
| browser block root to RootHex using toRootHex | 131.08 ns/op | 131.28 ns/op | 1.00 |
| browser fromHex(blob) | 1.6119 ms/op | 1.6866 ms/op | 0.96 |
| browser fromHexInto(blob) | 666.96 us/op | 656.61 us/op | 1.02 |
| browser block root to RootHex using the deprecated toHexString | 511.77 ns/op | 367.07 ns/op | 1.39 |
| browser byteArrayEquals 32 bytes (block root) | 27.867 ns/op | 27.928 ns/op | 1.00 |
| browser byteArrayEquals 48 bytes (pubkey) | 39.274 ns/op | 39.410 ns/op | 1.00 |
| browser byteArrayEquals 96 bytes (signature) | 73.327 ns/op | 73.994 ns/op | 0.99 |
| browser byteArrayEquals 1024 bytes | 749.68 ns/op | 756.61 ns/op | 0.99 |
| browser byteArrayEquals 131072 bytes (blob) | 94.610 us/op | 94.782 us/op | 1.00 |
by benchmarkbot/action
Motivation
downloadByRange, it turned out the payload could be invalid, see glamsterdam-devnet-5: sync stalled due to invalid payload cached forever #9660Description
verified: booleanin the cache when populating it, right now onlygossipHandlerhas this astrue, otherwise it'sfalseCloses #9660
AI Assistance Disclosure