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 eth1.forcedEth1DataVote hidden flag #4361

Merged
merged 2 commits into from Aug 3, 2022

Conversation

dapplion
Copy link
Contributor

@dapplion dapplion commented Aug 3, 2022

Motivation

In testnets there has been instances where eth1 data voting gets stuck due to some issue in the logic and client. Specifically in a devnet eth1_data for genesis was stuck with an invalid block hash. To unstuck the voting and move the chain forward it was very useful to intervene with this patch and force one voting period into a hand picked value.

Note: this feature is meant to be exclusively used by experienced core developers under exceptional circumstances

Description

Add eth1.forcedEth1DataVote hidden flag

@dapplion dapplion requested a review from a team as a code owner August 3, 2022 07:55
@github-actions
Copy link
Contributor

github-actions bot commented Aug 3, 2022

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 2c8c402 Previous: 78c93f7 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.2306 ms/op 2.3581 ms/op 0.95
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 77.612 us/op 80.278 us/op 0.97
BLS verify - blst-native 1.8735 ms/op 1.8562 ms/op 1.01
BLS verifyMultipleSignatures 3 - blst-native 3.8026 ms/op 3.8055 ms/op 1.00
BLS verifyMultipleSignatures 8 - blst-native 8.1831 ms/op 8.1907 ms/op 1.00
BLS verifyMultipleSignatures 32 - blst-native 29.684 ms/op 29.717 ms/op 1.00
BLS aggregatePubkeys 32 - blst-native 39.020 us/op 38.992 us/op 1.00
BLS aggregatePubkeys 128 - blst-native 152.76 us/op 152.91 us/op 1.00
getAttestationsForBlock 186.49 ms/op 172.63 ms/op 1.08
isKnown best case - 1 super set check 440.00 ns/op 441.00 ns/op 1.00
isKnown normal case - 2 super set checks 431.00 ns/op 432.00 ns/op 1.00
isKnown worse case - 16 super set checks 433.00 ns/op 437.00 ns/op 0.99
CheckpointStateCache - add get delete 9.1210 us/op 9.2340 us/op 0.99
validate gossip signedAggregateAndProof - struct 4.2815 ms/op 4.2718 ms/op 1.00
validate gossip attestation - struct 2.0358 ms/op 2.0300 ms/op 1.00
altair verifyImport mainnet_s3766816:31 8.5640 s/op 8.6428 s/op 0.99
pickEth1Vote - no votes 2.1340 ms/op 2.1571 ms/op 0.99
pickEth1Vote - max votes 25.148 ms/op 24.620 ms/op 1.02
pickEth1Vote - Eth1Data hashTreeRoot value x2048 11.758 ms/op 11.718 ms/op 1.00
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 21.318 ms/op 21.785 ms/op 0.98
pickEth1Vote - Eth1Data fastSerialize value x2048 1.6380 ms/op 1.6633 ms/op 0.98
pickEth1Vote - Eth1Data fastSerialize tree x2048 17.829 ms/op 17.494 ms/op 1.02
bytes32 toHexString 1.2660 us/op 1.2730 us/op 0.99
bytes32 Buffer.toString(hex) 751.00 ns/op 739.00 ns/op 1.02
bytes32 Buffer.toString(hex) from Uint8Array 1.0410 us/op 1.0070 us/op 1.03
bytes32 Buffer.toString(hex) + 0x 750.00 ns/op 755.00 ns/op 0.99
Object access 1 prop 0.42700 ns/op 0.43900 ns/op 0.97
Map access 1 prop 0.28900 ns/op 0.29500 ns/op 0.98
Object get x1000 17.880 ns/op 17.670 ns/op 1.01
Map get x1000 1.2240 ns/op 0.97400 ns/op 1.26
Object set x1000 134.13 ns/op 133.35 ns/op 1.01
Map set x1000 81.570 ns/op 81.476 ns/op 1.00
Return object 10000 times 0.36650 ns/op 0.36820 ns/op 1.00
Throw Error 10000 times 6.0137 us/op 5.9193 us/op 1.02
enrSubnets - fastDeserialize 64 bits 3.0830 us/op 3.1010 us/op 0.99
enrSubnets - ssz BitVector 64 bits 831.00 ns/op 853.00 ns/op 0.97
enrSubnets - fastDeserialize 4 bits 462.00 ns/op 467.00 ns/op 0.99
enrSubnets - ssz BitVector 4 bits 817.00 ns/op 819.00 ns/op 1.00
prioritizePeers score -10:0 att 32-0.1 sync 2-0 102.63 us/op 104.26 us/op 0.98
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 143.76 us/op 143.46 us/op 1.00
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 255.53 us/op 260.41 us/op 0.98
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 394.12 us/op 388.63 us/op 1.01
prioritizePeers score 0:0 att 64-1 sync 4-1 458.90 us/op 458.08 us/op 1.00
RateTracker 1000000 limit, 1 obj count per request 204.45 ns/op 205.82 ns/op 0.99
RateTracker 1000000 limit, 2 obj count per request 154.85 ns/op 157.97 ns/op 0.98
RateTracker 1000000 limit, 4 obj count per request 130.54 ns/op 135.28 ns/op 0.96
RateTracker 1000000 limit, 8 obj count per request 117.12 ns/op 123.63 ns/op 0.95
RateTracker with prune 5.0090 us/op 5.8640 us/op 0.85
array of 16000 items push then shift 3.1922 us/op 3.2142 us/op 0.99
LinkedList of 16000 items push then shift 25.832 ns/op 26.288 ns/op 0.98
array of 16000 items push then pop 258.47 ns/op 255.06 ns/op 1.01
LinkedList of 16000 items push then pop 21.579 ns/op 21.162 ns/op 1.02
array of 24000 items push then shift 4.5664 us/op 4.5633 us/op 1.00
LinkedList of 24000 items push then shift 27.566 ns/op 28.015 ns/op 0.98
array of 24000 items push then pop 214.16 ns/op 213.18 ns/op 1.00
LinkedList of 24000 items push then pop 22.123 ns/op 21.292 ns/op 1.04
intersect bitArray bitLen 8 11.766 ns/op 11.554 ns/op 1.02
intersect array and set length 8 185.60 ns/op 198.44 ns/op 0.94
intersect bitArray bitLen 128 61.987 ns/op 72.106 ns/op 0.86
intersect array and set length 128 2.4739 us/op 2.4677 us/op 1.00
Buffer.concat 32 items 1.9990 ns/op 1.9680 ns/op 1.02
pass gossip attestations to forkchoice per slot 6.8444 ms/op 3.1891 ms/op 2.15
computeDeltas 3.5821 ms/op 3.1798 ms/op 1.13
computeProposerBoostScoreFromBalances 907.96 us/op 921.40 us/op 0.99
altair processAttestation - 250000 vs - 7PWei normalcase 4.4951 ms/op 4.5276 ms/op 0.99
altair processAttestation - 250000 vs - 7PWei worstcase 6.3934 ms/op 6.3569 ms/op 1.01
altair processAttestation - setStatus - 1/6 committees join 208.14 us/op 206.11 us/op 1.01
altair processAttestation - setStatus - 1/3 committees join 403.18 us/op 394.46 us/op 1.02
altair processAttestation - setStatus - 1/2 committees join 565.46 us/op 555.21 us/op 1.02
altair processAttestation - setStatus - 2/3 committees join 731.20 us/op 706.67 us/op 1.03
altair processAttestation - setStatus - 4/5 committees join 1.0105 ms/op 989.37 us/op 1.02
altair processAttestation - setStatus - 100% committees join 1.2037 ms/op 1.1674 ms/op 1.03
altair processBlock - 250000 vs - 7PWei normalcase 27.588 ms/op 28.016 ms/op 0.98
altair processBlock - 250000 vs - 7PWei normalcase hashState 43.691 ms/op 44.333 ms/op 0.99
altair processBlock - 250000 vs - 7PWei worstcase 82.483 ms/op 81.720 ms/op 1.01
altair processBlock - 250000 vs - 7PWei worstcase hashState 106.77 ms/op 105.52 ms/op 1.01
phase0 processBlock - 250000 vs - 7PWei normalcase 4.6093 ms/op 4.4018 ms/op 1.05
phase0 processBlock - 250000 vs - 7PWei worstcase 48.224 ms/op 47.222 ms/op 1.02
altair processEth1Data - 250000 vs - 7PWei normalcase 906.93 us/op 858.30 us/op 1.06
Tree 40 250000 create 980.61 ms/op 846.11 ms/op 1.16
Tree 40 250000 get(125000) 299.00 ns/op 290.49 ns/op 1.03
Tree 40 250000 set(125000) 3.2790 us/op 2.5155 us/op 1.30
Tree 40 250000 toArray() 33.898 ms/op 32.487 ms/op 1.04
Tree 40 250000 iterate all - toArray() + loop 34.144 ms/op 32.261 ms/op 1.06
Tree 40 250000 iterate all - get(i) 118.39 ms/op 113.69 ms/op 1.04
MutableVector 250000 create 18.715 ms/op 16.173 ms/op 1.16
MutableVector 250000 get(125000) 14.751 ns/op 14.964 ns/op 0.99
MutableVector 250000 set(125000) 736.21 ns/op 652.03 ns/op 1.13
MutableVector 250000 toArray() 7.8678 ms/op 7.5487 ms/op 1.04
MutableVector 250000 iterate all - toArray() + loop 8.0764 ms/op 7.9557 ms/op 1.02
MutableVector 250000 iterate all - get(i) 3.4473 ms/op 3.6552 ms/op 0.94
Array 250000 create 7.1486 ms/op 6.6602 ms/op 1.07
Array 250000 clone - spread 4.1570 ms/op 2.8220 ms/op 1.47
Array 250000 get(125000) 1.6850 ns/op 1.1470 ns/op 1.47
Array 250000 set(125000) 1.6940 ns/op 1.1630 ns/op 1.46
Array 250000 iterate all - loop 167.87 us/op 167.80 us/op 1.00
effectiveBalanceIncrements clone Uint8Array 300000 104.63 us/op 81.982 us/op 1.28
effectiveBalanceIncrements clone MutableVector 300000 1.2580 us/op 820.00 ns/op 1.53
effectiveBalanceIncrements rw all Uint8Array 300000 252.60 us/op 252.58 us/op 1.00
effectiveBalanceIncrements rw all MutableVector 300000 221.42 ms/op 182.96 ms/op 1.21
phase0 afterProcessEpoch - 250000 vs - 7PWei 183.52 ms/op 180.98 ms/op 1.01
phase0 beforeProcessEpoch - 250000 vs - 7PWei 98.548 ms/op 72.871 ms/op 1.35
altair processEpoch - mainnet_e81889 580.32 ms/op 583.51 ms/op 0.99
mainnet_e81889 - altair beforeProcessEpoch 138.82 ms/op 150.04 ms/op 0.93
mainnet_e81889 - altair processJustificationAndFinalization 20.574 us/op 21.474 us/op 0.96
mainnet_e81889 - altair processInactivityUpdates 10.986 ms/op 11.005 ms/op 1.00
mainnet_e81889 - altair processRewardsAndPenalties 93.733 ms/op 94.651 ms/op 0.99
mainnet_e81889 - altair processRegistryUpdates 3.5260 us/op 3.1810 us/op 1.11
mainnet_e81889 - altair processSlashings 831.00 ns/op 840.00 ns/op 0.99
mainnet_e81889 - altair processEth1DataReset 868.00 ns/op 767.00 ns/op 1.13
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.2420 ms/op 2.2680 ms/op 0.99
mainnet_e81889 - altair processSlashingsReset 5.2990 us/op 5.5570 us/op 0.95
mainnet_e81889 - altair processRandaoMixesReset 5.2170 us/op 5.5520 us/op 0.94
mainnet_e81889 - altair processHistoricalRootsUpdate 877.00 ns/op 909.00 ns/op 0.96
mainnet_e81889 - altair processParticipationFlagUpdates 2.8940 us/op 2.6260 us/op 1.10
mainnet_e81889 - altair processSyncCommitteeUpdates 735.00 ns/op 709.00 ns/op 1.04
mainnet_e81889 - altair afterProcessEpoch 191.90 ms/op 193.10 ms/op 0.99
phase0 processEpoch - mainnet_e58758 523.92 ms/op 535.03 ms/op 0.98
mainnet_e58758 - phase0 beforeProcessEpoch 229.43 ms/op 236.56 ms/op 0.97
mainnet_e58758 - phase0 processJustificationAndFinalization 19.255 us/op 20.618 us/op 0.93
mainnet_e58758 - phase0 processRewardsAndPenalties 131.79 ms/op 143.81 ms/op 0.92
mainnet_e58758 - phase0 processRegistryUpdates 9.8220 us/op 9.5450 us/op 1.03
mainnet_e58758 - phase0 processSlashings 797.00 ns/op 757.00 ns/op 1.05
mainnet_e58758 - phase0 processEth1DataReset 753.00 ns/op 733.00 ns/op 1.03
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 2.2574 ms/op 2.0451 ms/op 1.10
mainnet_e58758 - phase0 processSlashingsReset 4.3750 us/op 3.8120 us/op 1.15
mainnet_e58758 - phase0 processRandaoMixesReset 5.2190 us/op 5.6940 us/op 0.92
mainnet_e58758 - phase0 processHistoricalRootsUpdate 860.00 ns/op 854.00 ns/op 1.01
mainnet_e58758 - phase0 processParticipationRecordUpdates 5.2350 us/op 4.8970 us/op 1.07
mainnet_e58758 - phase0 afterProcessEpoch 157.41 ms/op 158.10 ms/op 1.00
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.6342 ms/op 2.5450 ms/op 1.04
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.9876 ms/op 3.0915 ms/op 0.97
altair processInactivityUpdates - 250000 normalcase 40.680 ms/op 41.927 ms/op 0.97
altair processInactivityUpdates - 250000 worstcase 49.551 ms/op 50.240 ms/op 0.99
phase0 processRegistryUpdates - 250000 normalcase 7.9950 us/op 7.8750 us/op 1.02
phase0 processRegistryUpdates - 250000 badcase_full_deposits 418.05 us/op 410.40 us/op 1.02
phase0 processRegistryUpdates - 250000 worstcase 0.5 219.01 ms/op 223.27 ms/op 0.98
altair processRewardsAndPenalties - 250000 normalcase 125.72 ms/op 134.49 ms/op 0.93
altair processRewardsAndPenalties - 250000 worstcase 127.99 ms/op 115.09 ms/op 1.11
phase0 getAttestationDeltas - 250000 normalcase 12.940 ms/op 15.789 ms/op 0.82
phase0 getAttestationDeltas - 250000 worstcase 13.003 ms/op 15.327 ms/op 0.85
phase0 processSlashings - 250000 worstcase 5.5296 ms/op 5.6312 ms/op 0.98
altair processSyncCommitteeUpdates - 250000 284.91 ms/op 303.43 ms/op 0.94
BeaconState.hashTreeRoot - No change 470.00 ns/op 477.00 ns/op 0.99
BeaconState.hashTreeRoot - 1 full validator 63.833 us/op 60.475 us/op 1.06
BeaconState.hashTreeRoot - 32 full validator 621.84 us/op 720.38 us/op 0.86
BeaconState.hashTreeRoot - 512 full validator 6.0723 ms/op 6.4168 ms/op 0.95
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 80.414 us/op 75.707 us/op 1.06
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.1651 ms/op 1.2107 ms/op 0.96
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 16.235 ms/op 16.643 ms/op 0.98
BeaconState.hashTreeRoot - 1 balances 59.059 us/op 60.000 us/op 0.98
BeaconState.hashTreeRoot - 32 balances 637.14 us/op 606.91 us/op 1.05
BeaconState.hashTreeRoot - 512 balances 5.7711 ms/op 6.1393 ms/op 0.94
BeaconState.hashTreeRoot - 250000 balances 83.100 ms/op 93.437 ms/op 0.89
aggregationBits - 2048 els - zipIndexesInBitList 37.396 us/op 36.362 us/op 1.03
regular array get 100000 times 67.450 us/op 67.409 us/op 1.00
wrappedArray get 100000 times 67.404 us/op 67.434 us/op 1.00
arrayWithProxy get 100000 times 32.628 ms/op 28.998 ms/op 1.13
ssz.Root.equals 476.00 ns/op 505.00 ns/op 0.94
byteArrayEquals 479.00 ns/op 512.00 ns/op 0.94
shuffle list - 16384 els 10.993 ms/op 11.040 ms/op 1.00
shuffle list - 250000 els 162.44 ms/op 162.76 ms/op 1.00
processSlot - 1 slots 12.178 us/op 13.533 us/op 0.90
processSlot - 32 slots 1.7457 ms/op 1.7874 ms/op 0.98
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 387.05 us/op 398.10 us/op 0.97
getCommitteeAssignments - req 1 vs - 250000 vc 5.2986 ms/op 5.3006 ms/op 1.00
getCommitteeAssignments - req 100 vs - 250000 vc 7.3327 ms/op 7.3490 ms/op 1.00
getCommitteeAssignments - req 1000 vs - 250000 vc 7.8035 ms/op 7.7919 ms/op 1.00
computeProposers - vc 250000 17.126 ms/op 19.466 ms/op 0.88
computeEpochShuffling - vc 250000 165.35 ms/op 165.68 ms/op 1.00
getNextSyncCommittee - vc 250000 284.23 ms/op 287.22 ms/op 0.99

by benchmarkbot/action

@wemeetagain wemeetagain merged commit b34abb7 into unstable Aug 3, 2022
@wemeetagain wemeetagain deleted the dapplion/force-eth1data-vote branch August 3, 2022 16:24
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.

None yet

2 participants