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

Implement verge spec feature #5164

Closed
wants to merge 4 commits into from
Closed

Implement verge spec feature #5164

wants to merge 4 commits into from

Conversation

dapplion
Copy link
Contributor

@dapplion dapplion commented Feb 19, 2023

Motivation

@gballet current spec is based on capella. Are there plans to rebase it on deneb?

Description

This fork currently only updates the execution payload type. There's no additional logic required in consensus side.

Closes #4681

@github-actions
Copy link
Contributor

github-actions bot commented Feb 19, 2023

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: ca04122 Previous: f75d109 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 871.91 us/op 902.64 us/op 0.97
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 44.033 us/op 46.726 us/op 0.94
BLS verify - blst-native 1.1926 ms/op 1.1830 ms/op 1.01
BLS verifyMultipleSignatures 3 - blst-native 2.4268 ms/op 2.4050 ms/op 1.01
BLS verifyMultipleSignatures 8 - blst-native 5.2175 ms/op 5.3051 ms/op 0.98
BLS verifyMultipleSignatures 32 - blst-native 18.831 ms/op 18.967 ms/op 0.99
BLS aggregatePubkeys 32 - blst-native 25.441 us/op 25.327 us/op 1.00
BLS aggregatePubkeys 128 - blst-native 98.334 us/op 99.224 us/op 0.99
getAttestationsForBlock 51.720 ms/op 52.161 ms/op 0.99
isKnown best case - 1 super set check 259.00 ns/op 254.00 ns/op 1.02
isKnown normal case - 2 super set checks 242.00 ns/op 244.00 ns/op 0.99
isKnown worse case - 16 super set checks 240.00 ns/op 249.00 ns/op 0.96
CheckpointStateCache - add get delete 5.0210 us/op 4.9790 us/op 1.01
validate gossip signedAggregateAndProof - struct 2.6923 ms/op 2.6842 ms/op 1.00
validate gossip attestation - struct 1.2964 ms/op 1.2821 ms/op 1.01
pickEth1Vote - no votes 1.3061 ms/op 1.2144 ms/op 1.08
pickEth1Vote - max votes 9.9194 ms/op 11.211 ms/op 0.88
pickEth1Vote - Eth1Data hashTreeRoot value x2048 8.8620 ms/op 8.8106 ms/op 1.01
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 13.314 ms/op 13.983 ms/op 0.95
pickEth1Vote - Eth1Data fastSerialize value x2048 644.97 us/op 621.69 us/op 1.04
pickEth1Vote - Eth1Data fastSerialize tree x2048 6.1790 ms/op 7.8117 ms/op 0.79
bytes32 toHexString 489.00 ns/op 468.00 ns/op 1.04
bytes32 Buffer.toString(hex) 337.00 ns/op 326.00 ns/op 1.03
bytes32 Buffer.toString(hex) from Uint8Array 533.00 ns/op 517.00 ns/op 1.03
bytes32 Buffer.toString(hex) + 0x 342.00 ns/op 325.00 ns/op 1.05
Object access 1 prop 0.16100 ns/op 0.15300 ns/op 1.05
Map access 1 prop 0.15500 ns/op 0.15800 ns/op 0.98
Object get x1000 6.3010 ns/op 6.2980 ns/op 1.00
Map get x1000 0.57600 ns/op 0.53900 ns/op 1.07
Object set x1000 49.790 ns/op 49.984 ns/op 1.00
Map set x1000 41.767 ns/op 41.870 ns/op 1.00
Return object 10000 times 0.22920 ns/op 0.22860 ns/op 1.00
Throw Error 10000 times 3.9938 us/op 4.0391 us/op 0.99
fastMsgIdFn sha256 / 200 bytes 3.3090 us/op 3.3190 us/op 1.00
fastMsgIdFn h32 xxhash / 200 bytes 272.00 ns/op 282.00 ns/op 0.96
fastMsgIdFn h64 xxhash / 200 bytes 384.00 ns/op 368.00 ns/op 1.04
fastMsgIdFn sha256 / 1000 bytes 11.129 us/op 11.200 us/op 0.99
fastMsgIdFn h32 xxhash / 1000 bytes 390.00 ns/op 408.00 ns/op 0.96
fastMsgIdFn h64 xxhash / 1000 bytes 448.00 ns/op 441.00 ns/op 1.02
fastMsgIdFn sha256 / 10000 bytes 100.31 us/op 100.99 us/op 0.99
fastMsgIdFn h32 xxhash / 10000 bytes 1.8550 us/op 1.8780 us/op 0.99
fastMsgIdFn h64 xxhash / 10000 bytes 1.3270 us/op 1.3040 us/op 1.02
enrSubnets - fastDeserialize 64 bits 1.2250 us/op 1.2380 us/op 0.99
enrSubnets - ssz BitVector 64 bits 474.00 ns/op 463.00 ns/op 1.02
enrSubnets - fastDeserialize 4 bits 172.00 ns/op 173.00 ns/op 0.99
enrSubnets - ssz BitVector 4 bits 468.00 ns/op 469.00 ns/op 1.00
prioritizePeers score -10:0 att 32-0.1 sync 2-0 99.937 us/op 92.359 us/op 1.08
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 125.76 us/op 118.97 us/op 1.06
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 160.22 us/op 166.78 us/op 0.96
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 290.53 us/op 299.90 us/op 0.97
prioritizePeers score 0:0 att 64-1 sync 4-1 340.36 us/op 353.81 us/op 0.96
array of 16000 items push then shift 1.5634 us/op 1.5972 us/op 0.98
LinkedList of 16000 items push then shift 8.6770 ns/op 8.7660 ns/op 0.99
array of 16000 items push then pop 72.984 ns/op 81.829 ns/op 0.89
LinkedList of 16000 items push then pop 8.2430 ns/op 8.4560 ns/op 0.97
array of 24000 items push then shift 2.2698 us/op 2.3208 us/op 0.98
LinkedList of 24000 items push then shift 8.4790 ns/op 8.7660 ns/op 0.97
array of 24000 items push then pop 73.679 ns/op 77.883 ns/op 0.95
LinkedList of 24000 items push then pop 8.1430 ns/op 8.4310 ns/op 0.97
intersect bitArray bitLen 8 12.732 ns/op 13.202 ns/op 0.96
intersect array and set length 8 71.698 ns/op 76.216 ns/op 0.94
intersect bitArray bitLen 128 42.245 ns/op 43.436 ns/op 0.97
intersect array and set length 128 988.26 ns/op 1.0364 us/op 0.95
Buffer.concat 32 items 2.5340 us/op 2.6310 us/op 0.96
Uint8Array.set 32 items 2.3730 us/op 2.9050 us/op 0.82
pass gossip attestations to forkchoice per slot 3.2650 ms/op 2.2511 ms/op 1.45
computeDeltas 2.9306 ms/op 2.7788 ms/op 1.05
computeProposerBoostScoreFromBalances 1.7392 ms/op 1.7597 ms/op 0.99
altair processAttestation - 250000 vs - 7PWei normalcase 2.0952 ms/op 2.1094 ms/op 0.99
altair processAttestation - 250000 vs - 7PWei worstcase 3.1776 ms/op 3.2782 ms/op 0.97
altair processAttestation - setStatus - 1/6 committees join 138.08 us/op 138.70 us/op 1.00
altair processAttestation - setStatus - 1/3 committees join 263.49 us/op 274.89 us/op 0.96
altair processAttestation - setStatus - 1/2 committees join 356.54 us/op 363.21 us/op 0.98
altair processAttestation - setStatus - 2/3 committees join 444.37 us/op 449.94 us/op 0.99
altair processAttestation - setStatus - 4/5 committees join 626.22 us/op 640.92 us/op 0.98
altair processAttestation - setStatus - 100% committees join 733.67 us/op 753.01 us/op 0.97
altair processBlock - 250000 vs - 7PWei normalcase 19.207 ms/op 16.371 ms/op 1.17
altair processBlock - 250000 vs - 7PWei normalcase hashState 25.905 ms/op 27.662 ms/op 0.94
altair processBlock - 250000 vs - 7PWei worstcase 55.553 ms/op 49.539 ms/op 1.12
altair processBlock - 250000 vs - 7PWei worstcase hashState 65.250 ms/op 69.344 ms/op 0.94
phase0 processBlock - 250000 vs - 7PWei normalcase 1.9961 ms/op 1.9492 ms/op 1.02
phase0 processBlock - 250000 vs - 7PWei worstcase 27.177 ms/op 27.393 ms/op 0.99
altair processEth1Data - 250000 vs - 7PWei normalcase 463.17 us/op 459.48 us/op 1.01
vc - 250000 eb 1 eth1 1 we 0 wn 0 - smpl 15 6.8200 us/op 6.6720 us/op 1.02
vc - 250000 eb 0.95 eth1 0.1 we 0.05 wn 0 - smpl 219 19.580 us/op 19.388 us/op 1.01
vc - 250000 eb 0.95 eth1 0.3 we 0.05 wn 0 - smpl 42 8.3520 us/op 8.1810 us/op 1.02
vc - 250000 eb 0.95 eth1 0.7 we 0.05 wn 0 - smpl 18 6.4300 us/op 6.3680 us/op 1.01
vc - 250000 eb 0.1 eth1 0.1 we 0 wn 0 - smpl 1020 74.206 us/op 73.596 us/op 1.01
vc - 250000 eb 0.03 eth1 0.03 we 0 wn 0 - smpl 11777 598.51 us/op 617.39 us/op 0.97
vc - 250000 eb 0.01 eth1 0.01 we 0 wn 0 - smpl 16384 873.98 us/op 907.01 us/op 0.96
vc - 250000 eb 0 eth1 0 we 0 wn 0 - smpl 16384 869.04 us/op 839.47 us/op 1.04
vc - 250000 eb 0 eth1 0 we 0 wn 0 nocache - smpl 16384 2.3365 ms/op 2.2066 ms/op 1.06
vc - 250000 eb 0 eth1 1 we 0 wn 0 - smpl 16384 1.4608 ms/op 1.5833 ms/op 0.92
vc - 250000 eb 0 eth1 1 we 0 wn 0 nocache - smpl 16384 3.5849 ms/op 3.8466 ms/op 0.93
Tree 40 250000 create 290.28 ms/op 306.90 ms/op 0.95
Tree 40 250000 get(125000) 173.72 ns/op 174.96 ns/op 0.99
Tree 40 250000 set(125000) 886.60 ns/op 926.69 ns/op 0.96
Tree 40 250000 toArray() 16.234 ms/op 16.973 ms/op 0.96
Tree 40 250000 iterate all - toArray() + loop 17.591 ms/op 16.997 ms/op 1.03
Tree 40 250000 iterate all - get(i) 63.344 ms/op 67.063 ms/op 0.94
MutableVector 250000 create 9.4397 ms/op 9.5803 ms/op 0.99
MutableVector 250000 get(125000) 6.1710 ns/op 6.2910 ns/op 0.98
MutableVector 250000 set(125000) 240.20 ns/op 242.62 ns/op 0.99
MutableVector 250000 toArray() 2.7046 ms/op 2.6766 ms/op 1.01
MutableVector 250000 iterate all - toArray() + loop 2.8213 ms/op 2.7524 ms/op 1.03
MutableVector 250000 iterate all - get(i) 2.3774 ms/op 1.5203 ms/op 1.56
Array 250000 create 2.4259 ms/op 2.5098 ms/op 0.97
Array 250000 clone - spread 1.1645 ms/op 1.0973 ms/op 1.06
Array 250000 get(125000) 0.54600 ns/op 0.53200 ns/op 1.03
Array 250000 set(125000) 0.63000 ns/op 0.61800 ns/op 1.02
Array 250000 iterate all - loop 105.78 us/op 81.783 us/op 1.29
effectiveBalanceIncrements clone Uint8Array 300000 26.624 us/op 23.733 us/op 1.12
effectiveBalanceIncrements clone MutableVector 300000 359.00 ns/op 339.00 ns/op 1.06
effectiveBalanceIncrements rw all Uint8Array 300000 162.42 us/op 168.17 us/op 0.97
effectiveBalanceIncrements rw all MutableVector 300000 79.675 ms/op 79.420 ms/op 1.00
phase0 afterProcessEpoch - 250000 vs - 7PWei 111.43 ms/op 112.02 ms/op 0.99
phase0 beforeProcessEpoch - 250000 vs - 7PWei 31.867 ms/op 41.718 ms/op 0.76
altair processEpoch - mainnet_e81889 309.62 ms/op 295.03 ms/op 1.05
mainnet_e81889 - altair beforeProcessEpoch 46.494 ms/op 47.618 ms/op 0.98
mainnet_e81889 - altair processJustificationAndFinalization 16.156 us/op 18.220 us/op 0.89
mainnet_e81889 - altair processInactivityUpdates 5.5956 ms/op 5.3448 ms/op 1.05
mainnet_e81889 - altair processRewardsAndPenalties 65.435 ms/op 69.410 ms/op 0.94
mainnet_e81889 - altair processRegistryUpdates 3.0950 us/op 2.8090 us/op 1.10
mainnet_e81889 - altair processSlashings 438.00 ns/op 615.00 ns/op 0.71
mainnet_e81889 - altair processEth1DataReset 497.00 ns/op 616.00 ns/op 0.81
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.2070 ms/op 1.2186 ms/op 0.99
mainnet_e81889 - altair processSlashingsReset 4.8230 us/op 3.4830 us/op 1.38
mainnet_e81889 - altair processRandaoMixesReset 4.2690 us/op 4.3190 us/op 0.99
mainnet_e81889 - altair processHistoricalRootsUpdate 573.00 ns/op 606.00 ns/op 0.95
mainnet_e81889 - altair processParticipationFlagUpdates 2.5060 us/op 2.4400 us/op 1.03
mainnet_e81889 - altair processSyncCommitteeUpdates 428.00 ns/op 586.00 ns/op 0.73
mainnet_e81889 - altair afterProcessEpoch 112.55 ms/op 117.34 ms/op 0.96
phase0 processEpoch - mainnet_e58758 308.13 ms/op 314.17 ms/op 0.98
mainnet_e58758 - phase0 beforeProcessEpoch 120.54 ms/op 122.46 ms/op 0.98
mainnet_e58758 - phase0 processJustificationAndFinalization 15.601 us/op 16.634 us/op 0.94
mainnet_e58758 - phase0 processRewardsAndPenalties 52.164 ms/op 52.206 ms/op 1.00
mainnet_e58758 - phase0 processRegistryUpdates 8.1240 us/op 10.303 us/op 0.79
mainnet_e58758 - phase0 processSlashings 509.00 ns/op 587.00 ns/op 0.87
mainnet_e58758 - phase0 processEth1DataReset 504.00 ns/op 518.00 ns/op 0.97
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 941.16 us/op 1.0177 ms/op 0.92
mainnet_e58758 - phase0 processSlashingsReset 2.8590 us/op 4.0780 us/op 0.70
mainnet_e58758 - phase0 processRandaoMixesReset 4.4700 us/op 4.3740 us/op 1.02
mainnet_e58758 - phase0 processHistoricalRootsUpdate 571.00 ns/op 709.00 ns/op 0.81
mainnet_e58758 - phase0 processParticipationRecordUpdates 4.2100 us/op 3.9480 us/op 1.07
mainnet_e58758 - phase0 afterProcessEpoch 94.571 ms/op 100.40 ms/op 0.94
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.2126 ms/op 1.3063 ms/op 0.93
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.4470 ms/op 1.4598 ms/op 0.99
altair processInactivityUpdates - 250000 normalcase 22.855 ms/op 21.246 ms/op 1.08
altair processInactivityUpdates - 250000 worstcase 22.175 ms/op 25.093 ms/op 0.88
phase0 processRegistryUpdates - 250000 normalcase 6.6540 us/op 7.0430 us/op 0.94
phase0 processRegistryUpdates - 250000 badcase_full_deposits 230.20 us/op 297.44 us/op 0.77
phase0 processRegistryUpdates - 250000 worstcase 0.5 113.72 ms/op 121.51 ms/op 0.94
altair processRewardsAndPenalties - 250000 normalcase 55.416 ms/op 47.718 ms/op 1.16
altair processRewardsAndPenalties - 250000 worstcase 54.250 ms/op 56.200 ms/op 0.97
phase0 getAttestationDeltas - 250000 normalcase 6.5634 ms/op 6.9026 ms/op 0.95
phase0 getAttestationDeltas - 250000 worstcase 6.3870 ms/op 6.8050 ms/op 0.94
phase0 processSlashings - 250000 worstcase 3.4200 ms/op 3.6356 ms/op 0.94
altair processSyncCommitteeUpdates - 250000 172.76 ms/op 185.36 ms/op 0.93
BeaconState.hashTreeRoot - No change 253.00 ns/op 256.00 ns/op 0.99
BeaconState.hashTreeRoot - 1 full validator 49.507 us/op 52.450 us/op 0.94
BeaconState.hashTreeRoot - 32 full validator 542.88 us/op 560.56 us/op 0.97
BeaconState.hashTreeRoot - 512 full validator 5.0008 ms/op 6.0173 ms/op 0.83
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 60.985 us/op 64.244 us/op 0.95
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 865.95 us/op 914.59 us/op 0.95
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 11.317 ms/op 11.511 ms/op 0.98
BeaconState.hashTreeRoot - 1 balances 47.552 us/op 48.022 us/op 0.99
BeaconState.hashTreeRoot - 32 balances 432.25 us/op 448.37 us/op 0.96
BeaconState.hashTreeRoot - 512 balances 4.2665 ms/op 4.6395 ms/op 0.92
BeaconState.hashTreeRoot - 250000 balances 72.875 ms/op 68.722 ms/op 1.06
aggregationBits - 2048 els - zipIndexesInBitList 15.327 us/op 17.869 us/op 0.86
regular array get 100000 times 32.491 us/op 35.742 us/op 0.91
wrappedArray get 100000 times 40.900 us/op 33.633 us/op 1.22
arrayWithProxy get 100000 times 14.901 ms/op 15.411 ms/op 0.97
ssz.Root.equals 540.00 ns/op 548.00 ns/op 0.99
byteArrayEquals 531.00 ns/op 541.00 ns/op 0.98
shuffle list - 16384 els 6.5388 ms/op 7.1237 ms/op 0.92
shuffle list - 250000 els 96.061 ms/op 103.85 ms/op 0.92
processSlot - 1 slots 8.6880 us/op 9.4290 us/op 0.92
processSlot - 32 slots 1.2978 ms/op 1.3678 ms/op 0.95
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 192.62 us/op 197.01 us/op 0.98
getCommitteeAssignments - req 1 vs - 250000 vc 2.8791 ms/op 2.9691 ms/op 0.97
getCommitteeAssignments - req 100 vs - 250000 vc 4.1200 ms/op 4.1922 ms/op 0.98
getCommitteeAssignments - req 1000 vs - 250000 vc 4.4124 ms/op 4.5498 ms/op 0.97
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.3800 ns/op 4.6600 ns/op 0.94
state getBlockRootAtSlot - 250000 vs - 7PWei 869.77 ns/op 963.41 ns/op 0.90
computeProposers - vc 250000 10.339 ms/op 11.581 ms/op 0.89
computeEpochShuffling - vc 250000 98.435 ms/op 105.71 ms/op 0.93
getNextSyncCommittee - vc 250000 168.71 ms/op 175.12 ms/op 0.96

by benchmarkbot/action

@philknows philknows added the spec-electra Issues targeting the Electra spec version label Mar 9, 2023
@g11tech
Copy link
Contributor

g11tech commented Sep 23, 2023

superseded by

@g11tech g11tech closed this Sep 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
spec-electra Issues targeting the Electra spec version
Projects
None yet
Development

Successfully merging this pull request may close these issues.

verkle trees: add 2 fields to ExecutionData
3 participants