Skip to content

feat: implement peerDAS on fulu#6353

Merged
wemeetagain merged 167 commits into
unstablefrom
peerDAS
Aug 11, 2025
Merged

feat: implement peerDAS on fulu#6353
wemeetagain merged 167 commits into
unstablefrom
peerDAS

Conversation

@g11tech

@g11tech g11tech commented Jan 24, 2024

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Jun 22, 2024

Copy link
Copy Markdown
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: c838b89 Previous: 60e0379 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.0814 ms/op 1.0309 ms/op 1.05
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 40.482 us/op 35.583 us/op 1.14
BLS verify - blst 949.36 us/op 810.17 us/op 1.17
BLS verifyMultipleSignatures 3 - blst 1.5882 ms/op 1.6096 ms/op 0.99
BLS verifyMultipleSignatures 8 - blst 2.7047 ms/op 1.8633 ms/op 1.45
BLS verifyMultipleSignatures 32 - blst 8.2827 ms/op 5.4702 ms/op 1.51
BLS verifyMultipleSignatures 64 - blst 13.988 ms/op 10.511 ms/op 1.33
BLS verifyMultipleSignatures 128 - blst 25.470 ms/op 17.018 ms/op 1.50
BLS deserializing 10000 signatures 954.48 ms/op 688.47 ms/op 1.39
BLS deserializing 100000 signatures 9.3327 s/op 6.8329 s/op 1.37
BLS verifyMultipleSignatures - same message - 3 - blst 1.2950 ms/op 878.55 us/op 1.47
BLS verifyMultipleSignatures - same message - 8 - blst 1.5217 ms/op 1.0419 ms/op 1.46
BLS verifyMultipleSignatures - same message - 32 - blst 2.4969 ms/op 1.6638 ms/op 1.50
BLS verifyMultipleSignatures - same message - 64 - blst 4.2032 ms/op 2.6033 ms/op 1.61
BLS verifyMultipleSignatures - same message - 128 - blst 7.0986 ms/op 4.3331 ms/op 1.64
BLS aggregatePubkeys 32 - blst 32.183 us/op 19.609 us/op 1.64
BLS aggregatePubkeys 128 - blst 117.74 us/op 70.024 us/op 1.68
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 116.30 ms/op 52.302 ms/op 2.22
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 75.973 ms/op 48.883 ms/op 1.55
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 42.907 ms/op 40.898 ms/op 1.05
getSlashingsAndExits - default max 79.644 us/op 73.199 us/op 1.09
getSlashingsAndExits - 2k 429.39 us/op 316.82 us/op 1.36
proposeBlockBody type=full, size=empty 6.7902 ms/op 6.0631 ms/op 1.12
isKnown best case - 1 super set check 234.00 ns/op 221.00 ns/op 1.06
isKnown normal case - 2 super set checks 230.00 ns/op 216.00 ns/op 1.06
isKnown worse case - 16 super set checks 229.00 ns/op 214.00 ns/op 1.07
InMemoryCheckpointStateCache - add get delete 2.7810 us/op 2.4110 us/op 1.15
validate api signedAggregateAndProof - struct 1.5384 ms/op 1.3733 ms/op 1.12
validate gossip signedAggregateAndProof - struct 1.5429 ms/op 1.3806 ms/op 1.12
batch validate gossip attestation - vc 640000 - chunk 32 132.15 us/op 114.29 us/op 1.16
batch validate gossip attestation - vc 640000 - chunk 64 114.56 us/op 100.20 us/op 1.14
batch validate gossip attestation - vc 640000 - chunk 128 105.20 us/op 93.317 us/op 1.13
batch validate gossip attestation - vc 640000 - chunk 256 100.08 us/op 94.863 us/op 1.05
pickEth1Vote - no votes 950.59 us/op 942.41 us/op 1.01
pickEth1Vote - max votes 5.4120 ms/op 5.3716 ms/op 1.01
pickEth1Vote - Eth1Data hashTreeRoot value x2048 11.287 ms/op 10.429 ms/op 1.08
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 16.204 ms/op 20.788 ms/op 0.78
pickEth1Vote - Eth1Data fastSerialize value x2048 441.92 us/op 414.44 us/op 1.07
pickEth1Vote - Eth1Data fastSerialize tree x2048 3.3913 ms/op 2.5588 ms/op 1.33
bytes32 toHexString 365.00 ns/op 362.00 ns/op 1.01
bytes32 Buffer.toString(hex) 241.00 ns/op 235.00 ns/op 1.03
bytes32 Buffer.toString(hex) from Uint8Array 316.00 ns/op 335.00 ns/op 0.94
bytes32 Buffer.toString(hex) + 0x 235.00 ns/op 233.00 ns/op 1.01
Object access 1 prop 0.12200 ns/op 0.11500 ns/op 1.06
Map access 1 prop 0.12300 ns/op 0.11400 ns/op 1.08
Object get x1000 5.9040 ns/op 5.6510 ns/op 1.04
Map get x1000 6.2850 ns/op 6.2510 ns/op 1.01
Object set x1000 27.577 ns/op 26.877 ns/op 1.03
Map set x1000 18.970 ns/op 18.600 ns/op 1.02
Return object 10000 times 0.27950 ns/op 0.27930 ns/op 1.00
Throw Error 10000 times 4.3671 us/op 4.1161 us/op 1.06
toHex 131.55 ns/op 137.17 ns/op 0.96
Buffer.from 121.69 ns/op 110.10 ns/op 1.11
shared Buffer 82.280 ns/op 76.600 ns/op 1.07
fastMsgIdFn sha256 / 200 bytes 2.2160 us/op 2.0270 us/op 1.09
fastMsgIdFn h32 xxhash / 200 bytes 217.00 ns/op 195.00 ns/op 1.11
fastMsgIdFn h64 xxhash / 200 bytes 262.00 ns/op 251.00 ns/op 1.04
fastMsgIdFn sha256 / 1000 bytes 7.3040 us/op 6.7470 us/op 1.08
fastMsgIdFn h32 xxhash / 1000 bytes 342.00 ns/op 322.00 ns/op 1.06
fastMsgIdFn h64 xxhash / 1000 bytes 337.00 ns/op 320.00 ns/op 1.05
fastMsgIdFn sha256 / 10000 bytes 65.492 us/op 60.567 us/op 1.08
fastMsgIdFn h32 xxhash / 10000 bytes 1.8540 us/op 1.7030 us/op 1.09
fastMsgIdFn h64 xxhash / 10000 bytes 1.2270 us/op 1.1790 us/op 1.04
send data - 1000 256B messages 17.228 ms/op 15.522 ms/op 1.11
send data - 1000 512B messages 22.075 ms/op 18.275 ms/op 1.21
send data - 1000 1024B messages 27.271 ms/op 25.246 ms/op 1.08
send data - 1000 1200B messages 26.643 ms/op 23.452 ms/op 1.14
send data - 1000 2048B messages 26.882 ms/op 25.620 ms/op 1.05
send data - 1000 4096B messages 28.594 ms/op 29.027 ms/op 0.99
send data - 1000 16384B messages 42.842 ms/op 45.695 ms/op 0.94
send data - 1000 65536B messages 112.99 ms/op 110.76 ms/op 1.02
enrSubnets - fastDeserialize 64 bits 872.00 ns/op 875.00 ns/op 1.00
enrSubnets - ssz BitVector 64 bits 317.00 ns/op 321.00 ns/op 0.99
enrSubnets - fastDeserialize 4 bits 140.00 ns/op 126.00 ns/op 1.11
enrSubnets - ssz BitVector 4 bits 324.00 ns/op 320.00 ns/op 1.01
prioritizePeers score -10:0 att 32-0.1 sync 2-0 167.09 us/op 116.35 us/op 1.44
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 145.07 us/op 137.90 us/op 1.05
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 206.05 us/op 197.16 us/op 1.05
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 382.05 us/op 368.80 us/op 1.04
prioritizePeers score 0:0 att 64-1 sync 4-1 462.13 us/op 449.98 us/op 1.03
array of 16000 items push then shift 1.6020 us/op 1.5914 us/op 1.01
LinkedList of 16000 items push then shift 6.9480 ns/op 6.8320 ns/op 1.02
array of 16000 items push then pop 76.390 ns/op 75.931 ns/op 1.01
LinkedList of 16000 items push then pop 6.8980 ns/op 6.7560 ns/op 1.02
array of 24000 items push then shift 2.3632 us/op 2.3393 us/op 1.01
LinkedList of 24000 items push then shift 7.0340 ns/op 6.8620 ns/op 1.03
array of 24000 items push then pop 102.00 ns/op 103.39 ns/op 0.99
LinkedList of 24000 items push then pop 6.8880 ns/op 6.7580 ns/op 1.02
intersect bitArray bitLen 8 6.4020 ns/op 6.2850 ns/op 1.02
intersect array and set length 8 37.936 ns/op 37.975 ns/op 1.00
intersect bitArray bitLen 128 30.071 ns/op 29.297 ns/op 1.03
intersect array and set length 128 625.10 ns/op 619.87 ns/op 1.01
bitArray.getTrueBitIndexes() bitLen 128 1.0270 us/op 988.00 ns/op 1.04
bitArray.getTrueBitIndexes() bitLen 248 1.8210 us/op 1.7010 us/op 1.07
bitArray.getTrueBitIndexes() bitLen 512 3.7840 us/op 3.4670 us/op 1.09
Buffer.concat 32 items 639.00 ns/op 586.00 ns/op 1.09
Uint8Array.set 32 items 1.1730 us/op 1.2950 us/op 0.91
Buffer.copy 2.2220 us/op 3.0790 us/op 0.72
Uint8Array.set - with subarray 1.6580 us/op 1.5890 us/op 1.04
Uint8Array.set - without subarray 891.00 ns/op 873.00 ns/op 1.02
getUint32 - dataview 206.00 ns/op 190.00 ns/op 1.08
getUint32 - manual 135.00 ns/op 123.00 ns/op 1.10
Set add up to 64 items then delete first 2.2756 us/op 2.1540 us/op 1.06
OrderedSet add up to 64 items then delete first 3.4312 us/op 3.2257 us/op 1.06
Set add up to 64 items then delete last 2.8750 us/op 2.5341 us/op 1.13
OrderedSet add up to 64 items then delete last 3.7961 us/op 3.6526 us/op 1.04
Set add up to 64 items then delete middle 2.4810 us/op 2.4590 us/op 1.01
OrderedSet add up to 64 items then delete middle 6.3987 us/op 5.1100 us/op 1.25
Set add up to 128 items then delete first 5.2091 us/op 5.0315 us/op 1.04
OrderedSet add up to 128 items then delete first 8.0319 us/op 7.8692 us/op 1.02
Set add up to 128 items then delete last 5.4273 us/op 4.9983 us/op 1.09
OrderedSet add up to 128 items then delete last 8.0214 us/op 7.2569 us/op 1.11
Set add up to 128 items then delete middle 4.9972 us/op 4.9141 us/op 1.02
OrderedSet add up to 128 items then delete middle 16.350 us/op 13.507 us/op 1.21
Set add up to 256 items then delete first 10.992 us/op 10.130 us/op 1.09
OrderedSet add up to 256 items then delete first 16.584 us/op 16.081 us/op 1.03
Set add up to 256 items then delete last 10.072 us/op 9.9535 us/op 1.01
OrderedSet add up to 256 items then delete last 15.713 us/op 14.690 us/op 1.07
Set add up to 256 items then delete middle 10.105 us/op 9.5520 us/op 1.06
OrderedSet add up to 256 items then delete middle 43.185 us/op 41.464 us/op 1.04
transfer serialized Status (84 B) 2.2920 us/op 2.1910 us/op 1.05
copy serialized Status (84 B) 1.1930 us/op 1.1020 us/op 1.08
transfer serialized SignedVoluntaryExit (112 B) 2.2590 us/op 2.1820 us/op 1.04
copy serialized SignedVoluntaryExit (112 B) 1.1900 us/op 1.1350 us/op 1.05
transfer serialized ProposerSlashing (416 B) 2.3250 us/op 2.2050 us/op 1.05
copy serialized ProposerSlashing (416 B) 1.3280 us/op 1.1600 us/op 1.14
transfer serialized Attestation (485 B) 2.3010 us/op 3.2400 us/op 0.71
copy serialized Attestation (485 B) 1.5200 us/op 1.2960 us/op 1.17
transfer serialized AttesterSlashing (33232 B) 2.7840 us/op 2.4570 us/op 1.13
copy serialized AttesterSlashing (33232 B) 3.8100 us/op 3.2840 us/op 1.16
transfer serialized Small SignedBeaconBlock (128000 B) 3.4220 us/op 2.7240 us/op 1.26
copy serialized Small SignedBeaconBlock (128000 B) 10.432 us/op 8.5140 us/op 1.23
transfer serialized Avg SignedBeaconBlock (200000 B) 4.0330 us/op 3.1880 us/op 1.27
copy serialized Avg SignedBeaconBlock (200000 B) 14.468 us/op 12.477 us/op 1.16
transfer serialized BlobsSidecar (524380 B) 3.9740 us/op 3.2700 us/op 1.22
copy serialized BlobsSidecar (524380 B) 65.391 us/op 67.163 us/op 0.97
transfer serialized Big SignedBeaconBlock (1000000 B) 4.2140 us/op 3.3630 us/op 1.25
copy serialized Big SignedBeaconBlock (1000000 B) 115.76 us/op 115.61 us/op 1.00
pass gossip attestations to forkchoice per slot 2.9548 ms/op 2.7781 ms/op 1.06
forkChoice updateHead vc 100000 bc 64 eq 0 495.21 us/op 445.55 us/op 1.11
forkChoice updateHead vc 600000 bc 64 eq 0 3.0534 ms/op 2.7636 ms/op 1.10
forkChoice updateHead vc 1000000 bc 64 eq 0 5.0986 ms/op 4.7786 ms/op 1.07
forkChoice updateHead vc 600000 bc 320 eq 0 3.0382 ms/op 2.8435 ms/op 1.07
forkChoice updateHead vc 600000 bc 1200 eq 0 3.0780 ms/op 2.8124 ms/op 1.09
forkChoice updateHead vc 600000 bc 7200 eq 0 3.3190 ms/op 3.0443 ms/op 1.09
forkChoice updateHead vc 600000 bc 64 eq 1000 10.955 ms/op 10.423 ms/op 1.05
forkChoice updateHead vc 600000 bc 64 eq 10000 10.987 ms/op 10.318 ms/op 1.06
forkChoice updateHead vc 600000 bc 64 eq 300000 14.078 ms/op 13.558 ms/op 1.04
computeDeltas 500000 validators 300 proto nodes 4.0872 ms/op 3.7076 ms/op 1.10
computeDeltas 500000 validators 1200 proto nodes 4.1351 ms/op 3.7441 ms/op 1.10
computeDeltas 500000 validators 7200 proto nodes 4.0807 ms/op 3.7586 ms/op 1.09
computeDeltas 750000 validators 300 proto nodes 6.1089 ms/op 5.6867 ms/op 1.07
computeDeltas 750000 validators 1200 proto nodes 5.9540 ms/op 6.6774 ms/op 0.89
computeDeltas 750000 validators 7200 proto nodes 5.9989 ms/op 5.6564 ms/op 1.06
computeDeltas 1400000 validators 300 proto nodes 11.181 ms/op 10.575 ms/op 1.06
computeDeltas 1400000 validators 1200 proto nodes 11.371 ms/op 10.601 ms/op 1.07
computeDeltas 1400000 validators 7200 proto nodes 11.129 ms/op 10.501 ms/op 1.06
computeDeltas 2100000 validators 300 proto nodes 16.802 ms/op 16.014 ms/op 1.05
computeDeltas 2100000 validators 1200 proto nodes 16.781 ms/op 15.952 ms/op 1.05
computeDeltas 2100000 validators 7200 proto nodes 16.953 ms/op 15.823 ms/op 1.07
altair processAttestation - 250000 vs - 7PWei normalcase 2.1731 ms/op 1.9061 ms/op 1.14
altair processAttestation - 250000 vs - 7PWei worstcase 3.1002 ms/op 2.9095 ms/op 1.07
altair processAttestation - setStatus - 1/6 committees join 131.82 us/op 121.43 us/op 1.09
altair processAttestation - setStatus - 1/3 committees join 239.48 us/op 236.82 us/op 1.01
altair processAttestation - setStatus - 1/2 committees join 342.00 us/op 334.43 us/op 1.02
altair processAttestation - setStatus - 2/3 committees join 437.70 us/op 431.06 us/op 1.02
altair processAttestation - setStatus - 4/5 committees join 600.37 us/op 588.08 us/op 1.02
altair processAttestation - setStatus - 100% committees join 701.50 us/op 699.78 us/op 1.00
altair processBlock - 250000 vs - 7PWei normalcase 5.9060 ms/op 5.0755 ms/op 1.16
altair processBlock - 250000 vs - 7PWei normalcase hashState 32.087 ms/op 35.148 ms/op 0.91
altair processBlock - 250000 vs - 7PWei worstcase 35.304 ms/op 50.210 ms/op 0.70
altair processBlock - 250000 vs - 7PWei worstcase hashState 71.262 ms/op 103.66 ms/op 0.69
phase0 processBlock - 250000 vs - 7PWei normalcase 1.5546 ms/op 2.7352 ms/op 0.57
phase0 processBlock - 250000 vs - 7PWei worstcase 21.356 ms/op 22.507 ms/op 0.95
altair processEth1Data - 250000 vs - 7PWei normalcase 333.52 us/op 322.38 us/op 1.03
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 6.1730 us/op 9.1980 us/op 0.67
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 42.647 us/op 55.522 us/op 0.77
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 11.273 us/op 11.826 us/op 0.95
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 6.5000 us/op 9.6610 us/op 0.67
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 157.59 us/op 145.38 us/op 1.08
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.9049 ms/op 1.9055 ms/op 1.00
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.4645 ms/op 2.3522 ms/op 1.05
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.4142 ms/op 2.3539 ms/op 1.03
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.9008 ms/op 4.2872 ms/op 1.14
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.4445 ms/op 2.3631 ms/op 1.03
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.8308 ms/op 4.3805 ms/op 1.10
Tree 40 250000 create 418.39 ms/op 410.10 ms/op 1.02
Tree 40 250000 get(125000) 139.33 ns/op 149.00 ns/op 0.94
Tree 40 250000 set(125000) 1.5556 us/op 1.3585 us/op 1.15
Tree 40 250000 toArray() 17.642 ms/op 14.055 ms/op 1.26
Tree 40 250000 iterate all - toArray() + loop 17.237 ms/op 14.172 ms/op 1.22
Tree 40 250000 iterate all - get(i) 53.194 ms/op 47.473 ms/op 1.12
Array 250000 create 2.4971 ms/op 2.3247 ms/op 1.07
Array 250000 clone - spread 837.54 us/op 784.75 us/op 1.07
Array 250000 get(125000) 0.42000 ns/op 0.39600 ns/op 1.06
Array 250000 set(125000) 0.44200 ns/op 0.41300 ns/op 1.07
Array 250000 iterate all - loop 84.811 us/op 78.888 us/op 1.08
phase0 afterProcessEpoch - 250000 vs - 7PWei 42.781 ms/op 41.256 ms/op 1.04
Array.fill - length 1000000 3.5811 ms/op 3.4688 ms/op 1.03
Array push - length 1000000 13.013 ms/op 12.438 ms/op 1.05
Array.get 0.28853 ns/op 0.27017 ns/op 1.07
Uint8Array.get 0.44798 ns/op 0.43636 ns/op 1.03
phase0 beforeProcessEpoch - 250000 vs - 7PWei 15.661 ms/op 16.233 ms/op 0.96
altair processEpoch - mainnet_e81889 264.09 ms/op 291.24 ms/op 0.91
mainnet_e81889 - altair beforeProcessEpoch 17.199 ms/op 16.439 ms/op 1.05
mainnet_e81889 - altair processJustificationAndFinalization 5.4040 us/op 5.3920 us/op 1.00
mainnet_e81889 - altair processInactivityUpdates 4.2162 ms/op 4.1012 ms/op 1.03
mainnet_e81889 - altair processRewardsAndPenalties 40.025 ms/op 53.002 ms/op 0.76
mainnet_e81889 - altair processRegistryUpdates 729.00 ns/op 670.00 ns/op 1.09
mainnet_e81889 - altair processSlashings 187.00 ns/op 190.00 ns/op 0.98
mainnet_e81889 - altair processEth1DataReset 182.00 ns/op 167.00 ns/op 1.09
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.1933 ms/op 1.1576 ms/op 1.03
mainnet_e81889 - altair processSlashingsReset 888.00 ns/op 972.00 ns/op 0.91
mainnet_e81889 - altair processRandaoMixesReset 1.1440 us/op 1.4970 us/op 0.76
mainnet_e81889 - altair processHistoricalRootsUpdate 185.00 ns/op 175.00 ns/op 1.06
mainnet_e81889 - altair processParticipationFlagUpdates 533.00 ns/op 522.00 ns/op 1.02
mainnet_e81889 - altair processSyncCommitteeUpdates 152.00 ns/op 131.00 ns/op 1.16
mainnet_e81889 - altair afterProcessEpoch 45.327 ms/op 43.453 ms/op 1.04
capella processEpoch - mainnet_e217614 970.13 ms/op 1.0063 s/op 0.96
mainnet_e217614 - capella beforeProcessEpoch 65.454 ms/op 62.749 ms/op 1.04
mainnet_e217614 - capella processJustificationAndFinalization 7.9090 us/op 6.3000 us/op 1.26
mainnet_e217614 - capella processInactivityUpdates 15.251 ms/op 14.410 ms/op 1.06
mainnet_e217614 - capella processRewardsAndPenalties 192.21 ms/op 199.95 ms/op 0.96
mainnet_e217614 - capella processRegistryUpdates 6.5540 us/op 8.2800 us/op 0.79
mainnet_e217614 - capella processSlashings 185.00 ns/op 175.00 ns/op 1.06
mainnet_e217614 - capella processEth1DataReset 180.00 ns/op 174.00 ns/op 1.03
mainnet_e217614 - capella processEffectiveBalanceUpdates 11.799 ms/op 4.0684 ms/op 2.90
mainnet_e217614 - capella processSlashingsReset 872.00 ns/op 1.1930 us/op 0.73
mainnet_e217614 - capella processRandaoMixesReset 1.1780 us/op 1.1670 us/op 1.01
mainnet_e217614 - capella processHistoricalRootsUpdate 186.00 ns/op 174.00 ns/op 1.07
mainnet_e217614 - capella processParticipationFlagUpdates 520.00 ns/op 646.00 ns/op 0.80
mainnet_e217614 - capella afterProcessEpoch 113.47 ms/op 113.83 ms/op 1.00
phase0 processEpoch - mainnet_e58758 292.44 ms/op 312.33 ms/op 0.94
mainnet_e58758 - phase0 beforeProcessEpoch 70.416 ms/op 71.076 ms/op 0.99
mainnet_e58758 - phase0 processJustificationAndFinalization 5.6150 us/op 8.6880 us/op 0.65
mainnet_e58758 - phase0 processRewardsAndPenalties 36.549 ms/op 42.227 ms/op 0.87
mainnet_e58758 - phase0 processRegistryUpdates 3.1110 us/op 3.0700 us/op 1.01
mainnet_e58758 - phase0 processSlashings 185.00 ns/op 170.00 ns/op 1.09
mainnet_e58758 - phase0 processEth1DataReset 185.00 ns/op 164.00 ns/op 1.13
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.2110 ms/op 1.0879 ms/op 1.11
mainnet_e58758 - phase0 processSlashingsReset 920.00 ns/op 1.0840 us/op 0.85
mainnet_e58758 - phase0 processRandaoMixesReset 1.1930 us/op 1.3280 us/op 0.90
mainnet_e58758 - phase0 processHistoricalRootsUpdate 187.00 ns/op 166.00 ns/op 1.13
mainnet_e58758 - phase0 processParticipationRecordUpdates 925.00 ns/op 891.00 ns/op 1.04
mainnet_e58758 - phase0 afterProcessEpoch 36.067 ms/op 33.676 ms/op 1.07
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.3855 ms/op 2.4327 ms/op 0.57
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.0086 ms/op 3.3291 ms/op 0.60
altair processInactivityUpdates - 250000 normalcase 19.045 ms/op 22.016 ms/op 0.87
altair processInactivityUpdates - 250000 worstcase 17.642 ms/op 22.791 ms/op 0.77
phase0 processRegistryUpdates - 250000 normalcase 6.6780 us/op 9.7590 us/op 0.68
phase0 processRegistryUpdates - 250000 badcase_full_deposits 263.43 us/op 434.25 us/op 0.61
phase0 processRegistryUpdates - 250000 worstcase 0.5 105.30 ms/op 114.74 ms/op 0.92
altair processRewardsAndPenalties - 250000 normalcase 24.883 ms/op 38.411 ms/op 0.65
altair processRewardsAndPenalties - 250000 worstcase 24.582 ms/op 32.756 ms/op 0.75
phase0 getAttestationDeltas - 250000 normalcase 6.3199 ms/op 7.0095 ms/op 0.90
phase0 getAttestationDeltas - 250000 worstcase 6.0680 ms/op 5.9441 ms/op 1.02
phase0 processSlashings - 250000 worstcase 96.675 us/op 125.84 us/op 0.77
altair processSyncCommitteeUpdates - 250000 11.226 ms/op 10.954 ms/op 1.02
BeaconState.hashTreeRoot - No change 225.00 ns/op 211.00 ns/op 1.07
BeaconState.hashTreeRoot - 1 full validator 87.077 us/op 82.801 us/op 1.05
BeaconState.hashTreeRoot - 32 full validator 817.62 us/op 1.0019 ms/op 0.82
BeaconState.hashTreeRoot - 512 full validator 11.085 ms/op 11.594 ms/op 0.96
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 98.290 us/op 129.13 us/op 0.76
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.5662 ms/op 1.9967 ms/op 0.78
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 24.971 ms/op 19.831 ms/op 1.26
BeaconState.hashTreeRoot - 1 balances 82.533 us/op 89.891 us/op 0.92
BeaconState.hashTreeRoot - 32 balances 687.44 us/op 816.70 us/op 0.84
BeaconState.hashTreeRoot - 512 balances 8.0326 ms/op 8.9930 ms/op 0.89
BeaconState.hashTreeRoot - 250000 balances 167.15 ms/op 191.14 ms/op 0.87
aggregationBits - 2048 els - zipIndexesInBitList 23.010 us/op 20.288 us/op 1.13
byteArrayEquals 32 55.779 ns/op 50.570 ns/op 1.10
Buffer.compare 32 17.907 ns/op 16.198 ns/op 1.11
byteArrayEquals 1024 1.6570 us/op 1.4963 us/op 1.11
Buffer.compare 1024 25.601 ns/op 24.727 ns/op 1.04
byteArrayEquals 16384 26.386 us/op 23.839 us/op 1.11
Buffer.compare 16384 211.47 ns/op 167.44 ns/op 1.26
byteArrayEquals 123687377 199.51 ms/op 182.11 ms/op 1.10
Buffer.compare 123687377 6.6877 ms/op 6.1142 ms/op 1.09
byteArrayEquals 32 - diff last byte 54.840 ns/op 51.232 ns/op 1.07
Buffer.compare 32 - diff last byte 17.783 ns/op 16.662 ns/op 1.07
byteArrayEquals 1024 - diff last byte 1.6578 us/op 1.5433 us/op 1.07
Buffer.compare 1024 - diff last byte 26.121 ns/op 25.468 ns/op 1.03
byteArrayEquals 16384 - diff last byte 26.458 us/op 24.693 us/op 1.07
Buffer.compare 16384 - diff last byte 205.93 ns/op 189.56 ns/op 1.09
byteArrayEquals 123687377 - diff last byte 197.36 ms/op 185.24 ms/op 1.07
Buffer.compare 123687377 - diff last byte 6.1594 ms/op 6.1866 ms/op 1.00
byteArrayEquals 32 - random bytes 5.2410 ns/op 4.9340 ns/op 1.06
Buffer.compare 32 - random bytes 17.518 ns/op 16.565 ns/op 1.06
byteArrayEquals 1024 - random bytes 5.2580 ns/op 4.9390 ns/op 1.06
Buffer.compare 1024 - random bytes 17.154 ns/op 16.515 ns/op 1.04
byteArrayEquals 16384 - random bytes 5.1280 ns/op 4.9400 ns/op 1.04
Buffer.compare 16384 - random bytes 17.152 ns/op 16.557 ns/op 1.04
byteArrayEquals 123687377 - random bytes 6.4700 ns/op 6.5600 ns/op 0.99
Buffer.compare 123687377 - random bytes 18.850 ns/op 23.330 ns/op 0.81
regular array get 100000 times 32.942 us/op 35.444 us/op 0.93
wrappedArray get 100000 times 32.789 us/op 31.418 us/op 1.04
arrayWithProxy get 100000 times 12.138 ms/op 11.634 ms/op 1.04
ssz.Root.equals 46.265 ns/op 44.195 ns/op 1.05
byteArrayEquals 45.259 ns/op 43.345 ns/op 1.04
Buffer.compare 10.362 ns/op 10.026 ns/op 1.03
processSlot - 1 slots 10.111 us/op 15.379 us/op 0.66
processSlot - 32 slots 2.5718 ms/op 3.7141 ms/op 0.69
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 2.8491 ms/op 2.8414 ms/op 1.00
getCommitteeAssignments - req 1 vs - 250000 vc 2.1677 ms/op 2.0632 ms/op 1.05
getCommitteeAssignments - req 100 vs - 250000 vc 4.2146 ms/op 4.0174 ms/op 1.05
getCommitteeAssignments - req 1000 vs - 250000 vc 4.4819 ms/op 4.2792 ms/op 1.05
findModifiedValidators - 10000 modified validators 726.40 ms/op 730.38 ms/op 0.99
findModifiedValidators - 1000 modified validators 698.84 ms/op 684.65 ms/op 1.02
findModifiedValidators - 100 modified validators 274.95 ms/op 324.52 ms/op 0.85
findModifiedValidators - 10 modified validators 134.35 ms/op 162.08 ms/op 0.83
findModifiedValidators - 1 modified validators 170.89 ms/op 135.06 ms/op 1.27
findModifiedValidators - no difference 147.17 ms/op 142.05 ms/op 1.04
compare ViewDUs 5.9295 s/op 6.2381 s/op 0.95
compare each validator Uint8Array 1.5279 s/op 1.6286 s/op 0.94
compare ViewDU to Uint8Array 954.37 ms/op 985.31 ms/op 0.97
migrate state 1000000 validators, 24 modified, 0 new 847.04 ms/op 917.33 ms/op 0.92
migrate state 1000000 validators, 1700 modified, 1000 new 1.1249 s/op 1.2363 s/op 0.91
migrate state 1000000 validators, 3400 modified, 2000 new 1.1671 s/op 1.3850 s/op 0.84
migrate state 1500000 validators, 24 modified, 0 new 792.88 ms/op 884.34 ms/op 0.90
migrate state 1500000 validators, 1700 modified, 1000 new 989.51 ms/op 1.2114 s/op 0.82
migrate state 1500000 validators, 3400 modified, 2000 new 1.1673 s/op 1.2805 s/op 0.91
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.1400 ns/op 4.0100 ns/op 1.03
state getBlockRootAtSlot - 250000 vs - 7PWei 560.16 ns/op 761.04 ns/op 0.74
naive computeProposerIndex 100000 validators 50.733 ms/op 48.067 ms/op 1.06
computeProposerIndex 100000 validators 1.5618 ms/op 1.6360 ms/op 0.95
naiveGetNextSyncCommitteeIndices 1000 validators 8.0975 s/op 6.8801 s/op 1.18
getNextSyncCommitteeIndices 1000 validators 120.48 ms/op 113.05 ms/op 1.07
naiveGetNextSyncCommitteeIndices 10000 validators 7.7772 s/op 7.2741 s/op 1.07
getNextSyncCommitteeIndices 10000 validators 123.02 ms/op 113.56 ms/op 1.08
naiveGetNextSyncCommitteeIndices 100000 validators 7.5489 s/op 7.2466 s/op 1.04
getNextSyncCommitteeIndices 100000 validators 121.60 ms/op 114.02 ms/op 1.07
naive computeShuffledIndex 100000 validators 22.601 s/op 25.634 s/op 0.88
cached computeShuffledIndex 100000 validators 523.48 ms/op 534.53 ms/op 0.98
naive computeShuffledIndex 2000000 validators 512.15 s/op 488.46 s/op 1.05
cached computeShuffledIndex 2000000 validators 40.588 s/op 28.539 s/op 1.42
computeProposers - vc 250000 636.27 us/op 619.55 us/op 1.03
computeEpochShuffling - vc 250000 43.550 ms/op 41.280 ms/op 1.05
getNextSyncCommittee - vc 250000 10.827 ms/op 10.304 ms/op 1.05
computeSigningRoot for AttestationData 22.770 us/op 20.493 us/op 1.11
hash AttestationData serialized data then Buffer.toString(base64) 1.6765 us/op 1.5491 us/op 1.08
toHexString serialized data 1.4497 us/op 1.0731 us/op 1.35
Buffer.toString(base64) 160.93 ns/op 138.60 ns/op 1.16
nodejs block root to RootHex using toHex 140.97 ns/op 129.96 ns/op 1.08
nodejs block root to RootHex using toRootHex 86.428 ns/op 89.899 ns/op 0.96
browser block root to RootHex using the deprecated toHexString 265.71 ns/op 200.50 ns/op 1.33
browser block root to RootHex using toHex 195.98 ns/op 162.87 ns/op 1.20
browser block root to RootHex using toRootHex 167.93 ns/op 157.91 ns/op 1.06

by benchmarkbot/action

@g11tech g11tech force-pushed the peerDAS branch 4 times, most recently from 5fbbdb2 to 81aaeb5 Compare August 12, 2024 14:46
Comment thread packages/beacon-node/src/chain/validation/dataColumnSidecar.ts Outdated
commit e8bc729
Author: Matthew Keil <me@matthewkeil.com>
Date:   Tue Dec 3 10:08:30 2024 -0500

    refactor: peerdas types (#7243)

    * refactor: organize peerDAS types

    * refactor: DataColumnsData

    * refactor: rename BlockInputBlobs BlockInputColumnData

    * refactor: split up and rename BlockInputData

    * refactor: clean up BlobsData

    * refactor: clean up CachedData types

    * refactor: change from interface to type and update enum values for grafana

    * chore: lint

    * fix: remove extraneous lint fix

commit c8075d0
Author: Matthew Keil <me@matthewkeil.com>
Date:   Mon Nov 25 15:41:41 2024 +0800

    feat: log peer disconnect info (#7231)

    * feat: log disconnect reason

    * feat: log peerScore update

    * fix: pretty print peerId

    * fix: use prettyPrintPeerId

commit 8689c76
Author: Matthew Keil <me@matthewkeil.com>
Date:   Tue Oct 22 06:11:13 2024 -0400

    feat: check for no commitments on block or column in sidecar validation (#7184)

    * feat: check for no commitments on block or column in sidecar validation

    * test: add sanity check for empty blob commitments in column validation

    * fix: test bug

    * fix: but in test passing commitments

commit fccf9a2
Author: harkamal <gajinder@g11.in>
Date:   Tue Oct 8 12:44:11 2024 +0530

    add prevdownload tracker

commit 513bccc
Author: harkamal <gajinder@g11.in>
Date:   Wed Oct 2 16:46:40 2024 +0530

    fix

commit 1c08ab3
Author: harkamal <gajinder@g11.in>
Date:   Wed Oct 2 16:40:40 2024 +0530

    some fixing of beacon params

commit 7c9a01c
Author: harkamal <gajinder@g11.in>
Date:   Wed Oct 2 14:58:11 2024 +0530

    add debug and fix datacolumns migration and improve log

commit b04aaef
Author: harkamal <gajinder@g11.in>
Date:   Wed Oct 2 12:52:24 2024 +0530

    migrate datacolumns to finalized

commit a0e0087
Author: harkamal <gajinder@g11.in>
Date:   Wed Oct 2 00:36:03 2024 +0530

    more log

commit 2736b8c
Author: harkamal <gajinder@g11.in>
Date:   Tue Oct 1 19:43:59 2024 +0530

    add enhance datacolumn serving logs

commit cce193b
Author: harkamal <gajinder@g11.in>
Date:   Tue Oct 1 17:36:14 2024 +0530

    improve logging for debugging

commit a3de70f
Author: harkamal <gajinder@g11.in>
Date:   Thu Sep 26 14:43:49 2024 +0530

    turn persisting network identity to default true

commit cec27d6
Author: harkamal <gajinder@g11.in>
Date:   Sat Sep 21 22:07:58 2024 +0530

    handle edge case

commit 6a77828
Author: harkamal <gajinder@g11.in>
Date:   Sat Sep 21 20:33:53 2024 +0530

    add debug console log

commit 574837a
Author: harkamal <gajinder@g11.in>
Date:   Sat Sep 21 18:39:36 2024 +0530

    use sample subnets for data availability

commit fee7c08
Author: harkamal <gajinder@g11.in>
Date:   Tue Sep 17 16:42:45 2024 +0530

    validate inclusion proof

commit 20ef4c6
Author: Matthew Keil <me@matthewkeil.com>
Date:   Tue Sep 17 05:33:40 2024 -0400

    feat: validate data column sidecars (#7073)

    * feat: update c-kzg to final DAS version

    * refactor: use trusted-setup from c-kzg package

    * feat: implement validateDataColumnsSidecars

    * feat: check block and column commitments match

    * test: add unit test for validateDataColumnsSidecars

    * fix: invalid build and update validity condition of validateDataColumnsSidecars

    * fix: make error messages better

    * fix: electra vs peerdas type conflict

commit b1940ee
Author: Matthew Keil <me@matthewkeil.com>
Date:   Tue Sep 17 05:26:05 2024 -0400

    fix: remove ckzg build script (#7089)

    * fix: remove unused ckzg build script

    * fix: remove unused rsync dep from Dockerfile

commit bd4f7f9
Author: Matthew Keil <me@matthewkeil.com>
Date:   Mon Sep 16 06:31:52 2024 -0400

    feat: update ckzg to final DAS version (#7050)

    * feat: update c-kzg to final DAS version

    * refactor: use trusted-setup from c-kzg package

commit a33303f
Author: Matthew Keil <me@matthewkeil.com>
Date:   Mon Sep 16 04:08:29 2024 -0400

    feat: refactor and unit test getDataColumnSidecars (#7072)

    * refactor: getDataColumnSidecars

    * test: unit test getDataColumnSidecars with mocks from c-kzg library

    * refactor: use fromHex util

    * chore: update numbering on mocks

    * chore: update c-kzg to latest version

    * chore: fix type export syntax

    * test: add verification for cells from sidecars

    * test: add verification to DataColumnSidecars tests

    * refactor: getDataColumnSidecars for PR comments

    * feat: narrow type and remove unnecessary conditional

    * fix: getDataColumnSidecars param type

    * refactor: rename to computeDataColumnSidecars

commit 4ec7aff
Author: harkamal <gajinder@g11.in>
Date:   Fri Sep 13 18:19:45 2024 +0530

    edge case optimization

commit 3470076
Author: harkamal <gajinder@g11.in>
Date:   Fri Sep 13 17:31:52 2024 +0530

    more debug log

commit c4d04ee
Author: harkamal <gajinder@g11.in>
Date:   Fri Sep 13 15:35:32 2024 +0530

    fix the column id compute

commit cdd9bae
Author: harkamal <gajinder@g11.in>
Date:   Thu Sep 12 17:04:07 2024 +0530

    update compute spec tests

commit 2b10e4d
Author: harkamal <gajinder@g11.in>
Date:   Thu Sep 12 15:25:00 2024 +0530

    datacolumns retrival fix

commit 56c8c6e
Author: harkamal <gajinder@g11.in>
Date:   Thu Sep 12 13:57:51 2024 +0530

    custodied column fetch debugging log

commit af933fb
Author: harkamal <gajinder@g11.in>
Date:   Wed Sep 11 22:11:16 2024 +0530

    some fixes

commit 74d8122
Author: harkamal <gajinder@g11.in>
Date:   Wed Sep 11 21:57:41 2024 +0530

    add some log for debugging inbound data columns request

commit f7571f4
Author: harkamal <gajinder@g11.in>
Date:   Wed Sep 11 17:07:52 2024 +0530

    add some more loggig and availaibility tracking

commit d35873e
Author: harkamal <gajinder@g11.in>
Date:   Wed Sep 11 15:02:31 2024 +0530

    further wait till cutoff for all data to be available

commit 8c21168
Author: harkamal <gajinder@g11.in>
Date:   Wed Sep 11 00:02:09 2024 +0530

    make pull a little less agressive

commit de341b5
Author: harkamal <gajinder@g11.in>
Date:   Tue Sep 10 22:21:37 2024 +0530

    add send more log

commit bd84892
Author: harkamal <gajinder@g11.in>
Date:   Tue Sep 10 22:01:43 2024 +0530

    more log

commit d7721f8
Author: harkamal <gajinder@g11.in>
Date:   Tue Sep 10 21:19:11 2024 +0530

    fix bug

commit 5e1de6f
Author: harkamal <gajinder@g11.in>
Date:   Tue Sep 10 20:45:05 2024 +0530

    trying some fix

commit 2bc1a0d
Author: harkamal <gajinder@g11.in>
Date:   Tue Sep 10 20:11:05 2024 +0530

    add cache tracking

commit 387da88
Author: harkamal <gajinder@g11.in>
Date:   Tue Sep 10 19:27:05 2024 +0530

    add more log

commit aece0ab
Author: harkamal <gajinder@g11.in>
Date:   Tue Sep 10 17:46:52 2024 +0530

    fix add missing data availability resolutions

commit 006e781
Author: harkamal <gajinder@g11.in>
Date:   Sat Sep 7 20:35:00 2024 +0530

    add debug log

commit bf08852
Author: harkamal <gajinder@g11.in>
Date:   Sat Sep 7 20:08:10 2024 +0530

    resolve availability when datacolumns are downloaded and matched

commit 2833ac0
Author: harkamal <gajinder@g11.in>
Date:   Thu Sep 5 20:17:04 2024 +0530

    make the csc encoding updates as per latest spec

commit 585165e
Author: harkamal <gajinder@g11.in>
Date:   Wed Aug 28 17:35:31 2024 +0530

    remove banning unknown block, addmore log

commit a33a72f
Author: harkamal <gajinder@g11.in>
Date:   Tue Aug 27 21:59:03 2024 +0530

    subnet count 128

commit ae7678e
Author: harkamal <gajinder@g11.in>
Date:   Tue Aug 27 21:29:50 2024 +0530

    fx

commit 4b6f167
Author: harkamal <gajinder@g11.in>
Date:   Tue Aug 27 19:37:37 2024 +0530

    fix bug

commit 180f7d8
Author: harkamal <gajinder@g11.in>
Date:   Tue Aug 27 18:58:26 2024 +0530

    fix log

commit 54579b0
Author: harkamal <gajinder@g11.in>
Date:   Tue Aug 27 17:21:07 2024 +0530

    add more info for debugging

commit a3533f8
Author: harkamal <gajinder@g11.in>
Date:   Tue Aug 27 17:13:41 2024 +0530

    add supernode flag to configure node custody requirement and make it not required for validator

commit e6c613f
Author: harkamal <gajinder@g11.in>
Date:   Tue Aug 27 15:51:20 2024 +0530

    rename electra fork to peerdas for rebase and make csc in metadata uint8

commit 81aaeb5
Author: harkamal <gajinder@g11.in>
Date:   Mon Aug 12 15:43:39 2024 +0530

    feat: add and use metadatav3 for peer custody subnet

    fixes for metadata, working locally

    change the condition to update metadata csc change

commit c7f6341
Author: harkamal <gajinder@g11.in>
Date:   Fri Aug 9 17:06:52 2024 +0530

    fix the types/test

    rebase fixes

commit a0c5d27
Author: harkamal <gajinder@g11.in>
Date:   Tue Jul 16 18:54:18 2024 +0530

    fix: refactor to add and use nodeid computation and clear out nodeid tracking

    nodeid cleanup for network

commit d423004
Author: harkamal <gajinder@g11.in>
Date:   Mon Jul 15 03:12:52 2024 +0530

    feat: add the modifications to work with devnet2

    some network options to control peering behavior

    allow setting node custody capability via --params

    use eip754 names for the peerdas config

commit 47eedae
Author: harkamal <gajinder@g11.in>
Date:   Sun Jul 14 17:56:59 2024 +0530

    feat: get various sync mechanisms working with/without sharded data

commit 156ef53
Author: matthewkeil <me@matthewkeil.com>
Date:   Fri Jun 21 17:09:44 2024 +0200

    fix: docker build issue for c-kzg

    wip: REPLACE THIS COMMIT

    commit yarn lock

    rebase fixes

    fix: update c-zkg install workflow

    feat: add trustedSetupPrecompute cli flag

    fix: update trusted-setup for testing

    fix: update c-zkg install workflow to remove sudo

    fix: add rsync to apk deps

commit 499d93c
Author: harkamal <gajinder@g11.in>
Date:   Wed Jan 24 18:40:25 2024 +0530

    feat: implement peerDAS on electra

    add some presets

    add further params and types

    add data column to types repo and network

    move to max request data columns to preset

    add the datacolumns data in blockinput and fix breaking errors in seen gossip blockinput

    handle data columns in gossip and the seengossip

    further propagate forkaware blockdata and resolve build/type issues

    further handle datacolumns sync by range by root and forkaware data handling

    fix issues

    chore: update c-kzg to peerDas version

    feat: add peerDas ckzg functions to interface

    fix the lookups

    handle the publishing flow

    various sync try fixes

    fixes

    compute blob side car

    various misl debuggings and fixes

    debug and apply fixes and get range and by root sync to work will full custody

    enable syncing with lower custody requirement

    use node peerid rather than a dummy string

    get and use the nodeid from enr and correctly compute subnets and column indexes

    filterout and connect to peers only matching out custody requiremnt

    try adding custody requirement

    add protection for subnet calc

    get the sync working with devnet 0

    correctly set the enr with custody subnet info

    rebase fixes

    small refactor

commit 4805a2e
Author: harkamal <gajinder@g11.in>
Date:   Wed Jan 24 17:38:11 2024 +0530

    feat: placeholder PR for electra

    add types stub and epoch config

    fix types
**Motivation**

Addresses peerDAS PR comment
#6353 (comment)
@matthewkeil matthewkeil mentioned this pull request Aug 8, 2025
matthewkeil and others added 14 commits August 9, 2025 00:40
**Motivation**

Addresses peerDAS PR comment
#6353 (comment)
#8159)

**Motivation**

Addresses peerDAS  PR comment
#6353 (comment)

---------

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

Addresses peerDAS PR comments
#6353 (comment)
#6353 (comment)
#6353 (comment)

---------

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

Slight optimization from
ethereum/consensus-specs#4459 to skip custody
groups computation if we custody all groups.

**Description**

- throw error (instead of hidding a bug) if `custodyGroupCount >
NUMBER_OF_CUSTODY_GROUPS`
- skip computation if all groups are custodied
**Motivation**

Addresses peerDAS PR comments
#6353 (comment)
#6353 (comment)
#6353 (comment)
#6353 (comment)
#6353 (comment)

---------

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

Revert a commit adding a metric. Create a separate issue to fix more
thoroughly
**Motivation**

- some peers consistently sent mismatched DataColumnSidecars, we should
gradually reduce peer score and eventually disconnect it

**Description**

- reduce peer score by using `network.reportPeer()` api

Closes #8133

---------

Co-authored-by: Tuyen Nguyen <twoeths@users.noreply.github.com>
Co-authored-by: Cayman <caymannava@gmail.com>
Co-authored-by: Nico Flaig <nflaig@protonmail.com>
…oice spec test (#8170)

Passes all tests in `v1.6.0-alpha.4`
**Motivation**

Addresses peerDAS pr comments

#6353 (comment)
**Motivation**

- we got a lot of rate limited response from peers during syncing
- we should be able to control which peers to connect to based on
tracked active requests in PeerBalancer

**Description**

- enforce no more than MAX_CONCURRENT_REQUESTS per peer in sync
- limit number of epochs downloaded ahead


part of #8033

**Test results on fusaka-devnet-3**
was able to sync `fusaka-devnet-3` 2 times using this branch along with
#8150

<img width="851" height="346" alt="Screenshot 2025-08-09 at 14 45 32"
src="https://github.com/user-attachments/assets/1f3afca0-13a6-4f7a-9c18-51d03cc34793"
/>

---------

Co-authored-by: Tuyen Nguyen <twoeths@users.noreply.github.com>
Co-authored-by: Cayman <caymannava@gmail.com>
**Motivation**

- sync chain was stuck because some peers incorrectly response 0 block
for a batch when they don't have it, see #8147
- batch `n` has 0 block so chain does not process anything (and note
that this is wrong response from peers, most likely peer started from a
`checkpointSyncUrl`
  - batch `n+1` cannot process due to `UNKNOWN_BLOCK_PARENT`
  - then SyncChain stuck
- sometimes other clients throw `ResourceUnavailable` instead, and
that's expected in the spec

**Description**
- set `MAX_BATCH_PROCESSING_ATTEMPTS` to 0, ie if we cannot process a
batch, we remove that sync chain and RangeSync will automatically add a
new one
- do not sync from peers without `earliestAvailableSlot`
- throw error if peers return 0 blocks (peers should have returned
`ResourceUnavailable` error in that case according to [the
spec](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#responding-side),
we handle just in case. For lodestar, I tracked that in #8149)

Closes #8147

was able to sync `fusaka-devnet-3` 2 times using this branch along with
#8166

<img width="851" height="346" alt="Screenshot 2025-08-09 at 14 45 32"
src="https://github.com/user-attachments/assets/1f3afca0-13a6-4f7a-9c18-51d03cc34793"
/>

---------

Co-authored-by: Tuyen Nguyen <twoeths@users.noreply.github.com>
const hasAllColumns = matchingSubnetsNum === sampleSubnets.length;
const clientAgent = peerData?.agentClient ?? ClientKind.Unknown;

this.logger.debug("onStatus", {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Previously has been onStatus ${custodyGroupCount === undefined ? "undefined custody count assuming 4" : ""}, related to #8092

**Motivation**

Addresses `peerDAS` PR comment
#6353 (comment)

Also clean up usage (emission and consumption) of the `peer_connected`
event.

Add helper function to `prettyPrintCustodyGroups`
@nflaig nflaig marked this pull request as ready for review August 11, 2025 17:00
@nflaig nflaig requested a review from a team as a code owner August 11, 2025 17:00
**Motivation**

- fix unit tests and e2e tests of `peerDAS` branch

**Description**

- when sending status, based on its body we set correct version,
otherwise peers cannot deserialize the request body
- at fulu fork transition, update local status cache so that it sends
the correct version of status message
- fix failed unit test as introduced by
[PR-8116](#8116 (comment))

---------

Co-authored-by: Tuyen Nguyen <twoeths@users.noreply.github.com>
Co-authored-by: Nico Flaig <nflaig@protonmail.com>
Co-authored-by: Cayman <caymannava@gmail.com>

@matthewkeil matthewkeil left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

no sleep for you!!!

and LGTM!!! 🚀

up up and away Ethereum!! Go zebra go!!

@wemeetagain wemeetagain merged commit aac4d9d into unstable Aug 11, 2025
28 of 29 checks passed
@wemeetagain wemeetagain deleted the peerDAS branch August 11, 2025 18:02
wemeetagain added a commit that referenced this pull request Aug 12, 2025
**Motivation**

Addresses peerDAS PR comment 
#6353 (comment)

---------

Co-authored-by: Cayman <caymannava@gmail.com>
wemeetagain added a commit that referenced this pull request Aug 15, 2025
**Motivation**

- address
#6353 (comment)

**Description**

Our block production and publishing data flow was messy. The data types
and utility functions are jumbled, duplicate functions, differences from
spec functions, etc. To that end, this refactors things that touch this
proposal data flow.

- Tweak the fork-agnostic `BlockContents` type to also include pre-deneb
`BeaconBlock`
  - this allows us to remove `BlockOrContents` variables and types
- Remove `Contents` (It isn't actually needed)
- Collect all `produced*` caches into `blockProductionCache`
- make blinded block reconstruction more typesafe
- Separate blobs+proofs sanity validation from cells+proof sanity
validation
- Delete duplicated `BlobsBundle` type
- Remove duplicate spec function `computeDataColumnSidecars` in favor of
`getDataColumnSidecars*` functions
- Refactor `computeBlobSidecars` into `getBlobSidecars` from the spec

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>
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.