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: use BLOB_SIDECAR_SUBNET_COUNT to configure blob subnets #7297

Merged
merged 1 commit into from
Dec 14, 2024

Conversation

nflaig
Copy link
Member

@nflaig nflaig commented Dec 13, 2024

Motivation

As reported by https://bugs.immunefi.com/dashboard/submission/37646 we don't use BLOB_SIDECAR_SUBNET_COUNT config from CL spec.

While this is not ideal from a spec cleanliness perspective, it's not a security related issue as these values are the same in the current spec (there is even a test that asserts that) and we are spec compliant here from a technical point of view but we should follow the spec more closely semantically.

Related spec PRs

Description

Use BLOB_SIDECAR_SUBNET_COUNT instead of MAX_BLOBS_PER_BLOCK to configure the right amount of blob subnets.

This is not an issue currently as BLOB_SIDECAR_SUBNET_COUNT == MAX_BLOBS_PER_BLOCK but as per spec these are two different constants (see ethereum/consensus-specs#3346) and could be configured individually (ie. by passing a custom config).

Depends on #7294

Copy link

codecov bot commented Dec 13, 2024

Codecov Report

Attention: Patch coverage is 23.07692% with 20 lines in your changes missing coverage. Please review.

Project coverage is 48.76%. Comparing base (30c669b) to head (67075e9).
Report is 1 commits behind head on unstable.

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #7297   +/-   ##
=========================================
  Coverage     48.76%   48.76%           
=========================================
  Files           601      601           
  Lines         40195    40203    +8     
  Branches       2061     2061           
=========================================
+ Hits          19602    19607    +5     
- Misses        20555    20558    +3     
  Partials         38       38           

g11tech
g11tech previously approved these changes Dec 13, 2024
Copy link
Contributor

@g11tech g11tech left a comment

Choose a reason for hiding this comment

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

lgtm

Base automatically changed from nc/blob-config to unstable December 13, 2024 20:51
@ensi321 ensi321 dismissed g11tech’s stale review December 13, 2024 20:51

The base branch was changed.

@nflaig nflaig force-pushed the nflaig/BLOB_SIDECAR_SUBNET_COUNT branch from 48f6c94 to 67075e9 Compare December 13, 2024 21:00
@nflaig nflaig marked this pull request as ready for review December 13, 2024 21:04
@nflaig nflaig requested a review from a team as a code owner December 13, 2024 21:04
Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: d6c163b Previous: 99794d3 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.9464 ms/op 2.1367 ms/op 0.91
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 47.056 us/op 52.834 us/op 0.89
BLS verify - blst 810.15 us/op 1.0209 ms/op 0.79
BLS verifyMultipleSignatures 3 - blst 1.1541 ms/op 1.5870 ms/op 0.73
BLS verifyMultipleSignatures 8 - blst 1.6130 ms/op 2.0045 ms/op 0.80
BLS verifyMultipleSignatures 32 - blst 4.7130 ms/op 6.0829 ms/op 0.77
BLS verifyMultipleSignatures 64 - blst 8.7378 ms/op 11.431 ms/op 0.76
BLS verifyMultipleSignatures 128 - blst 16.822 ms/op 17.863 ms/op 0.94
BLS deserializing 10000 signatures 682.41 ms/op 707.37 ms/op 0.96
BLS deserializing 100000 signatures 6.7548 s/op 7.0437 s/op 0.96
BLS verifyMultipleSignatures - same message - 3 - blst 882.30 us/op 1.0103 ms/op 0.87
BLS verifyMultipleSignatures - same message - 8 - blst 1.0188 ms/op 1.0538 ms/op 0.97
BLS verifyMultipleSignatures - same message - 32 - blst 1.6697 ms/op 1.8970 ms/op 0.88
BLS verifyMultipleSignatures - same message - 64 - blst 2.5706 ms/op 2.7941 ms/op 0.92
BLS verifyMultipleSignatures - same message - 128 - blst 4.3070 ms/op 4.3489 ms/op 0.99
BLS aggregatePubkeys 32 - blst 20.128 us/op 20.752 us/op 0.97
BLS aggregatePubkeys 128 - blst 68.438 us/op 71.782 us/op 0.95
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 53.710 ms/op 69.835 ms/op 0.77
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 48.533 ms/op 75.671 ms/op 0.64
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 40.585 ms/op 61.302 ms/op 0.66
getSlashingsAndExits - default max 93.208 us/op 105.56 us/op 0.88
getSlashingsAndExits - 2k 406.02 us/op 327.04 us/op 1.24
proposeBlockBody type=full, size=empty 6.8150 ms/op 6.4051 ms/op 1.06
isKnown best case - 1 super set check 284.00 ns/op 313.00 ns/op 0.91
isKnown normal case - 2 super set checks 288.00 ns/op 305.00 ns/op 0.94
isKnown worse case - 16 super set checks 313.00 ns/op 343.00 ns/op 0.91
InMemoryCheckpointStateCache - add get delete 2.6850 us/op 2.9530 us/op 0.91
validate api signedAggregateAndProof - struct 1.4120 ms/op 1.5933 ms/op 0.89
validate gossip signedAggregateAndProof - struct 1.4084 ms/op 2.5475 ms/op 0.55
batch validate gossip attestation - vc 640000 - chunk 32 128.04 us/op 140.06 us/op 0.91
batch validate gossip attestation - vc 640000 - chunk 64 111.79 us/op 120.14 us/op 0.93
batch validate gossip attestation - vc 640000 - chunk 128 101.24 us/op 128.59 us/op 0.79
batch validate gossip attestation - vc 640000 - chunk 256 97.750 us/op 116.50 us/op 0.84
pickEth1Vote - no votes 984.52 us/op 1.0723 ms/op 0.92
pickEth1Vote - max votes 5.2038 ms/op 6.1472 ms/op 0.85
pickEth1Vote - Eth1Data hashTreeRoot value x2048 12.096 ms/op 12.793 ms/op 0.95
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 15.509 ms/op 20.314 ms/op 0.76
pickEth1Vote - Eth1Data fastSerialize value x2048 450.15 us/op 552.41 us/op 0.81
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.5080 ms/op 3.1602 ms/op 0.79
bytes32 toHexString 419.00 ns/op 524.00 ns/op 0.80
bytes32 Buffer.toString(hex) 241.00 ns/op 272.00 ns/op 0.89
bytes32 Buffer.toString(hex) from Uint8Array 357.00 ns/op 452.00 ns/op 0.79
bytes32 Buffer.toString(hex) + 0x 247.00 ns/op 272.00 ns/op 0.91
Object access 1 prop 0.13400 ns/op 0.15400 ns/op 0.87
Map access 1 prop 0.12700 ns/op 0.13900 ns/op 0.91
Object get x1000 5.8900 ns/op 6.1020 ns/op 0.97
Map get x1000 6.4780 ns/op 6.4950 ns/op 1.00
Object set x1000 31.705 ns/op 40.753 ns/op 0.78
Map set x1000 21.803 ns/op 23.581 ns/op 0.92
Return object 10000 times 0.28400 ns/op 0.30170 ns/op 0.94
Throw Error 10000 times 3.3358 us/op 3.4509 us/op 0.97
toHex 140.93 ns/op 165.37 ns/op 0.85
Buffer.from 130.24 ns/op 150.31 ns/op 0.87
shared Buffer 82.913 ns/op 88.094 ns/op 0.94
fastMsgIdFn sha256 / 200 bytes 2.2060 us/op 2.2040 us/op 1.00
fastMsgIdFn h32 xxhash / 200 bytes 221.00 ns/op 249.00 ns/op 0.89
fastMsgIdFn h64 xxhash / 200 bytes 258.00 ns/op 272.00 ns/op 0.95
fastMsgIdFn sha256 / 1000 bytes 7.2320 us/op 7.6630 us/op 0.94
fastMsgIdFn h32 xxhash / 1000 bytes 352.00 ns/op 359.00 ns/op 0.98
fastMsgIdFn h64 xxhash / 1000 bytes 333.00 ns/op 338.00 ns/op 0.99
fastMsgIdFn sha256 / 10000 bytes 62.994 us/op 62.467 us/op 1.01
fastMsgIdFn h32 xxhash / 10000 bytes 1.7970 us/op 1.7910 us/op 1.00
fastMsgIdFn h64 xxhash / 10000 bytes 1.2010 us/op 1.1750 us/op 1.02
send data - 1000 256B messages 11.253 ms/op 13.365 ms/op 0.84
send data - 1000 512B messages 15.243 ms/op 16.083 ms/op 0.95
send data - 1000 1024B messages 23.922 ms/op 25.447 ms/op 0.94
send data - 1000 1200B messages 17.489 ms/op 26.663 ms/op 0.66
send data - 1000 2048B messages 31.835 ms/op 33.173 ms/op 0.96
send data - 1000 4096B messages 30.835 ms/op 32.352 ms/op 0.95
send data - 1000 16384B messages 71.535 ms/op 75.458 ms/op 0.95
send data - 1000 65536B messages 207.76 ms/op 198.69 ms/op 1.05
enrSubnets - fastDeserialize 64 bits 1.0610 us/op 1.0580 us/op 1.00
enrSubnets - ssz BitVector 64 bits 349.00 ns/op 362.00 ns/op 0.96
enrSubnets - fastDeserialize 4 bits 154.00 ns/op 153.00 ns/op 1.01
enrSubnets - ssz BitVector 4 bits 355.00 ns/op 355.00 ns/op 1.00
prioritizePeers score -10:0 att 32-0.1 sync 2-0 143.14 us/op 150.20 us/op 0.95
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 153.63 us/op 193.84 us/op 0.79
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 217.47 us/op 292.00 us/op 0.74
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 393.32 us/op 562.01 us/op 0.70
prioritizePeers score 0:0 att 64-1 sync 4-1 502.61 us/op 813.44 us/op 0.62
array of 16000 items push then shift 1.6105 us/op 1.6706 us/op 0.96
LinkedList of 16000 items push then shift 6.8790 ns/op 7.3140 ns/op 0.94
array of 16000 items push then pop 102.63 ns/op 126.66 ns/op 0.81
LinkedList of 16000 items push then pop 6.8090 ns/op 7.0540 ns/op 0.97
array of 24000 items push then shift 2.3634 us/op 2.4939 us/op 0.95
LinkedList of 24000 items push then shift 6.8480 ns/op 7.6070 ns/op 0.90
array of 24000 items push then pop 122.23 ns/op 153.39 ns/op 0.80
LinkedList of 24000 items push then pop 6.6880 ns/op 7.5100 ns/op 0.89
intersect bitArray bitLen 8 6.1220 ns/op 6.5340 ns/op 0.94
intersect array and set length 8 41.705 ns/op 60.650 ns/op 0.69
intersect bitArray bitLen 128 28.529 ns/op 29.489 ns/op 0.97
intersect array and set length 128 625.61 ns/op 734.54 ns/op 0.85
bitArray.getTrueBitIndexes() bitLen 128 1.2440 us/op 2.3350 us/op 0.53
bitArray.getTrueBitIndexes() bitLen 248 2.0520 us/op 4.2000 us/op 0.49
bitArray.getTrueBitIndexes() bitLen 512 4.0050 us/op 8.2570 us/op 0.49
Buffer.concat 32 items 828.00 ns/op 1.0120 us/op 0.82
Uint8Array.set 32 items 1.7110 us/op 2.1700 us/op 0.79
Buffer.copy 2.4230 us/op 2.0970 us/op 1.16
Uint8Array.set - with subarray 2.8690 us/op 3.2420 us/op 0.88
Uint8Array.set - without subarray 1.7800 us/op 2.0460 us/op 0.87
getUint32 - dataview 225.00 ns/op 285.00 ns/op 0.79
getUint32 - manual 144.00 ns/op 204.00 ns/op 0.71
Set add up to 64 items then delete first 2.0943 us/op 2.4318 us/op 0.86
OrderedSet add up to 64 items then delete first 3.3151 us/op 3.8953 us/op 0.85
Set add up to 64 items then delete last 2.4087 us/op 3.2553 us/op 0.74
OrderedSet add up to 64 items then delete last 3.5007 us/op 5.1187 us/op 0.68
Set add up to 64 items then delete middle 2.3875 us/op 3.1542 us/op 0.76
OrderedSet add up to 64 items then delete middle 4.9147 us/op 6.5177 us/op 0.75
Set add up to 128 items then delete first 4.7432 us/op 5.2697 us/op 0.90
OrderedSet add up to 128 items then delete first 7.4592 us/op 7.4923 us/op 1.00
Set add up to 128 items then delete last 4.6241 us/op 5.3564 us/op 0.86
OrderedSet add up to 128 items then delete last 6.8954 us/op 8.0202 us/op 0.86
Set add up to 128 items then delete middle 4.5961 us/op 5.0520 us/op 0.91
OrderedSet add up to 128 items then delete middle 12.997 us/op 13.766 us/op 0.94
Set add up to 256 items then delete first 9.7508 us/op 10.716 us/op 0.91
OrderedSet add up to 256 items then delete first 15.366 us/op 16.761 us/op 0.92
Set add up to 256 items then delete last 9.2210 us/op 11.774 us/op 0.78
OrderedSet add up to 256 items then delete last 13.683 us/op 17.543 us/op 0.78
Set add up to 256 items then delete middle 9.1370 us/op 10.361 us/op 0.88
OrderedSet add up to 256 items then delete middle 39.599 us/op 41.821 us/op 0.95
transfer serialized Status (84 B) 1.4900 us/op 1.3980 us/op 1.07
copy serialized Status (84 B) 1.2300 us/op 1.1010 us/op 1.12
transfer serialized SignedVoluntaryExit (112 B) 1.6960 us/op 1.4300 us/op 1.19
copy serialized SignedVoluntaryExit (112 B) 1.3640 us/op 1.2500 us/op 1.09
transfer serialized ProposerSlashing (416 B) 2.4520 us/op 1.6020 us/op 1.53
copy serialized ProposerSlashing (416 B) 2.6140 us/op 1.6230 us/op 1.61
transfer serialized Attestation (485 B) 2.7090 us/op 1.7070 us/op 1.59
copy serialized Attestation (485 B) 2.5060 us/op 1.5160 us/op 1.65
transfer serialized AttesterSlashing (33232 B) 2.9570 us/op 2.7440 us/op 1.08
copy serialized AttesterSlashing (33232 B) 6.1090 us/op 6.9820 us/op 0.87
transfer serialized Small SignedBeaconBlock (128000 B) 2.7460 us/op 3.3140 us/op 0.83
copy serialized Small SignedBeaconBlock (128000 B) 14.732 us/op 17.504 us/op 0.84
transfer serialized Avg SignedBeaconBlock (200000 B) 3.2230 us/op 3.5390 us/op 0.91
copy serialized Avg SignedBeaconBlock (200000 B) 17.962 us/op 26.331 us/op 0.68
transfer serialized BlobsSidecar (524380 B) 2.6710 us/op 3.0430 us/op 0.88
copy serialized BlobsSidecar (524380 B) 132.90 us/op 75.157 us/op 1.77
transfer serialized Big SignedBeaconBlock (1000000 B) 2.9890 us/op 3.1640 us/op 0.94
copy serialized Big SignedBeaconBlock (1000000 B) 211.63 us/op 178.79 us/op 1.18
pass gossip attestations to forkchoice per slot 2.8226 ms/op 2.8442 ms/op 0.99
forkChoice updateHead vc 100000 bc 64 eq 0 447.86 us/op 454.07 us/op 0.99
forkChoice updateHead vc 600000 bc 64 eq 0 2.9517 ms/op 3.1727 ms/op 0.93
forkChoice updateHead vc 1000000 bc 64 eq 0 4.7248 ms/op 5.3831 ms/op 0.88
forkChoice updateHead vc 600000 bc 320 eq 0 2.7853 ms/op 2.9000 ms/op 0.96
forkChoice updateHead vc 600000 bc 1200 eq 0 2.9263 ms/op 3.0096 ms/op 0.97
forkChoice updateHead vc 600000 bc 7200 eq 0 3.3993 ms/op 4.1364 ms/op 0.82
forkChoice updateHead vc 600000 bc 64 eq 1000 10.353 ms/op 10.642 ms/op 0.97
forkChoice updateHead vc 600000 bc 64 eq 10000 10.176 ms/op 10.593 ms/op 0.96
forkChoice updateHead vc 600000 bc 64 eq 300000 12.953 ms/op 15.158 ms/op 0.85
computeDeltas 500000 validators 300 proto nodes 4.0289 ms/op 4.1799 ms/op 0.96
computeDeltas 500000 validators 1200 proto nodes 4.5478 ms/op 4.2880 ms/op 1.06
computeDeltas 500000 validators 7200 proto nodes 4.2553 ms/op 4.2920 ms/op 0.99
computeDeltas 750000 validators 300 proto nodes 6.1742 ms/op 6.1591 ms/op 1.00
computeDeltas 750000 validators 1200 proto nodes 6.1463 ms/op 6.1044 ms/op 1.01
computeDeltas 750000 validators 7200 proto nodes 6.1524 ms/op 6.2919 ms/op 0.98
computeDeltas 1400000 validators 300 proto nodes 11.275 ms/op 11.831 ms/op 0.95
computeDeltas 1400000 validators 1200 proto nodes 11.193 ms/op 12.157 ms/op 0.92
computeDeltas 1400000 validators 7200 proto nodes 11.515 ms/op 12.457 ms/op 0.92
computeDeltas 2100000 validators 300 proto nodes 16.935 ms/op 18.545 ms/op 0.91
computeDeltas 2100000 validators 1200 proto nodes 16.795 ms/op 18.077 ms/op 0.93
computeDeltas 2100000 validators 7200 proto nodes 17.474 ms/op 17.864 ms/op 0.98
altair processAttestation - 250000 vs - 7PWei normalcase 1.9604 ms/op 2.1741 ms/op 0.90
altair processAttestation - 250000 vs - 7PWei worstcase 3.6554 ms/op 2.8406 ms/op 1.29
altair processAttestation - setStatus - 1/6 committees join 109.38 us/op 88.547 us/op 1.24
altair processAttestation - setStatus - 1/3 committees join 220.17 us/op 178.63 us/op 1.23
altair processAttestation - setStatus - 1/2 committees join 296.23 us/op 253.33 us/op 1.17
altair processAttestation - setStatus - 2/3 committees join 370.43 us/op 318.35 us/op 1.16
altair processAttestation - setStatus - 4/5 committees join 549.11 us/op 466.05 us/op 1.18
altair processAttestation - setStatus - 100% committees join 690.40 us/op 556.11 us/op 1.24
altair processBlock - 250000 vs - 7PWei normalcase 4.6086 ms/op 4.4770 ms/op 1.03
altair processBlock - 250000 vs - 7PWei normalcase hashState 27.780 ms/op 28.018 ms/op 0.99
altair processBlock - 250000 vs - 7PWei worstcase 40.183 ms/op 39.620 ms/op 1.01
altair processBlock - 250000 vs - 7PWei worstcase hashState 78.140 ms/op 81.854 ms/op 0.95
phase0 processBlock - 250000 vs - 7PWei normalcase 2.3652 ms/op 2.3298 ms/op 1.02
phase0 processBlock - 250000 vs - 7PWei worstcase 26.677 ms/op 25.928 ms/op 1.03
altair processEth1Data - 250000 vs - 7PWei normalcase 533.43 us/op 336.67 us/op 1.58
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 7.4770 us/op 6.9170 us/op 1.08
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 38.583 us/op 38.155 us/op 1.01
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 10.715 us/op 13.695 us/op 0.78
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 6.6760 us/op 6.7000 us/op 1.00
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 197.05 us/op 170.64 us/op 1.15
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.2725 ms/op 1.3964 ms/op 0.91
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.6588 ms/op 1.9376 ms/op 0.86
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.6056 ms/op 2.2502 ms/op 0.71
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.4394 ms/op 3.7648 ms/op 1.18
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.7473 ms/op 1.7747 ms/op 0.98
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 5.0609 ms/op 3.8894 ms/op 1.30
Tree 40 250000 create 302.02 ms/op 242.42 ms/op 1.25
Tree 40 250000 get(125000) 158.16 ns/op 160.95 ns/op 0.98
Tree 40 250000 set(125000) 693.32 ns/op 706.80 ns/op 0.98
Tree 40 250000 toArray() 17.427 ms/op 17.146 ms/op 1.02
Tree 40 250000 iterate all - toArray() + loop 23.453 ms/op 18.148 ms/op 1.29
Tree 40 250000 iterate all - get(i) 65.784 ms/op 56.910 ms/op 1.16
Array 250000 create 4.3118 ms/op 3.2207 ms/op 1.34
Array 250000 clone - spread 1.5947 ms/op 1.3667 ms/op 1.17
Array 250000 get(125000) 0.47400 ns/op 0.44100 ns/op 1.07
Array 250000 set(125000) 0.48300 ns/op 0.45200 ns/op 1.07
Array 250000 iterate all - loop 104.33 us/op 96.023 us/op 1.09
phase0 afterProcessEpoch - 250000 vs - 7PWei 55.390 ms/op 51.613 ms/op 1.07
Array.fill - length 1000000 4.1936 ms/op 3.4402 ms/op 1.22
Array push - length 1000000 22.706 ms/op 18.810 ms/op 1.21
Array.get 0.29479 ns/op 0.29403 ns/op 1.00
Uint8Array.get 0.46053 ns/op 0.44582 ns/op 1.03
phase0 beforeProcessEpoch - 250000 vs - 7PWei 22.672 ms/op 19.139 ms/op 1.18
altair processEpoch - mainnet_e81889 280.95 ms/op 283.28 ms/op 0.99
mainnet_e81889 - altair beforeProcessEpoch 18.122 ms/op 19.319 ms/op 0.94
mainnet_e81889 - altair processJustificationAndFinalization 11.511 us/op 13.034 us/op 0.88
mainnet_e81889 - altair processInactivityUpdates 5.4089 ms/op 5.9560 ms/op 0.91
mainnet_e81889 - altair processRewardsAndPenalties 39.129 ms/op 44.413 ms/op 0.88
mainnet_e81889 - altair processRegistryUpdates 2.3090 us/op 1.8560 us/op 1.24
mainnet_e81889 - altair processSlashings 380.00 ns/op 331.00 ns/op 1.15
mainnet_e81889 - altair processEth1DataReset 312.00 ns/op 328.00 ns/op 0.95
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.4656 ms/op 1.7128 ms/op 0.86
mainnet_e81889 - altair processSlashingsReset 2.7250 us/op 2.7870 us/op 0.98
mainnet_e81889 - altair processRandaoMixesReset 5.1410 us/op 3.3520 us/op 1.53
mainnet_e81889 - altair processHistoricalRootsUpdate 485.00 ns/op 717.00 ns/op 0.68
mainnet_e81889 - altair processParticipationFlagUpdates 3.7910 us/op 2.1710 us/op 1.75
mainnet_e81889 - altair processSyncCommitteeUpdates 429.00 ns/op 443.00 ns/op 0.97
mainnet_e81889 - altair afterProcessEpoch 50.849 ms/op 52.039 ms/op 0.98
capella processEpoch - mainnet_e217614 1.0459 s/op 1.0638 s/op 0.98
mainnet_e217614 - capella beforeProcessEpoch 66.656 ms/op 69.553 ms/op 0.96
mainnet_e217614 - capella processJustificationAndFinalization 13.156 us/op 16.496 us/op 0.80
mainnet_e217614 - capella processInactivityUpdates 17.624 ms/op 17.825 ms/op 0.99
mainnet_e217614 - capella processRewardsAndPenalties 220.76 ms/op 251.80 ms/op 0.88
mainnet_e217614 - capella processRegistryUpdates 11.732 us/op 14.574 us/op 0.80
mainnet_e217614 - capella processSlashings 367.00 ns/op 524.00 ns/op 0.70
mainnet_e217614 - capella processEth1DataReset 365.00 ns/op 464.00 ns/op 0.79
mainnet_e217614 - capella processEffectiveBalanceUpdates 11.892 ms/op 14.816 ms/op 0.80
mainnet_e217614 - capella processSlashingsReset 3.4090 us/op 4.4640 us/op 0.76
mainnet_e217614 - capella processRandaoMixesReset 3.8860 us/op 4.5080 us/op 0.86
mainnet_e217614 - capella processHistoricalRootsUpdate 337.00 ns/op 505.00 ns/op 0.67
mainnet_e217614 - capella processParticipationFlagUpdates 1.8540 us/op 1.6630 us/op 1.11
mainnet_e217614 - capella afterProcessEpoch 119.90 ms/op 128.04 ms/op 0.94
phase0 processEpoch - mainnet_e58758 312.84 ms/op 357.70 ms/op 0.87
mainnet_e58758 - phase0 beforeProcessEpoch 69.022 ms/op 79.499 ms/op 0.87
mainnet_e58758 - phase0 processJustificationAndFinalization 16.609 us/op 14.853 us/op 1.12
mainnet_e58758 - phase0 processRewardsAndPenalties 23.373 ms/op 31.090 ms/op 0.75
mainnet_e58758 - phase0 processRegistryUpdates 7.5640 us/op 9.7970 us/op 0.77
mainnet_e58758 - phase0 processSlashings 414.00 ns/op 356.00 ns/op 1.16
mainnet_e58758 - phase0 processEth1DataReset 417.00 ns/op 354.00 ns/op 1.18
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.1542 ms/op 1.9338 ms/op 0.60
mainnet_e58758 - phase0 processSlashingsReset 3.2090 us/op 2.8360 us/op 1.13
mainnet_e58758 - phase0 processRandaoMixesReset 4.4580 us/op 3.9930 us/op 1.12
mainnet_e58758 - phase0 processHistoricalRootsUpdate 365.00 ns/op 336.00 ns/op 1.09
mainnet_e58758 - phase0 processParticipationRecordUpdates 3.4850 us/op 3.1070 us/op 1.12
mainnet_e58758 - phase0 afterProcessEpoch 42.317 ms/op 45.467 ms/op 0.93
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.4379 ms/op 2.2656 ms/op 0.63
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.2238 ms/op 2.5771 ms/op 0.86
altair processInactivityUpdates - 250000 normalcase 14.634 ms/op 18.419 ms/op 0.79
altair processInactivityUpdates - 250000 worstcase 16.138 ms/op 19.396 ms/op 0.83
phase0 processRegistryUpdates - 250000 normalcase 7.4790 us/op 6.9160 us/op 1.08
phase0 processRegistryUpdates - 250000 badcase_full_deposits 266.83 us/op 331.20 us/op 0.81
phase0 processRegistryUpdates - 250000 worstcase 0.5 120.63 ms/op 123.77 ms/op 0.97
altair processRewardsAndPenalties - 250000 normalcase 37.536 ms/op 40.005 ms/op 0.94
altair processRewardsAndPenalties - 250000 worstcase 35.927 ms/op 40.810 ms/op 0.88
phase0 getAttestationDeltas - 250000 normalcase 7.8159 ms/op 8.7210 ms/op 0.90
phase0 getAttestationDeltas - 250000 worstcase 7.4176 ms/op 8.0521 ms/op 0.92
phase0 processSlashings - 250000 worstcase 112.06 us/op 117.56 us/op 0.95
altair processSyncCommitteeUpdates - 250000 138.38 ms/op 133.51 ms/op 1.04
BeaconState.hashTreeRoot - No change 235.00 ns/op 229.00 ns/op 1.03
BeaconState.hashTreeRoot - 1 full validator 113.23 us/op 93.802 us/op 1.21
BeaconState.hashTreeRoot - 32 full validator 1.4937 ms/op 1.1633 ms/op 1.28
BeaconState.hashTreeRoot - 512 full validator 11.294 ms/op 10.562 ms/op 1.07
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 161.69 us/op 109.43 us/op 1.48
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.8212 ms/op 2.0024 ms/op 0.91
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 21.848 ms/op 26.430 ms/op 0.83
BeaconState.hashTreeRoot - 1 balances 85.595 us/op 129.65 us/op 0.66
BeaconState.hashTreeRoot - 32 balances 797.89 us/op 954.03 us/op 0.84
BeaconState.hashTreeRoot - 512 balances 7.5380 ms/op 8.2070 ms/op 0.92
BeaconState.hashTreeRoot - 250000 balances 164.43 ms/op 166.60 ms/op 0.99
aggregationBits - 2048 els - zipIndexesInBitList 24.046 us/op 28.768 us/op 0.84
byteArrayEquals 32 53.563 ns/op 54.937 ns/op 0.97
Buffer.compare 32 17.092 ns/op 17.388 ns/op 0.98
byteArrayEquals 1024 1.5763 us/op 1.6102 us/op 0.98
Buffer.compare 1024 25.459 ns/op 25.833 ns/op 0.99
byteArrayEquals 16384 25.093 us/op 25.942 us/op 0.97
Buffer.compare 16384 205.48 ns/op 205.39 ns/op 1.00
byteArrayEquals 123687377 190.74 ms/op 196.42 ms/op 0.97
Buffer.compare 123687377 6.9070 ms/op 8.2932 ms/op 0.83
byteArrayEquals 32 - diff last byte 51.746 ns/op 53.574 ns/op 0.97
Buffer.compare 32 - diff last byte 16.932 ns/op 17.865 ns/op 0.95
byteArrayEquals 1024 - diff last byte 1.5649 us/op 1.6240 us/op 0.96
Buffer.compare 1024 - diff last byte 24.722 ns/op 27.028 ns/op 0.91
byteArrayEquals 16384 - diff last byte 24.898 us/op 25.782 us/op 0.97
Buffer.compare 16384 - diff last byte 183.44 ns/op 206.21 ns/op 0.89
byteArrayEquals 123687377 - diff last byte 183.52 ms/op 196.59 ms/op 0.93
Buffer.compare 123687377 - diff last byte 6.0913 ms/op 8.4444 ms/op 0.72
byteArrayEquals 32 - random bytes 4.9650 ns/op 5.3290 ns/op 0.93
Buffer.compare 32 - random bytes 16.502 ns/op 17.646 ns/op 0.94
byteArrayEquals 1024 - random bytes 4.9430 ns/op 5.3700 ns/op 0.92
Buffer.compare 1024 - random bytes 16.442 ns/op 17.701 ns/op 0.93
byteArrayEquals 16384 - random bytes 4.9510 ns/op 5.3930 ns/op 0.92
Buffer.compare 16384 - random bytes 17.244 ns/op 17.686 ns/op 0.98
byteArrayEquals 123687377 - random bytes 6.2100 ns/op 6.7400 ns/op 0.92
Buffer.compare 123687377 - random bytes 17.670 ns/op 20.050 ns/op 0.88
regular array get 100000 times 40.616 us/op 34.767 us/op 1.17
wrappedArray get 100000 times 31.464 us/op 34.191 us/op 0.92
arrayWithProxy get 100000 times 13.926 ms/op 15.376 ms/op 0.91
ssz.Root.equals 44.206 ns/op 49.467 ns/op 0.89
byteArrayEquals 43.458 ns/op 46.607 ns/op 0.93
Buffer.compare 9.9360 ns/op 10.881 ns/op 0.91
processSlot - 1 slots 15.812 us/op 16.540 us/op 0.96
processSlot - 32 slots 2.8393 ms/op 2.9831 ms/op 0.95
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 37.498 ms/op 35.797 ms/op 1.05
getCommitteeAssignments - req 1 vs - 250000 vc 2.0750 ms/op 2.2300 ms/op 0.93
getCommitteeAssignments - req 100 vs - 250000 vc 4.0250 ms/op 4.2968 ms/op 0.94
getCommitteeAssignments - req 1000 vs - 250000 vc 4.2808 ms/op 4.5424 ms/op 0.94
findModifiedValidators - 10000 modified validators 225.13 ms/op 271.85 ms/op 0.83
findModifiedValidators - 1000 modified validators 192.75 ms/op 190.10 ms/op 1.01
findModifiedValidators - 100 modified validators 148.59 ms/op 176.88 ms/op 0.84
findModifiedValidators - 10 modified validators 149.39 ms/op 151.63 ms/op 0.99
findModifiedValidators - 1 modified validators 139.24 ms/op 160.80 ms/op 0.87
findModifiedValidators - no difference 153.07 ms/op 193.05 ms/op 0.79
compare ViewDUs 2.9815 s/op 3.2735 s/op 0.91
compare each validator Uint8Array 1.6516 s/op 1.8314 s/op 0.90
compare ViewDU to Uint8Array 946.26 ms/op 1.0876 s/op 0.87
migrate state 1000000 validators, 24 modified, 0 new 722.64 ms/op 769.12 ms/op 0.94
migrate state 1000000 validators, 1700 modified, 1000 new 980.77 ms/op 1.0739 s/op 0.91
migrate state 1000000 validators, 3400 modified, 2000 new 1.1862 s/op 1.4071 s/op 0.84
migrate state 1500000 validators, 24 modified, 0 new 754.49 ms/op 864.70 ms/op 0.87
migrate state 1500000 validators, 1700 modified, 1000 new 970.44 ms/op 1.0941 s/op 0.89
migrate state 1500000 validators, 3400 modified, 2000 new 1.1894 s/op 1.2798 s/op 0.93
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.2000 ns/op 5.0700 ns/op 0.83
state getBlockRootAtSlot - 250000 vs - 7PWei 700.78 ns/op 672.29 ns/op 1.04
computeProposers - vc 250000 7.4409 ms/op 7.9593 ms/op 0.93
computeEpochShuffling - vc 250000 40.439 ms/op 44.043 ms/op 0.92
getNextSyncCommittee - vc 250000 126.63 ms/op 136.04 ms/op 0.93
computeSigningRoot for AttestationData 25.182 us/op 22.891 us/op 1.10
hash AttestationData serialized data then Buffer.toString(base64) 1.4944 us/op 1.6829 us/op 0.89
toHexString serialized data 850.60 ns/op 1.0694 us/op 0.80
Buffer.toString(base64) 175.13 ns/op 190.55 ns/op 0.92
nodejs block root to RootHex using toHex 137.69 ns/op 162.95 ns/op 0.84
nodejs block root to RootHex using toRootHex 94.136 ns/op 98.356 ns/op 0.96
browser block root to RootHex using the deprecated toHexString 218.85 ns/op 239.21 ns/op 0.91
browser block root to RootHex using toHex 175.02 ns/op 193.20 ns/op 0.91
browser block root to RootHex using toRootHex 154.80 ns/op 177.52 ns/op 0.87

by benchmarkbot/action

@ensi321 ensi321 merged commit a00c796 into unstable Dec 14, 2024
19 of 20 checks passed
@ensi321 ensi321 deleted the nflaig/BLOB_SIDECAR_SUBNET_COUNT branch December 14, 2024 00:23
wemeetagain added a commit that referenced this pull request Dec 20, 2024
* feat: add keymanager endpoint to retrieve proposer config (#7210)

* feat: add keymanager endpoint to retrieve proposer config

* Do not return empty builder config

* Check all builder proposer config values

* Fix settings builder config if undefined

* Fix builder config parsing

* Use ssz type to handle json serialization

Default parsing can't handle BigInt

* Revert "Use ssz type to handle json serialization"

This reverts commit 01fcea7.

* Fix boost factor json serialization

* Remove unused import

* Update test data

* Update proposer config test

* feat: add mekong network option (#7212)

* chore: fix import order with biome syntax (#7211)

Fix import order

* fix: consistently validate pubkey and throw 404 if not found (#7214)

* Throw error if pubkey is unknown when getting graffiti

* Consistently validate pubkey and throw 404 if not found

* fix: only return local keys from /eth/v1/keystores (#7215)

* fix: only return local keys from /eth/v1/keystores

* Fix fetching remote keys in node assertion

* feat: add and use getBlobsV1 to expedite gossip import (#7134)

* hookup the getblobs api to get bob and proof data from el

remove unused

fix import

metrics overhault, test, debugging testing, some feeback

fix

add nethermind bug dicussion link

fix

resolve conflicts

* deblobs timeout

* fix metric

* chore: revert async aggregate with randomness (#7218)

Revert "feat: asyncAggregateWithRandomness (#7204)"

This reverts commit e31d535.

* fix: update config for relaunched mekong network (#7220)

* fix: light client generating `LightClientUpdate` with wrong length of branches (#7187)

* initial commit

* Rewrite SyncCommitteeWitnessRepository

* Fix finality branch

* Update unit test

* fix e2e

* Review PR

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>

* fix: archive finalized state when shutting down beacon node (#7221)

* Fix typo

* feat: remove unfinalized pubkey cache (#7230)

* Remove unfinalized pubkey cache

* lint

* Fix unit test

* chore: skip web3_provider unit tests (#7252)

* fix: prune checkpoint states at syncing time (#7241)

* fix: prune checkpoint states at syncing time

* fix: lint

* fix: check-types in test

* fix: sync cached isCompoundingValidatorArr at epoch transition (#7247)

* fix: handle outOfRangeData when range sync Deneb (#7249)

* fix: handle outOfRangeData for beaconBlocksMaybeBlobsByRange()

* fix: lint

* fix: archiveBlocks - handle deneb outOfRangeData block

* fix: sync cached balance when adding new validator to registry (#7255)

* fix: sync cached balance when adding new validator to registry

* chore: add more comments

* fix: remove persisted checkpoint states from the previous run at startup

* fix: do not throw error when trying to prune missing directory (#7257)

* docs: update documentation Oct 2024 (#7178)

* docs update oct 2024 init

* Reconfig quickstart nav and minor fixes

* fix lint

* spelling fixes

* minor fixes and add to wordlist

* prettier fix

* add to wordlist

* sort wordlist

* modify dominance to include lighthouse

* fix typescript casing and add recommendation

* add selection and boost_factor with keymanager notice

* update wordlist

* remove builder enabled and add keymanager api

* spelling

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>

* chore(deps): bump cross-spawn from 7.0.3 to 7.0.6 in /docs (#7268)

Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.6.
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](moxystudio/node-cross-spawn@v7.0.3...v7.0.6)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: add error log to notifier if execution client auth failed (#7239)

* feat: add error log to notifier if execution client auth failed

* Update packages/beacon-node/src/node/notifier.ts

---------

Co-authored-by: NC <17676176+ensi321@users.noreply.github.com>

* docs: display rcConfig flag on CLI reference page (#7270)

* docs: display rcConfig flag on CLI reference page

* Update word list

* chore: remove prettier as default formatter for all file types (#7275)

* chore: unhide flags relevant for devnets / testing (#7271)

* feat: debug too many shuffling promises (#7251)

* feat: add asyncShufflingCalculation to StateTransitionOpts

* feat: add asyncShufflingCalculation to all regen / processSlots consumers

* fix: default to false for async shuffling and remove unnecessary props

* fix: remove unnecessary flags from stateTransition

* feat: implement conditional build of shuffling for prepareNextSlot

* fix: spec test bug where shufflingCache is present from BeaconChain constructor

* feat: sync build next shuffling if not queued async

* fix: use getSync to pull next shuffling correctly

* docs: add comment to prepareNextSlot

* refactor: rename StateCloneOpts to StateRegenerationOpts

* feat: pass asyncShufflingCalculation through to afterProcessEpoch and refactor conditional to run purely sync

* docs: add issue number to comment

* chore: lint

* chore: unpin nodejs version from 22.4 (#6982)

* Revert "chore: pin nodejs version to 22.4 (#6964)"

This reverts commit f20484b.

* Don't revert formatting changes

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>
Co-authored-by: Cayman <caymannava@gmail.com>

* chore: update bootnodes file url for holesky and sepolia (#7276)

* feat: add `debug_getHistoricalSummaries` endpoint (#7245)

* feat: add new getHistoricalSummaries endpoint to debug namespace

* Add JSON response

* Restructure to use stateId and add proof to response

* add test scaffolding

* Address feedback

* Move getHistoricalSummaries to lodestar namespace

* add lodestar namespace unit test

* update route name to lodestar namespace

* cast state object as Capella state

* Lint

* json properties need to be lower case

* Make it v1 since it's now part of lodestar namespace

* Group with other /lodestar endpoints

* Simplify beacon node impl

* Rename return type

* Update test description

* Fix variable name

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>

* chore: log sync committee signature errors as `error` (#7283)

* fix: update engine_getClientVersionV1 commit encoding (#7282)

* fix: check pubkey or validator index known to a state (#7284)

* fix: check pubkey or validator index known to a state

* chore: add more comments

* feat: lodestar script setup (#7254)

* feat: lodestar_setup

* feat: script_updates + docs

* feat: script_addition_in_docs + command_update

* Remove duplicate script from docs folder

* Minor script updates

* Update script to prepare docs and ignore copied file

* Update installation page

* Wording

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>

* feat: add terminal-sized Electra giraffe banner (#7286)

* Create giraffeBanners.ts

* Wire in banner

* Fix file name

* lint

* Address @nflaig's comment

---------

Co-authored-by: NC <17676176+ensi321@users.noreply.github.com>

* chore: pin nodejs version to 22.4 (#7291)

Revert "chore: unpin nodejs version from 22.4 (#6982)"

This reverts commit 69ae688.

* feat: expose `DOMAIN_APPLICATION_MASK` in config/spec api (#7296)

* feat: expose DOMAIN_APPLICATION_MASK in config/spec api

* Lint

* feat: make `MAX_REQUEST_BLOB_SIDECARS` and `MAX_BLOBS_PER_BLOCK` configurable (#7294)

* Init commit

* Fix check-types

* Add comment on how MAX_REQUEST_BLOB_SIDECARS is calculated

* Ensure proper config object is passed

* Address comment

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>

* feat: use `BLOB_SIDECAR_SUBNET_COUNT` to configure blob subnets (#7297)

feat: use BLOB_SIDECAR_SUBNET_COUNT to configure blob subnets

* chore: log sync aggregate participants when producing beacon block body (#7300)

* chore: log sync aggregate participants when producing beacon block body

* Use isForkLightClient instead of ForkSeq

* Fix produce block unit tests

* chore: print graffiti when producing beacon block body (#7303)

* fix: warn if engine / builder failed to produce block within cutoff time (#7305)

* feat: add kzg commitment length check when validating gossip blocks (#7302)

* feat: add blob sidecar index check (#7313)

Validate blobSidecar index

* fix: fix blob sidecar index check (#7315)

Fix index check

* chore: fix format of printed graffiti from hex to utf-8 (#7306)

* chore: fix format of printed graffiti from hex to utf-8

* Use Buffer.from no copy with offset

* docs: batch commit typos and update contributor readme (#7312)

* batch commit typos and update contributor readme

* update donation text

Co-authored-by: Nico Flaig <nflaig@protonmail.com>

* correct spelling

Co-authored-by: Nico Flaig <nflaig@protonmail.com>

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>

* chore: remove trailing null bytes from printed graffiti (#7320)

* chore: remove trailing null bytes from printed graffiti

* Use replaceAll instead of regex

* chore: unpin nodejs version from 22.4 (#7324)

Revert "chore: pin nodejs version to 22.4 (#7291)"

This reverts commit 99794d3.

* chore: bump package versions to 1.24.0

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Nico Flaig <nflaig@protonmail.com>
Co-authored-by: Nazar Hussain <nazarhussain@gmail.com>
Co-authored-by: g11tech <develop@g11tech.io>
Co-authored-by: Matthew Keil <me@matthewkeil.com>
Co-authored-by: NC <17676176+ensi321@users.noreply.github.com>
Co-authored-by: twoeths <tuyen@chainsafe.io>
Co-authored-by: Phil Ngo <58080811+philknows@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: acolytec3 <17355484+acolytec3@users.noreply.github.com>
Co-authored-by: Varun Guleria <152203177+varunguleriaCodes@users.noreply.github.com>
Co-authored-by: ClockworkYuzu <yvetteheh@gmail.com>
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.24.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.

4 participants