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 block production support for merge blocks #3203

Closed
wants to merge 4 commits into from

Conversation

dapplion
Copy link
Contributor

Motivation

Part of #3076

Description

  • Extends the eth1 module to include a tracker of the execution chain tip.
  • Moves eth1 into BeaconChain so it can be accessed after processing blocks

Closes #3198

@codeclimate
Copy link

codeclimate bot commented Sep 18, 2021

Code Climate has analyzed commit 8928377 and detected 4 issues on this pull request.

Here's the issue category breakdown:

Category Count
Complexity 4

View more on Code Climate.

@codecov
Copy link

codecov bot commented Sep 18, 2021

Codecov Report

Merging #3203 (8928377) into master (6cf7c2c) will decrease coverage by 0.05%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #3203      +/-   ##
==========================================
- Coverage   58.39%   58.33%   -0.06%     
==========================================
  Files         376      377       +1     
  Lines        9198     9380     +182     
  Branches     1366     1399      +33     
==========================================
+ Hits         5371     5472     +101     
- Misses       3444     3508      +64     
- Partials      383      400      +17     

@github-actions
Copy link
Contributor

github-actions bot commented Sep 18, 2021

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 364b75c Previous: 6cf7c2c Ratio
BeaconState.hashTreeRoot - No change 750.00 ns/op 730.00 ns/op 1.03
BeaconState.hashTreeRoot - 1 full validator 85.562 us/op 75.909 us/op 1.13
BeaconState.hashTreeRoot - 32 full validator 1.1945 ms/op 1.0730 ms/op 1.11
BeaconState.hashTreeRoot - 512 full validator 15.444 ms/op 14.311 ms/op 1.08
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 85.731 us/op 85.536 us/op 1.00
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.3180 ms/op 1.2438 ms/op 1.06
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 18.114 ms/op 16.529 ms/op 1.10
BeaconState.hashTreeRoot - 1 balances 60.499 us/op 54.647 us/op 1.11
BeaconState.hashTreeRoot - 32 balances 551.46 us/op 485.15 us/op 1.14
BeaconState.hashTreeRoot - 512 balances 5.4463 ms/op 4.6577 ms/op 1.17
BeaconState.hashTreeRoot - 250000 balances 96.721 ms/op 89.539 ms/op 1.08
processSlot - 1 slots 43.588 us/op 36.400 us/op 1.20
processSlot - 32 slots 2.3061 ms/op 2.0625 ms/op 1.12
getCommitteeAssignments - req 1 vs - 250000 vc 5.5223 ms/op 4.9866 ms/op 1.11
getCommitteeAssignments - req 100 vs - 250000 vc 7.9083 ms/op 6.9552 ms/op 1.14
getCommitteeAssignments - req 1000 vs - 250000 vc 8.7241 ms/op 7.4661 ms/op 1.17
computeProposers - vc 250000 22.274 ms/op 20.975 ms/op 1.06
computeEpochShuffling - vc 250000 204.72 ms/op 190.66 ms/op 1.07
getNextSyncCommittee - vc 250000 373.31 ms/op 330.89 ms/op 1.13
altair processBlock - 250000 vs - 7PWei normalcase 78.019 ms/op 70.905 ms/op 1.10
altair processBlock - 250000 vs - 7PWei worstcase 208.38 ms/op 189.19 ms/op 1.10
altair processEpoch - pyrmont_e62330 473.75 ms/op 424.81 ms/op 1.12
pyrmont_e62330 - altair beforeProcessEpoch 156.75 ms/op 143.44 ms/op 1.09
pyrmont_e62330 - altair processJustificationAndFinalization 59.839 us/op 127.99 us/op 0.47
pyrmont_e62330 - altair processInactivityUpdates 7.9848 ms/op 7.6014 ms/op 1.05
pyrmont_e62330 - altair processRewardsAndPenalties 58.316 ms/op 51.942 ms/op 1.12
pyrmont_e62330 - altair processRegistryUpdates 10.692 us/op 18.246 us/op 0.59
pyrmont_e62330 - altair processSlashings 2.7060 us/op 4.7060 us/op 0.58
pyrmont_e62330 - altair processEth1DataReset 2.5240 us/op 4.2630 us/op 0.59
pyrmont_e62330 - altair processEffectiveBalanceUpdates 6.0281 ms/op 5.3701 ms/op 1.12
pyrmont_e62330 - altair processSlashingsReset 13.593 us/op 24.318 us/op 0.56
pyrmont_e62330 - altair processRandaoMixesReset 18.554 us/op 35.213 us/op 0.53
pyrmont_e62330 - altair processHistoricalRootsUpdate 3.2080 us/op 5.6820 us/op 0.56
pyrmont_e62330 - altair processParticipationFlagUpdates 45.795 ms/op 41.591 ms/op 1.10
pyrmont_e62330 - altair processSyncCommitteeUpdates 2.1690 us/op 3.5800 us/op 0.61
pyrmont_e62330 - altair afterProcessEpoch 128.81 ms/op 111.76 ms/op 1.15
altair processInactivityUpdates - 250000 normalcase 64.409 ms/op 59.555 ms/op 1.08
altair processInactivityUpdates - 250000 worstcase 62.200 ms/op 60.961 ms/op 1.02
altair processParticipationFlagUpdates - 250000 anycase 100.05 ms/op 94.079 ms/op 1.06
altair processRewardsAndPenalties - 250000 normalcase 121.70 ms/op 113.69 ms/op 1.07
altair processRewardsAndPenalties - 250000 worstcase 131.81 ms/op 117.21 ms/op 1.12
altair processSyncCommitteeUpdates - 250000 401.10 ms/op 346.08 ms/op 1.16
Tree 40 250000 create 455.95 ms/op 417.86 ms/op 1.09
Tree 40 250000 get(125000) 289.37 ns/op 256.24 ns/op 1.13
Tree 40 250000 set(125000) 1.5123 us/op 1.3414 us/op 1.13
Tree 40 250000 toArray() 38.006 ms/op 34.749 ms/op 1.09
Tree 40 250000 iterate all - toArray() + loop 39.412 ms/op 35.117 ms/op 1.12
Tree 40 250000 iterate all - get(i) 112.24 ms/op 99.635 ms/op 1.13
MutableVector 250000 create 21.861 ms/op 19.879 ms/op 1.10
MutableVector 250000 get(125000) 13.809 ns/op 13.017 ns/op 1.06
MutableVector 250000 set(125000) 567.75 ns/op 517.52 ns/op 1.10
MutableVector 250000 toArray() 7.8812 ms/op 7.4649 ms/op 1.06
MutableVector 250000 iterate all - toArray() + loop 8.1942 ms/op 7.2532 ms/op 1.13
MutableVector 250000 iterate all - get(i) 3.6397 ms/op 3.3540 ms/op 1.09
Array 250000 create 5.1373 ms/op 5.0907 ms/op 1.01
Array 250000 clone - spread 2.1394 ms/op 1.5260 ms/op 1.40
Array 250000 get(125000) 1.2080 ns/op 1.0770 ns/op 1.12
Array 250000 set(125000) 0.84200 ns/op 1.0840 ns/op 0.78
Array 250000 iterate all - loop 182.58 us/op 168.13 us/op 1.09
aggregationBits - 2048 els - readonlyValues 273.43 us/op 201.22 us/op 1.36
aggregationBits - 2048 els - zipIndexesInBitList 51.033 us/op 34.739 us/op 1.47
ssz.Root.equals 1.5510 us/op 1.1680 us/op 1.33
ssz.Root.equals with valueOf() 1.6260 us/op 1.3300 us/op 1.22
byteArrayEquals with valueOf() 1.6140 us/op 1.3070 us/op 1.23
phase0 processBlock - 250000 vs - 7PWei normalcase 12.741 ms/op 11.006 ms/op 1.16
phase0 processBlock - 250000 vs - 7PWei worstcase 81.577 ms/op 79.317 ms/op 1.03
phase0 afterProcessEpoch - 250000 vs - 7PWei 227.41 ms/op 207.94 ms/op 1.09
phase0 beforeProcessEpoch - 250000 vs - 7PWei 590.62 ms/op 527.77 ms/op 1.12
phase0 processEpoch - mainnet_e58758 834.62 ms/op 771.88 ms/op 1.08
mainnet_e58758 - phase0 beforeProcessEpoch 499.62 ms/op 468.23 ms/op 1.07
mainnet_e58758 - phase0 processJustificationAndFinalization 56.315 us/op 111.11 us/op 0.51
mainnet_e58758 - phase0 processRewardsAndPenalties 84.820 ms/op 78.730 ms/op 1.08
mainnet_e58758 - phase0 processRegistryUpdates 42.376 us/op 38.504 us/op 1.10
mainnet_e58758 - phase0 processSlashings 2.6940 us/op 3.7510 us/op 0.72
mainnet_e58758 - phase0 processEth1DataReset 2.3760 us/op 2.9080 us/op 0.82
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 9.9913 ms/op 8.7275 ms/op 1.14
mainnet_e58758 - phase0 processSlashingsReset 12.915 us/op 20.770 us/op 0.62
mainnet_e58758 - phase0 processRandaoMixesReset 18.445 us/op 32.059 us/op 0.58
mainnet_e58758 - phase0 processHistoricalRootsUpdate 3.0840 us/op 4.5600 us/op 0.68
mainnet_e58758 - phase0 processParticipationRecordUpdates 12.557 us/op 18.072 us/op 0.69
mainnet_e58758 - phase0 afterProcessEpoch 199.60 ms/op 187.68 ms/op 1.06
phase0 processEffectiveBalanceUpdates - 250000 normalcase 11.514 ms/op 10.304 ms/op 1.12
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.2851 s/op 1.1584 s/op 1.11
phase0 processRegistryUpdates - 250000 normalcase 44.403 us/op 93.993 us/op 0.47
phase0 processRegistryUpdates - 250000 badcase_full_deposits 3.6313 ms/op 3.3729 ms/op 1.08
phase0 processRegistryUpdates - 250000 worstcase 0.5 1.6833 s/op 1.4691 s/op 1.15
phase0 getAttestationDeltas - 250000 normalcase 36.802 ms/op 34.460 ms/op 1.07
phase0 getAttestationDeltas - 250000 worstcase 36.491 ms/op 35.816 ms/op 1.02
phase0 processSlashings - 250000 worstcase 36.276 ms/op 33.475 ms/op 1.08
shuffle list - 16384 els 13.982 ms/op 12.155 ms/op 1.15
shuffle list - 250000 els 203.82 ms/op 177.79 ms/op 1.15
getEffectiveBalances - 250000 vs - 7PWei 10.811 ms/op 10.625 ms/op 1.02
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.7933 ms/op 1.6918 ms/op 1.06
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 1.0564 ms/op 954.28 us/op 1.11
BLS verify - blst-native 2.0079 ms/op 1.8220 ms/op 1.10
BLS verifyMultipleSignatures 3 - blst-native 4.1239 ms/op 3.8231 ms/op 1.08
BLS verifyMultipleSignatures 8 - blst-native 9.0130 ms/op 7.9884 ms/op 1.13
BLS verifyMultipleSignatures 32 - blst-native 32.287 ms/op 29.532 ms/op 1.09
BLS aggregatePubkeys 32 - blst-native 43.576 us/op 39.938 us/op 1.09
BLS aggregatePubkeys 128 - blst-native 172.53 us/op 153.60 us/op 1.12
getAttestationsForBlock 77.444 ms/op 75.327 ms/op 1.03
CheckpointStateCache - add get delete 16.652 us/op 14.503 us/op 1.15
validate gossip signedAggregateAndProof - struct 4.7893 ms/op 4.3344 ms/op 1.10
validate gossip signedAggregateAndProof - treeBacked 4.7388 ms/op 4.2919 ms/op 1.10
validate gossip attestation - struct 2.2797 ms/op 2.0197 ms/op 1.13
validate gossip attestation - treeBacked 2.2764 ms/op 2.0084 ms/op 1.13

by benchmarkbot/action

@dapplion
Copy link
Contributor Author

Closing for #3253

@dapplion dapplion closed this Sep 27, 2021
@dapplion dapplion deleted the dapplion/merge-block-production branch September 27, 2021 09:22
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.

Implement merge block production
3 participants