Skip to content

feat: improve blacklisted blocks feature - #7580

Merged
nflaig merged 1 commit into
unstablefrom
nflaig/enhance-blacklisted-blocks
Mar 14, 2025
Merged

feat: improve blacklisted blocks feature#7580
nflaig merged 1 commit into
unstablefrom
nflaig/enhance-blacklisted-blocks

Conversation

@nflaig

@nflaig nflaig commented Mar 14, 2025

Copy link
Copy Markdown
Member

Follow up on #7498 to improve the blacklisted blocks feature

  • adds new endpoint /eth/v1/lodestar/blacklisted_blocks to return root/slot of blacklisted blocks
  • updates blacklisted blocks store on chain to use Map to also keep track of slot
  • proper parsing of root hex values passed through CLI flag to make sure those are handled as string and not number
  • add unit test to sanity check implementation + various type issue fixed not caught due to previous tsconfig issue

@nflaig
nflaig requested a review from a team as a code owner March 14, 2025 12:18
{
config: state.config,
db,
dataDir: ".",

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

unrelated change but required to make type check pass, was missed in #7551 due to misconfigured tsconfig

"chain.blacklistedBlocks": {
hidden: true,
type: "array",
string: true,

@nflaig nflaig Mar 14, 2025

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

this is important as otherwise passing the value like this --chain.blacklistedBlocks 0x123213 would interpret it as a number instead of a string

@codecov

codecov Bot commented Mar 14, 2025

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 50.20%. Comparing base (9f024f4) to head (586d12f).
Report is 8 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7580      +/-   ##
============================================
- Coverage     50.21%   50.20%   -0.02%     
============================================
  Files           603      603              
  Lines         40473    40509      +36     
  Branches       2244     2239       -5     
============================================
+ Hits          20325    20337      +12     
- Misses        20108    20132      +24     
  Partials         40       40              
🚀 New features to boost your workflow:
  • Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@nflaig
nflaig enabled auto-merge (squash) March 14, 2025 12:47
@github-actions

Copy link
Copy Markdown
Contributor

Performance Report

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: c8427f3 Previous: e9d1917 Ratio
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 49.465 ms/op 189.87 ms/op 0.26
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 31.453 ms/op 138.33 ms/op 0.23
getSlashingsAndExits - default max 59.651 us/op 441.13 us/op 0.14
proposeBlockBody type=full, size=empty 4.4238 ms/op 13.834 ms/op 0.32
Full benchmark results
Benchmark suite Current: c8427f3 Previous: e9d1917 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 800.55 us/op 29.990 ms/op 0.03
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 30.453 us/op 83.834 us/op 0.36
BLS verify - blst 936.50 us/op 1.3022 ms/op 0.72
BLS verifyMultipleSignatures 3 - blst 1.3519 ms/op 2.5653 ms/op 0.53
BLS verifyMultipleSignatures 8 - blst 2.1675 ms/op 4.3188 ms/op 0.50
BLS verifyMultipleSignatures 32 - blst 4.6139 ms/op 13.135 ms/op 0.35
BLS verifyMultipleSignatures 64 - blst 8.5681 ms/op 23.625 ms/op 0.36
BLS verifyMultipleSignatures 128 - blst 16.130 ms/op 37.021 ms/op 0.44
BLS deserializing 10000 signatures 628.34 ms/op 1.2946 s/op 0.49
BLS deserializing 100000 signatures 6.3662 s/op 12.505 s/op 0.51
BLS verifyMultipleSignatures - same message - 3 - blst 919.77 us/op 1.4502 ms/op 0.63
BLS verifyMultipleSignatures - same message - 8 - blst 1.0373 ms/op 1.8535 ms/op 0.56
BLS verifyMultipleSignatures - same message - 32 - blst 1.6164 ms/op 2.7608 ms/op 0.59
BLS verifyMultipleSignatures - same message - 64 - blst 2.8012 ms/op 5.5255 ms/op 0.51
BLS verifyMultipleSignatures - same message - 128 - blst 4.0375 ms/op 7.1591 ms/op 0.56
BLS aggregatePubkeys 32 - blst 18.227 us/op 31.677 us/op 0.58
BLS aggregatePubkeys 128 - blst 63.990 us/op 115.65 us/op 0.55
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 49.465 ms/op 189.87 ms/op 0.26
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 31.453 ms/op 138.33 ms/op 0.23
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 33.244 ms/op 80.940 ms/op 0.41
getSlashingsAndExits - default max 59.651 us/op 441.13 us/op 0.14
getSlashingsAndExits - 2k 487.73 us/op 570.52 us/op 0.85
proposeBlockBody type=full, size=empty 4.4238 ms/op 13.834 ms/op 0.32
isKnown best case - 1 super set check 403.00 ns/op 373.00 ns/op 1.08
isKnown normal case - 2 super set checks 403.00 ns/op 361.00 ns/op 1.12
isKnown worse case - 16 super set checks 403.00 ns/op 479.00 ns/op 0.84
InMemoryCheckpointStateCache - add get delete 3.2130 us/op 5.1340 us/op 0.63
validate api signedAggregateAndProof - struct 1.5288 ms/op 2.4057 ms/op 0.64
validate gossip signedAggregateAndProof - struct 1.4150 ms/op 2.1201 ms/op 0.67
batch validate gossip attestation - vc 640000 - chunk 32 124.37 us/op 228.01 us/op 0.55
batch validate gossip attestation - vc 640000 - chunk 64 108.12 us/op 196.15 us/op 0.55
batch validate gossip attestation - vc 640000 - chunk 128 100.04 us/op 132.90 us/op 0.75
batch validate gossip attestation - vc 640000 - chunk 256 104.89 us/op 130.87 us/op 0.80
pickEth1Vote - no votes 854.66 us/op 1.1575 ms/op 0.74
pickEth1Vote - max votes 4.7371 ms/op 7.8934 ms/op 0.60
pickEth1Vote - Eth1Data hashTreeRoot value x2048 9.9236 ms/op 15.916 ms/op 0.62
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 12.508 ms/op 28.248 ms/op 0.44
pickEth1Vote - Eth1Data fastSerialize value x2048 342.48 us/op 504.46 us/op 0.68
pickEth1Vote - Eth1Data fastSerialize tree x2048 1.9610 ms/op 2.8302 ms/op 0.69
bytes32 toHexString 526.00 ns/op 441.00 ns/op 1.19
bytes32 Buffer.toString(hex) 422.00 ns/op 272.00 ns/op 1.55
bytes32 Buffer.toString(hex) from Uint8Array 496.00 ns/op 393.00 ns/op 1.26
bytes32 Buffer.toString(hex) + 0x 420.00 ns/op 302.00 ns/op 1.39
Object access 1 prop 0.31200 ns/op 0.14700 ns/op 2.12
Map access 1 prop 0.32100 ns/op 0.16200 ns/op 1.98
Object get x1000 5.0780 ns/op 7.5890 ns/op 0.67
Map get x1000 5.8410 ns/op 8.1670 ns/op 0.72
Object set x1000 18.974 ns/op 35.924 ns/op 0.53
Map set x1000 16.800 ns/op 24.773 ns/op 0.68
Return object 10000 times 0.29720 ns/op 0.34450 ns/op 0.86
Throw Error 10000 times 3.6588 us/op 5.4622 us/op 0.67
toHex 101.82 ns/op 175.48 ns/op 0.58
Buffer.from 90.385 ns/op 148.27 ns/op 0.61
shared Buffer 60.978 ns/op 88.487 ns/op 0.69
fastMsgIdFn sha256 / 200 bytes 1.9280 us/op 2.4340 us/op 0.79
fastMsgIdFn h32 xxhash / 200 bytes 392.00 ns/op 262.00 ns/op 1.50
fastMsgIdFn h64 xxhash / 200 bytes 457.00 ns/op 355.00 ns/op 1.29
fastMsgIdFn sha256 / 1000 bytes 5.7520 us/op 7.9900 us/op 0.72
fastMsgIdFn h32 xxhash / 1000 bytes 514.00 ns/op 407.00 ns/op 1.26
fastMsgIdFn h64 xxhash / 1000 bytes 529.00 ns/op 419.00 ns/op 1.26
fastMsgIdFn sha256 / 10000 bytes 49.383 us/op 73.019 us/op 0.68
fastMsgIdFn h32 xxhash / 10000 bytes 1.9160 us/op 2.0290 us/op 0.94
fastMsgIdFn h64 xxhash / 10000 bytes 1.3490 us/op 1.3790 us/op 0.98
send data - 1000 256B messages 12.612 ms/op 14.332 ms/op 0.88
send data - 1000 512B messages 14.904 ms/op 22.689 ms/op 0.66
send data - 1000 1024B messages 23.018 ms/op 37.371 ms/op 0.62
send data - 1000 1200B messages 20.378 ms/op 29.480 ms/op 0.69
send data - 1000 2048B messages 20.501 ms/op 26.171 ms/op 0.78
send data - 1000 4096B messages 22.724 ms/op 35.816 ms/op 0.63
send data - 1000 16384B messages 47.632 ms/op 78.522 ms/op 0.61
send data - 1000 65536B messages 248.74 ms/op 266.84 ms/op 0.93
enrSubnets - fastDeserialize 64 bits 1.0040 us/op 1.0170 us/op 0.99
enrSubnets - ssz BitVector 64 bits 505.00 ns/op 376.00 ns/op 1.34
enrSubnets - fastDeserialize 4 bits 332.00 ns/op 149.00 ns/op 2.23
enrSubnets - ssz BitVector 4 bits 504.00 ns/op 407.00 ns/op 1.24
prioritizePeers score -10:0 att 32-0.1 sync 2-0 100.37 us/op 135.70 us/op 0.74
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 127.79 us/op 163.08 us/op 0.78
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 175.67 us/op 228.47 us/op 0.77
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 313.32 us/op 432.18 us/op 0.72
prioritizePeers score 0:0 att 64-1 sync 4-1 390.69 us/op 524.07 us/op 0.75
array of 16000 items push then shift 1.2399 us/op 1.8443 us/op 0.67
LinkedList of 16000 items push then shift 7.3810 ns/op 8.6230 ns/op 0.86
array of 16000 items push then pop 65.408 ns/op 93.191 ns/op 0.70
LinkedList of 16000 items push then pop 6.0920 ns/op 8.3740 ns/op 0.73
array of 24000 items push then shift 1.8013 us/op 2.9562 us/op 0.61
LinkedList of 24000 items push then shift 6.3490 ns/op 8.3440 ns/op 0.76
array of 24000 items push then pop 86.937 ns/op 138.27 ns/op 0.63
LinkedList of 24000 items push then pop 6.1690 ns/op 8.0560 ns/op 0.77
intersect bitArray bitLen 8 7.1420 ns/op 7.7400 ns/op 0.92
intersect array and set length 8 32.619 ns/op 46.486 ns/op 0.70
intersect bitArray bitLen 128 26.728 ns/op 37.780 ns/op 0.71
intersect array and set length 128 553.09 ns/op 739.96 ns/op 0.75
bitArray.getTrueBitIndexes() bitLen 128 1.1550 us/op 1.3220 us/op 0.87
bitArray.getTrueBitIndexes() bitLen 248 1.8380 us/op 2.1220 us/op 0.87
bitArray.getTrueBitIndexes() bitLen 512 3.4350 us/op 4.2890 us/op 0.80
Buffer.concat 32 items 746.00 ns/op 687.00 ns/op 1.09
Uint8Array.set 32 items 1.6060 us/op 1.8160 us/op 0.88
Buffer.copy 2.0800 us/op 3.4140 us/op 0.61
Uint8Array.set - with subarray 1.8630 us/op 2.7690 us/op 0.67
Uint8Array.set - without subarray 1.3370 us/op 1.8310 us/op 0.73
getUint32 - dataview 383.00 ns/op 246.00 ns/op 1.56
getUint32 - manual 319.00 ns/op 150.00 ns/op 2.13
Set add up to 64 items then delete first 2.3479 us/op 3.3289 us/op 0.71
OrderedSet add up to 64 items then delete first 3.8880 us/op 4.6262 us/op 0.84
Set add up to 64 items then delete last 2.6667 us/op 2.9326 us/op 0.91
OrderedSet add up to 64 items then delete last 3.7327 us/op 5.4736 us/op 0.68
Set add up to 64 items then delete middle 2.7438 us/op 3.6821 us/op 0.75
OrderedSet add up to 64 items then delete middle 5.2989 us/op 6.9847 us/op 0.76
Set add up to 128 items then delete first 4.1728 us/op 6.7143 us/op 0.62
OrderedSet add up to 128 items then delete first 6.3194 us/op 11.657 us/op 0.54
Set add up to 128 items then delete last 3.8853 us/op 7.1494 us/op 0.54
OrderedSet add up to 128 items then delete last 5.9544 us/op 10.345 us/op 0.58
Set add up to 128 items then delete middle 4.0624 us/op 6.7787 us/op 0.60
OrderedSet add up to 128 items then delete middle 11.740 us/op 17.812 us/op 0.66
Set add up to 256 items then delete first 7.9964 us/op 14.242 us/op 0.56
OrderedSet add up to 256 items then delete first 12.734 us/op 21.566 us/op 0.59
Set add up to 256 items then delete last 7.6905 us/op 13.095 us/op 0.59
OrderedSet add up to 256 items then delete last 11.826 us/op 19.445 us/op 0.61
Set add up to 256 items then delete middle 7.7559 us/op 13.598 us/op 0.57
OrderedSet add up to 256 items then delete middle 34.382 us/op 51.515 us/op 0.67
transfer serialized Status (84 B) 2.0420 us/op 3.1260 us/op 0.65
copy serialized Status (84 B) 1.2480 us/op 1.6910 us/op 0.74
transfer serialized SignedVoluntaryExit (112 B) 2.0560 us/op 3.2160 us/op 0.64
copy serialized SignedVoluntaryExit (112 B) 1.2760 us/op 1.7810 us/op 0.72
transfer serialized ProposerSlashing (416 B) 2.0700 us/op 3.6700 us/op 0.56
copy serialized ProposerSlashing (416 B) 1.3350 us/op 2.1340 us/op 0.63
transfer serialized Attestation (485 B) 2.0810 us/op 3.9600 us/op 0.53
copy serialized Attestation (485 B) 1.3330 us/op 2.0520 us/op 0.65
transfer serialized AttesterSlashing (33232 B) 2.1670 us/op 3.5140 us/op 0.62
copy serialized AttesterSlashing (33232 B) 2.7000 us/op 6.1320 us/op 0.44
transfer serialized Small SignedBeaconBlock (128000 B) 2.2740 us/op 4.2330 us/op 0.54
copy serialized Small SignedBeaconBlock (128000 B) 6.0640 us/op 17.533 us/op 0.35
transfer serialized Avg SignedBeaconBlock (200000 B) 2.3150 us/op 5.1980 us/op 0.45
copy serialized Avg SignedBeaconBlock (200000 B) 8.0440 us/op 20.231 us/op 0.40
transfer serialized BlobsSidecar (524380 B) 3.6030 us/op 5.5170 us/op 0.65
copy serialized BlobsSidecar (524380 B) 167.88 us/op 121.07 us/op 1.39
transfer serialized Big SignedBeaconBlock (1000000 B) 3.8580 us/op 6.2150 us/op 0.62
copy serialized Big SignedBeaconBlock (1000000 B) 170.32 us/op 269.43 us/op 0.63
pass gossip attestations to forkchoice per slot 2.3757 ms/op 3.3476 ms/op 0.71
forkChoice updateHead vc 100000 bc 64 eq 0 368.06 us/op 539.80 us/op 0.68
forkChoice updateHead vc 600000 bc 64 eq 0 2.1656 ms/op 4.2486 ms/op 0.51
forkChoice updateHead vc 1000000 bc 64 eq 0 3.6558 ms/op 6.1205 ms/op 0.60
forkChoice updateHead vc 600000 bc 320 eq 0 2.1729 ms/op 3.5633 ms/op 0.61
forkChoice updateHead vc 600000 bc 1200 eq 0 2.2914 ms/op 3.8381 ms/op 0.60
forkChoice updateHead vc 600000 bc 7200 eq 0 2.3938 ms/op 4.3969 ms/op 0.54
forkChoice updateHead vc 600000 bc 64 eq 1000 9.6345 ms/op 12.701 ms/op 0.76
forkChoice updateHead vc 600000 bc 64 eq 10000 9.3645 ms/op 12.863 ms/op 0.73
forkChoice updateHead vc 600000 bc 64 eq 300000 10.708 ms/op 16.868 ms/op 0.63
computeDeltas 500000 validators 300 proto nodes 3.1585 ms/op 4.7192 ms/op 0.67
computeDeltas 500000 validators 1200 proto nodes 3.0888 ms/op 4.7976 ms/op 0.64
computeDeltas 500000 validators 7200 proto nodes 3.0478 ms/op 4.7689 ms/op 0.64
computeDeltas 750000 validators 300 proto nodes 4.5282 ms/op 7.1928 ms/op 0.63
computeDeltas 750000 validators 1200 proto nodes 4.6045 ms/op 7.0742 ms/op 0.65
computeDeltas 750000 validators 7200 proto nodes 4.6342 ms/op 7.2754 ms/op 0.64
computeDeltas 1400000 validators 300 proto nodes 8.6521 ms/op 13.094 ms/op 0.66
computeDeltas 1400000 validators 1200 proto nodes 8.6285 ms/op 13.815 ms/op 0.62
computeDeltas 1400000 validators 7200 proto nodes 8.7281 ms/op 13.051 ms/op 0.67
computeDeltas 2100000 validators 300 proto nodes 12.971 ms/op 18.393 ms/op 0.71
computeDeltas 2100000 validators 1200 proto nodes 13.005 ms/op 18.118 ms/op 0.72
computeDeltas 2100000 validators 7200 proto nodes 13.279 ms/op 18.479 ms/op 0.72
altair processAttestation - 250000 vs - 7PWei normalcase 1.6435 ms/op 2.1823 ms/op 0.75
altair processAttestation - 250000 vs - 7PWei worstcase 2.7375 ms/op 3.1783 ms/op 0.86
altair processAttestation - setStatus - 1/6 committees join 109.91 us/op 124.63 us/op 0.88
altair processAttestation - setStatus - 1/3 committees join 211.57 us/op 250.46 us/op 0.84
altair processAttestation - setStatus - 1/2 committees join 288.36 us/op 340.78 us/op 0.85
altair processAttestation - setStatus - 2/3 committees join 361.29 us/op 449.92 us/op 0.80
altair processAttestation - setStatus - 4/5 committees join 497.37 us/op 648.59 us/op 0.77
altair processAttestation - setStatus - 100% committees join 609.63 us/op 718.36 us/op 0.85
altair processBlock - 250000 vs - 7PWei normalcase 4.2928 ms/op 5.4784 ms/op 0.78
altair processBlock - 250000 vs - 7PWei normalcase hashState 36.504 ms/op 30.909 ms/op 1.18
altair processBlock - 250000 vs - 7PWei worstcase 40.467 ms/op 44.032 ms/op 0.92
altair processBlock - 250000 vs - 7PWei worstcase hashState 94.939 ms/op 101.90 ms/op 0.93
phase0 processBlock - 250000 vs - 7PWei normalcase 1.7827 ms/op 1.9210 ms/op 0.93
phase0 processBlock - 250000 vs - 7PWei worstcase 23.777 ms/op 28.006 ms/op 0.85
altair processEth1Data - 250000 vs - 7PWei normalcase 278.30 us/op 375.87 us/op 0.74
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 3.6910 us/op 4.9850 us/op 0.74
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 27.432 us/op 27.122 us/op 1.01
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 7.6360 us/op 7.6400 us/op 1.00
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 5.6030 us/op 7.6060 us/op 0.74
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 115.47 us/op 166.55 us/op 0.69
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 757.82 us/op 1.8424 ms/op 0.41
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.0401 ms/op 1.3551 ms/op 0.77
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.0306 ms/op 2.5038 ms/op 0.41
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.6355 ms/op 3.4852 ms/op 1.04
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.0694 ms/op 2.0752 ms/op 0.52
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 2.8791 ms/op 3.4376 ms/op 0.84
Tree 40 250000 create 353.02 ms/op 443.91 ms/op 0.80
Tree 40 250000 get(125000) 112.05 ns/op 155.54 ns/op 0.72
Tree 40 250000 set(125000) 1.2227 us/op 1.6356 us/op 0.75
Tree 40 250000 toArray() 10.263 ms/op 16.220 ms/op 0.63
Tree 40 250000 iterate all - toArray() + loop 9.8157 ms/op 15.792 ms/op 0.62
Tree 40 250000 iterate all - get(i) 43.421 ms/op 54.676 ms/op 0.79
Array 250000 create 1.9881 ms/op 2.4773 ms/op 0.80
Array 250000 clone - spread 650.70 us/op 829.97 us/op 0.78
Array 250000 get(125000) 0.58600 ns/op 0.42800 ns/op 1.37
Array 250000 set(125000) 0.59500 ns/op 0.46100 ns/op 1.29
Array 250000 iterate all - loop 78.087 us/op 114.44 us/op 0.68
phase0 afterProcessEpoch - 250000 vs - 7PWei 43.042 ms/op 50.375 ms/op 0.85
Array.fill - length 1000000 2.6258 ms/op 3.4843 ms/op 0.75
Array push - length 1000000 9.5553 ms/op 12.934 ms/op 0.74
Array.get 0.28600 ns/op 0.27933 ns/op 1.02
Uint8Array.get 0.35210 ns/op 0.44448 ns/op 0.79
phase0 beforeProcessEpoch - 250000 vs - 7PWei 13.630 ms/op 15.764 ms/op 0.86
altair processEpoch - mainnet_e81889 265.76 ms/op 336.82 ms/op 0.79
mainnet_e81889 - altair beforeProcessEpoch 21.559 ms/op 22.273 ms/op 0.97
mainnet_e81889 - altair processJustificationAndFinalization 6.1630 us/op 6.1460 us/op 1.00
mainnet_e81889 - altair processInactivityUpdates 3.7310 ms/op 4.3866 ms/op 0.85
mainnet_e81889 - altair processRewardsAndPenalties 47.467 ms/op 52.428 ms/op 0.91
mainnet_e81889 - altair processRegistryUpdates 910.00 ns/op 659.00 ns/op 1.38
mainnet_e81889 - altair processSlashings 413.00 ns/op 180.00 ns/op 2.29
mainnet_e81889 - altair processEth1DataReset 474.00 ns/op 184.00 ns/op 2.58
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.0955 ms/op 1.2704 ms/op 0.86
mainnet_e81889 - altair processSlashingsReset 1.2590 us/op 1.0680 us/op 1.18
mainnet_e81889 - altair processRandaoMixesReset 1.4940 us/op 1.3110 us/op 1.14
mainnet_e81889 - altair processHistoricalRootsUpdate 459.00 ns/op 186.00 ns/op 2.47
mainnet_e81889 - altair processParticipationFlagUpdates 826.00 ns/op 536.00 ns/op 1.54
mainnet_e81889 - altair processSyncCommitteeUpdates 370.00 ns/op 134.00 ns/op 2.76
mainnet_e81889 - altair afterProcessEpoch 43.558 ms/op 56.546 ms/op 0.77
capella processEpoch - mainnet_e217614 983.64 ms/op 1.0668 s/op 0.92
mainnet_e217614 - capella beforeProcessEpoch 67.473 ms/op 73.455 ms/op 0.92
mainnet_e217614 - capella processJustificationAndFinalization 4.9870 us/op 6.2420 us/op 0.80
mainnet_e217614 - capella processInactivityUpdates 15.578 ms/op 17.542 ms/op 0.89
mainnet_e217614 - capella processRewardsAndPenalties 189.61 ms/op 227.44 ms/op 0.83
mainnet_e217614 - capella processRegistryUpdates 5.3540 us/op 7.9670 us/op 0.67
mainnet_e217614 - capella processSlashings 405.00 ns/op 193.00 ns/op 2.10
mainnet_e217614 - capella processEth1DataReset 403.00 ns/op 186.00 ns/op 2.17
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.4240 ms/op 10.937 ms/op 0.40
mainnet_e217614 - capella processSlashingsReset 1.2360 us/op 1.3760 us/op 0.90
mainnet_e217614 - capella processRandaoMixesReset 1.5250 us/op 1.4720 us/op 1.04
mainnet_e217614 - capella processHistoricalRootsUpdate 473.00 ns/op 197.00 ns/op 2.40
mainnet_e217614 - capella processParticipationFlagUpdates 852.00 ns/op 577.00 ns/op 1.48
mainnet_e217614 - capella afterProcessEpoch 106.30 ms/op 133.57 ms/op 0.80
phase0 processEpoch - mainnet_e58758 334.39 ms/op 354.27 ms/op 0.94
mainnet_e58758 - phase0 beforeProcessEpoch 89.536 ms/op 85.255 ms/op 1.05
mainnet_e58758 - phase0 processJustificationAndFinalization 6.6010 us/op 7.9100 us/op 0.83
mainnet_e58758 - phase0 processRewardsAndPenalties 39.714 ms/op 41.878 ms/op 0.95
mainnet_e58758 - phase0 processRegistryUpdates 3.5600 us/op 3.2410 us/op 1.10
mainnet_e58758 - phase0 processSlashings 474.00 ns/op 184.00 ns/op 2.58
mainnet_e58758 - phase0 processEth1DataReset 408.00 ns/op 188.00 ns/op 2.17
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 860.41 us/op 1.1163 ms/op 0.77
mainnet_e58758 - phase0 processSlashingsReset 1.0960 us/op 940.00 ns/op 1.17
mainnet_e58758 - phase0 processRandaoMixesReset 1.4680 us/op 1.2870 us/op 1.14
mainnet_e58758 - phase0 processHistoricalRootsUpdate 402.00 ns/op 184.00 ns/op 2.18
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.1730 us/op 949.00 ns/op 1.24
mainnet_e58758 - phase0 afterProcessEpoch 36.591 ms/op 45.443 ms/op 0.81
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.7385 ms/op 1.3941 ms/op 1.25
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.7499 ms/op 1.9313 ms/op 1.42
altair processInactivityUpdates - 250000 normalcase 18.645 ms/op 20.430 ms/op 0.91
altair processInactivityUpdates - 250000 worstcase 16.626 ms/op 20.361 ms/op 0.82
phase0 processRegistryUpdates - 250000 normalcase 4.9340 us/op 6.4550 us/op 0.76
phase0 processRegistryUpdates - 250000 badcase_full_deposits 290.37 us/op 391.83 us/op 0.74
phase0 processRegistryUpdates - 250000 worstcase 0.5 89.217 ms/op 108.32 ms/op 0.82
altair processRewardsAndPenalties - 250000 normalcase 54.468 ms/op 56.731 ms/op 0.96
altair processRewardsAndPenalties - 250000 worstcase 37.304 ms/op 43.499 ms/op 0.86
phase0 getAttestationDeltas - 250000 normalcase 4.9037 ms/op 6.2507 ms/op 0.78
phase0 getAttestationDeltas - 250000 worstcase 4.9458 ms/op 6.0138 ms/op 0.82
phase0 processSlashings - 250000 worstcase 89.646 us/op 103.19 us/op 0.87
altair processSyncCommitteeUpdates - 250000 105.20 ms/op 131.04 ms/op 0.80
BeaconState.hashTreeRoot - No change 434.00 ns/op 238.00 ns/op 1.82
BeaconState.hashTreeRoot - 1 full validator 74.022 us/op 99.555 us/op 0.74
BeaconState.hashTreeRoot - 32 full validator 795.28 us/op 1.3531 ms/op 0.59
BeaconState.hashTreeRoot - 512 full validator 11.817 ms/op 11.439 ms/op 1.03
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 96.815 us/op 127.99 us/op 0.76
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.2664 ms/op 1.4700 ms/op 0.86
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 24.394 ms/op 20.022 ms/op 1.22
BeaconState.hashTreeRoot - 1 balances 86.564 us/op 72.840 us/op 1.19
BeaconState.hashTreeRoot - 32 balances 754.34 us/op 766.03 us/op 0.98
BeaconState.hashTreeRoot - 512 balances 5.6004 ms/op 7.8589 ms/op 0.71
BeaconState.hashTreeRoot - 250000 balances 157.88 ms/op 190.64 ms/op 0.83
aggregationBits - 2048 els - zipIndexesInBitList 17.713 us/op 22.315 us/op 0.79
byteArrayEquals 32 48.180 ns/op 57.528 ns/op 0.84
Buffer.compare 32 15.554 ns/op 18.502 ns/op 0.84
byteArrayEquals 1024 1.2861 us/op 1.7240 us/op 0.75
Buffer.compare 1024 23.154 ns/op 26.266 ns/op 0.88
byteArrayEquals 16384 20.451 us/op 27.189 us/op 0.75
Buffer.compare 16384 181.28 ns/op 218.00 ns/op 0.83
byteArrayEquals 123687377 150.32 ms/op 202.14 ms/op 0.74
Buffer.compare 123687377 4.2963 ms/op 7.3927 ms/op 0.58
byteArrayEquals 32 - diff last byte 48.447 ns/op 55.757 ns/op 0.87
Buffer.compare 32 - diff last byte 16.006 ns/op 17.944 ns/op 0.89
byteArrayEquals 1024 - diff last byte 1.2917 us/op 1.6842 us/op 0.77
Buffer.compare 1024 - diff last byte 22.924 ns/op 27.119 ns/op 0.85
byteArrayEquals 16384 - diff last byte 20.080 us/op 26.818 us/op 0.75
Buffer.compare 16384 - diff last byte 164.29 ns/op 213.50 ns/op 0.77
byteArrayEquals 123687377 - diff last byte 153.33 ms/op 205.80 ms/op 0.75
Buffer.compare 123687377 - diff last byte 5.9734 ms/op 7.2269 ms/op 0.83
byteArrayEquals 32 - random bytes 4.9010 ns/op 5.5160 ns/op 0.89
Buffer.compare 32 - random bytes 15.454 ns/op 18.950 ns/op 0.82
byteArrayEquals 1024 - random bytes 4.8880 ns/op 5.5670 ns/op 0.88
Buffer.compare 1024 - random bytes 15.351 ns/op 19.119 ns/op 0.80
byteArrayEquals 16384 - random bytes 4.9360 ns/op 5.5540 ns/op 0.89
Buffer.compare 16384 - random bytes 15.736 ns/op 18.802 ns/op 0.84
byteArrayEquals 123687377 - random bytes 7.9400 ns/op 7.6100 ns/op 1.04
Buffer.compare 123687377 - random bytes 18.590 ns/op 19.810 ns/op 0.94
regular array get 100000 times 31.094 us/op 45.136 us/op 0.69
wrappedArray get 100000 times 31.059 us/op 33.689 us/op 0.92
arrayWithProxy get 100000 times 12.225 ms/op 17.253 ms/op 0.71
ssz.Root.equals 44.692 ns/op 49.586 ns/op 0.90
byteArrayEquals 43.821 ns/op 48.295 ns/op 0.91
Buffer.compare 9.1660 ns/op 11.251 ns/op 0.81
processSlot - 1 slots 8.8290 us/op 13.054 us/op 0.68
processSlot - 32 slots 2.1493 ms/op 3.2261 ms/op 0.67
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 57.532 ms/op 61.158 ms/op 0.94
getCommitteeAssignments - req 1 vs - 250000 vc 1.8472 ms/op 2.4478 ms/op 0.75
getCommitteeAssignments - req 100 vs - 250000 vc 3.6381 ms/op 4.8617 ms/op 0.75
getCommitteeAssignments - req 1000 vs - 250000 vc 3.8172 ms/op 5.1408 ms/op 0.74
findModifiedValidators - 10000 modified validators 797.16 ms/op 827.82 ms/op 0.96
findModifiedValidators - 1000 modified validators 672.21 ms/op 736.50 ms/op 0.91
findModifiedValidators - 100 modified validators 163.27 ms/op 277.61 ms/op 0.59
findModifiedValidators - 10 modified validators 144.30 ms/op 166.90 ms/op 0.86
findModifiedValidators - 1 modified validators 178.08 ms/op 162.57 ms/op 1.10
findModifiedValidators - no difference 144.23 ms/op 175.69 ms/op 0.82
compare ViewDUs 5.9077 s/op 7.1874 s/op 0.82
compare each validator Uint8Array 1.0815 s/op 1.6569 s/op 0.65
compare ViewDU to Uint8Array 718.25 ms/op 1.1001 s/op 0.65
migrate state 1000000 validators, 24 modified, 0 new 834.88 ms/op 879.70 ms/op 0.95
migrate state 1000000 validators, 1700 modified, 1000 new 1.1683 s/op 1.4037 s/op 0.83
migrate state 1000000 validators, 3400 modified, 2000 new 1.1803 s/op 1.6278 s/op 0.73
migrate state 1500000 validators, 24 modified, 0 new 872.56 ms/op 1.0442 s/op 0.84
migrate state 1500000 validators, 1700 modified, 1000 new 1.0108 s/op 1.3186 s/op 0.77
migrate state 1500000 validators, 3400 modified, 2000 new 1.2305 s/op 1.4284 s/op 0.86
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.9700 ns/op 5.0700 ns/op 1.18
state getBlockRootAtSlot - 250000 vs - 7PWei 534.38 ns/op 601.71 ns/op 0.89
naive computeProposerIndex 100000 validators 44.138 ms/op 61.242 ms/op 0.72
computeProposerIndex 100000 validators 6.1953 ms/op 9.1889 ms/op 0.67
naiveGetNextSyncCommitteeIndices 1000 validators 5.8607 s/op 7.6852 s/op 0.76
getNextSyncCommitteeIndices 1000 validators 188.32 ms/op 272.26 ms/op 0.69
naiveGetNextSyncCommitteeIndices 10000 validators 6.2421 s/op 8.2606 s/op 0.76
getNextSyncCommitteeIndices 10000 validators 195.16 ms/op 242.47 ms/op 0.80
naiveGetNextSyncCommitteeIndices 100000 validators 6.1066 s/op 7.1806 s/op 0.85
getNextSyncCommitteeIndices 100000 validators 194.15 ms/op 250.91 ms/op 0.77
naive computeShuffledIndex 100000 validators 18.023 s/op 22.820 s/op 0.79
cached computeShuffledIndex 100000 validators 476.75 ms/op 561.84 ms/op 0.85
naive computeShuffledIndex 2000000 validators 394.36 s/op 498.56 s/op 0.79
cached computeShuffledIndex 2000000 validators 17.173 s/op 32.941 s/op 0.52
computeProposers - vc 250000 7.7392 ms/op 10.400 ms/op 0.74
computeEpochShuffling - vc 250000 36.225 ms/op 43.239 ms/op 0.84
getNextSyncCommittee - vc 250000 115.46 ms/op 153.00 ms/op 0.75
computeSigningRoot for AttestationData 26.463 us/op 28.311 us/op 0.93
hash AttestationData serialized data then Buffer.toString(base64) 1.1563 us/op 1.6926 us/op 0.68
toHexString serialized data 946.95 ns/op 1.2809 us/op 0.74
Buffer.toString(base64) 116.31 ns/op 168.74 ns/op 0.69
nodejs block root to RootHex using toHex 110.18 ns/op 152.95 ns/op 0.72
nodejs block root to RootHex using toRootHex 70.837 ns/op 89.369 ns/op 0.79
browser block root to RootHex using the deprecated toHexString 187.62 ns/op 223.21 ns/op 0.84
browser block root to RootHex using toHex 157.18 ns/op 180.38 ns/op 0.87
browser block root to RootHex using toRootHex 146.44 ns/op 174.67 ns/op 0.84

by benchmarkbot/action

@nflaig
nflaig merged commit 3cb84a8 into unstable Mar 14, 2025
@nflaig
nflaig deleted the nflaig/enhance-blacklisted-blocks branch March 14, 2025 14:03
@wemeetagain

Copy link
Copy Markdown
Member

🎉 This PR is included in v1.28.0 🎉

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.

2 participants