ChainSafe / lodestar

🌟 TypeScript Implementation of Ethereum Consensus
https://lodestar.chainsafe.io
Apache License 2.0
1.15k stars 283 forks source link

feat: include skipped partial withdrawal to `partialWithdrawalsCount` #7118

Open ensi321 opened 20 hours ago

ensi321 commented 20 hours ago

ethereum/consensus-specs#3943 fixes calculation of partial_withdrawals_count such that partial withdrawals can be dequeued correctly.

codecov[bot] commented 19 hours ago

Codecov Report

Attention: Patch coverage is 66.66667% with 1 line in your changes missing coverage. Please review.

Project coverage is 48.95%. Comparing base (fe7e21b) to head (bc972d4).

Additional details and impacted files ```diff @@ Coverage Diff @@ ## unstable #7118 +/- ## ========================================= Coverage 48.95% 48.95% ========================================= Files 597 597 Lines 39833 39834 +1 Branches 2058 2061 +3 ========================================= + Hits 19500 19501 +1 Misses 20292 20292 Partials 41 41 ```
github-actions[bot] commented 19 hours ago

Performance Report

✔️ no performance regression detected

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: 3450bc00e5e8b7d3e377223be994bbe970cf7361 Previous: fe7e21be0459dfba49ebe04e5a3efc1b1ee836d4 Ratio
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 56.375 us/op 175.07 us/op 0.32
BLS verify - blst 864.94 us/op 2.7948 ms/op 0.31
BLS verifyMultipleSignatures 8 - blst 1.6985 ms/op 7.0275 ms/op 0.24
BLS verifyMultipleSignatures 32 - blst 4.9515 ms/op 20.324 ms/op 0.24
BLS verifyMultipleSignatures 64 - blst 9.1497 ms/op 37.674 ms/op 0.24
BLS verifyMultipleSignatures 128 - blst 17.443 ms/op 55.985 ms/op 0.31
BLS verifyMultipleSignatures - same message - 3 - blst 912.32 us/op 3.4407 ms/op 0.27
BLS verifyMultipleSignatures - same message - 8 - blst 1.0668 ms/op 3.3593 ms/op 0.32
BLS verifyMultipleSignatures - same message - 32 - blst 1.7391 ms/op 6.0416 ms/op 0.29
BLS verifyMultipleSignatures - same message - 64 - blst 2.6180 ms/op 10.390 ms/op 0.25
BLS verifyMultipleSignatures - same message - 128 - blst 4.3641 ms/op 15.403 ms/op 0.28
BLS aggregatePubkeys 32 - blst 19.895 us/op 90.141 us/op 0.22
BLS aggregatePubkeys 128 - blst 69.868 us/op 270.70 us/op 0.26
Map get x1000 6.4010 ns/op 20.442 ns/op 0.31
send data - 1000 65536B messages 216.97 ms/op 1.1354 s/op 0.19
bitArray.getTrueBitIndexes() bitLen 128 1.6770 us/op 5.0550 us/op 0.33
bitArray.getTrueBitIndexes() bitLen 512 6.8780 us/op 21.514 us/op 0.32
Buffer.concat 32 items 897.00 ns/op 2.7940 us/op 0.32
Buffer.copy 1.6390 us/op 4.9950 us/op 0.33
getUint32 - manual 158.00 ns/op 515.00 ns/op 0.31
OrderedSet add up to 64 items then delete first 3.2941 us/op 10.273 us/op 0.32
OrderedSet add up to 128 items then delete first 7.4498 us/op 24.782 us/op 0.30
Set add up to 256 items then delete first 10.128 us/op 30.880 us/op 0.33
pass gossip attestations to forkchoice per slot 2.8077 ms/op 8.5510 ms/op 0.33
forkChoice updateHead vc 100000 bc 64 eq 0 476.40 us/op 1.4313 ms/op 0.33
forkChoice updateHead vc 600000 bc 64 eq 0 3.0246 ms/op 11.614 ms/op 0.26
forkChoice updateHead vc 600000 bc 64 eq 300000 14.782 ms/op 51.115 ms/op 0.29
altair processAttestation - setStatus - 2/3 committees join 302.11 us/op 967.23 us/op 0.31
altair processAttestation - setStatus - 4/5 committees join 462.46 us/op 1.5583 ms/op 0.30
Full benchmark results | Benchmark suite | Current: 3450bc00e5e8b7d3e377223be994bbe970cf7361 | Previous: fe7e21be0459dfba49ebe04e5a3efc1b1ee836d4 | Ratio | |-|-|-|-| | getPubkeys - index2pubkey - req 1000 vs - 250000 vc | 2.0221 ms/op | 4.7169 ms/op | 0.43 | | getPubkeys - validatorsArr - req 1000 vs - 250000 vc | 56.375 us/op | 175.07 us/op | 0.32 | | BLS verify - blst | 864.94 us/op | 2.7948 ms/op | 0.31 | | BLS verifyMultipleSignatures 3 - blst | 1.2458 ms/op | 3.7195 ms/op | 0.33 | | BLS verifyMultipleSignatures 8 - blst | 1.6985 ms/op | 7.0275 ms/op | 0.24 | | BLS verifyMultipleSignatures 32 - blst | 4.9515 ms/op | 20.324 ms/op | 0.24 | | BLS verifyMultipleSignatures 64 - blst | 9.1497 ms/op | 37.674 ms/op | 0.24 | | BLS verifyMultipleSignatures 128 - blst | 17.443 ms/op | 55.985 ms/op | 0.31 | | BLS deserializing 10000 signatures | 689.93 ms/op | 2.0264 s/op | 0.34 | | BLS deserializing 100000 signatures | 6.8293 s/op | 20.064 s/op | 0.34 | | BLS verifyMultipleSignatures - same message - 3 - blst | 912.32 us/op | 3.4407 ms/op | 0.27 | | BLS verifyMultipleSignatures - same message - 8 - blst | 1.0668 ms/op | 3.3593 ms/op | 0.32 | | BLS verifyMultipleSignatures - same message - 32 - blst | 1.7391 ms/op | 6.0416 ms/op | 0.29 | | BLS verifyMultipleSignatures - same message - 64 - blst | 2.6180 ms/op | 10.390 ms/op | 0.25 | | BLS verifyMultipleSignatures - same message - 128 - blst | 4.3641 ms/op | 15.403 ms/op | 0.28 | | BLS aggregatePubkeys 32 - blst | 19.895 us/op | 90.141 us/op | 0.22 | | BLS aggregatePubkeys 128 - blst | 69.868 us/op | 270.70 us/op | 0.26 | | notSeenSlots=1 numMissedVotes=1 numBadVotes=10 | 71.647 ms/op | 124.47 ms/op | 0.58 | | notSeenSlots=1 numMissedVotes=0 numBadVotes=4 | 58.921 ms/op | 170.72 ms/op | 0.35 | | notSeenSlots=2 numMissedVotes=1 numBadVotes=10 | 38.055 ms/op | 96.809 ms/op | 0.39 | | getSlashingsAndExits - default max | 120.80 us/op | 252.18 us/op | 0.48 | | getSlashingsAndExits - 2k | 318.11 us/op | 475.83 us/op | 0.67 | | proposeBlockBody type=full, size=empty | 5.8076 ms/op | 14.902 ms/op | 0.39 | | isKnown best case - 1 super set check | 406.00 ns/op | 1.1150 us/op | 0.36 | | isKnown normal case - 2 super set checks | 403.00 ns/op | 1.0330 us/op | 0.39 | | isKnown worse case - 16 super set checks | 409.00 ns/op | 1.0610 us/op | 0.39 | | InMemoryCheckpointStateCache - add get delete | 3.5350 us/op | 7.1060 us/op | 0.50 | | updateUnfinalizedPubkeys - updating 10 pubkeys | 1.3074 ms/op | 1.9958 ms/op | 0.66 | | updateUnfinalizedPubkeys - updating 100 pubkeys | 4.1286 ms/op | 11.103 ms/op | 0.37 | | updateUnfinalizedPubkeys - updating 1000 pubkeys | 54.362 ms/op | 124.50 ms/op | 0.44 | | validate api signedAggregateAndProof - struct | 1.5010 ms/op | 3.6943 ms/op | 0.41 | | validate gossip signedAggregateAndProof - struct | 1.4152 ms/op | 3.2083 ms/op | 0.44 | | validate gossip attestation - vc 640000 | 934.69 us/op | 1.8684 ms/op | 0.50 | | batch validate gossip attestation - vc 640000 - chunk 32 | 134.86 us/op | 305.70 us/op | 0.44 | | batch validate gossip attestation - vc 640000 - chunk 64 | 114.32 us/op | 283.73 us/op | 0.40 | | batch validate gossip attestation - vc 640000 - chunk 128 | 107.28 us/op | 277.69 us/op | 0.39 | | batch validate gossip attestation - vc 640000 - chunk 256 | 107.50 us/op | 225.92 us/op | 0.48 | | pickEth1Vote - no votes | 1.1554 ms/op | 2.6460 ms/op | 0.44 | | pickEth1Vote - max votes | 6.3970 ms/op | 12.424 ms/op | 0.51 | | pickEth1Vote - Eth1Data hashTreeRoot value x2048 | 18.261 ms/op | 27.255 ms/op | 0.67 | | pickEth1Vote - Eth1Data hashTreeRoot tree x2048 | 23.201 ms/op | 38.255 ms/op | 0.61 | | pickEth1Vote - Eth1Data fastSerialize value x2048 | 568.41 us/op | 1.0652 ms/op | 0.53 | | pickEth1Vote - Eth1Data fastSerialize tree x2048 | 4.2029 ms/op | 6.1004 ms/op | 0.69 | | bytes32 toHexString | 477.00 ns/op | 1.1570 us/op | 0.41 | | bytes32 Buffer.toString(hex) | 258.00 ns/op | 619.00 ns/op | 0.42 | | bytes32 Buffer.toString(hex) from Uint8Array | 372.00 ns/op | 918.00 ns/op | 0.41 | | bytes32 Buffer.toString(hex) + 0x | 257.00 ns/op | 571.00 ns/op | 0.45 | | Object access 1 prop | 0.13900 ns/op | 0.35300 ns/op | 0.39 | | Map access 1 prop | 0.13900 ns/op | 0.32000 ns/op | 0.43 | | Object get x1000 | 5.9370 ns/op | 17.779 ns/op | 0.33 | | Map get x1000 | 6.4010 ns/op | 20.442 ns/op | 0.31 | | Object set x1000 | 33.004 ns/op | 93.599 ns/op | 0.35 | | Map set x1000 | 22.442 ns/op | 60.696 ns/op | 0.37 | | Return object 10000 times | 0.30470 ns/op | 0.63430 ns/op | 0.48 | | Throw Error 10000 times | 3.3804 us/op | 8.1671 us/op | 0.41 | | toHex | 148.60 ns/op | 386.16 ns/op | 0.38 | | Buffer.from | 132.09 ns/op | 337.67 ns/op | 0.39 | | shared Buffer | 85.303 ns/op | 224.86 ns/op | 0.38 | | fastMsgIdFn sha256 / 200 bytes | 2.2160 us/op | 4.8410 us/op | 0.46 | | fastMsgIdFn h32 xxhash / 200 bytes | 220.00 ns/op | 491.00 ns/op | 0.45 | | fastMsgIdFn h64 xxhash / 200 bytes | 256.00 ns/op | 548.00 ns/op | 0.47 | | fastMsgIdFn sha256 / 1000 bytes | 7.5740 us/op | 16.999 us/op | 0.45 | | fastMsgIdFn h32 xxhash / 1000 bytes | 369.00 ns/op | 847.00 ns/op | 0.44 | | fastMsgIdFn h64 xxhash / 1000 bytes | 333.00 ns/op | 822.00 ns/op | 0.41 | | fastMsgIdFn sha256 / 10000 bytes | 63.726 us/op | 171.89 us/op | 0.37 | | fastMsgIdFn h32 xxhash / 10000 bytes | 1.9030 us/op | 4.3550 us/op | 0.44 | | fastMsgIdFn h64 xxhash / 10000 bytes | 1.2390 us/op | 2.6800 us/op | 0.46 | | send data - 1000 256B messages | 11.726 ms/op | 24.282 ms/op | 0.48 | | send data - 1000 512B messages | 16.578 ms/op | 34.865 ms/op | 0.48 | | send data - 1000 1024B messages | 28.113 ms/op | 51.093 ms/op | 0.55 | | send data - 1000 1200B messages | 25.288 ms/op | 46.894 ms/op | 0.54 | | send data - 1000 2048B messages | 30.611 ms/op | 40.346 ms/op | 0.76 | | send data - 1000 4096B messages | 31.050 ms/op | 60.136 ms/op | 0.52 | | send data - 1000 16384B messages | 68.558 ms/op | 170.07 ms/op | 0.40 | | send data - 1000 65536B messages | 216.97 ms/op | 1.1354 s/op | 0.19 | | enrSubnets - fastDeserialize 64 bits | 1.0050 us/op | 2.5970 us/op | 0.39 | | enrSubnets - ssz BitVector 64 bits | 344.00 ns/op | 883.00 ns/op | 0.39 | | enrSubnets - fastDeserialize 4 bits | 144.00 ns/op | 383.00 ns/op | 0.38 | | enrSubnets - ssz BitVector 4 bits | 347.00 ns/op | 964.00 ns/op | 0.36 | | prioritizePeers score -10:0 att 32-0.1 sync 2-0 | 144.92 us/op | 370.01 us/op | 0.39 | | prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 | 141.95 us/op | 412.69 us/op | 0.34 | | prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 | 242.60 us/op | 560.77 us/op | 0.43 | | prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 | 404.94 us/op | 911.92 us/op | 0.44 | | prioritizePeers score 0:0 att 64-1 sync 4-1 | 567.38 us/op | 1.2805 ms/op | 0.44 | | array of 16000 items push then shift | 1.6088 us/op | 3.3952 us/op | 0.47 | | LinkedList of 16000 items push then shift | 7.0240 ns/op | 16.667 ns/op | 0.42 | | array of 16000 items push then pop | 92.854 ns/op | 206.04 ns/op | 0.45 | | LinkedList of 16000 items push then pop | 6.9050 ns/op | 15.268 ns/op | 0.45 | | array of 24000 items push then shift | 2.3922 us/op | 4.0991 us/op | 0.58 | | LinkedList of 24000 items push then shift | 6.9560 ns/op | 14.376 ns/op | 0.48 | | array of 24000 items push then pop | 126.17 ns/op | 370.56 ns/op | 0.34 | | LinkedList of 24000 items push then pop | 6.7850 ns/op | 18.928 ns/op | 0.36 | | intersect bitArray bitLen 8 | 6.3370 ns/op | 21.200 ns/op | 0.30 | | intersect array and set length 8 | 42.915 ns/op | 110.89 ns/op | 0.39 | | intersect bitArray bitLen 128 | 29.369 ns/op | 78.282 ns/op | 0.38 | | intersect array and set length 128 | 644.47 ns/op | 2.2886 us/op | 0.28 | | bitArray.getTrueBitIndexes() bitLen 128 | 1.6770 us/op | 5.0550 us/op | 0.33 | | bitArray.getTrueBitIndexes() bitLen 248 | 2.8090 us/op | 8.2770 us/op | 0.34 | | bitArray.getTrueBitIndexes() bitLen 512 | 6.8780 us/op | 21.514 us/op | 0.32 | | Buffer.concat 32 items | 897.00 ns/op | 2.7940 us/op | 0.32 | | Uint8Array.set 32 items | 1.5010 us/op | 4.2090 us/op | 0.36 | | Buffer.copy | 1.6390 us/op | 4.9950 us/op | 0.33 | | Uint8Array.set - with subarray | 2.7300 us/op | 7.9070 us/op | 0.35 | | Uint8Array.set - without subarray | 1.5740 us/op | 3.2860 us/op | 0.48 | | getUint32 - dataview | 232.00 ns/op | 651.00 ns/op | 0.36 | | getUint32 - manual | 158.00 ns/op | 515.00 ns/op | 0.31 | | Set add up to 64 items then delete first | 2.1870 us/op | 6.3741 us/op | 0.34 | | OrderedSet add up to 64 items then delete first | 3.2941 us/op | 10.273 us/op | 0.32 | | Set add up to 64 items then delete last | 2.5285 us/op | 7.4399 us/op | 0.34 | | OrderedSet add up to 64 items then delete last | 3.8979 us/op | 8.6487 us/op | 0.45 | | Set add up to 64 items then delete middle | 2.5526 us/op | 6.1435 us/op | 0.42 | | OrderedSet add up to 64 items then delete middle | 5.2538 us/op | 11.537 us/op | 0.46 | | Set add up to 128 items then delete first | 4.9595 us/op | 13.941 us/op | 0.36 | | OrderedSet add up to 128 items then delete first | 7.4498 us/op | 24.782 us/op | 0.30 | | Set add up to 128 items then delete last | 5.0688 us/op | 15.192 us/op | 0.33 | | OrderedSet add up to 128 items then delete last | 7.7397 us/op | 21.894 us/op | 0.35 | | Set add up to 128 items then delete middle | 4.8975 us/op | 13.781 us/op | 0.36 | | OrderedSet add up to 128 items then delete middle | 13.909 us/op | 37.267 us/op | 0.37 | | Set add up to 256 items then delete first | 10.128 us/op | 30.880 us/op | 0.33 | | OrderedSet add up to 256 items then delete first | 15.303 us/op | 43.956 us/op | 0.35 | | Set add up to 256 items then delete last | 10.007 us/op | 25.945 us/op | 0.39 | | OrderedSet add up to 256 items then delete last | 15.614 us/op | 29.882 us/op | 0.52 | | Set add up to 256 items then delete middle | 9.8737 us/op | 19.261 us/op | 0.51 | | OrderedSet add up to 256 items then delete middle | 40.114 us/op | 76.914 us/op | 0.52 | | transfer serialized Status (84 B) | 1.4240 us/op | 2.2100 us/op | 0.64 | | copy serialized Status (84 B) | 1.1060 us/op | 1.9550 us/op | 0.57 | | transfer serialized SignedVoluntaryExit (112 B) | 1.4450 us/op | 2.3760 us/op | 0.61 | | copy serialized SignedVoluntaryExit (112 B) | 1.1410 us/op | 2.2190 us/op | 0.51 | | transfer serialized ProposerSlashing (416 B) | 1.4320 us/op | 4.0410 us/op | 0.35 | | copy serialized ProposerSlashing (416 B) | 1.5480 us/op | 4.2540 us/op | 0.36 | | transfer serialized Attestation (485 B) | 2.2630 us/op | 4.7790 us/op | 0.47 | | copy serialized Attestation (485 B) | 1.7380 us/op | 4.3660 us/op | 0.40 | | transfer serialized AttesterSlashing (33232 B) | 2.3170 us/op | 5.2030 us/op | 0.45 | | copy serialized AttesterSlashing (33232 B) | 5.3010 us/op | 23.559 us/op | 0.23 | | transfer serialized Small SignedBeaconBlock (128000 B) | 3.1350 us/op | 5.3950 us/op | 0.58 | | copy serialized Small SignedBeaconBlock (128000 B) | 14.696 us/op | 36.692 us/op | 0.40 | | transfer serialized Avg SignedBeaconBlock (200000 B) | 3.6220 us/op | 5.4930 us/op | 0.66 | | copy serialized Avg SignedBeaconBlock (200000 B) | 22.297 us/op | 133.25 us/op | 0.17 | | transfer serialized BlobsSidecar (524380 B) | 3.1740 us/op | 6.2350 us/op | 0.51 | | copy serialized BlobsSidecar (524380 B) | 93.282 us/op | 142.07 us/op | 0.66 | | transfer serialized Big SignedBeaconBlock (1000000 B) | 3.1100 us/op | 5.4780 us/op | 0.57 | | copy serialized Big SignedBeaconBlock (1000000 B) | 137.45 us/op | 246.93 us/op | 0.56 | | pass gossip attestations to forkchoice per slot | 2.8077 ms/op | 8.5510 ms/op | 0.33 | | forkChoice updateHead vc 100000 bc 64 eq 0 | 476.40 us/op | 1.4313 ms/op | 0.33 | | forkChoice updateHead vc 600000 bc 64 eq 0 | 3.0246 ms/op | 11.614 ms/op | 0.26 | | forkChoice updateHead vc 1000000 bc 64 eq 0 | 5.1614 ms/op | 13.358 ms/op | 0.39 | | forkChoice updateHead vc 600000 bc 320 eq 0 | 3.4231 ms/op | 8.8071 ms/op | 0.39 | | forkChoice updateHead vc 600000 bc 1200 eq 0 | 3.0149 ms/op | 7.8778 ms/op | 0.38 | | forkChoice updateHead vc 600000 bc 7200 eq 0 | 3.4508 ms/op | 7.3968 ms/op | 0.47 | | forkChoice updateHead vc 600000 bc 64 eq 1000 | 10.517 ms/op | 25.218 ms/op | 0.42 | | forkChoice updateHead vc 600000 bc 64 eq 10000 | 10.478 ms/op | 23.441 ms/op | 0.45 | | forkChoice updateHead vc 600000 bc 64 eq 300000 | 14.782 ms/op | 51.115 ms/op | 0.29 | | computeDeltas 500000 validators 300 proto nodes | 3.4348 ms/op | 6.8431 ms/op | 0.50 | | computeDeltas 500000 validators 1200 proto nodes | 3.4064 ms/op | 7.6924 ms/op | 0.44 | | computeDeltas 500000 validators 7200 proto nodes | 3.4489 ms/op | 8.1579 ms/op | 0.42 | | computeDeltas 750000 validators 300 proto nodes | 5.1793 ms/op | 11.312 ms/op | 0.46 | | computeDeltas 750000 validators 1200 proto nodes | 5.1539 ms/op | 13.694 ms/op | 0.38 | | computeDeltas 750000 validators 7200 proto nodes | 5.0748 ms/op | 13.090 ms/op | 0.39 | | computeDeltas 1400000 validators 300 proto nodes | 9.4170 ms/op | 21.890 ms/op | 0.43 | | computeDeltas 1400000 validators 1200 proto nodes | 9.6340 ms/op | 18.953 ms/op | 0.51 | | computeDeltas 1400000 validators 7200 proto nodes | 9.5160 ms/op | 17.632 ms/op | 0.54 | | computeDeltas 2100000 validators 300 proto nodes | 14.138 ms/op | 38.997 ms/op | 0.36 | | computeDeltas 2100000 validators 1200 proto nodes | 14.220 ms/op | 42.353 ms/op | 0.34 | | computeDeltas 2100000 validators 7200 proto nodes | 14.417 ms/op | 41.342 ms/op | 0.35 | | altair processAttestation - 250000 vs - 7PWei normalcase | 1.6365 ms/op | 4.3774 ms/op | 0.37 | | altair processAttestation - 250000 vs - 7PWei worstcase | 2.5205 ms/op | 5.8156 ms/op | 0.43 | | altair processAttestation - setStatus - 1/6 committees join | 85.431 us/op | 213.56 us/op | 0.40 | | altair processAttestation - setStatus - 1/3 committees join | 164.48 us/op | 461.57 us/op | 0.36 | | altair processAttestation - setStatus - 1/2 committees join | 236.24 us/op | 680.00 us/op | 0.35 | | altair processAttestation - setStatus - 2/3 committees join | 302.11 us/op | 967.23 us/op | 0.31 | | altair processAttestation - setStatus - 4/5 committees join | 462.46 us/op | 1.5583 ms/op | 0.30 | | altair processAttestation - setStatus - 100% committees join | 552.75 us/op | 1.3392 ms/op | 0.41 | | altair processBlock - 250000 vs - 7PWei normalcase | 3.6615 ms/op | 9.8911 ms/op | 0.37 | | altair processBlock - 250000 vs - 7PWei normalcase hashState | 25.904 ms/op | 52.769 ms/op | 0.49 | | altair processBlock - 250000 vs - 7PWei worstcase | 34.125 ms/op | 73.997 ms/op | 0.46 | | altair processBlock - 250000 vs - 7PWei worstcase hashState | 65.283 ms/op | 131.03 ms/op | 0.50 | | phase0 processBlock - 250000 vs - 7PWei normalcase | 1.6426 ms/op | 3.8590 ms/op | 0.43 | | phase0 processBlock - 250000 vs - 7PWei worstcase | 19.487 ms/op | 38.886 ms/op | 0.50 | | altair processEth1Data - 250000 vs - 7PWei normalcase | 286.17 us/op | 677.22 us/op | 0.42 | | getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 | 4.9010 us/op | 8.1650 us/op | 0.60 | | getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 | 26.413 us/op | 53.469 us/op | 0.49 | | getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 | 7.5850 us/op | 14.651 us/op | 0.52 | | getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 | 4.6550 us/op | 11.870 us/op | 0.39 | | getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 | 107.79 us/op | 211.22 us/op | 0.51 | | getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 | 997.07 us/op | 2.0662 ms/op | 0.48 | | getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 | 1.4302 ms/op | 2.8623 ms/op | 0.50 | | getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 | 1.4235 ms/op | 3.0193 ms/op | 0.47 | | getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 | 3.3647 ms/op | 7.1082 ms/op | 0.47 | | getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 | 1.4203 ms/op | 3.1089 ms/op | 0.46 | | getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 | 3.3552 ms/op | 7.3160 ms/op | 0.46 | | Tree 40 250000 create | 203.88 ms/op | 395.03 ms/op | 0.52 | | Tree 40 250000 get(125000) | 132.11 ns/op | 275.09 ns/op | 0.48 | | Tree 40 250000 set(125000) | 623.63 ns/op | 1.0792 us/op | 0.58 | | Tree 40 250000 toArray() | 14.402 ms/op | 22.791 ms/op | 0.63 | | Tree 40 250000 iterate all - toArray() + loop | 14.631 ms/op | 23.471 ms/op | 0.62 | | Tree 40 250000 iterate all - get(i) | 46.936 ms/op | 88.460 ms/op | 0.53 | | Array 250000 create | 2.7371 ms/op | 5.2210 ms/op | 0.52 | | Array 250000 clone - spread | 1.4607 ms/op | 2.4276 ms/op | 0.60 | | Array 250000 get(125000) | 0.38200 ns/op | 0.74200 ns/op | 0.51 | | Array 250000 set(125000) | 0.39400 ns/op | 0.83700 ns/op | 0.47 | | Array 250000 iterate all - loop | 76.642 us/op | 141.19 us/op | 0.54 | | phase0 afterProcessEpoch - 250000 vs - 7PWei | 87.895 ms/op | 184.92 ms/op | 0.48 | | Array.fill - length 1000000 | 3.5369 ms/op | 8.9082 ms/op | 0.40 | | Array push - length 1000000 | 15.883 ms/op | 43.679 ms/op | 0.36 | | Array.get | 0.26220 ns/op | 0.44581 ns/op | 0.59 | | Uint8Array.get | 0.42163 ns/op | 0.70910 ns/op | 0.59 | | phase0 beforeProcessEpoch - 250000 vs - 7PWei | 18.364 ms/op | 31.815 ms/op | 0.58 | | altair processEpoch - mainnet_e81889 | 309.97 ms/op | 473.43 ms/op | 0.65 | | mainnet_e81889 - altair beforeProcessEpoch | 18.120 ms/op | 30.342 ms/op | 0.60 | | mainnet_e81889 - altair processJustificationAndFinalization | 11.890 us/op | 23.129 us/op | 0.51 | | mainnet_e81889 - altair processInactivityUpdates | 5.0784 ms/op | 7.0594 ms/op | 0.72 | | mainnet_e81889 - altair processRewardsAndPenalties | 43.397 ms/op | 68.917 ms/op | 0.63 | | mainnet_e81889 - altair processRegistryUpdates | 1.5880 us/op | 2.8930 us/op | 0.55 | | mainnet_e81889 - altair processSlashings | 327.00 ns/op | 743.00 ns/op | 0.44 | | mainnet_e81889 - altair processEth1DataReset | 281.00 ns/op | 516.00 ns/op | 0.54 | | mainnet_e81889 - altair processEffectiveBalanceUpdates | 1.4062 ms/op | 2.0618 ms/op | 0.68 | | mainnet_e81889 - altair processSlashingsReset | 2.6870 us/op | 4.7750 us/op | 0.56 | | mainnet_e81889 - altair processRandaoMixesReset | 3.1160 us/op | 6.5870 us/op | 0.47 | | mainnet_e81889 - altair processHistoricalRootsUpdate | 297.00 ns/op | 839.00 ns/op | 0.35 | | mainnet_e81889 - altair processParticipationFlagUpdates | 1.5660 us/op | 2.4300 us/op | 0.64 | | mainnet_e81889 - altair processSyncCommitteeUpdates | 359.00 ns/op | 577.00 ns/op | 0.62 | | mainnet_e81889 - altair afterProcessEpoch | 88.637 ms/op | 139.25 ms/op | 0.64 | | capella processEpoch - mainnet_e217614 | 1.1245 s/op | 1.5813 s/op | 0.71 | | mainnet_e217614 - capella beforeProcessEpoch | 75.571 ms/op | 85.124 ms/op | 0.89 | | mainnet_e217614 - capella processJustificationAndFinalization | 12.903 us/op | 20.023 us/op | 0.64 | | mainnet_e217614 - capella processInactivityUpdates | 16.382 ms/op | 20.933 ms/op | 0.78 | | mainnet_e217614 - capella processRewardsAndPenalties | 209.74 ms/op | 295.58 ms/op | 0.71 | | mainnet_e217614 - capella processRegistryUpdates | 12.581 us/op | 17.168 us/op | 0.73 | | mainnet_e217614 - capella processSlashings | 347.00 ns/op | 559.00 ns/op | 0.62 | | mainnet_e217614 - capella processEth1DataReset | 317.00 ns/op | 508.00 ns/op | 0.62 | | mainnet_e217614 - capella processEffectiveBalanceUpdates | 11.823 ms/op | 16.758 ms/op | 0.71 | | mainnet_e217614 - capella processSlashingsReset | 2.9920 us/op | 11.492 us/op | 0.26 | | mainnet_e217614 - capella processRandaoMixesReset | 3.6410 us/op | 5.5460 us/op | 0.66 | | mainnet_e217614 - capella processHistoricalRootsUpdate | 305.00 ns/op | 760.00 ns/op | 0.40 | | mainnet_e217614 - capella processParticipationFlagUpdates | 1.7400 us/op | 2.3280 us/op | 0.75 | | mainnet_e217614 - capella afterProcessEpoch | 235.95 ms/op | 327.00 ms/op | 0.72 | | phase0 processEpoch - mainnet_e58758 | 358.59 ms/op | 421.81 ms/op | 0.85 | | mainnet_e58758 - phase0 beforeProcessEpoch | 74.396 ms/op | 85.921 ms/op | 0.87 | | mainnet_e58758 - phase0 processJustificationAndFinalization | 12.968 us/op | 16.611 us/op | 0.78 | | mainnet_e58758 - phase0 processRewardsAndPenalties | 32.368 ms/op | 38.127 ms/op | 0.85 | | mainnet_e58758 - phase0 processRegistryUpdates | 6.6680 us/op | 10.598 us/op | 0.63 | | mainnet_e58758 - phase0 processSlashings | 408.00 ns/op | 521.00 ns/op | 0.78 | | mainnet_e58758 - phase0 processEth1DataReset | 323.00 ns/op | 543.00 ns/op | 0.59 | | mainnet_e58758 - phase0 processEffectiveBalanceUpdates | 1.1929 ms/op | 1.9828 ms/op | 0.60 | | mainnet_e58758 - phase0 processSlashingsReset | 2.8660 us/op | 3.8650 us/op | 0.74 | | mainnet_e58758 - phase0 processRandaoMixesReset | 3.7800 us/op | 4.7540 us/op | 0.80 | | mainnet_e58758 - phase0 processHistoricalRootsUpdate | 301.00 ns/op | 631.00 ns/op | 0.48 | | mainnet_e58758 - phase0 processParticipationRecordUpdates | 2.8080 us/op | 4.1730 us/op | 0.67 | | mainnet_e58758 - phase0 afterProcessEpoch | 75.882 ms/op | 119.12 ms/op | 0.64 | | phase0 processEffectiveBalanceUpdates - 250000 normalcase | 1.4473 ms/op | 2.1000 ms/op | 0.69 | | phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 2.3008 ms/op | 3.6733 ms/op | 0.63 | | altair processInactivityUpdates - 250000 normalcase | 14.134 ms/op | 22.773 ms/op | 0.62 | | altair processInactivityUpdates - 250000 worstcase | 14.633 ms/op | 31.045 ms/op | 0.47 | | phase0 processRegistryUpdates - 250000 normalcase | 6.6190 us/op | 13.907 us/op | 0.48 | | phase0 processRegistryUpdates - 250000 badcase_full_deposits | 222.60 us/op | 520.16 us/op | 0.43 | | phase0 processRegistryUpdates - 250000 worstcase 0.5 | 102.81 ms/op | 201.15 ms/op | 0.51 | | altair processRewardsAndPenalties - 250000 normalcase | 40.106 ms/op | 55.927 ms/op | 0.72 | | altair processRewardsAndPenalties - 250000 worstcase | 33.736 ms/op | 66.958 ms/op | 0.50 | | phase0 getAttestationDeltas - 250000 normalcase | 7.4292 ms/op | 11.125 ms/op | 0.67 | | phase0 getAttestationDeltas - 250000 worstcase | 7.1784 ms/op | 12.691 ms/op | 0.57 | | phase0 processSlashings - 250000 worstcase | 74.705 us/op | 114.68 us/op | 0.65 | | altair processSyncCommitteeUpdates - 250000 | 116.76 ms/op | 205.88 ms/op | 0.57 | | BeaconState.hashTreeRoot - No change | 221.00 ns/op | 334.00 ns/op | 0.66 | | BeaconState.hashTreeRoot - 1 full validator | 126.68 us/op | 149.22 us/op | 0.85 | | BeaconState.hashTreeRoot - 32 full validator | 1.3881 ms/op | 1.4662 ms/op | 0.95 | | BeaconState.hashTreeRoot - 512 full validator | 14.751 ms/op | 16.344 ms/op | 0.90 | | BeaconState.hashTreeRoot - 1 validator.effectiveBalance | 129.28 us/op | 190.19 us/op | 0.68 | | BeaconState.hashTreeRoot - 32 validator.effectiveBalance | 1.8066 ms/op | 2.8136 ms/op | 0.64 | | BeaconState.hashTreeRoot - 512 validator.effectiveBalance | 22.830 ms/op | 34.316 ms/op | 0.67 | | BeaconState.hashTreeRoot - 1 balances | 110.90 us/op | 142.21 us/op | 0.78 | | BeaconState.hashTreeRoot - 32 balances | 1.1197 ms/op | 1.3937 ms/op | 0.80 | | BeaconState.hashTreeRoot - 512 balances | 11.416 ms/op | 15.254 ms/op | 0.75 | | BeaconState.hashTreeRoot - 250000 balances | 179.73 ms/op | 239.76 ms/op | 0.75 | | aggregationBits - 2048 els - zipIndexesInBitList | 22.260 us/op | 39.369 us/op | 0.57 | | byteArrayEquals 32 | 51.419 ns/op | 87.034 ns/op | 0.59 | | Buffer.compare 32 | 16.588 ns/op | 30.328 ns/op | 0.55 | | byteArrayEquals 1024 | 1.5205 us/op | 2.3244 us/op | 0.65 | | Buffer.compare 1024 | 24.509 ns/op | 41.134 ns/op | 0.60 | | byteArrayEquals 16384 | 24.218 us/op | 38.448 us/op | 0.63 | | Buffer.compare 16384 | 188.89 ns/op | 330.04 ns/op | 0.57 | | byteArrayEquals 123687377 | 190.44 ms/op | 325.11 ms/op | 0.59 | | Buffer.compare 123687377 | 6.3264 ms/op | 9.5798 ms/op | 0.66 | | byteArrayEquals 32 - diff last byte | 52.962 ns/op | 127.55 ns/op | 0.42 | | Buffer.compare 32 - diff last byte | 17.318 ns/op | 43.380 ns/op | 0.40 | | byteArrayEquals 1024 - diff last byte | 1.5920 us/op | 3.5043 us/op | 0.45 | | Buffer.compare 1024 - diff last byte | 25.278 ns/op | 54.528 ns/op | 0.46 | | byteArrayEquals 16384 - diff last byte | 25.301 us/op | 55.163 us/op | 0.46 | | Buffer.compare 16384 - diff last byte | 209.14 ns/op | 390.36 ns/op | 0.54 | | byteArrayEquals 123687377 - diff last byte | 191.63 ms/op | 382.41 ms/op | 0.50 | | Buffer.compare 123687377 - diff last byte | 6.9148 ms/op | 8.9067 ms/op | 0.78 | | byteArrayEquals 32 - random bytes | 5.0800 ns/op | 9.7980 ns/op | 0.52 | | Buffer.compare 32 - random bytes | 16.876 ns/op | 33.231 ns/op | 0.51 | | byteArrayEquals 1024 - random bytes | 5.1360 ns/op | 10.096 ns/op | 0.51 | | Buffer.compare 1024 - random bytes | 17.013 ns/op | 37.940 ns/op | 0.45 | | byteArrayEquals 16384 - random bytes | 5.0830 ns/op | 10.579 ns/op | 0.48 | | Buffer.compare 16384 - random bytes | 16.971 ns/op | 36.006 ns/op | 0.47 | | byteArrayEquals 123687377 - random bytes | 6.6200 ns/op | 13.810 ns/op | 0.48 | | Buffer.compare 123687377 - random bytes | 18.350 ns/op | 46.570 ns/op | 0.39 | | regular array get 100000 times | 38.455 us/op | 80.143 us/op | 0.48 | | wrappedArray get 100000 times | 32.932 us/op | 59.339 us/op | 0.55 | | arrayWithProxy get 100000 times | 12.891 ms/op | 35.531 ms/op | 0.36 | | ssz.Root.equals | 45.626 ns/op | 85.888 ns/op | 0.53 | | byteArrayEquals | 45.031 ns/op | 81.313 ns/op | 0.55 | | Buffer.compare | 10.238 ns/op | 23.257 ns/op | 0.44 | | shuffle list - 16384 els | 6.2629 ms/op | 11.350 ms/op | 0.55 | | shuffle list - 250000 els | 89.551 ms/op | 169.03 ms/op | 0.53 | | processSlot - 1 slots | 10.969 us/op | 27.146 us/op | 0.40 | | processSlot - 32 slots | 2.1194 ms/op | 4.7410 ms/op | 0.45 | | getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei | 34.095 ms/op | 69.701 ms/op | 0.49 | | getCommitteeAssignments - req 1 vs - 250000 vc | 2.1339 ms/op | 4.2035 ms/op | 0.51 | | getCommitteeAssignments - req 100 vs - 250000 vc | 4.2146 ms/op | 7.3561 ms/op | 0.57 | | getCommitteeAssignments - req 1000 vs - 250000 vc | 4.4718 ms/op | 8.4647 ms/op | 0.53 | | findModifiedValidators - 10000 modified validators | 246.67 ms/op | 584.15 ms/op | 0.42 | | findModifiedValidators - 1000 modified validators | 158.42 ms/op | 455.67 ms/op | 0.35 | | findModifiedValidators - 100 modified validators | 145.65 ms/op | 402.69 ms/op | 0.36 | | findModifiedValidators - 10 modified validators | 143.45 ms/op | 421.23 ms/op | 0.34 | | findModifiedValidators - 1 modified validators | 139.87 ms/op | 393.25 ms/op | 0.36 | | findModifiedValidators - no difference | 144.68 ms/op | 384.05 ms/op | 0.38 | | compare ViewDUs | 2.8968 s/op | 5.4231 s/op | 0.53 | | compare each validator Uint8Array | 861.13 ms/op | 2.5755 s/op | 0.33 | | compare ViewDU to Uint8Array | 948.73 ms/op | 2.0990 s/op | 0.45 | | migrate state 1000000 validators, 24 modified, 0 new | 808.07 ms/op | 1.2529 s/op | 0.64 | | migrate state 1000000 validators, 1700 modified, 1000 new | 1.0532 s/op | 1.3325 s/op | 0.79 | | migrate state 1000000 validators, 3400 modified, 2000 new | 1.2232 s/op | 1.5773 s/op | 0.78 | | migrate state 1500000 validators, 24 modified, 0 new | 880.23 ms/op | 1.0498 s/op | 0.84 | | migrate state 1500000 validators, 1700 modified, 1000 new | 1.1044 s/op | 1.2457 s/op | 0.89 | | migrate state 1500000 validators, 3400 modified, 2000 new | 1.2839 s/op | 1.4443 s/op | 0.89 | | RootCache.getBlockRootAtSlot - 250000 vs - 7PWei | 4.1700 ns/op | 4.5100 ns/op | 0.92 | | state getBlockRootAtSlot - 250000 vs - 7PWei | 775.13 ns/op | 726.73 ns/op | 1.07 | | computeProposers - vc 250000 | 7.1590 ms/op | 7.0528 ms/op | 1.02 | | computeEpochShuffling - vc 250000 | 90.918 ms/op | 97.492 ms/op | 0.93 | | getNextSyncCommittee - vc 250000 | 130.07 ms/op | 127.24 ms/op | 1.02 | | computeSigningRoot for AttestationData | 19.489 us/op | 25.947 us/op | 0.75 | | hash AttestationData serialized data then Buffer.toString(base64) | 1.5396 us/op | 1.6844 us/op | 0.91 | | toHexString serialized data | 846.32 ns/op | 983.71 ns/op | 0.86 | | Buffer.toString(base64) | 166.93 ns/op | 194.73 ns/op | 0.86 | | nodejs block root to RootHex using toHex | 147.14 ns/op | 161.78 ns/op | 0.91 | | nodejs block root to RootHex using toRootHex | 95.352 ns/op | 99.962 ns/op | 0.95 | | browser block root to RootHex using the deprecated toHexString | 228.91 ns/op | 246.85 ns/op | 0.93 | | browser block root to RootHex using toHex | 182.91 ns/op | 190.53 ns/op | 0.96 | | browser block root to RootHex using toRootHex | 162.94 ns/op | 172.49 ns/op | 0.94 |

by benchmarkbot/action