Skip to content

Add eip-4844 types and config#4778

Merged
dapplion merged 9 commits intounstablefrom
dapplion/eip-4844-types
Nov 26, 2022
Merged

Add eip-4844 types and config#4778
dapplion merged 9 commits intounstablefrom
dapplion/eip-4844-types

Conversation

@dapplion
Copy link
Contributor

Motivation

Description

  • Update config for eip-4844
  • Move fork scheduling from config preset to network config. Else testnets can get forks scheduled if we don't overwrite all _FORK_EPOCH variables. Added a test to ensure that never happens
  • Add params for eip-4844
  • Add types for eip-4844

@dapplion dapplion added the spec-deneb 🐡 Issues targeting the Deneb spec version label Nov 17, 2022
@dapplion dapplion requested a review from a team as a code owner November 17, 2022 15:59
@github-actions
Copy link
Contributor

github-actions bot commented Nov 17, 2022

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 15395a3 Previous: f55a81a Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.1511 ms/op 2.4244 ms/op 0.89
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 71.029 us/op 72.132 us/op 0.98
BLS verify - blst-native 1.8560 ms/op 2.1690 ms/op 0.86
BLS verifyMultipleSignatures 3 - blst-native 3.8096 ms/op 4.4802 ms/op 0.85
BLS verifyMultipleSignatures 8 - blst-native 8.2090 ms/op 9.6742 ms/op 0.85
BLS verifyMultipleSignatures 32 - blst-native 29.750 ms/op 35.163 ms/op 0.85
BLS aggregatePubkeys 32 - blst-native 39.291 us/op 46.679 us/op 0.84
BLS aggregatePubkeys 128 - blst-native 153.86 us/op 182.68 us/op 0.84
getAttestationsForBlock 91.092 ms/op 89.326 ms/op 1.02
isKnown best case - 1 super set check 424.00 ns/op 493.00 ns/op 0.86
isKnown normal case - 2 super set checks 408.00 ns/op 482.00 ns/op 0.85
isKnown worse case - 16 super set checks 410.00 ns/op 484.00 ns/op 0.85
CheckpointStateCache - add get delete 9.0020 us/op 9.2990 us/op 0.97
validate gossip signedAggregateAndProof - struct 4.2759 ms/op 5.0483 ms/op 0.85
validate gossip attestation - struct 2.0301 ms/op 2.3689 ms/op 0.86
pickEth1Vote - no votes 2.0622 ms/op 2.1381 ms/op 0.96
pickEth1Vote - max votes 20.127 ms/op 21.322 ms/op 0.94
pickEth1Vote - Eth1Data hashTreeRoot value x2048 11.020 ms/op 13.239 ms/op 0.83
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 20.548 ms/op 22.426 ms/op 0.92
pickEth1Vote - Eth1Data fastSerialize value x2048 1.5458 ms/op 1.5663 ms/op 0.99
pickEth1Vote - Eth1Data fastSerialize tree x2048 14.013 ms/op 14.894 ms/op 0.94
bytes32 toHexString 1.0580 us/op 1.0880 us/op 0.97
bytes32 Buffer.toString(hex) 685.00 ns/op 802.00 ns/op 0.85
bytes32 Buffer.toString(hex) from Uint8Array 965.00 ns/op 1.0950 us/op 0.88
bytes32 Buffer.toString(hex) + 0x 696.00 ns/op 766.00 ns/op 0.91
Object access 1 prop 0.37100 ns/op 0.40900 ns/op 0.91
Map access 1 prop 0.29800 ns/op 0.30600 ns/op 0.97
Object get x1000 17.446 ns/op 11.216 ns/op 1.56
Map get x1000 0.97100 ns/op 1.0200 ns/op 0.95
Object set x1000 117.91 ns/op 86.147 ns/op 1.37
Map set x1000 73.217 ns/op 56.940 ns/op 1.29
Return object 10000 times 0.37780 ns/op 0.43320 ns/op 0.87
Throw Error 10000 times 6.0323 us/op 5.9915 us/op 1.01
fastMsgIdFn sha256 / 200 bytes 4.1870 us/op 4.8600 us/op 0.86
fastMsgIdFn h32 xxhash / 200 bytes 579.00 ns/op 592.00 ns/op 0.98
fastMsgIdFn h64 xxhash / 200 bytes 692.00 ns/op 892.00 ns/op 0.78
fastMsgIdFn sha256 / 1000 bytes 13.145 us/op 15.559 us/op 0.84
fastMsgIdFn h32 xxhash / 1000 bytes 728.00 ns/op 757.00 ns/op 0.96
fastMsgIdFn h64 xxhash / 1000 bytes 793.00 ns/op 1.0020 us/op 0.79
fastMsgIdFn sha256 / 10000 bytes 112.07 us/op 133.96 us/op 0.84
fastMsgIdFn h32 xxhash / 10000 bytes 2.4640 us/op 2.6350 us/op 0.94
fastMsgIdFn h64 xxhash / 10000 bytes 1.7320 us/op 1.9640 us/op 0.88
enrSubnets - fastDeserialize 64 bits 2.6450 us/op 2.8320 us/op 0.93
enrSubnets - ssz BitVector 64 bits 753.00 ns/op 880.00 ns/op 0.86
enrSubnets - fastDeserialize 4 bits 388.00 ns/op 418.00 ns/op 0.93
enrSubnets - ssz BitVector 4 bits 754.00 ns/op 901.00 ns/op 0.84
prioritizePeers score -10:0 att 32-0.1 sync 2-0 92.536 us/op 91.970 us/op 1.01
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 137.86 us/op 138.24 us/op 1.00
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 230.73 us/op 232.90 us/op 0.99
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 389.84 us/op 343.53 us/op 1.13
prioritizePeers score 0:0 att 64-1 sync 4-1 464.01 us/op 443.30 us/op 1.05
RateTracker 1000000 limit, 1 obj count per request 189.36 ns/op 201.38 ns/op 0.94
RateTracker 1000000 limit, 2 obj count per request 142.63 ns/op 150.26 ns/op 0.95
RateTracker 1000000 limit, 4 obj count per request 116.07 ns/op 123.95 ns/op 0.94
RateTracker 1000000 limit, 8 obj count per request 106.71 ns/op 110.96 ns/op 0.96
RateTracker with prune 4.2600 us/op 4.8280 us/op 0.88
array of 16000 items push then shift 2.9075 us/op 51.674 us/op 0.06
LinkedList of 16000 items push then shift 17.498 ns/op 12.994 ns/op 1.35
array of 16000 items push then pop 241.54 ns/op 212.02 ns/op 1.14
LinkedList of 16000 items push then pop 16.461 ns/op 12.709 ns/op 1.30
array of 24000 items push then shift 4.1828 us/op 77.432 us/op 0.05
LinkedList of 24000 items push then shift 20.538 ns/op 13.765 ns/op 1.49
array of 24000 items push then pop 212.62 ns/op 204.79 ns/op 1.04
LinkedList of 24000 items push then pop 17.905 ns/op 12.761 ns/op 1.40
intersect bitArray bitLen 8 11.816 ns/op 10.661 ns/op 1.11
intersect array and set length 8 164.23 ns/op 161.47 ns/op 1.02
intersect bitArray bitLen 128 72.271 ns/op 58.728 ns/op 1.23
intersect array and set length 128 2.2541 us/op 1.9375 us/op 1.16
Buffer.concat 32 items 2.2210 ns/op 1.8800 ns/op 1.18
pass gossip attestations to forkchoice per slot 4.0271 ms/op 3.6505 ms/op 1.10
computeDeltas 6.0561 ms/op 4.8117 ms/op 1.26
computeProposerBoostScoreFromBalances 907.27 us/op 806.15 us/op 1.13
altair processAttestation - 250000 vs - 7PWei normalcase 4.0936 ms/op 4.0326 ms/op 1.02
altair processAttestation - 250000 vs - 7PWei worstcase 6.6935 ms/op 5.7570 ms/op 1.16
altair processAttestation - setStatus - 1/6 committees join 216.60 us/op 185.42 us/op 1.17
altair processAttestation - setStatus - 1/3 committees join 416.24 us/op 361.95 us/op 1.15
altair processAttestation - setStatus - 1/2 committees join 583.49 us/op 524.94 us/op 1.11
altair processAttestation - setStatus - 2/3 committees join 751.00 us/op 679.70 us/op 1.10
altair processAttestation - setStatus - 4/5 committees join 1.0384 ms/op 959.45 us/op 1.08
altair processAttestation - setStatus - 100% committees join 1.2351 ms/op 1.1472 ms/op 1.08
altair processBlock - 250000 vs - 7PWei normalcase 28.060 ms/op 26.498 ms/op 1.06
altair processBlock - 250000 vs - 7PWei normalcase hashState 39.403 ms/op 41.437 ms/op 0.95
altair processBlock - 250000 vs - 7PWei worstcase 91.658 ms/op 84.750 ms/op 1.08
altair processBlock - 250000 vs - 7PWei worstcase hashState 98.728 ms/op 111.72 ms/op 0.88
phase0 processBlock - 250000 vs - 7PWei normalcase 3.9374 ms/op 3.5844 ms/op 1.10
phase0 processBlock - 250000 vs - 7PWei worstcase 47.338 ms/op 52.249 ms/op 0.91
altair processEth1Data - 250000 vs - 7PWei normalcase 953.17 us/op 877.74 us/op 1.09
Tree 40 250000 create 853.29 ms/op 935.51 ms/op 0.91
Tree 40 250000 get(125000) 335.14 ns/op 276.70 ns/op 1.21
Tree 40 250000 set(125000) 2.1566 us/op 2.6561 us/op 0.81
Tree 40 250000 toArray() 32.400 ms/op 29.170 ms/op 1.11
Tree 40 250000 iterate all - toArray() + loop 32.744 ms/op 29.700 ms/op 1.10
Tree 40 250000 iterate all - get(i) 109.27 ms/op 114.76 ms/op 0.95
MutableVector 250000 create 16.160 ms/op 14.472 ms/op 1.12
MutableVector 250000 get(125000) 13.408 ns/op 11.003 ns/op 1.22
MutableVector 250000 set(125000) 617.10 ns/op 753.71 ns/op 0.82
MutableVector 250000 toArray() 8.2310 ms/op 7.0210 ms/op 1.17
MutableVector 250000 iterate all - toArray() + loop 7.2649 ms/op 7.0876 ms/op 1.03
MutableVector 250000 iterate all - get(i) 3.4444 ms/op 2.7059 ms/op 1.27
Array 250000 create 6.4560 ms/op 6.8118 ms/op 0.95
Array 250000 clone - spread 2.6827 ms/op 3.9881 ms/op 0.67
Array 250000 get(125000) 1.1820 ns/op 1.7760 ns/op 0.67
Array 250000 set(125000) 1.1320 ns/op 1.7780 ns/op 0.64
Array 250000 iterate all - loop 170.28 us/op 153.45 us/op 1.11
effectiveBalanceIncrements clone Uint8Array 300000 79.058 us/op 65.551 us/op 1.21
effectiveBalanceIncrements clone MutableVector 300000 772.00 ns/op 1.1290 us/op 0.68
effectiveBalanceIncrements rw all Uint8Array 300000 252.50 us/op 249.69 us/op 1.01
effectiveBalanceIncrements rw all MutableVector 300000 179.12 ms/op 229.20 ms/op 0.78
phase0 afterProcessEpoch - 250000 vs - 7PWei 185.31 ms/op 190.83 ms/op 0.97
phase0 beforeProcessEpoch - 250000 vs - 7PWei 70.722 ms/op 62.326 ms/op 1.13
altair processEpoch - mainnet_e81889 521.50 ms/op 554.24 ms/op 0.94
mainnet_e81889 - altair beforeProcessEpoch 162.84 ms/op 95.119 ms/op 1.71
mainnet_e81889 - altair processJustificationAndFinalization 32.583 us/op 17.538 us/op 1.86
mainnet_e81889 - altair processInactivityUpdates 10.105 ms/op 10.119 ms/op 1.00
mainnet_e81889 - altair processRewardsAndPenalties 94.402 ms/op 147.08 ms/op 0.64
mainnet_e81889 - altair processRegistryUpdates 5.4470 us/op 2.9090 us/op 1.87
mainnet_e81889 - altair processSlashings 1.2170 us/op 537.00 ns/op 2.27
mainnet_e81889 - altair processEth1DataReset 1.3940 us/op 648.00 ns/op 2.15
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.2963 ms/op 2.6994 ms/op 0.85
mainnet_e81889 - altair processSlashingsReset 10.077 us/op 5.1610 us/op 1.95
mainnet_e81889 - altair processRandaoMixesReset 7.7950 us/op 4.6190 us/op 1.69
mainnet_e81889 - altair processHistoricalRootsUpdate 1.2430 us/op 572.00 ns/op 2.17
mainnet_e81889 - altair processParticipationFlagUpdates 6.2920 us/op 2.3120 us/op 2.72
mainnet_e81889 - altair processSyncCommitteeUpdates 1.2580 us/op 633.00 ns/op 1.99
mainnet_e81889 - altair afterProcessEpoch 197.30 ms/op 197.06 ms/op 1.00
phase0 processEpoch - mainnet_e58758 549.35 ms/op 507.36 ms/op 1.08
mainnet_e58758 - phase0 beforeProcessEpoch 236.73 ms/op 194.99 ms/op 1.21
mainnet_e58758 - phase0 processJustificationAndFinalization 26.784 us/op 18.257 us/op 1.47
mainnet_e58758 - phase0 processRewardsAndPenalties 147.87 ms/op 110.40 ms/op 1.34
mainnet_e58758 - phase0 processRegistryUpdates 12.407 us/op 8.5320 us/op 1.45
mainnet_e58758 - phase0 processSlashings 1.1500 us/op 653.00 ns/op 1.76
mainnet_e58758 - phase0 processEth1DataReset 1.0530 us/op 656.00 ns/op 1.61
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.9850 ms/op 1.6299 ms/op 1.22
mainnet_e58758 - phase0 processSlashingsReset 7.7940 us/op 3.1940 us/op 2.44
mainnet_e58758 - phase0 processRandaoMixesReset 8.0620 us/op 4.3890 us/op 1.84
mainnet_e58758 - phase0 processHistoricalRootsUpdate 1.1140 us/op 682.00 ns/op 1.63
mainnet_e58758 - phase0 processParticipationRecordUpdates 7.1220 us/op 3.5560 us/op 2.00
mainnet_e58758 - phase0 afterProcessEpoch 162.03 ms/op 164.09 ms/op 0.99
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.5993 ms/op 1.9746 ms/op 1.32
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 3.4555 ms/op 2.2368 ms/op 1.54
altair processInactivityUpdates - 250000 normalcase 40.600 ms/op 45.772 ms/op 0.89
altair processInactivityUpdates - 250000 worstcase 50.090 ms/op 37.473 ms/op 1.34
phase0 processRegistryUpdates - 250000 normalcase 10.656 us/op 6.5870 us/op 1.62
phase0 processRegistryUpdates - 250000 badcase_full_deposits 476.64 us/op 381.89 us/op 1.25
phase0 processRegistryUpdates - 250000 worstcase 0.5 209.39 ms/op 211.78 ms/op 0.99
altair processRewardsAndPenalties - 250000 normalcase 140.31 ms/op 113.59 ms/op 1.24
altair processRewardsAndPenalties - 250000 worstcase 88.920 ms/op 77.163 ms/op 1.15
phase0 getAttestationDeltas - 250000 normalcase 14.208 ms/op 14.352 ms/op 0.99
phase0 getAttestationDeltas - 250000 worstcase 13.726 ms/op 14.652 ms/op 0.94
phase0 processSlashings - 250000 worstcase 5.3572 ms/op 5.3005 ms/op 1.01
altair processSyncCommitteeUpdates - 250000 284.54 ms/op 304.10 ms/op 0.94
BeaconState.hashTreeRoot - No change 472.00 ns/op 533.00 ns/op 0.89
BeaconState.hashTreeRoot - 1 full validator 61.531 us/op 72.672 us/op 0.85
BeaconState.hashTreeRoot - 32 full validator 666.92 us/op 830.32 us/op 0.80
BeaconState.hashTreeRoot - 512 full validator 8.5364 ms/op 7.7136 ms/op 1.11
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 76.159 us/op 90.498 us/op 0.84
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.1701 ms/op 1.3071 ms/op 0.90
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 15.734 ms/op 18.223 ms/op 0.86
BeaconState.hashTreeRoot - 1 balances 64.797 us/op 69.528 us/op 0.93
BeaconState.hashTreeRoot - 32 balances 597.90 us/op 687.02 us/op 0.87
BeaconState.hashTreeRoot - 512 balances 6.0356 ms/op 6.5382 ms/op 0.92
BeaconState.hashTreeRoot - 250000 balances 89.798 ms/op 102.65 ms/op 0.87
aggregationBits - 2048 els - zipIndexesInBitList 34.724 us/op 41.906 us/op 0.83
regular array get 100000 times 67.397 us/op 60.671 us/op 1.11
wrappedArray get 100000 times 67.427 us/op 60.556 us/op 1.11
arrayWithProxy get 100000 times 28.614 ms/op 28.314 ms/op 1.01
ssz.Root.equals 534.00 ns/op 605.00 ns/op 0.88
byteArrayEquals 538.00 ns/op 582.00 ns/op 0.92
shuffle list - 16384 els 12.307 ms/op 11.443 ms/op 1.08
shuffle list - 250000 els 165.75 ms/op 166.26 ms/op 1.00
processSlot - 1 slots 12.405 us/op 13.334 us/op 0.93
processSlot - 32 slots 1.7295 ms/op 2.0082 ms/op 0.86
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 341.42 us/op 440.50 us/op 0.78
getCommitteeAssignments - req 1 vs - 250000 vc 5.3016 ms/op 5.3563 ms/op 0.99
getCommitteeAssignments - req 100 vs - 250000 vc 7.3148 ms/op 7.9187 ms/op 0.92
getCommitteeAssignments - req 1000 vs - 250000 vc 7.7635 ms/op 8.4741 ms/op 0.92
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 9.5200 ns/op 9.0900 ns/op 1.05
state getBlockRootAtSlot - 250000 vs - 7PWei 1.3011 us/op 1.1631 us/op 1.12
computeProposers - vc 250000 17.481 ms/op 18.220 ms/op 0.96
computeEpochShuffling - vc 250000 172.32 ms/op 171.31 ms/op 1.01
getNextSyncCommittee - vc 250000 286.58 ms/op 303.74 ms/op 0.94

by benchmarkbot/action

@dapplion dapplion force-pushed the dapplion/eip-4844-types branch from e97ea1d to 3dfe409 Compare November 17, 2022 18:17
@dapplion dapplion force-pushed the dapplion/eip-4844-types branch from 3dfe409 to af7e70c Compare November 26, 2022 08:05
@dapplion dapplion enabled auto-merge (squash) November 26, 2022 08:30
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!

@dapplion dapplion merged commit 798ec16 into unstable Nov 26, 2022
@dapplion dapplion deleted the dapplion/eip-4844-types branch November 26, 2022 08:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

spec-deneb 🐡 Issues targeting the Deneb spec version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants