-
-
Notifications
You must be signed in to change notification settings - Fork 299
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: implement EIP-7742 #7232
Draft
ensi321
wants to merge
2
commits into
unstable
Choose a base branch
from
nc/eip7742
base: unstable
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
feat: implement EIP-7742 #7232
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## unstable #7232 +/- ##
============================================
- Coverage 49.08% 49.08% -0.01%
============================================
Files 600 600
Lines 40241 40242 +1
Branches 2110 2103 -7
============================================
- Hits 19753 19752 -1
- Misses 20450 20452 +2
Partials 38 38
|
|
Benchmark suite | Current: 3ea1cc9 | Previous: 25c2ee5 | Ratio |
---|---|---|---|
findModifiedValidators - 1000 modified validators | 539.68 ms/op | 165.93 ms/op | 3.25 |
findModifiedValidators - 1 modified validators | 425.03 ms/op | 137.65 ms/op | 3.09 |
Full benchmark results
Benchmark suite | Current: 3ea1cc9 | Previous: 25c2ee5 | Ratio |
---|---|---|---|
getPubkeys - index2pubkey - req 1000 vs - 250000 vc | 2.1895 ms/op | 1.9392 ms/op | 1.13 |
getPubkeys - validatorsArr - req 1000 vs - 250000 vc | 72.622 us/op | 43.709 us/op | 1.66 |
BLS verify - blst | 1.0646 ms/op | 758.45 us/op | 1.40 |
BLS verifyMultipleSignatures 3 - blst | 1.5953 ms/op | 1.1392 ms/op | 1.40 |
BLS verifyMultipleSignatures 8 - blst | 2.1959 ms/op | 1.6111 ms/op | 1.36 |
BLS verifyMultipleSignatures 32 - blst | 6.3061 ms/op | 4.7233 ms/op | 1.34 |
BLS verifyMultipleSignatures 64 - blst | 10.860 ms/op | 8.8395 ms/op | 1.23 |
BLS verifyMultipleSignatures 128 - blst | 19.944 ms/op | 16.762 ms/op | 1.19 |
BLS deserializing 10000 signatures | 727.12 ms/op | 667.45 ms/op | 1.09 |
BLS deserializing 100000 signatures | 7.2878 s/op | 6.8311 s/op | 1.07 |
BLS verifyMultipleSignatures - same message - 3 - blst | 1.1036 ms/op | 941.34 us/op | 1.17 |
BLS verifyMultipleSignatures - same message - 8 - blst | 1.1611 ms/op | 1.0598 ms/op | 1.10 |
BLS verifyMultipleSignatures - same message - 32 - blst | 1.8655 ms/op | 1.7221 ms/op | 1.08 |
BLS verifyMultipleSignatures - same message - 64 - blst | 2.8557 ms/op | 2.6352 ms/op | 1.08 |
BLS verifyMultipleSignatures - same message - 128 - blst | 4.7652 ms/op | 4.4194 ms/op | 1.08 |
BLS aggregatePubkeys 32 - blst | 21.411 us/op | 19.713 us/op | 1.09 |
BLS aggregatePubkeys 128 - blst | 73.898 us/op | 70.130 us/op | 1.05 |
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 | 82.219 ms/op | 52.783 ms/op | 1.56 |
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 | 62.303 ms/op | 61.743 ms/op | 1.01 |
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 | 53.240 ms/op | 38.793 ms/op | 1.37 |
getSlashingsAndExits - default max | 136.76 us/op | 98.766 us/op | 1.38 |
getSlashingsAndExits - 2k | 383.98 us/op | 350.39 us/op | 1.10 |
proposeBlockBody type=full, size=empty | 7.4146 ms/op | 6.5631 ms/op | 1.13 |
isKnown best case - 1 super set check | 637.00 ns/op | 329.00 ns/op | 1.94 |
isKnown normal case - 2 super set checks | 552.00 ns/op | 336.00 ns/op | 1.64 |
isKnown worse case - 16 super set checks | 517.00 ns/op | 303.00 ns/op | 1.71 |
InMemoryCheckpointStateCache - add get delete | 3.8340 us/op | 3.0060 us/op | 1.28 |
updateUnfinalizedPubkeys - updating 10 pubkeys | 623.50 us/op | 968.09 us/op | 0.64 |
updateUnfinalizedPubkeys - updating 100 pubkeys | 4.7886 ms/op | 3.6743 ms/op | 1.30 |
updateUnfinalizedPubkeys - updating 1000 pubkeys | 62.840 ms/op | 52.970 ms/op | 1.19 |
validate api signedAggregateAndProof - struct | 1.7956 ms/op | 1.3824 ms/op | 1.30 |
validate gossip signedAggregateAndProof - struct | 1.6538 ms/op | 1.4387 ms/op | 1.15 |
batch validate gossip attestation - vc 640000 - chunk 32 | 153.42 us/op | 123.57 us/op | 1.24 |
batch validate gossip attestation - vc 640000 - chunk 64 | 136.19 us/op | 108.26 us/op | 1.26 |
batch validate gossip attestation - vc 640000 - chunk 128 | 132.39 us/op | 109.69 us/op | 1.21 |
batch validate gossip attestation - vc 640000 - chunk 256 | 129.00 us/op | 103.58 us/op | 1.25 |
pickEth1Vote - no votes | 1.1991 ms/op | 1.1594 ms/op | 1.03 |
pickEth1Vote - max votes | 11.758 ms/op | 7.0794 ms/op | 1.66 |
pickEth1Vote - Eth1Data hashTreeRoot value x2048 | 17.043 ms/op | 17.201 ms/op | 0.99 |
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 | 28.294 ms/op | 22.483 ms/op | 1.26 |
pickEth1Vote - Eth1Data fastSerialize value x2048 | 632.33 us/op | 539.55 us/op | 1.17 |
pickEth1Vote - Eth1Data fastSerialize tree x2048 | 4.9959 ms/op | 5.0929 ms/op | 0.98 |
bytes32 toHexString | 636.00 ns/op | 435.00 ns/op | 1.46 |
bytes32 Buffer.toString(hex) | 280.00 ns/op | 255.00 ns/op | 1.10 |
bytes32 Buffer.toString(hex) from Uint8Array | 483.00 ns/op | 358.00 ns/op | 1.35 |
bytes32 Buffer.toString(hex) + 0x | 284.00 ns/op | 251.00 ns/op | 1.13 |
Object access 1 prop | 0.19200 ns/op | 0.14000 ns/op | 1.37 |
Map access 1 prop | 0.15300 ns/op | 0.13200 ns/op | 1.16 |
Object get x1000 | 6.4810 ns/op | 5.8530 ns/op | 1.11 |
Map get x1000 | 6.9720 ns/op | 6.3010 ns/op | 1.11 |
Object set x1000 | 48.257 ns/op | 45.077 ns/op | 1.07 |
Map set x1000 | 31.494 ns/op | 28.940 ns/op | 1.09 |
Return object 10000 times | 0.33360 ns/op | 0.30030 ns/op | 1.11 |
Throw Error 10000 times | 3.5570 us/op | 3.3739 us/op | 1.05 |
toHex | 178.87 ns/op | 176.27 ns/op | 1.01 |
Buffer.from | 167.82 ns/op | 163.55 ns/op | 1.03 |
shared Buffer | 101.25 ns/op | 103.34 ns/op | 0.98 |
fastMsgIdFn sha256 / 200 bytes | 2.5100 us/op | 2.3440 us/op | 1.07 |
fastMsgIdFn h32 xxhash / 200 bytes | 290.00 ns/op | 287.00 ns/op | 1.01 |
fastMsgIdFn h64 xxhash / 200 bytes | 287.00 ns/op | 288.00 ns/op | 1.00 |
fastMsgIdFn sha256 / 1000 bytes | 7.8680 us/op | 7.4140 us/op | 1.06 |
fastMsgIdFn h32 xxhash / 1000 bytes | 440.00 ns/op | 414.00 ns/op | 1.06 |
fastMsgIdFn h64 xxhash / 1000 bytes | 362.00 ns/op | 351.00 ns/op | 1.03 |
fastMsgIdFn sha256 / 10000 bytes | 68.333 us/op | 64.026 us/op | 1.07 |
fastMsgIdFn h32 xxhash / 10000 bytes | 2.0280 us/op | 1.9210 us/op | 1.06 |
fastMsgIdFn h64 xxhash / 10000 bytes | 1.3120 us/op | 1.2330 us/op | 1.06 |
send data - 1000 256B messages | 16.771 ms/op | 13.525 ms/op | 1.24 |
send data - 1000 512B messages | 19.630 ms/op | 17.269 ms/op | 1.14 |
send data - 1000 1024B messages | 29.721 ms/op | 27.303 ms/op | 1.09 |
send data - 1000 1200B messages | 28.960 ms/op | 19.474 ms/op | 1.49 |
send data - 1000 2048B messages | 37.892 ms/op | 31.897 ms/op | 1.19 |
send data - 1000 4096B messages | 35.295 ms/op | 31.012 ms/op | 1.14 |
send data - 1000 16384B messages | 78.491 ms/op | 67.051 ms/op | 1.17 |
send data - 1000 65536B messages | 235.52 ms/op | 199.23 ms/op | 1.18 |
enrSubnets - fastDeserialize 64 bits | 1.1720 us/op | 1.0980 us/op | 1.07 |
enrSubnets - ssz BitVector 64 bits | 404.00 ns/op | 372.00 ns/op | 1.09 |
enrSubnets - fastDeserialize 4 bits | 185.00 ns/op | 162.00 ns/op | 1.14 |
enrSubnets - ssz BitVector 4 bits | 467.00 ns/op | 372.00 ns/op | 1.26 |
prioritizePeers score -10:0 att 32-0.1 sync 2-0 | 218.28 us/op | 152.48 us/op | 1.43 |
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 | 194.09 us/op | 152.39 us/op | 1.27 |
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 | 300.78 us/op | 246.72 us/op | 1.22 |
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 | 487.74 us/op | 414.05 us/op | 1.18 |
prioritizePeers score 0:0 att 64-1 sync 4-1 | 806.15 us/op | 601.56 us/op | 1.34 |
array of 16000 items push then shift | 1.7580 us/op | 1.6888 us/op | 1.04 |
LinkedList of 16000 items push then shift | 7.9480 ns/op | 7.6010 ns/op | 1.05 |
array of 16000 items push then pop | 144.40 ns/op | 125.49 ns/op | 1.15 |
LinkedList of 16000 items push then pop | 7.8670 ns/op | 7.4100 ns/op | 1.06 |
array of 24000 items push then shift | 2.6193 us/op | 2.4679 us/op | 1.06 |
LinkedList of 24000 items push then shift | 8.0900 ns/op | 7.6400 ns/op | 1.06 |
array of 24000 items push then pop | 198.62 ns/op | 166.54 ns/op | 1.19 |
LinkedList of 24000 items push then pop | 7.8000 ns/op | 7.4470 ns/op | 1.05 |
intersect bitArray bitLen 8 | 7.0450 ns/op | 6.5870 ns/op | 1.07 |
intersect array and set length 8 | 62.082 ns/op | 46.634 ns/op | 1.33 |
intersect bitArray bitLen 128 | 31.729 ns/op | 29.705 ns/op | 1.07 |
intersect array and set length 128 | 887.45 ns/op | 687.28 ns/op | 1.29 |
bitArray.getTrueBitIndexes() bitLen 128 | 2.3330 us/op | 1.7350 us/op | 1.34 |
bitArray.getTrueBitIndexes() bitLen 248 | 3.8880 us/op | 3.5170 us/op | 1.11 |
bitArray.getTrueBitIndexes() bitLen 512 | 9.0100 us/op | 7.1450 us/op | 1.26 |
Buffer.concat 32 items | 1.0750 us/op | 974.00 ns/op | 1.10 |
Uint8Array.set 32 items | 1.9830 us/op | 1.6920 us/op | 1.17 |
Buffer.copy | 2.0780 us/op | 1.9060 us/op | 1.09 |
Uint8Array.set - with subarray | 3.1600 us/op | 2.8260 us/op | 1.12 |
Uint8Array.set - without subarray | 1.9430 us/op | 1.5680 us/op | 1.24 |
getUint32 - dataview | 304.00 ns/op | 264.00 ns/op | 1.15 |
getUint32 - manual | 230.00 ns/op | 172.00 ns/op | 1.34 |
Set add up to 64 items then delete first | 3.0031 us/op | 2.2436 us/op | 1.34 |
OrderedSet add up to 64 items then delete first | 4.1393 us/op | 3.4037 us/op | 1.22 |
Set add up to 64 items then delete last | 3.1308 us/op | 2.5686 us/op | 1.22 |
OrderedSet add up to 64 items then delete last | 4.3279 us/op | 4.0455 us/op | 1.07 |
Set add up to 64 items then delete middle | 3.8066 us/op | 2.6041 us/op | 1.46 |
OrderedSet add up to 64 items then delete middle | 6.7808 us/op | 5.5001 us/op | 1.23 |
Set add up to 128 items then delete first | 6.5281 us/op | 5.2212 us/op | 1.25 |
OrderedSet add up to 128 items then delete first | 9.1671 us/op | 7.4580 us/op | 1.23 |
Set add up to 128 items then delete last | 5.4890 us/op | 5.4177 us/op | 1.01 |
OrderedSet add up to 128 items then delete last | 7.9142 us/op | 7.9275 us/op | 1.00 |
Set add up to 128 items then delete middle | 6.3056 us/op | 4.9760 us/op | 1.27 |
OrderedSet add up to 128 items then delete middle | 17.947 us/op | 13.781 us/op | 1.30 |
Set add up to 256 items then delete first | 13.208 us/op | 10.782 us/op | 1.23 |
OrderedSet add up to 256 items then delete first | 18.278 us/op | 15.661 us/op | 1.17 |
Set add up to 256 items then delete last | 12.078 us/op | 10.499 us/op | 1.15 |
OrderedSet add up to 256 items then delete last | 17.457 us/op | 15.875 us/op | 1.10 |
Set add up to 256 items then delete middle | 11.981 us/op | 10.205 us/op | 1.17 |
OrderedSet add up to 256 items then delete middle | 44.717 us/op | 40.557 us/op | 1.10 |
transfer serialized Status (84 B) | 1.5290 us/op | 1.3640 us/op | 1.12 |
copy serialized Status (84 B) | 1.3040 us/op | 1.2390 us/op | 1.05 |
transfer serialized SignedVoluntaryExit (112 B) | 1.9540 us/op | 1.6320 us/op | 1.20 |
copy serialized SignedVoluntaryExit (112 B) | 1.4760 us/op | 1.3280 us/op | 1.11 |
transfer serialized ProposerSlashing (416 B) | 2.7610 us/op | 1.8810 us/op | 1.47 |
copy serialized ProposerSlashing (416 B) | 2.9230 us/op | 1.9410 us/op | 1.51 |
transfer serialized Attestation (485 B) | 2.5590 us/op | 1.8700 us/op | 1.37 |
copy serialized Attestation (485 B) | 2.8380 us/op | 1.8110 us/op | 1.57 |
transfer serialized AttesterSlashing (33232 B) | 3.3350 us/op | 2.2660 us/op | 1.47 |
copy serialized AttesterSlashing (33232 B) | 8.2950 us/op | 5.4710 us/op | 1.52 |
transfer serialized Small SignedBeaconBlock (128000 B) | 3.4360 us/op | 3.2060 us/op | 1.07 |
copy serialized Small SignedBeaconBlock (128000 B) | 22.642 us/op | 19.032 us/op | 1.19 |
transfer serialized Avg SignedBeaconBlock (200000 B) | 5.2330 us/op | 4.5530 us/op | 1.15 |
copy serialized Avg SignedBeaconBlock (200000 B) | 29.548 us/op | 27.905 us/op | 1.06 |
transfer serialized BlobsSidecar (524380 B) | 4.9960 us/op | 3.1540 us/op | 1.58 |
copy serialized BlobsSidecar (524380 B) | 124.78 us/op | 82.555 us/op | 1.51 |
transfer serialized Big SignedBeaconBlock (1000000 B) | 4.4990 us/op | 2.6440 us/op | 1.70 |
copy serialized Big SignedBeaconBlock (1000000 B) | 156.63 us/op | 222.11 us/op | 0.71 |
pass gossip attestations to forkchoice per slot | 2.9947 ms/op | 2.8148 ms/op | 1.06 |
forkChoice updateHead vc 100000 bc 64 eq 0 | 466.41 us/op | 444.89 us/op | 1.05 |
forkChoice updateHead vc 600000 bc 64 eq 0 | 3.4384 ms/op | 2.8132 ms/op | 1.22 |
forkChoice updateHead vc 1000000 bc 64 eq 0 | 5.2162 ms/op | 4.8467 ms/op | 1.08 |
forkChoice updateHead vc 600000 bc 320 eq 0 | 2.9686 ms/op | 2.8516 ms/op | 1.04 |
forkChoice updateHead vc 600000 bc 1200 eq 0 | 2.9740 ms/op | 2.8909 ms/op | 1.03 |
forkChoice updateHead vc 600000 bc 7200 eq 0 | 3.9879 ms/op | 3.3225 ms/op | 1.20 |
forkChoice updateHead vc 600000 bc 64 eq 1000 | 10.644 ms/op | 10.344 ms/op | 1.03 |
forkChoice updateHead vc 600000 bc 64 eq 10000 | 11.015 ms/op | 10.717 ms/op | 1.03 |
forkChoice updateHead vc 600000 bc 64 eq 300000 | 13.912 ms/op | 13.503 ms/op | 1.03 |
computeDeltas 500000 validators 300 proto nodes | 4.4266 ms/op | 3.9685 ms/op | 1.12 |
computeDeltas 500000 validators 1200 proto nodes | 4.6705 ms/op | 3.9902 ms/op | 1.17 |
computeDeltas 500000 validators 7200 proto nodes | 4.5599 ms/op | 4.1140 ms/op | 1.11 |
computeDeltas 750000 validators 300 proto nodes | 7.6509 ms/op | 5.9279 ms/op | 1.29 |
computeDeltas 750000 validators 1200 proto nodes | 8.2918 ms/op | 5.9474 ms/op | 1.39 |
computeDeltas 750000 validators 7200 proto nodes | 7.3687 ms/op | 5.9845 ms/op | 1.23 |
computeDeltas 1400000 validators 300 proto nodes | 13.626 ms/op | 11.322 ms/op | 1.20 |
computeDeltas 1400000 validators 1200 proto nodes | 12.774 ms/op | 11.371 ms/op | 1.12 |
computeDeltas 1400000 validators 7200 proto nodes | 12.452 ms/op | 11.196 ms/op | 1.11 |
computeDeltas 2100000 validators 300 proto nodes | 18.029 ms/op | 17.038 ms/op | 1.06 |
computeDeltas 2100000 validators 1200 proto nodes | 17.464 ms/op | 16.589 ms/op | 1.05 |
computeDeltas 2100000 validators 7200 proto nodes | 17.328 ms/op | 16.361 ms/op | 1.06 |
altair processAttestation - 250000 vs - 7PWei normalcase | 2.8289 ms/op | 1.9029 ms/op | 1.49 |
altair processAttestation - 250000 vs - 7PWei worstcase | 3.1537 ms/op | 2.5582 ms/op | 1.23 |
altair processAttestation - setStatus - 1/6 committees join | 90.036 us/op | 87.042 us/op | 1.03 |
altair processAttestation - setStatus - 1/3 committees join | 180.78 us/op | 181.14 us/op | 1.00 |
altair processAttestation - setStatus - 1/2 committees join | 271.00 us/op | 243.90 us/op | 1.11 |
altair processAttestation - setStatus - 2/3 committees join | 348.29 us/op | 319.95 us/op | 1.09 |
altair processAttestation - setStatus - 4/5 committees join | 514.29 us/op | 448.97 us/op | 1.15 |
altair processAttestation - setStatus - 100% committees join | 596.31 us/op | 543.43 us/op | 1.10 |
altair processBlock - 250000 vs - 7PWei normalcase | 5.6609 ms/op | 5.8064 ms/op | 0.97 |
altair processBlock - 250000 vs - 7PWei normalcase hashState | 29.171 ms/op | 25.345 ms/op | 1.15 |
altair processBlock - 250000 vs - 7PWei worstcase | 38.710 ms/op | 31.729 ms/op | 1.22 |
altair processBlock - 250000 vs - 7PWei worstcase hashState | 87.588 ms/op | 61.498 ms/op | 1.42 |
phase0 processBlock - 250000 vs - 7PWei normalcase | 3.8796 ms/op | 1.6901 ms/op | 2.30 |
phase0 processBlock - 250000 vs - 7PWei worstcase | 28.880 ms/op | 19.515 ms/op | 1.48 |
altair processEth1Data - 250000 vs - 7PWei normalcase | 400.21 us/op | 312.05 us/op | 1.28 |
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 | 8.9410 us/op | 5.2620 us/op | 1.70 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 | 48.412 us/op | 34.342 us/op | 1.41 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 | 12.235 us/op | 8.6090 us/op | 1.42 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 | 7.5300 us/op | 5.5600 us/op | 1.35 |
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 | 193.44 us/op | 128.74 us/op | 1.50 |
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 | 1.3694 ms/op | 1.0314 ms/op | 1.33 |
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 | 1.9313 ms/op | 1.5189 ms/op | 1.27 |
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 | 1.9002 ms/op | 1.4575 ms/op | 1.30 |
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 | 3.9040 ms/op | 3.6539 ms/op | 1.07 |
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 | 1.6267 ms/op | 1.5573 ms/op | 1.04 |
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 | 3.9468 ms/op | 3.8880 ms/op | 1.02 |
Tree 40 250000 create | 238.22 ms/op | 214.76 ms/op | 1.11 |
Tree 40 250000 get(125000) | 159.14 ns/op | 148.03 ns/op | 1.08 |
Tree 40 250000 set(125000) | 738.73 ns/op | 732.45 ns/op | 1.01 |
Tree 40 250000 toArray() | 19.256 ms/op | 20.196 ms/op | 0.95 |
Tree 40 250000 iterate all - toArray() + loop | 19.441 ms/op | 17.037 ms/op | 1.14 |
Tree 40 250000 iterate all - get(i) | 58.228 ms/op | 50.518 ms/op | 1.15 |
Array 250000 create | 3.4734 ms/op | 2.9219 ms/op | 1.19 |
Array 250000 clone - spread | 1.5552 ms/op | 1.3226 ms/op | 1.18 |
Array 250000 get(125000) | 0.44900 ns/op | 0.42200 ns/op | 1.06 |
Array 250000 set(125000) | 0.48200 ns/op | 0.47100 ns/op | 1.02 |
Array 250000 iterate all - loop | 90.756 us/op | 105.36 us/op | 0.86 |
phase0 afterProcessEpoch - 250000 vs - 7PWei | 53.221 ms/op | 49.106 ms/op | 1.08 |
Array.fill - length 1000000 | 3.7361 ms/op | 3.2852 ms/op | 1.14 |
Array push - length 1000000 | 18.737 ms/op | 16.757 ms/op | 1.12 |
Array.get | 0.30300 ns/op | 0.27177 ns/op | 1.11 |
Uint8Array.get | 0.48080 ns/op | 0.42495 ns/op | 1.13 |
phase0 beforeProcessEpoch - 250000 vs - 7PWei | 18.115 ms/op | 15.898 ms/op | 1.14 |
altair processEpoch - mainnet_e81889 | 307.53 ms/op | 283.49 ms/op | 1.08 |
mainnet_e81889 - altair beforeProcessEpoch | 19.574 ms/op | 18.433 ms/op | 1.06 |
mainnet_e81889 - altair processJustificationAndFinalization | 13.338 us/op | 12.057 us/op | 1.11 |
mainnet_e81889 - altair processInactivityUpdates | 5.6260 ms/op | 5.5356 ms/op | 1.02 |
mainnet_e81889 - altair processRewardsAndPenalties | 41.946 ms/op | 34.793 ms/op | 1.21 |
mainnet_e81889 - altair processRegistryUpdates | 2.2570 us/op | 1.8780 us/op | 1.20 |
mainnet_e81889 - altair processSlashings | 512.00 ns/op | 417.00 ns/op | 1.23 |
mainnet_e81889 - altair processEth1DataReset | 536.00 ns/op | 322.00 ns/op | 1.66 |
mainnet_e81889 - altair processEffectiveBalanceUpdates | 1.7826 ms/op | 1.3700 ms/op | 1.30 |
mainnet_e81889 - altair processSlashingsReset | 4.4170 us/op | 4.2280 us/op | 1.04 |
mainnet_e81889 - altair processRandaoMixesReset | 6.7130 us/op | 4.2280 us/op | 1.59 |
mainnet_e81889 - altair processHistoricalRootsUpdate | 563.00 ns/op | 517.00 ns/op | 1.09 |
mainnet_e81889 - altair processParticipationFlagUpdates | 2.0250 us/op | 1.9420 us/op | 1.04 |
mainnet_e81889 - altair processSyncCommitteeUpdates | 252.00 ns/op | 401.00 ns/op | 0.63 |
mainnet_e81889 - altair afterProcessEpoch | 54.345 ms/op | 50.178 ms/op | 1.08 |
capella processEpoch - mainnet_e217614 | 1.0573 s/op | 1.0220 s/op | 1.03 |
mainnet_e217614 - capella beforeProcessEpoch | 76.921 ms/op | 64.682 ms/op | 1.19 |
mainnet_e217614 - capella processJustificationAndFinalization | 14.957 us/op | 15.222 us/op | 0.98 |
mainnet_e217614 - capella processInactivityUpdates | 18.529 ms/op | 15.879 ms/op | 1.17 |
mainnet_e217614 - capella processRewardsAndPenalties | 242.60 ms/op | 216.90 ms/op | 1.12 |
mainnet_e217614 - capella processRegistryUpdates | 17.886 us/op | 11.935 us/op | 1.50 |
mainnet_e217614 - capella processSlashings | 609.00 ns/op | 348.00 ns/op | 1.75 |
mainnet_e217614 - capella processEth1DataReset | 457.00 ns/op | 308.00 ns/op | 1.48 |
mainnet_e217614 - capella processEffectiveBalanceUpdates | 11.694 ms/op | 12.134 ms/op | 0.96 |
mainnet_e217614 - capella processSlashingsReset | 5.6280 us/op | 2.9550 us/op | 1.90 |
mainnet_e217614 - capella processRandaoMixesReset | 9.9690 us/op | 4.0780 us/op | 2.44 |
mainnet_e217614 - capella processHistoricalRootsUpdate | 543.00 ns/op | 498.00 ns/op | 1.09 |
mainnet_e217614 - capella processParticipationFlagUpdates | 2.1620 us/op | 1.8180 us/op | 1.19 |
mainnet_e217614 - capella afterProcessEpoch | 127.99 ms/op | 120.14 ms/op | 1.07 |
phase0 processEpoch - mainnet_e58758 | 349.29 ms/op | 339.14 ms/op | 1.03 |
mainnet_e58758 - phase0 beforeProcessEpoch | 75.305 ms/op | 72.867 ms/op | 1.03 |
mainnet_e58758 - phase0 processJustificationAndFinalization | 13.075 us/op | 15.301 us/op | 0.85 |
mainnet_e58758 - phase0 processRewardsAndPenalties | 32.345 ms/op | 29.402 ms/op | 1.10 |
mainnet_e58758 - phase0 processRegistryUpdates | 7.9620 us/op | 7.7050 us/op | 1.03 |
mainnet_e58758 - phase0 processSlashings | 320.00 ns/op | 347.00 ns/op | 0.92 |
mainnet_e58758 - phase0 processEth1DataReset | 305.00 ns/op | 366.00 ns/op | 0.83 |
mainnet_e58758 - phase0 processEffectiveBalanceUpdates | 1.5534 ms/op | 1.1944 ms/op | 1.30 |
mainnet_e58758 - phase0 processSlashingsReset | 3.4760 us/op | 3.4230 us/op | 1.02 |
mainnet_e58758 - phase0 processRandaoMixesReset | 4.2230 us/op | 3.7040 us/op | 1.14 |
mainnet_e58758 - phase0 processHistoricalRootsUpdate | 354.00 ns/op | 297.00 ns/op | 1.19 |
mainnet_e58758 - phase0 processParticipationRecordUpdates | 3.0480 us/op | 2.9940 us/op | 1.02 |
mainnet_e58758 - phase0 afterProcessEpoch | 43.617 ms/op | 41.917 ms/op | 1.04 |
phase0 processEffectiveBalanceUpdates - 250000 normalcase | 2.6386 ms/op | 1.3928 ms/op | 1.89 |
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 2.4481 ms/op | 2.3783 ms/op | 1.03 |
altair processInactivityUpdates - 250000 normalcase | 21.439 ms/op | 14.981 ms/op | 1.43 |
altair processInactivityUpdates - 250000 worstcase | 19.749 ms/op | 15.010 ms/op | 1.32 |
phase0 processRegistryUpdates - 250000 normalcase | 9.1290 us/op | 5.8030 us/op | 1.57 |
phase0 processRegistryUpdates - 250000 badcase_full_deposits | 461.35 us/op | 222.01 us/op | 2.08 |
phase0 processRegistryUpdates - 250000 worstcase 0.5 | 134.89 ms/op | 104.72 ms/op | 1.29 |
altair processRewardsAndPenalties - 250000 normalcase | 48.933 ms/op | 30.106 ms/op | 1.63 |
altair processRewardsAndPenalties - 250000 worstcase | 49.373 ms/op | 36.437 ms/op | 1.36 |
phase0 getAttestationDeltas - 250000 normalcase | 7.4047 ms/op | 6.9900 ms/op | 1.06 |
phase0 getAttestationDeltas - 250000 worstcase | 7.1614 ms/op | 6.9305 ms/op | 1.03 |
phase0 processSlashings - 250000 worstcase | 122.37 us/op | 76.705 us/op | 1.60 |
altair processSyncCommitteeUpdates - 250000 | 123.12 ms/op | 117.36 ms/op | 1.05 |
BeaconState.hashTreeRoot - No change | 223.00 ns/op | 258.00 ns/op | 0.86 |
BeaconState.hashTreeRoot - 1 full validator | 158.13 us/op | 122.00 us/op | 1.30 |
BeaconState.hashTreeRoot - 32 full validator | 1.3997 ms/op | 1.4034 ms/op | 1.00 |
BeaconState.hashTreeRoot - 512 full validator | 11.706 ms/op | 9.0865 ms/op | 1.29 |
BeaconState.hashTreeRoot - 1 validator.effectiveBalance | 157.13 us/op | 123.58 us/op | 1.27 |
BeaconState.hashTreeRoot - 32 validator.effectiveBalance | 2.3200 ms/op | 1.5124 ms/op | 1.53 |
BeaconState.hashTreeRoot - 512 validator.effectiveBalance | 25.872 ms/op | 22.417 ms/op | 1.15 |
BeaconState.hashTreeRoot - 1 balances | 139.31 us/op | 88.375 us/op | 1.58 |
BeaconState.hashTreeRoot - 32 balances | 1.2181 ms/op | 837.26 us/op | 1.45 |
BeaconState.hashTreeRoot - 512 balances | 10.654 ms/op | 7.6953 ms/op | 1.38 |
BeaconState.hashTreeRoot - 250000 balances | 195.23 ms/op | 167.88 ms/op | 1.16 |
aggregationBits - 2048 els - zipIndexesInBitList | 22.762 us/op | 46.494 us/op | 0.49 |
byteArrayEquals 32 | 52.105 ns/op | 54.998 ns/op | 0.95 |
Buffer.compare 32 | 17.771 ns/op | 16.872 ns/op | 1.05 |
byteArrayEquals 1024 | 1.5900 us/op | 1.5492 us/op | 1.03 |
Buffer.compare 1024 | 26.095 ns/op | 24.852 ns/op | 1.05 |
byteArrayEquals 16384 | 25.320 us/op | 24.642 us/op | 1.03 |
Buffer.compare 16384 | 201.99 ns/op | 200.25 ns/op | 1.01 |
byteArrayEquals 123687377 | 194.77 ms/op | 186.36 ms/op | 1.05 |
Buffer.compare 123687377 | 7.8550 ms/op | 6.0616 ms/op | 1.30 |
byteArrayEquals 32 - diff last byte | 53.973 ns/op | 51.453 ns/op | 1.05 |
Buffer.compare 32 - diff last byte | 17.909 ns/op | 17.051 ns/op | 1.05 |
byteArrayEquals 1024 - diff last byte | 1.6242 us/op | 1.5802 us/op | 1.03 |
Buffer.compare 1024 - diff last byte | 33.470 ns/op | 24.890 ns/op | 1.34 |
byteArrayEquals 16384 - diff last byte | 26.011 us/op | 25.174 us/op | 1.03 |
Buffer.compare 16384 - diff last byte | 194.26 ns/op | 201.68 ns/op | 0.96 |
byteArrayEquals 123687377 - diff last byte | 203.34 ms/op | 187.06 ms/op | 1.09 |
Buffer.compare 123687377 - diff last byte | 12.951 ms/op | 6.4409 ms/op | 2.01 |
byteArrayEquals 32 - random bytes | 6.3230 ns/op | 5.0780 ns/op | 1.25 |
Buffer.compare 32 - random bytes | 24.195 ns/op | 16.796 ns/op | 1.44 |
byteArrayEquals 1024 - random bytes | 5.9680 ns/op | 5.0420 ns/op | 1.18 |
Buffer.compare 1024 - random bytes | 27.366 ns/op | 16.782 ns/op | 1.63 |
byteArrayEquals 16384 - random bytes | 6.6320 ns/op | 5.0460 ns/op | 1.31 |
Buffer.compare 16384 - random bytes | 24.321 ns/op | 16.930 ns/op | 1.44 |
byteArrayEquals 123687377 - random bytes | 7.9500 ns/op | 6.3900 ns/op | 1.24 |
Buffer.compare 123687377 - random bytes | 25.340 ns/op | 18.170 ns/op | 1.39 |
regular array get 100000 times | 48.422 us/op | 33.013 us/op | 1.47 |
wrappedArray get 100000 times | 55.958 us/op | 32.552 us/op | 1.72 |
arrayWithProxy get 100000 times | 20.126 ms/op | 13.081 ms/op | 1.54 |
ssz.Root.equals | 54.783 ns/op | 45.150 ns/op | 1.21 |
byteArrayEquals | 52.791 ns/op | 44.493 ns/op | 1.19 |
Buffer.compare | 12.833 ns/op | 10.150 ns/op | 1.26 |
processSlot - 1 slots | 23.828 us/op | 13.188 us/op | 1.81 |
processSlot - 32 slots | 4.2390 ms/op | 2.9112 ms/op | 1.46 |
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei | 55.334 ms/op | 36.615 ms/op | 1.51 |
getCommitteeAssignments - req 1 vs - 250000 vc | 2.4197 ms/op | 2.0394 ms/op | 1.19 |
getCommitteeAssignments - req 100 vs - 250000 vc | 4.8131 ms/op | 3.9935 ms/op | 1.21 |
getCommitteeAssignments - req 1000 vs - 250000 vc | 5.0437 ms/op | 4.2468 ms/op | 1.19 |
findModifiedValidators - 10000 modified validators | 570.29 ms/op | 240.57 ms/op | 2.37 |
findModifiedValidators - 1000 modified validators | 539.68 ms/op | 165.93 ms/op | 3.25 |
findModifiedValidators - 100 modified validators | 354.69 ms/op | 146.62 ms/op | 2.42 |
findModifiedValidators - 10 modified validators | 423.61 ms/op | 141.86 ms/op | 2.99 |
findModifiedValidators - 1 modified validators | 425.03 ms/op | 137.65 ms/op | 3.09 |
findModifiedValidators - no difference | 372.78 ms/op | 145.45 ms/op | 2.56 |
compare ViewDUs | 6.3982 s/op | 2.8751 s/op | 2.23 |
compare each validator Uint8Array | 2.3392 s/op | 1.6409 s/op | 1.43 |
compare ViewDU to Uint8Array | 1.4211 s/op | 937.43 ms/op | 1.52 |
migrate state 1000000 validators, 24 modified, 0 new | 968.16 ms/op | 729.44 ms/op | 1.33 |
migrate state 1000000 validators, 1700 modified, 1000 new | 1.3072 s/op | 967.07 ms/op | 1.35 |
migrate state 1000000 validators, 3400 modified, 2000 new | 1.5221 s/op | 1.1626 s/op | 1.31 |
migrate state 1500000 validators, 24 modified, 0 new | 957.05 ms/op | 713.82 ms/op | 1.34 |
migrate state 1500000 validators, 1700 modified, 1000 new | 1.2691 s/op | 946.18 ms/op | 1.34 |
migrate state 1500000 validators, 3400 modified, 2000 new | 1.4617 s/op | 1.1576 s/op | 1.26 |
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei | 5.6700 ns/op | 4.1800 ns/op | 1.36 |
state getBlockRootAtSlot - 250000 vs - 7PWei | 855.12 ns/op | 693.33 ns/op | 1.23 |
computeProposers - vc 250000 | 11.167 ms/op | 6.6118 ms/op | 1.69 |
computeEpochShuffling - vc 250000 | 50.548 ms/op | 40.555 ms/op | 1.25 |
getNextSyncCommittee - vc 250000 | 205.21 ms/op | 116.23 ms/op | 1.77 |
computeSigningRoot for AttestationData | 32.197 us/op | 22.905 us/op | 1.41 |
hash AttestationData serialized data then Buffer.toString(base64) | 1.9179 us/op | 1.5285 us/op | 1.25 |
toHexString serialized data | 1.3500 us/op | 837.86 ns/op | 1.61 |
Buffer.toString(base64) | 265.18 ns/op | 181.12 ns/op | 1.46 |
nodejs block root to RootHex using toHex | 197.87 ns/op | 175.36 ns/op | 1.13 |
nodejs block root to RootHex using toRootHex | 123.65 ns/op | 88.733 ns/op | 1.39 |
browser block root to RootHex using the deprecated toHexString | 420.33 ns/op | 217.99 ns/op | 1.93 |
browser block root to RootHex using toHex | 312.71 ns/op | 174.69 ns/op | 1.79 |
browser block root to RootHex using toRootHex | 252.57 ns/op | 156.66 ns/op | 1.61 |
by benchmarkbot/action
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #7176