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 ability to update the fee recipient for execution via beacon and/or validator defaults #3958

Merged
merged 16 commits into from
May 24, 2022

Conversation

g11tech
Copy link
Contributor

@g11tech g11tech commented Apr 28, 2022

Motivation
Post merge, a suggestedFeeRecipient needs to be supplied per validator index while proposing blocks.

This PR adds the capability to supply a default suggestedFeeRecipient for

  • a validator process (could be overridden per validator in a later PR via config or keymanager api)
  • as well as for a BN in case the the proposer data is not updated for a validator

and to enable beacon node to maintain and use the updated/registered suggestedFeeRecipient while instantiating the block building corresponding to the validator index.

TODOs

  • BeaconProposerCache tests
  • merge interop beacon default fee recipient check
  • merge interop validator default fee recipient check

Closes #3693

@g11tech g11tech mentioned this pull request Apr 28, 2022
22 tasks
@github-actions
Copy link
Contributor

github-actions bot commented Apr 28, 2022

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 5ae42fa Previous: 71024a2 Ratio
BeaconState.hashTreeRoot - No change 478.00 ns/op 421.00 ns/op 1.14
BeaconState.hashTreeRoot - 1 full validator 72.566 us/op 55.331 us/op 1.31
BeaconState.hashTreeRoot - 32 full validator 761.68 us/op 544.60 us/op 1.40
BeaconState.hashTreeRoot - 512 full validator 7.6835 ms/op 5.9693 ms/op 1.29
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 95.428 us/op 69.770 us/op 1.37
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.2404 ms/op 952.97 us/op 1.30
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 15.603 ms/op 12.789 ms/op 1.22
BeaconState.hashTreeRoot - 1 balances 65.135 us/op 53.732 us/op 1.21
BeaconState.hashTreeRoot - 32 balances 570.45 us/op 468.14 us/op 1.22
BeaconState.hashTreeRoot - 512 balances 5.5824 ms/op 4.5930 ms/op 1.22
BeaconState.hashTreeRoot - 250000 balances 109.51 ms/op 85.123 ms/op 1.29
processSlot - 1 slots 13.315 us/op 8.8940 us/op 1.50
processSlot - 32 slots 1.9155 ms/op 1.3601 ms/op 1.41
getCommitteeAssignments - req 1 vs - 250000 vc 4.8902 ms/op 4.4986 ms/op 1.09
getCommitteeAssignments - req 100 vs - 250000 vc 6.9463 ms/op 6.2284 ms/op 1.12
getCommitteeAssignments - req 1000 vs - 250000 vc 7.7449 ms/op 6.8088 ms/op 1.14
computeProposers - vc 250000 17.887 ms/op 13.713 ms/op 1.30
computeEpochShuffling - vc 250000 154.04 ms/op 137.91 ms/op 1.12
getNextSyncCommittee - vc 250000 293.70 ms/op 240.35 ms/op 1.22
altair processAttestation - 250000 vs - 7PWei normalcase 4.2347 ms/op 3.2299 ms/op 1.31
altair processAttestation - 250000 vs - 7PWei worstcase 5.9537 ms/op 4.4753 ms/op 1.33
altair processAttestation - setStatus - 1/6 committees join 206.83 us/op 163.19 us/op 1.27
altair processAttestation - setStatus - 1/3 committees join 405.82 us/op 322.23 us/op 1.26
altair processAttestation - setStatus - 1/2 committees join 563.19 us/op 454.16 us/op 1.24
altair processAttestation - setStatus - 2/3 committees join 731.85 us/op 580.20 us/op 1.26
altair processAttestation - setStatus - 4/5 committees join 1.0188 ms/op 944.17 us/op 1.08
altair processAttestation - setStatus - 100% committees join 1.2485 ms/op 958.81 us/op 1.30
altair processBlock - 250000 vs - 7PWei normalcase 27.833 ms/op 25.872 ms/op 1.08
altair processBlock - 250000 vs - 7PWei normalcase hashState 38.147 ms/op 35.208 ms/op 1.08
altair processBlock - 250000 vs - 7PWei worstcase 89.186 ms/op 69.553 ms/op 1.28
altair processBlock - 250000 vs - 7PWei worstcase hashState 112.22 ms/op 99.198 ms/op 1.13
altair processEth1Data - 250000 vs - 7PWei normalcase 902.27 us/op 684.01 us/op 1.32
altair processEpoch - mainnet_e81889 569.46 ms/op 496.87 ms/op 1.15
mainnet_e81889 - altair beforeProcessEpoch 132.41 ms/op 86.609 ms/op 1.53
mainnet_e81889 - altair processJustificationAndFinalization 66.802 us/op 41.532 us/op 1.61
mainnet_e81889 - altair processInactivityUpdates 11.238 ms/op 9.6704 ms/op 1.16
mainnet_e81889 - altair processRewardsAndPenalties 89.260 ms/op 124.98 ms/op 0.71
mainnet_e81889 - altair processRegistryUpdates 17.741 us/op 8.0250 us/op 2.21
mainnet_e81889 - altair processSlashings 8.2120 us/op 2.2140 us/op 3.71
mainnet_e81889 - altair processEth1DataReset 8.2770 us/op 2.2430 us/op 3.69
mainnet_e81889 - altair processEffectiveBalanceUpdates 7.0394 ms/op 6.3164 ms/op 1.11
mainnet_e81889 - altair processSlashingsReset 25.854 us/op 9.7870 us/op 2.64
mainnet_e81889 - altair processRandaoMixesReset 30.479 us/op 12.832 us/op 2.38
mainnet_e81889 - altair processHistoricalRootsUpdate 9.9280 us/op 2.6640 us/op 3.73
mainnet_e81889 - altair processParticipationFlagUpdates 18.819 us/op 5.7910 us/op 3.25
mainnet_e81889 - altair processSyncCommitteeUpdates 7.0330 us/op 1.8800 us/op 3.74
mainnet_e81889 - altair afterProcessEpoch 190.17 ms/op 161.86 ms/op 1.17
altair processInactivityUpdates - 250000 normalcase 42.001 ms/op 30.892 ms/op 1.36
altair processInactivityUpdates - 250000 worstcase 31.196 ms/op 23.966 ms/op 1.30
altair processRewardsAndPenalties - 250000 normalcase 122.67 ms/op 105.93 ms/op 1.16
altair processRewardsAndPenalties - 250000 worstcase 80.938 ms/op 98.172 ms/op 0.82
altair processSyncCommitteeUpdates - 250000 311.66 ms/op 237.66 ms/op 1.31
Tree 40 250000 create 953.90 ms/op 640.34 ms/op 1.49
Tree 40 250000 get(125000) 338.07 ns/op 241.39 ns/op 1.40
Tree 40 250000 set(125000) 2.3072 us/op 2.2360 us/op 1.03
Tree 40 250000 toArray() 31.028 ms/op 27.997 ms/op 1.11
Tree 40 250000 iterate all - toArray() + loop 31.612 ms/op 29.928 ms/op 1.06
Tree 40 250000 iterate all - get(i) 115.73 ms/op 95.399 ms/op 1.21
MutableVector 250000 create 14.449 ms/op 12.978 ms/op 1.11
MutableVector 250000 get(125000) 12.655 ns/op 11.579 ns/op 1.09
MutableVector 250000 set(125000) 644.73 ns/op 570.09 ns/op 1.13
MutableVector 250000 toArray() 5.7700 ms/op 5.7986 ms/op 1.00
MutableVector 250000 iterate all - toArray() + loop 6.6466 ms/op 5.8363 ms/op 1.14
MutableVector 250000 iterate all - get(i) 3.1013 ms/op 2.9807 ms/op 1.04
Array 250000 create 4.9365 ms/op 7.3142 ms/op 0.67
Array 250000 clone - spread 2.0887 ms/op 2.0145 ms/op 1.04
Array 250000 get(125000) 1.0750 ns/op 0.94400 ns/op 1.14
Array 250000 set(125000) 1.1230 ns/op 0.94600 ns/op 1.19
Array 250000 iterate all - loop 127.39 us/op 146.41 us/op 0.87
effectiveBalanceIncrements clone Uint8Array 300000 127.47 us/op 54.461 us/op 2.34
effectiveBalanceIncrements clone MutableVector 300000 637.00 ns/op 631.00 ns/op 1.01
effectiveBalanceIncrements rw all Uint8Array 300000 178.49 us/op 264.01 us/op 0.68
effectiveBalanceIncrements rw all MutableVector 300000 187.92 ms/op 146.02 ms/op 1.29
aggregationBits - 2048 els - zipIndexesInBitList 26.856 us/op 24.443 us/op 1.10
regular array get 100000 times 56.126 us/op 58.816 us/op 0.95
wrappedArray get 100000 times 56.601 us/op 59.116 us/op 0.96
arrayWithProxy get 100000 times 38.761 ms/op 26.070 ms/op 1.49
ssz.Root.equals 492.00 ns/op 377.00 ns/op 1.31
byteArrayEquals 469.00 ns/op 350.00 ns/op 1.34
phase0 processBlock - 250000 vs - 7PWei normalcase 3.6905 ms/op 2.9053 ms/op 1.27
phase0 processBlock - 250000 vs - 7PWei worstcase 56.533 ms/op 38.220 ms/op 1.48
phase0 afterProcessEpoch - 250000 vs - 7PWei 179.48 ms/op 155.00 ms/op 1.16
phase0 beforeProcessEpoch - 250000 vs - 7PWei 73.626 ms/op 68.185 ms/op 1.08
phase0 processEpoch - mainnet_e58758 528.81 ms/op 521.35 ms/op 1.01
mainnet_e58758 - phase0 beforeProcessEpoch 244.64 ms/op 206.33 ms/op 1.19
mainnet_e58758 - phase0 processJustificationAndFinalization 74.127 us/op 38.516 us/op 1.92
mainnet_e58758 - phase0 processRewardsAndPenalties 121.81 ms/op 123.42 ms/op 0.99
mainnet_e58758 - phase0 processRegistryUpdates 31.232 us/op 19.634 us/op 1.59
mainnet_e58758 - phase0 processSlashings 5.9220 us/op 2.6260 us/op 2.26
mainnet_e58758 - phase0 processEth1DataReset 7.1460 us/op 2.4750 us/op 2.89
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 6.4889 ms/op 5.7718 ms/op 1.12
mainnet_e58758 - phase0 processSlashingsReset 22.033 us/op 10.121 us/op 2.18
mainnet_e58758 - phase0 processRandaoMixesReset 30.488 us/op 13.188 us/op 2.31
mainnet_e58758 - phase0 processHistoricalRootsUpdate 10.012 us/op 2.5370 us/op 3.95
mainnet_e58758 - phase0 processParticipationRecordUpdates 26.621 us/op 9.7580 us/op 2.73
mainnet_e58758 - phase0 afterProcessEpoch 145.13 ms/op 138.48 ms/op 1.05
phase0 processEffectiveBalanceUpdates - 250000 normalcase 6.4844 ms/op 5.8288 ms/op 1.11
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 6.7843 ms/op 6.0507 ms/op 1.12
phase0 processRegistryUpdates - 250000 normalcase 35.979 us/op 13.599 us/op 2.65
phase0 processRegistryUpdates - 250000 badcase_full_deposits 473.71 us/op 410.24 us/op 1.15
phase0 processRegistryUpdates - 250000 worstcase 0.5 219.84 ms/op 191.20 ms/op 1.15
phase0 getAttestationDeltas - 250000 normalcase 16.377 ms/op 15.290 ms/op 1.07
phase0 getAttestationDeltas - 250000 worstcase 16.118 ms/op 12.267 ms/op 1.31
phase0 processSlashings - 250000 worstcase 7.2028 ms/op 4.9234 ms/op 1.46
shuffle list - 16384 els 10.942 ms/op 9.2948 ms/op 1.18
shuffle list - 250000 els 152.55 ms/op 134.63 ms/op 1.13
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 397.57 us/op 350.65 us/op 1.13
pass gossip attestations to forkchoice per slot 3.9800 ms/op 2.8364 ms/op 1.40
computeDeltas 3.2724 ms/op 3.0087 ms/op 1.09
computeProposerBoostScoreFromBalances 453.01 us/op 431.46 us/op 1.05
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.3580 ms/op 1.5894 ms/op 1.48
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 79.075 us/op 81.675 us/op 0.97
BLS verify - blst-native 2.5983 ms/op 1.6459 ms/op 1.58
BLS verifyMultipleSignatures 3 - blst-native 5.1586 ms/op 3.3367 ms/op 1.55
BLS verifyMultipleSignatures 8 - blst-native 11.117 ms/op 7.1800 ms/op 1.55
BLS verifyMultipleSignatures 32 - blst-native 40.527 ms/op 25.789 ms/op 1.57
BLS aggregatePubkeys 32 - blst-native 57.194 us/op 35.273 us/op 1.62
BLS aggregatePubkeys 128 - blst-native 218.84 us/op 133.46 us/op 1.64
getAttestationsForBlock 63.095 ms/op 61.196 ms/op 1.03
isKnown best case - 1 super set check 464.00 ns/op 412.00 ns/op 1.13
isKnown normal case - 2 super set checks 466.00 ns/op 405.00 ns/op 1.15
isKnown worse case - 16 super set checks 451.00 ns/op 404.00 ns/op 1.12
CheckpointStateCache - add get delete 13.018 us/op 9.5560 us/op 1.36
validate gossip signedAggregateAndProof - struct 5.9162 ms/op 3.7661 ms/op 1.57
validate gossip attestation - struct 2.8716 ms/op 1.7653 ms/op 1.63
altair verifyImport mainnet_s3766816:31 7.7566 s/op 5.8556 s/op 1.32
pickEth1Vote - no votes 2.3324 ms/op 2.2703 ms/op 1.03
pickEth1Vote - max votes 20.234 ms/op 24.632 ms/op 0.82
pickEth1Vote - Eth1Data hashTreeRoot value x2048 12.614 ms/op 11.531 ms/op 1.09
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 20.952 ms/op 21.487 ms/op 0.98
pickEth1Vote - Eth1Data fastSerialize value x2048 1.7389 ms/op 1.6428 ms/op 1.06
pickEth1Vote - Eth1Data fastSerialize tree x2048 13.160 ms/op 16.542 ms/op 0.80
bytes32 toHexString 1.2360 us/op 1.0720 us/op 1.15
bytes32 Buffer.toString(hex) 855.00 ns/op 666.00 ns/op 1.28
bytes32 Buffer.toString(hex) from Uint8Array 1.0840 us/op 1.0890 us/op 1.00
bytes32 Buffer.toString(hex) + 0x 828.00 ns/op 662.00 ns/op 1.25
Object access 1 prop 0.48500 ns/op 0.32000 ns/op 1.52
Map access 1 prop 0.42200 ns/op 0.28000 ns/op 1.51
Object get x1000 15.048 ns/op 17.266 ns/op 0.87
Map get x1000 1.0220 ns/op 1.0570 ns/op 0.97
Object set x1000 107.93 ns/op 105.69 ns/op 1.02
Map set x1000 74.112 ns/op 64.666 ns/op 1.15
Return object 10000 times 0.40810 ns/op 0.37210 ns/op 1.10
Throw Error 10000 times 6.6134 us/op 5.7767 us/op 1.14
enrSubnets - fastDeserialize 64 bits 3.3020 us/op 2.5750 us/op 1.28
enrSubnets - ssz BitVector 64 bits 1.0190 us/op 727.00 ns/op 1.40
enrSubnets - fastDeserialize 4 bits 595.00 ns/op 382.00 ns/op 1.56
enrSubnets - ssz BitVector 4 bits 974.00 ns/op 742.00 ns/op 1.31
prioritizePeers score -10:0 att 32-0.1 sync 2-0 105.58 us/op 90.018 us/op 1.17
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 145.14 us/op 122.68 us/op 1.18
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 266.94 us/op 195.38 us/op 1.37
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 606.95 us/op 438.75 us/op 1.38
prioritizePeers score 0:0 att 64-1 sync 4-1 617.91 us/op 457.98 us/op 1.35
RateTracker 1000000 limit, 1 obj count per request 197.66 ns/op 180.33 ns/op 1.10
RateTracker 1000000 limit, 2 obj count per request 148.51 ns/op 136.53 ns/op 1.09
RateTracker 1000000 limit, 4 obj count per request 123.30 ns/op 121.73 ns/op 1.01
RateTracker 1000000 limit, 8 obj count per request 110.44 ns/op 107.55 ns/op 1.03
RateTracker with prune 5.2580 us/op 3.8690 us/op 1.36
array of 16000 items push then shift 5.1998 us/op 3.1594 us/op 1.65
LinkedList of 16000 items push then shift 25.071 ns/op 22.369 ns/op 1.12
array of 16000 items push then pop 233.93 ns/op 222.94 ns/op 1.05
LinkedList of 16000 items push then pop 21.031 ns/op 20.093 ns/op 1.05
array of 24000 items push then shift 7.0383 us/op 4.5720 us/op 1.54
LinkedList of 24000 items push then shift 24.169 ns/op 24.872 ns/op 0.97
array of 24000 items push then pop 183.43 ns/op 189.33 ns/op 0.97
LinkedList of 24000 items push then pop 21.092 ns/op 19.987 ns/op 1.06
intersect bitArray bitLen 8 9.1640 ns/op 11.335 ns/op 0.81
intersect array and set length 8 176.26 ns/op 161.45 ns/op 1.09
intersect bitArray bitLen 128 53.824 ns/op 47.347 ns/op 1.14
intersect array and set length 128 2.0871 us/op 2.1478 us/op 0.97

by benchmarkbot/action

@codecov
Copy link

codecov bot commented Apr 29, 2022

Codecov Report

Merging #3958 (705b83e) into master (ef9528a) will increase coverage by 0.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #3958      +/-   ##
==========================================
+ Coverage   36.56%   36.57%   +0.01%     
==========================================
  Files         327      329       +2     
  Lines        9327     9358      +31     
  Branches     1523     1529       +6     
==========================================
+ Hits         3410     3423      +13     
- Misses       5726     5741      +15     
- Partials      191      194       +3     

@g11tech g11tech force-pushed the g11tech/engine-fee-recipient branch 2 times, most recently from a0c1035 to ba7fe02 Compare May 19, 2022 09:11
@g11tech g11tech force-pushed the g11tech/engine-fee-recipient branch from e6d6d3d to 7333596 Compare May 20, 2022 10:48
@g11tech g11tech changed the title Add a default fee recipient for a validator process Add ability to update the fee recipient for execution via beacon and/or validator defaults May 20, 2022
@g11tech g11tech marked this pull request as ready for review May 20, 2022 20:21
@g11tech g11tech requested a review from a team as a code owner May 20, 2022 20:21
this.logger.debug("Produced block", debugLogCtx);
const blockFeeRecipient = (block.data as bellatrix.BeaconBlock).body.executionPayload?.feeRecipient;
const feeRecipient = blockFeeRecipient !== undefined ? toHexString(blockFeeRecipient) : undefined;
this.logger.debug("Produced block", {...debugLogCtx, feeRecipient});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suppose validator should confirm the feeReceipient to address this in this beacon node api spec: Note that there is no guarantee that the beacon node will use the supplied fee recipient when creating a block proposal, so on receipt of a proposed block the validator should confirm that it finds the fee recipient within the block acceptable before signing it.

an attacker can periodically poll our api periodically to provide its own addresses

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes correct observation 👍 , one thing to consider is that the block build by mev-boost might not have the payout to feeRecipient as block's feeRecipient but in form of transaction included last minute. However we can address that in the mev's PR 🤔

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just have a look at ProduceBlindedBlockResponse, I suppose we'll still have feeRecipient in BlindedBlock version, we'll only have transaction root instead of transaction list (correct me if I'm wrong, just follow (https://ethereum.github.io/beacon-APIs/#/Validator/produceBlindedBlock)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes ofcourse, what i meant was that the mev builders can put their own fee Recipient and instead reward the fee Recipient by including a transaction in block. Will confirm with other teams how they are handling such scenario, but we can address that in MEV PR. right now, i will introduce the check.


const PROPOSER_PRESERVE_EPOCHS = 2;
export type ProposerPreparationData = {
validatorIndex: string;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is validatorIndex is typed as string? we have our own ValidatorIndex type

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yea i was using that earlier, but Lion suggested to avoid to/fro conversion between validator<>beacon for beacon proposer data as this is mostly to populate a lookup index at the BN.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 so maybe just drop a comment here

@wemeetagain wemeetagain merged commit d4d72fe into master May 24, 2022
@wemeetagain wemeetagain deleted the g11tech/engine-fee-recipient branch May 24, 2022 14:01
dapplion added a commit that referenced this pull request May 30, 2022
* New metric filtering missed blocks (#3927)

* Log block delay second

* Add elappsedTimeTillBecomeHead metric

* Add 'till become head' metric to dashboard

* chore: correct the metric name to elapsedTimeTillBecomeHead

* Add and use secFromSlot to clock

* Track block source

* Revert "Track block source"

This reverts commit 5fe6220.

* Update bucket values

* Limit how old blocks are tracked in elapsedTimeTillBecomeHead

* Simplify secFromSlot

Co-authored-by: dapplion <[email protected]>

* Fix the terminal validations of the merge block (#3984)

* Fix the terminal validations of the merge block

* activate merge transition block spec tests

* some comments to explain the merge block validations movement

* Extend error messages when voluntary exit errors because of present of lockfile (#3935)

* Extend error and Clean up

* Only showing the message to use --force to override in case of voluntary exit

* Simplify gitData and version guessing (#3992)

Don't print double slash in version string

Dont add git-data.json to NPM releases

Write git-data.json only in from source docker build

Remove numCommits

Test git-data.json generation from within the test

Move comment

Revert "Dont add git-data.json to NPM releases"

This reverts commit 5fe2d38.

Simplify gitData and version guessing

Run cmd

* Activate ex-ante fork-choice spec tests (#4003)

* Prepare custom version on next release (#3990)

* Prepare custom version on next release

* Test in branch

* Don't set version in advance

* Remove --canary flag

* Change and commit version

* Setup git config

* Revert temp changes

* Lightclient e2e: increase validator client (#4006)

* Bump to v0.37.0 nightly builds (#4013)

* Guarantee full spec tests coverage (#4012)

* Ensure all spec tests are run

* Fix general bls tests

* Improve docs of specTestIterator

* Fix fork_choice tests

* Remove Check spec tests step

* Add merge transition/finalization banners (#3963)

* Add merge transition/finalization banners

* fix signatures

* Benchmark initial sync (#3995)

* Basic range sync perf test

* Benchmark initial sync

* Add INFURA_ETH2_CREDENTIALS to benchmark GA

* Download test cache file from alternative source

* Re-org beforeValue and testCase helpers

* Break light-client - state-transition test dependency

* Revert adding downloadTestCacheFile

* Download files from a Github release

* Clarify #3977 with unbounded uint issue (#4018)

* Update mainnet-shadow-5 configs (#4021)

* Bump moment from 2.29.1 to 2.29.2 (#3901)

Bumps [moment](https://github.com/moment/moment) from 2.29.1 to 2.29.2.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](moment/moment@2.29.1...2.29.2)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Implement support for validator next-epoch proposer duties (#3782)

* Implementation to be able to get block proposer an epoch ahead - still need optimization

* revert changes made to waitForSlot

* caching the results of computing future proposers. Also extended test

* using effectiveBalanceIncrements from state instead of recomputing it

* fix lint errors

* revert check not needed in getBeaconProposer

* Update tests to include assertion messages

* Move caching of next proposer duties to BeaconChain class

* Delete the block proposer previously cached when next proposer was requested at current epoch

* moved next epoch proposers from the chain to the state

* Compute next proposer on demand and cache

* Fix lint errors

* update implementation to work with changes from master

* caching epoch seed in context so that getNextEpochBeaconProposer can be independent of state

* Revert "caching epoch seed in context so that getNextEpochBeaconProposer can be independent of state"

This reverts commit 02a722a.

* caching epoch seed in context so that getNextEpochBeaconProposer can be independent of state

* removing the need to delete from nextEpochProposers in call to getBeaconProposer

* no need to recompute currrentProposerSeed again

* Revert "no need to recompute currrentProposerSeed again"

This reverts commit b6b1b8c.

* removed empty file left after fixing merge conflicts

* remove some unnecessary variable from the epoch context.

* add some comments

* Fix lint

* import from the right location

* Review PR

* Merge imports

* Delete get proposers api impl test

* Remove duplicated comment

Co-authored-by: dapplion <[email protected]>

* Extend timeout for gitData unit test (#4026)

* Fix readAndGetGitData (#4025)

* Ensure light client update is in a single period (#4029)

* Handle merge block fetch error (#4016)

* Handle merge block fetch error

* Log errors on fetch errors for terminal pow

* docs: Update nodeJS minimum requirement (#4037)

* Remove child_process call in gitData before step (#4033)

* Oppool aggregates use BitArray only for set logic (#4034)

* Use BitArrays for aggregate merging

* Test intersectUint8Arrays

* Review PR

* Update tests

* Remove un-used code

* Modify gossipsub params following consensus spec v1.1.10 (#4011)

* Modify gossipsub params following consensus spec v1.1.10

* Specify GOSSIPSUB_HEARTBEAT_INTERVAL as a constant

* Throw a more informative error on invalid keystore (#4022)

* Throw a more informative error on invalid keystore

* Make error more descriptive

* Use template string

* Update keys.ts

* Update keys.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Ignore gossip AggregateAndProof if aggregate is seen (#4019)

* Ignore gossip AggregateAndProof if aggregate is seen

* Check for non-strict superset of seen attestation data

* Fix validateGossipAggregateAndProof benchmark test

* Fix import

* Ultilize intersectUint8Arrays()

* Implement SeenContributionAndProof.participantsKnown

* Add metrics to seen cache

* Add perf tests

* Change method name to isSuperSetOrEqual()

* Refactor metric names

* Specify lerna exact version for release-nightly workflow (#4049)

* Add ropsten network (#4051)

* Force all packages to be versioned for exact (#4052)

* Update discv5 to v0.7.1 (#4044)

* Add ability to update the fee recipient for execution via beacon and/or validator defaults (#3958)

* Add and use a default fee recipient for a validator process

* transfer the proposer cache to beacon chain

* mock chain fixes

* test and perf fixes

* fee recipient validation change

* track and use free recipient as string instead of ExecutionAddress

* fix unit test

* fix merge test

* use dummy address

* refac and add proposer cache pruning

* tests for beacon proposer cache

* merge interop fee recipient check

* fix the optional

* feeRecipient confirmation and small refac

* add the missing map

* add flag to enable strict fee recipient check

* Small refactor to setup merge for ropsten using baked in configs (#4053)

* Issue advance fcU for builing the EL block (#3965)

rebaseing to the refactored prepare beacon proposer

refac payload id cache as separate class and add pruning

issue payload fcus if synced

rename issueNext.. to maybeIssueNext...

* Simplify release process (#4030)

* Simplify release process

* Remove old postrelease script

* Add lerna version check

* Tweak RELEASE.md

* Add force-publish to lerna version command

* Update the proposer boost percentage to 40% (#4055)

* ESM Support (#3978)

* ESM changes

* Fix root lodestar script

* Fix some linter errors

* trying directly re-exporting under an alias from networks module

* Fix types exports

* Fix more linter errors

* Fix spec test download

* Update bls to 7.1.0

* Fix spec tests

* temp reverting eslint parser option to 10 and disabling the check of .js file extenstion. Should fix lint errors

* temp commented out file-extension-in-import

* Disable readme checks

* Fix check-build

* Fix params e2e tests

* Bump @chainsafe/threads

* Bump bls to v7.1.1

* Add timeouts after node initialization but before sim test run

* Tweak timeouts

* Tweak timeout

* Tweak sim merge timeout

* Tweak sim merge timeout

* Tweak sim merge timeout

* Tweak sim merge timeout

* Add more timeouts

* Add another timeout

* Fix linter errors

* Fix some tests

* Fix some linter errors and spec tests

* Fix benchmarks

* Fix linter errors

* Update each bls dependency

* Tweak timeouts

* Add another timeout

* More timeouts

* Fix bls pool size

* Set root package.json to ESM

* Remove old linter comment

* Revert "Set root package.json to ESM"

This reverts commit 347b0fd.

* Remove stray file (probably old)

* Undo unnecessary diff

* Add comment on __dirname replacement

* Import type @chainsafe/bls/types

* Use lodestar path imports

* Revert multifork to lodestar package

* Format .mocharc.yaml

* Use same @chainsafe/as-sha256 version

* Fix lodash path imports

* Use src instead of lib

* Load db metrics

* Remove experimental-specifier-resolution

* Remove lodestat/chain export

* Add stray missing file extension

* Revert ValidatorDir changes

* Fix stray missing file extensions

* Fix check-types

Co-authored-by: Dadepo Aderemi <[email protected]>
Co-authored-by: dapplion <[email protected]>

* chore(release): v0.37.0-beta.0

* Bump to v0.37.0

Co-authored-by: tuyennhv <[email protected]>
Co-authored-by: g11tech <[email protected]>
Co-authored-by: dadepo <[email protected]>
Co-authored-by: Cayman <[email protected]>
Co-authored-by: Phil Ngo <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: g11tech <[email protected]>
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.

Implementing and calling prepare_beacon_proposer and providing suggestedFeeRecipient to the BN
4 participants