Skip to content
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: add fulu definition #7479

Merged
merged 10 commits into from
Feb 20, 2025
Merged

feat: add fulu definition #7479

merged 10 commits into from
Feb 20, 2025

Conversation

matthewkeil
Copy link
Member

Motivation

Both peerDAS and FOCIL both rely on these changes and its little harm to merge them into unstable so that both branches can build on this without diverging.

Copy link
Contributor

github-actions bot commented Feb 18, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 7a1ad57 Previous: b785bbd Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 847.24 us/op 1.0156 ms/op 0.83
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 33.126 us/op 37.291 us/op 0.89
BLS verify - blst 854.89 us/op 875.98 us/op 0.98
BLS verifyMultipleSignatures 3 - blst 1.3351 ms/op 1.2763 ms/op 1.05
BLS verifyMultipleSignatures 8 - blst 1.9749 ms/op 1.9661 ms/op 1.00
BLS verifyMultipleSignatures 32 - blst 4.7257 ms/op 5.6824 ms/op 0.83
BLS verifyMultipleSignatures 64 - blst 8.4518 ms/op 10.954 ms/op 0.77
BLS verifyMultipleSignatures 128 - blst 16.078 ms/op 17.962 ms/op 0.90
BLS deserializing 10000 signatures 640.60 ms/op 703.07 ms/op 0.91
BLS deserializing 100000 signatures 6.2885 s/op 7.1151 s/op 0.88
BLS verifyMultipleSignatures - same message - 3 - blst 900.64 us/op 1.0064 ms/op 0.89
BLS verifyMultipleSignatures - same message - 8 - blst 1.0836 ms/op 1.1291 ms/op 0.96
BLS verifyMultipleSignatures - same message - 32 - blst 1.6853 ms/op 1.7930 ms/op 0.94
BLS verifyMultipleSignatures - same message - 64 - blst 2.5348 ms/op 2.6825 ms/op 0.94
BLS verifyMultipleSignatures - same message - 128 - blst 4.1817 ms/op 4.5333 ms/op 0.92
BLS aggregatePubkeys 32 - blst 18.290 us/op 20.081 us/op 0.91
BLS aggregatePubkeys 128 - blst 63.108 us/op 71.919 us/op 0.88
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 50.234 ms/op 53.975 ms/op 0.93
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 45.238 ms/op 53.296 ms/op 0.85
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 35.624 ms/op 42.054 ms/op 0.85
getSlashingsAndExits - default max 51.551 us/op 78.404 us/op 0.66
getSlashingsAndExits - 2k 301.64 us/op 375.30 us/op 0.80
proposeBlockBody type=full, size=empty 4.2000 ms/op 6.7470 ms/op 0.62
isKnown best case - 1 super set check 394.00 ns/op 212.00 ns/op 1.86
isKnown normal case - 2 super set checks 378.00 ns/op 211.00 ns/op 1.79
isKnown worse case - 16 super set checks 380.00 ns/op 204.00 ns/op 1.86
InMemoryCheckpointStateCache - add get delete 2.2730 us/op 2.7440 us/op 0.83
validate api signedAggregateAndProof - struct 1.4443 ms/op 1.4145 ms/op 1.02
validate gossip signedAggregateAndProof - struct 1.9745 ms/op 2.1643 ms/op 0.91
batch validate gossip attestation - vc 640000 - chunk 32 109.77 us/op 130.69 us/op 0.84
batch validate gossip attestation - vc 640000 - chunk 64 95.793 us/op 111.10 us/op 0.86
batch validate gossip attestation - vc 640000 - chunk 128 88.323 us/op 112.70 us/op 0.78
batch validate gossip attestation - vc 640000 - chunk 256 89.562 us/op 112.85 us/op 0.79
pickEth1Vote - no votes 797.96 us/op 994.26 us/op 0.80
pickEth1Vote - max votes 7.1133 ms/op 7.2180 ms/op 0.99
pickEth1Vote - Eth1Data hashTreeRoot value x2048 19.684 ms/op 17.048 ms/op 1.15
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 19.499 ms/op 23.359 ms/op 0.83
pickEth1Vote - Eth1Data fastSerialize value x2048 341.67 us/op 440.99 us/op 0.77
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.5330 ms/op 2.3158 ms/op 1.09
bytes32 toHexString 550.00 ns/op 398.00 ns/op 1.38
bytes32 Buffer.toString(hex) 415.00 ns/op 257.00 ns/op 1.61
bytes32 Buffer.toString(hex) from Uint8Array 492.00 ns/op 379.00 ns/op 1.30
bytes32 Buffer.toString(hex) + 0x 415.00 ns/op 261.00 ns/op 1.59
Object access 1 prop 0.30300 ns/op 0.12200 ns/op 2.48
Map access 1 prop 0.30600 ns/op 0.13100 ns/op 2.34
Object get x1000 5.0950 ns/op 6.0490 ns/op 0.84
Map get x1000 5.7870 ns/op 6.4770 ns/op 0.89
Object set x1000 18.743 ns/op 29.965 ns/op 0.63
Map set x1000 16.752 ns/op 20.822 ns/op 0.80
Return object 10000 times 0.29610 ns/op 0.30040 ns/op 0.99
Throw Error 10000 times 3.5394 us/op 4.5366 us/op 0.78
toHex 102.37 ns/op 139.87 ns/op 0.73
Buffer.from 94.774 ns/op 128.77 ns/op 0.74
shared Buffer 64.016 ns/op 80.655 ns/op 0.79
fastMsgIdFn sha256 / 200 bytes 1.9500 us/op 2.4310 us/op 0.80
fastMsgIdFn h32 xxhash / 200 bytes 387.00 ns/op 252.00 ns/op 1.54
fastMsgIdFn h64 xxhash / 200 bytes 446.00 ns/op 336.00 ns/op 1.33
fastMsgIdFn sha256 / 1000 bytes 5.8090 us/op 7.5030 us/op 0.77
fastMsgIdFn h32 xxhash / 1000 bytes 510.00 ns/op 375.00 ns/op 1.36
fastMsgIdFn h64 xxhash / 1000 bytes 516.00 ns/op 392.00 ns/op 1.32
fastMsgIdFn sha256 / 10000 bytes 47.797 us/op 66.472 us/op 0.72
fastMsgIdFn h32 xxhash / 10000 bytes 1.8790 us/op 1.9540 us/op 0.96
fastMsgIdFn h64 xxhash / 10000 bytes 1.3460 us/op 1.2270 us/op 1.10
send data - 1000 256B messages 10.514 ms/op 15.877 ms/op 0.66
send data - 1000 512B messages 17.042 ms/op 18.785 ms/op 0.91
send data - 1000 1024B messages 20.796 ms/op 26.458 ms/op 0.79
send data - 1000 1200B messages 20.600 ms/op 21.276 ms/op 0.97
send data - 1000 2048B messages 17.829 ms/op 24.985 ms/op 0.71
send data - 1000 4096B messages 19.925 ms/op 27.755 ms/op 0.72
send data - 1000 16384B messages 48.852 ms/op 74.895 ms/op 0.65
send data - 1000 65536B messages 292.98 ms/op 222.89 ms/op 1.31
enrSubnets - fastDeserialize 64 bits 1.6090 us/op 929.00 ns/op 1.73
enrSubnets - ssz BitVector 64 bits 497.00 ns/op 347.00 ns/op 1.43
enrSubnets - fastDeserialize 4 bits 314.00 ns/op 145.00 ns/op 2.17
enrSubnets - ssz BitVector 4 bits 516.00 ns/op 363.00 ns/op 1.42
prioritizePeers score -10:0 att 32-0.1 sync 2-0 100.41 us/op 124.79 us/op 0.80
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 122.61 us/op 154.29 us/op 0.79
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 179.31 us/op 216.75 us/op 0.83
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 318.76 us/op 399.84 us/op 0.80
prioritizePeers score 0:0 att 64-1 sync 4-1 385.08 us/op 480.72 us/op 0.80
array of 16000 items push then shift 1.2936 us/op 1.7164 us/op 0.75
LinkedList of 16000 items push then shift 6.5430 ns/op 8.0320 ns/op 0.81
array of 16000 items push then pop 68.449 ns/op 79.598 ns/op 0.86
LinkedList of 16000 items push then pop 6.2040 ns/op 7.4020 ns/op 0.84
array of 24000 items push then shift 1.9111 us/op 2.5072 us/op 0.76
LinkedList of 24000 items push then shift 6.3670 ns/op 7.2550 ns/op 0.88
array of 24000 items push then pop 95.465 ns/op 103.88 ns/op 0.92
LinkedList of 24000 items push then pop 6.1520 ns/op 7.1290 ns/op 0.86
intersect bitArray bitLen 8 5.4370 ns/op 6.5250 ns/op 0.83
intersect array and set length 8 32.414 ns/op 38.957 ns/op 0.83
intersect bitArray bitLen 128 26.661 ns/op 30.531 ns/op 0.87
intersect array and set length 128 541.66 ns/op 640.81 ns/op 0.85
bitArray.getTrueBitIndexes() bitLen 128 1.2140 us/op 1.0710 us/op 1.13
bitArray.getTrueBitIndexes() bitLen 248 2.0780 us/op 2.0020 us/op 1.04
bitArray.getTrueBitIndexes() bitLen 512 3.7160 us/op 4.3450 us/op 0.86
Buffer.concat 32 items 924.00 ns/op 782.00 ns/op 1.18
Uint8Array.set 32 items 1.1860 us/op 1.7850 us/op 0.66
Buffer.copy 2.3210 us/op 2.7970 us/op 0.83
Uint8Array.set - with subarray 2.4550 us/op 1.9240 us/op 1.28
Uint8Array.set - without subarray 1.3510 us/op 1.3450 us/op 1.00
getUint32 - dataview 368.00 ns/op 197.00 ns/op 1.87
getUint32 - manual 300.00 ns/op 128.00 ns/op 2.34
Set add up to 64 items then delete first 1.9686 us/op 2.8057 us/op 0.70
OrderedSet add up to 64 items then delete first 3.5422 us/op 3.5949 us/op 0.99
Set add up to 64 items then delete last 2.7490 us/op 2.7925 us/op 0.98
OrderedSet add up to 64 items then delete last 4.0480 us/op 3.9297 us/op 1.03
Set add up to 64 items then delete middle 2.1425 us/op 2.7115 us/op 0.79
OrderedSet add up to 64 items then delete middle 5.3308 us/op 5.7719 us/op 0.92
Set add up to 128 items then delete first 4.4940 us/op 5.4312 us/op 0.83
OrderedSet add up to 128 items then delete first 6.7005 us/op 8.8818 us/op 0.75
Set add up to 128 items then delete last 5.2513 us/op 5.7700 us/op 0.91
OrderedSet add up to 128 items then delete last 6.6352 us/op 9.6250 us/op 0.69
Set add up to 128 items then delete middle 4.2348 us/op 6.0263 us/op 0.70
OrderedSet add up to 128 items then delete middle 12.970 us/op 16.839 us/op 0.77
Set add up to 256 items then delete first 9.2016 us/op 13.213 us/op 0.70
OrderedSet add up to 256 items then delete first 13.321 us/op 17.206 us/op 0.77
Set add up to 256 items then delete last 9.2813 us/op 10.480 us/op 0.89
OrderedSet add up to 256 items then delete last 14.215 us/op 16.926 us/op 0.84
Set add up to 256 items then delete middle 8.2207 us/op 11.087 us/op 0.74
OrderedSet add up to 256 items then delete middle 37.422 us/op 47.334 us/op 0.79
transfer serialized Status (84 B) 2.0410 us/op 2.7030 us/op 0.76
copy serialized Status (84 B) 1.8150 us/op 1.6400 us/op 1.11
transfer serialized SignedVoluntaryExit (112 B) 2.1520 us/op 2.6520 us/op 0.81
copy serialized SignedVoluntaryExit (112 B) 1.6580 us/op 1.5040 us/op 1.10
transfer serialized ProposerSlashing (416 B) 2.5160 us/op 2.8690 us/op 0.88
copy serialized ProposerSlashing (416 B) 1.9470 us/op 2.4970 us/op 0.78
transfer serialized Attestation (485 B) 2.2000 us/op 3.6400 us/op 0.60
copy serialized Attestation (485 B) 2.0290 us/op 1.9680 us/op 1.03
transfer serialized AttesterSlashing (33232 B) 2.5970 us/op 3.2060 us/op 0.81
copy serialized AttesterSlashing (33232 B) 4.6480 us/op 5.0140 us/op 0.93
transfer serialized Small SignedBeaconBlock (128000 B) 3.1210 us/op 3.5360 us/op 0.88
copy serialized Small SignedBeaconBlock (128000 B) 13.038 us/op 13.297 us/op 0.98
transfer serialized Avg SignedBeaconBlock (200000 B) 3.2540 us/op 4.1680 us/op 0.78
copy serialized Avg SignedBeaconBlock (200000 B) 19.712 us/op 16.657 us/op 1.18
transfer serialized BlobsSidecar (524380 B) 4.1870 us/op 4.2340 us/op 0.99
copy serialized BlobsSidecar (524380 B) 73.943 us/op 132.14 us/op 0.56
transfer serialized Big SignedBeaconBlock (1000000 B) 4.6040 us/op 5.6520 us/op 0.81
copy serialized Big SignedBeaconBlock (1000000 B) 149.81 us/op 131.28 us/op 1.14
pass gossip attestations to forkchoice per slot 2.4127 ms/op 2.9713 ms/op 0.81
forkChoice updateHead vc 100000 bc 64 eq 0 336.55 us/op 485.64 us/op 0.69
forkChoice updateHead vc 600000 bc 64 eq 0 2.2235 ms/op 4.2229 ms/op 0.53
forkChoice updateHead vc 1000000 bc 64 eq 0 3.9569 ms/op 7.3128 ms/op 0.54
forkChoice updateHead vc 600000 bc 320 eq 0 2.2924 ms/op 3.4610 ms/op 0.66
forkChoice updateHead vc 600000 bc 1200 eq 0 2.2670 ms/op 3.7400 ms/op 0.61
forkChoice updateHead vc 600000 bc 7200 eq 0 2.5674 ms/op 4.2324 ms/op 0.61
forkChoice updateHead vc 600000 bc 64 eq 1000 9.7055 ms/op 11.729 ms/op 0.83
forkChoice updateHead vc 600000 bc 64 eq 10000 9.3985 ms/op 11.705 ms/op 0.80
forkChoice updateHead vc 600000 bc 64 eq 300000 11.487 ms/op 21.721 ms/op 0.53
computeDeltas 500000 validators 300 proto nodes 3.1531 ms/op 4.4406 ms/op 0.71
computeDeltas 500000 validators 1200 proto nodes 3.1431 ms/op 5.3501 ms/op 0.59
computeDeltas 500000 validators 7200 proto nodes 3.1088 ms/op 4.4297 ms/op 0.70
computeDeltas 750000 validators 300 proto nodes 4.7324 ms/op 6.1718 ms/op 0.77
computeDeltas 750000 validators 1200 proto nodes 4.7836 ms/op 6.1935 ms/op 0.77
computeDeltas 750000 validators 7200 proto nodes 4.8299 ms/op 6.0818 ms/op 0.79
computeDeltas 1400000 validators 300 proto nodes 9.5705 ms/op 11.490 ms/op 0.83
computeDeltas 1400000 validators 1200 proto nodes 9.1234 ms/op 11.630 ms/op 0.78
computeDeltas 1400000 validators 7200 proto nodes 8.9953 ms/op 11.367 ms/op 0.79
computeDeltas 2100000 validators 300 proto nodes 13.580 ms/op 17.040 ms/op 0.80
computeDeltas 2100000 validators 1200 proto nodes 13.919 ms/op 17.196 ms/op 0.81
computeDeltas 2100000 validators 7200 proto nodes 13.517 ms/op 17.378 ms/op 0.78
altair processAttestation - 250000 vs - 7PWei normalcase 1.6598 ms/op 2.1635 ms/op 0.77
altair processAttestation - 250000 vs - 7PWei worstcase 2.4565 ms/op 3.5168 ms/op 0.70
altair processAttestation - setStatus - 1/6 committees join 105.04 us/op 154.24 us/op 0.68
altair processAttestation - setStatus - 1/3 committees join 202.78 us/op 307.31 us/op 0.66
altair processAttestation - setStatus - 1/2 committees join 281.81 us/op 400.21 us/op 0.70
altair processAttestation - setStatus - 2/3 committees join 367.81 us/op 502.61 us/op 0.73
altair processAttestation - setStatus - 4/5 committees join 515.59 us/op 682.43 us/op 0.76
altair processAttestation - setStatus - 100% committees join 574.25 us/op 818.77 us/op 0.70
altair processBlock - 250000 vs - 7PWei normalcase 4.6079 ms/op 5.3798 ms/op 0.86
altair processBlock - 250000 vs - 7PWei normalcase hashState 33.520 ms/op 34.319 ms/op 0.98
altair processBlock - 250000 vs - 7PWei worstcase 40.781 ms/op 43.794 ms/op 0.93
altair processBlock - 250000 vs - 7PWei worstcase hashState 86.626 ms/op 90.428 ms/op 0.96
phase0 processBlock - 250000 vs - 7PWei normalcase 1.2153 ms/op 2.3787 ms/op 0.51
phase0 processBlock - 250000 vs - 7PWei worstcase 21.644 ms/op 31.054 ms/op 0.70
altair processEth1Data - 250000 vs - 7PWei normalcase 259.40 us/op 381.61 us/op 0.68
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 4.3550 us/op 4.9300 us/op 0.88
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 26.294 us/op 28.642 us/op 0.92
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 7.0840 us/op 9.4130 us/op 0.75
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 4.5910 us/op 5.8460 us/op 0.79
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 108.18 us/op 128.66 us/op 0.84
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 713.60 us/op 975.80 us/op 0.73
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 973.00 us/op 1.6545 ms/op 0.59
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 965.20 us/op 1.6563 ms/op 0.58
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 2.7905 ms/op 3.6084 ms/op 0.77
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.0600 ms/op 1.6899 ms/op 0.63
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 2.9304 ms/op 3.6524 ms/op 0.80
Tree 40 250000 create 346.23 ms/op 499.94 ms/op 0.69
Tree 40 250000 get(125000) 115.25 ns/op 159.87 ns/op 0.72
Tree 40 250000 set(125000) 1.2026 us/op 1.5764 us/op 0.76
Tree 40 250000 toArray() 9.9481 ms/op 20.154 ms/op 0.49
Tree 40 250000 iterate all - toArray() + loop 10.020 ms/op 20.854 ms/op 0.48
Tree 40 250000 iterate all - get(i) 42.932 ms/op 62.335 ms/op 0.69
Array 250000 create 1.9680 ms/op 2.6932 ms/op 0.73
Array 250000 clone - spread 639.37 us/op 1.5738 ms/op 0.41
Array 250000 get(125000) 0.59200 ns/op 0.43200 ns/op 1.37
Array 250000 set(125000) 0.59900 ns/op 0.45200 ns/op 1.33
Array 250000 iterate all - loop 77.020 us/op 86.629 us/op 0.89
phase0 afterProcessEpoch - 250000 vs - 7PWei 41.386 ms/op 53.261 ms/op 0.78
Array.fill - length 1000000 2.5777 ms/op 4.1435 ms/op 0.62
Array push - length 1000000 9.5162 ms/op 21.104 ms/op 0.45
Array.get 0.25557 ns/op 0.29275 ns/op 0.87
Uint8Array.get 0.34141 ns/op 0.46570 ns/op 0.73
phase0 beforeProcessEpoch - 250000 vs - 7PWei 16.409 ms/op 23.705 ms/op 0.69
altair processEpoch - mainnet_e81889 255.38 ms/op 332.76 ms/op 0.77
mainnet_e81889 - altair beforeProcessEpoch 15.175 ms/op 22.453 ms/op 0.68
mainnet_e81889 - altair processJustificationAndFinalization 5.6530 us/op 6.5040 us/op 0.87
mainnet_e81889 - altair processInactivityUpdates 3.3439 ms/op 6.0216 ms/op 0.56
mainnet_e81889 - altair processRewardsAndPenalties 39.123 ms/op 48.800 ms/op 0.80
mainnet_e81889 - altair processRegistryUpdates 840.00 ns/op 838.00 ns/op 1.00
mainnet_e81889 - altair processSlashings 409.00 ns/op 203.00 ns/op 2.01
mainnet_e81889 - altair processEth1DataReset 427.00 ns/op 217.00 ns/op 1.97
mainnet_e81889 - altair processEffectiveBalanceUpdates 947.08 us/op 1.3340 ms/op 0.71
mainnet_e81889 - altair processSlashingsReset 1.0350 us/op 1.1570 us/op 0.89
mainnet_e81889 - altair processRandaoMixesReset 1.2400 us/op 1.3220 us/op 0.94
mainnet_e81889 - altair processHistoricalRootsUpdate 413.00 ns/op 213.00 ns/op 1.94
mainnet_e81889 - altair processParticipationFlagUpdates 705.00 ns/op 591.00 ns/op 1.19
mainnet_e81889 - altair processSyncCommitteeUpdates 365.00 ns/op 151.00 ns/op 2.42
mainnet_e81889 - altair afterProcessEpoch 42.411 ms/op 56.375 ms/op 0.75
capella processEpoch - mainnet_e217614 832.43 ms/op 940.54 ms/op 0.89
mainnet_e217614 - capella beforeProcessEpoch 58.065 ms/op 69.989 ms/op 0.83
mainnet_e217614 - capella processJustificationAndFinalization 4.3910 us/op 5.5500 us/op 0.79
mainnet_e217614 - capella processInactivityUpdates 10.853 ms/op 16.782 ms/op 0.65
mainnet_e217614 - capella processRewardsAndPenalties 199.98 ms/op 201.52 ms/op 0.99
mainnet_e217614 - capella processRegistryUpdates 5.2120 us/op 6.9860 us/op 0.75
mainnet_e217614 - capella processSlashings 403.00 ns/op 195.00 ns/op 2.07
mainnet_e217614 - capella processEth1DataReset 400.00 ns/op 176.00 ns/op 2.27
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.2525 ms/op 12.470 ms/op 0.34
mainnet_e217614 - capella processSlashingsReset 1.2060 us/op 1.1110 us/op 1.09
mainnet_e217614 - capella processRandaoMixesReset 1.3840 us/op 1.4690 us/op 0.94
mainnet_e217614 - capella processHistoricalRootsUpdate 406.00 ns/op 180.00 ns/op 2.26
mainnet_e217614 - capella processParticipationFlagUpdates 698.00 ns/op 570.00 ns/op 1.22
mainnet_e217614 - capella afterProcessEpoch 103.29 ms/op 130.86 ms/op 0.79
phase0 processEpoch - mainnet_e58758 297.08 ms/op 326.30 ms/op 0.91
mainnet_e58758 - phase0 beforeProcessEpoch 84.088 ms/op 77.802 ms/op 1.08
mainnet_e58758 - phase0 processJustificationAndFinalization 5.7640 us/op 5.8040 us/op 0.99
mainnet_e58758 - phase0 processRewardsAndPenalties 37.254 ms/op 38.618 ms/op 0.96
mainnet_e58758 - phase0 processRegistryUpdates 2.6930 us/op 3.2180 us/op 0.84
mainnet_e58758 - phase0 processSlashings 392.00 ns/op 176.00 ns/op 2.23
mainnet_e58758 - phase0 processEth1DataReset 388.00 ns/op 233.00 ns/op 1.67
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 833.69 us/op 1.0914 ms/op 0.76
mainnet_e58758 - phase0 processSlashingsReset 975.00 ns/op 1.0310 us/op 0.95
mainnet_e58758 - phase0 processRandaoMixesReset 1.2450 us/op 1.3660 us/op 0.91
mainnet_e58758 - phase0 processHistoricalRootsUpdate 403.00 ns/op 192.00 ns/op 2.10
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.1540 us/op 887.00 ns/op 1.30
mainnet_e58758 - phase0 afterProcessEpoch 35.335 ms/op 44.098 ms/op 0.80
phase0 processEffectiveBalanceUpdates - 250000 normalcase 992.53 us/op 1.7406 ms/op 0.57
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.4125 ms/op 2.2567 ms/op 0.63
altair processInactivityUpdates - 250000 normalcase 16.597 ms/op 17.553 ms/op 0.95
altair processInactivityUpdates - 250000 worstcase 15.981 ms/op 19.889 ms/op 0.80
phase0 processRegistryUpdates - 250000 normalcase 3.0350 us/op 5.5010 us/op 0.55
phase0 processRegistryUpdates - 250000 badcase_full_deposits 306.84 us/op 295.79 us/op 1.04
phase0 processRegistryUpdates - 250000 worstcase 0.5 91.023 ms/op 106.69 ms/op 0.85
altair processRewardsAndPenalties - 250000 normalcase 43.291 ms/op 48.681 ms/op 0.89
altair processRewardsAndPenalties - 250000 worstcase 42.328 ms/op 41.179 ms/op 1.03
phase0 getAttestationDeltas - 250000 normalcase 4.7290 ms/op 7.8716 ms/op 0.60
phase0 getAttestationDeltas - 250000 worstcase 4.9186 ms/op 8.3558 ms/op 0.59
phase0 processSlashings - 250000 worstcase 95.057 us/op 124.98 us/op 0.76
altair processSyncCommitteeUpdates - 250000 90.578 ms/op 120.76 ms/op 0.75
BeaconState.hashTreeRoot - No change 439.00 ns/op 232.00 ns/op 1.89
BeaconState.hashTreeRoot - 1 full validator 68.303 us/op 83.017 us/op 0.82
BeaconState.hashTreeRoot - 32 full validator 972.24 us/op 879.89 us/op 1.10
BeaconState.hashTreeRoot - 512 full validator 10.158 ms/op 10.646 ms/op 0.95
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 83.240 us/op 114.12 us/op 0.73
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.3333 ms/op 1.8070 ms/op 0.74
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 17.438 ms/op 23.707 ms/op 0.74
BeaconState.hashTreeRoot - 1 balances 70.323 us/op 77.667 us/op 0.91
BeaconState.hashTreeRoot - 32 balances 692.66 us/op 771.39 us/op 0.90
BeaconState.hashTreeRoot - 512 balances 6.2134 ms/op 7.4558 ms/op 0.83
BeaconState.hashTreeRoot - 250000 balances 184.89 ms/op 150.40 ms/op 1.23
aggregationBits - 2048 els - zipIndexesInBitList 19.863 us/op 22.365 us/op 0.89
byteArrayEquals 32 46.682 ns/op 53.609 ns/op 0.87
Buffer.compare 32 15.028 ns/op 17.379 ns/op 0.86
byteArrayEquals 1024 1.2444 us/op 1.6015 us/op 0.78
Buffer.compare 1024 21.757 ns/op 24.736 ns/op 0.88
byteArrayEquals 16384 20.540 us/op 25.513 us/op 0.81
Buffer.compare 16384 184.09 ns/op 195.87 ns/op 0.94
byteArrayEquals 123687377 152.41 ms/op 187.92 ms/op 0.81
Buffer.compare 123687377 4.4188 ms/op 6.1244 ms/op 0.72
byteArrayEquals 32 - diff last byte 44.945 ns/op 51.625 ns/op 0.87
Buffer.compare 32 - diff last byte 17.458 ns/op 16.803 ns/op 1.04
byteArrayEquals 1024 - diff last byte 1.2234 us/op 1.5567 us/op 0.79
Buffer.compare 1024 - diff last byte 21.480 ns/op 25.411 ns/op 0.85
byteArrayEquals 16384 - diff last byte 19.228 us/op 24.854 us/op 0.77
Buffer.compare 16384 - diff last byte 151.27 ns/op 182.54 ns/op 0.83
byteArrayEquals 123687377 - diff last byte 151.73 ms/op 187.61 ms/op 0.81
Buffer.compare 123687377 - diff last byte 4.3430 ms/op 6.1745 ms/op 0.70
byteArrayEquals 32 - random bytes 4.8560 ns/op 5.0490 ns/op 0.96
Buffer.compare 32 - random bytes 15.902 ns/op 16.845 ns/op 0.94
byteArrayEquals 1024 - random bytes 4.9300 ns/op 5.0360 ns/op 0.98
Buffer.compare 1024 - random bytes 15.982 ns/op 16.789 ns/op 0.95
byteArrayEquals 16384 - random bytes 4.8780 ns/op 5.0390 ns/op 0.97
Buffer.compare 16384 - random bytes 15.759 ns/op 16.742 ns/op 0.94
byteArrayEquals 123687377 - random bytes 7.9100 ns/op 7.6700 ns/op 1.03
Buffer.compare 123687377 - random bytes 18.580 ns/op 19.600 ns/op 0.95
regular array get 100000 times 30.835 us/op 36.723 us/op 0.84
wrappedArray get 100000 times 30.736 us/op 32.423 us/op 0.95
arrayWithProxy get 100000 times 10.479 ms/op 13.743 ms/op 0.76
ssz.Root.equals 39.613 ns/op 45.431 ns/op 0.87
byteArrayEquals 43.612 ns/op 44.616 ns/op 0.98
Buffer.compare 9.1520 ns/op 10.188 ns/op 0.90
processSlot - 1 slots 8.8260 us/op 14.307 us/op 0.62
processSlot - 32 slots 1.6995 ms/op 3.0887 ms/op 0.55
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 56.505 ms/op 58.786 ms/op 0.96
getCommitteeAssignments - req 1 vs - 250000 vc 1.7416 ms/op 2.1030 ms/op 0.83
getCommitteeAssignments - req 100 vs - 250000 vc 3.4832 ms/op 4.0816 ms/op 0.85
getCommitteeAssignments - req 1000 vs - 250000 vc 3.6431 ms/op 4.3662 ms/op 0.83
findModifiedValidators - 10000 modified validators 825.92 ms/op 743.17 ms/op 1.11
findModifiedValidators - 1000 modified validators 694.52 ms/op 743.81 ms/op 0.93
findModifiedValidators - 100 modified validators 157.44 ms/op 251.91 ms/op 0.62
findModifiedValidators - 10 modified validators 139.19 ms/op 141.55 ms/op 0.98
findModifiedValidators - 1 modified validators 133.65 ms/op 146.79 ms/op 0.91
findModifiedValidators - no difference 163.71 ms/op 144.64 ms/op 1.13
compare ViewDUs 5.9808 s/op 6.3375 s/op 0.94
compare each validator Uint8Array 1.0676 s/op 2.0319 s/op 0.53
compare ViewDU to Uint8Array 755.07 ms/op 984.12 ms/op 0.77
migrate state 1000000 validators, 24 modified, 0 new 824.02 ms/op 873.12 ms/op 0.94
migrate state 1000000 validators, 1700 modified, 1000 new 1.1266 s/op 1.2383 s/op 0.91
migrate state 1000000 validators, 3400 modified, 2000 new 1.2350 s/op 1.5229 s/op 0.81
migrate state 1500000 validators, 24 modified, 0 new 844.15 ms/op 1.0927 s/op 0.77
migrate state 1500000 validators, 1700 modified, 1000 new 1.1930 s/op 1.4527 s/op 0.82
migrate state 1500000 validators, 3400 modified, 2000 new 1.3218 s/op 1.8386 s/op 0.72
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 6.0300 ns/op 5.0600 ns/op 1.19
state getBlockRootAtSlot - 250000 vs - 7PWei 600.97 ns/op 728.41 ns/op 0.83
naive computeProposerIndex 100000 validators 49.952 ms/op 71.061 ms/op 0.70
computeProposerIndex 100000 validators 7.8551 ms/op 11.756 ms/op 0.67
naiveGetNextSyncCommitteeIndices 1000 validators 7.8843 s/op 11.099 s/op 0.71
getNextSyncCommitteeIndices 1000 validators 280.38 ms/op 469.51 ms/op 0.60
naiveGetNextSyncCommitteeIndices 10000 validators 7.6018 s/op 8.9490 s/op 0.85
getNextSyncCommitteeIndices 10000 validators 271.19 ms/op 379.53 ms/op 0.71
naiveGetNextSyncCommitteeIndices 100000 validators 7.0111 s/op 9.3979 s/op 0.75
getNextSyncCommitteeIndices 100000 validators 233.18 ms/op 295.68 ms/op 0.79
naive computeShuffledIndex 100000 validators 21.231 s/op 25.105 s/op 0.85
cached computeShuffledIndex 100000 validators 483.57 ms/op 622.26 ms/op 0.78
naive computeShuffledIndex 2000000 validators 440.69 s/op 492.42 s/op 0.89
cached computeShuffledIndex 2000000 validators 20.763 s/op 37.299 s/op 0.56
computeProposers - vc 250000 7.8740 ms/op 11.137 ms/op 0.71
computeEpochShuffling - vc 250000 35.268 ms/op 45.395 ms/op 0.78
getNextSyncCommittee - vc 250000 121.02 ms/op 171.18 ms/op 0.71
computeSigningRoot for AttestationData 26.208 us/op 31.584 us/op 0.83
hash AttestationData serialized data then Buffer.toString(base64) 1.1825 us/op 1.5963 us/op 0.74
toHexString serialized data 954.06 ns/op 1.3322 us/op 0.72
Buffer.toString(base64) 109.59 ns/op 156.81 ns/op 0.70
nodejs block root to RootHex using toHex 103.83 ns/op 150.38 ns/op 0.69
nodejs block root to RootHex using toRootHex 67.573 ns/op 85.451 ns/op 0.79
browser block root to RootHex using the deprecated toHexString 183.02 ns/op 227.56 ns/op 0.80
browser block root to RootHex using toHex 150.84 ns/op 187.04 ns/op 0.81
browser block root to RootHex using toRootHex 148.09 ns/op 164.72 ns/op 0.90

by benchmarkbot/action

@nflaig nflaig marked this pull request as ready for review February 20, 2025 11:50
@nflaig nflaig requested a review from a team as a code owner February 20, 2025 11:50
nflaig
nflaig previously approved these changes Feb 20, 2025
nflaig
nflaig previously approved these changes Feb 20, 2025
@matthewkeil matthewkeil enabled auto-merge (squash) February 20, 2025 11:53
Copy link

codecov bot commented Feb 20, 2025

Codecov Report

Attention: Patch coverage is 49.01961% with 26 lines in your changes missing coverage. Please review.

Project coverage is 50.47%. Comparing base (a25ea77) to head (e61331d).
Report is 3 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7479      +/-   ##
============================================
- Coverage     50.48%   50.47%   -0.01%     
============================================
  Files           602      603       +1     
  Lines         40606    40656      +50     
  Branches       2230     2231       +1     
============================================
+ Hits          20499    20523      +24     
- Misses        20067    20093      +26     
  Partials         40       40              

Copy link
Member

@nflaig nflaig left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks like CI is happy which is good enough for now

@matthewkeil matthewkeil merged commit 929d0ea into unstable Feb 20, 2025
18 of 20 checks passed
@matthewkeil matthewkeil deleted the mkeil/add-fulu-definition branch February 20, 2025 18:15
@nflaig
Copy link
Member

nflaig commented Feb 20, 2025

looks like E2E tests are broken...didn't see that, we are missing FIELD_ELEMENTS_PER_CELL

nflaig added a commit that referenced this pull request Feb 20, 2025
**Motivation**

Whoops.... that was failing on the last merge #7479

---------

Co-authored-by: Nico Flaig <[email protected]>
g11tech pushed a commit that referenced this pull request Mar 5, 2025
We accidentally scheduled fulu on sepolia in
#7479, it uses the same fork
epoch as electra. This means our unstable branch is not able to sync the
network right now.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants