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

Add eip-4844 types and config #4778

Merged
merged 9 commits into from
Nov 26, 2022
Merged

Add eip-4844 types and config #4778

merged 9 commits into from
Nov 26, 2022

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