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

Handle merge block fetch error #4016

Merged
merged 2 commits into from
May 18, 2022
Merged

Conversation

g11tech
Copy link
Contributor

@g11tech g11tech commented May 12, 2022

Motivation
The merge block fetch (getBlockByHash) can error and stop the CL from syncing past merge transition point unless the corresponding EL also syncs upto the merge transition block.

This PR ignores the merge pow block fetch error for preparing data to run assertValidTerminalPowBlock validations on isMergeTransitionBlock.
This fix will allow lodestar to keep syncing and importing the blocks even if the respective EL is behind the merge transition point or doesn't has the corresponding merge block (provided the validations pass as per assertValidTerminalPowBlock logic)

@g11tech g11tech requested a review from a team as a code owner May 12, 2022 12:19
@github-actions
Copy link
Contributor

github-actions bot commented May 12, 2022

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 9e8819f Previous: 5c1833d Ratio
BeaconState.hashTreeRoot - No change 692.00 ns/op 564.00 ns/op 1.23
BeaconState.hashTreeRoot - 1 full validator 75.835 us/op 57.105 us/op 1.33
BeaconState.hashTreeRoot - 32 full validator 775.91 us/op 565.13 us/op 1.37
BeaconState.hashTreeRoot - 512 full validator 7.8621 ms/op 6.0036 ms/op 1.31
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 101.16 us/op 69.504 us/op 1.46
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.3843 ms/op 947.67 us/op 1.46
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 19.284 ms/op 12.863 ms/op 1.50
BeaconState.hashTreeRoot - 1 balances 72.791 us/op 52.769 us/op 1.38
BeaconState.hashTreeRoot - 32 balances 655.65 us/op 478.82 us/op 1.37
BeaconState.hashTreeRoot - 512 balances 6.1278 ms/op 4.5344 ms/op 1.35
BeaconState.hashTreeRoot - 250000 balances 125.80 ms/op 101.90 ms/op 1.23
processSlot - 1 slots 14.638 us/op 9.5230 us/op 1.54
processSlot - 32 slots 2.2229 ms/op 1.5878 ms/op 1.40
getCommitteeAssignments - req 1 vs - 250000 vc 5.6635 ms/op 5.2655 ms/op 1.08
getCommitteeAssignments - req 100 vs - 250000 vc 8.4220 ms/op 7.3123 ms/op 1.15
getCommitteeAssignments - req 1000 vs - 250000 vc 8.9010 ms/op 7.8910 ms/op 1.13
computeProposers - vc 250000 23.024 ms/op 16.431 ms/op 1.40
computeEpochShuffling - vc 250000 172.92 ms/op 158.61 ms/op 1.09
getNextSyncCommittee - vc 250000 361.71 ms/op 272.26 ms/op 1.33
altair processAttestation - 250000 vs - 7PWei normalcase 5.2614 ms/op 3.8990 ms/op 1.35
altair processAttestation - 250000 vs - 7PWei worstcase 7.5779 ms/op 5.8173 ms/op 1.30
altair processAttestation - setStatus - 1/6 committees join 239.71 us/op 189.55 us/op 1.26
altair processAttestation - setStatus - 1/3 committees join 446.14 us/op 370.38 us/op 1.20
altair processAttestation - setStatus - 1/2 committees join 658.38 us/op 512.01 us/op 1.29
altair processAttestation - setStatus - 2/3 committees join 846.26 us/op 664.13 us/op 1.27
altair processAttestation - setStatus - 4/5 committees join 1.1848 ms/op 921.48 us/op 1.29
altair processAttestation - setStatus - 100% committees join 1.3723 ms/op 1.0953 ms/op 1.25
altair processBlock - 250000 vs - 7PWei normalcase 28.555 ms/op 25.045 ms/op 1.14
altair processBlock - 250000 vs - 7PWei normalcase hashState 42.799 ms/op 34.072 ms/op 1.26
altair processBlock - 250000 vs - 7PWei worstcase 95.283 ms/op 70.379 ms/op 1.35
altair processBlock - 250000 vs - 7PWei worstcase hashState 128.38 ms/op 107.59 ms/op 1.19
altair processEth1Data - 250000 vs - 7PWei normalcase 1.1541 ms/op 758.76 us/op 1.52
altair processEpoch - mainnet_e81889 635.45 ms/op 541.96 ms/op 1.17
mainnet_e81889 - altair beforeProcessEpoch 166.07 ms/op 165.13 ms/op 1.01
mainnet_e81889 - altair processJustificationAndFinalization 75.405 us/op 23.946 us/op 3.15
mainnet_e81889 - altair processInactivityUpdates 11.680 ms/op 11.177 ms/op 1.05
mainnet_e81889 - altair processRewardsAndPenalties 144.38 ms/op 78.487 ms/op 1.84
mainnet_e81889 - altair processRegistryUpdates 17.779 us/op 4.3370 us/op 4.10
mainnet_e81889 - altair processSlashings 5.8610 us/op 1.1630 us/op 5.04
mainnet_e81889 - altair processEth1DataReset 6.4200 us/op 1.2320 us/op 5.21
mainnet_e81889 - altair processEffectiveBalanceUpdates 9.5198 ms/op 6.3712 ms/op 1.49
mainnet_e81889 - altair processSlashingsReset 22.657 us/op 6.0580 us/op 3.74
mainnet_e81889 - altair processRandaoMixesReset 27.227 us/op 5.5970 us/op 4.86
mainnet_e81889 - altair processHistoricalRootsUpdate 10.125 us/op 1.5810 us/op 6.40
mainnet_e81889 - altair processParticipationFlagUpdates 17.451 us/op 5.1580 us/op 3.38
mainnet_e81889 - altair processSyncCommitteeUpdates 5.4550 us/op 1.2250 us/op 4.45
mainnet_e81889 - altair afterProcessEpoch 191.79 ms/op 202.70 ms/op 0.95
altair processInactivityUpdates - 250000 normalcase 41.683 ms/op 37.756 ms/op 1.10
altair processInactivityUpdates - 250000 worstcase 44.092 ms/op 29.343 ms/op 1.50
altair processRewardsAndPenalties - 250000 normalcase 127.67 ms/op 122.78 ms/op 1.04
altair processRewardsAndPenalties - 250000 worstcase 88.388 ms/op 110.61 ms/op 0.80
altair processSyncCommitteeUpdates - 250000 349.01 ms/op 280.06 ms/op 1.25
Tree 40 250000 create 1.0022 s/op 623.15 ms/op 1.61
Tree 40 250000 get(125000) 328.49 ns/op 284.74 ns/op 1.15
Tree 40 250000 set(125000) 3.1465 us/op 2.1133 us/op 1.49
Tree 40 250000 toArray() 35.445 ms/op 30.711 ms/op 1.15
Tree 40 250000 iterate all - toArray() + loop 36.308 ms/op 30.302 ms/op 1.20
Tree 40 250000 iterate all - get(i) 132.13 ms/op 108.20 ms/op 1.22
MutableVector 250000 create 16.533 ms/op 13.815 ms/op 1.20
MutableVector 250000 get(125000) 15.055 ns/op 15.007 ns/op 1.00
MutableVector 250000 set(125000) 859.82 ns/op 544.17 ns/op 1.58
MutableVector 250000 toArray() 6.9569 ms/op 6.2638 ms/op 1.11
MutableVector 250000 iterate all - toArray() + loop 7.1842 ms/op 6.5690 ms/op 1.09
MutableVector 250000 iterate all - get(i) 3.6130 ms/op 3.5364 ms/op 1.02
Array 250000 create 6.7590 ms/op 5.6810 ms/op 1.19
Array 250000 clone - spread 2.9845 ms/op 2.4144 ms/op 1.24
Array 250000 get(125000) 1.3870 ns/op 1.1170 ns/op 1.24
Array 250000 set(125000) 1.4470 ns/op 1.1540 ns/op 1.25
Array 250000 iterate all - loop 146.20 us/op 167.97 us/op 0.87
effectiveBalanceIncrements clone Uint8Array 300000 106.17 us/op 79.370 us/op 1.34
effectiveBalanceIncrements clone MutableVector 300000 950.00 ns/op 751.00 ns/op 1.26
effectiveBalanceIncrements rw all Uint8Array 300000 205.88 us/op 301.74 us/op 0.68
effectiveBalanceIncrements rw all MutableVector 300000 264.54 ms/op 170.79 ms/op 1.55
aggregationBits - 2048 els - zipIndexesInBitList 35.333 us/op 27.280 us/op 1.30
regular array get 100000 times 58.739 us/op 67.448 us/op 0.87
wrappedArray get 100000 times 60.262 us/op 67.401 us/op 0.89
arrayWithProxy get 100000 times 35.000 ms/op 30.160 ms/op 1.16
ssz.Root.equals 557.00 ns/op 478.00 ns/op 1.17
byteArrayEquals 552.00 ns/op 459.00 ns/op 1.20
phase0 processBlock - 250000 vs - 7PWei normalcase 4.3732 ms/op 3.4597 ms/op 1.26
phase0 processBlock - 250000 vs - 7PWei worstcase 65.407 ms/op 45.820 ms/op 1.43
phase0 afterProcessEpoch - 250000 vs - 7PWei 184.90 ms/op 193.48 ms/op 0.96
phase0 beforeProcessEpoch - 250000 vs - 7PWei 85.276 ms/op 69.685 ms/op 1.22
phase0 processEpoch - mainnet_e58758 655.45 ms/op 511.79 ms/op 1.28
mainnet_e58758 - phase0 beforeProcessEpoch 273.80 ms/op 218.30 ms/op 1.25
mainnet_e58758 - phase0 processJustificationAndFinalization 70.476 us/op 27.315 us/op 2.58
mainnet_e58758 - phase0 processRewardsAndPenalties 153.53 ms/op 132.89 ms/op 1.16
mainnet_e58758 - phase0 processRegistryUpdates 38.792 us/op 10.624 us/op 3.65
mainnet_e58758 - phase0 processSlashings 6.3050 us/op 1.2180 us/op 5.18
mainnet_e58758 - phase0 processEth1DataReset 6.4630 us/op 1.0750 us/op 6.01
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 7.7418 ms/op 5.9212 ms/op 1.31
mainnet_e58758 - phase0 processSlashingsReset 21.099 us/op 6.7060 us/op 3.15
mainnet_e58758 - phase0 processRandaoMixesReset 26.034 us/op 7.0450 us/op 3.70
mainnet_e58758 - phase0 processHistoricalRootsUpdate 7.9650 us/op 1.4760 us/op 5.40
mainnet_e58758 - phase0 processParticipationRecordUpdates 22.659 us/op 5.2740 us/op 4.30
mainnet_e58758 - phase0 afterProcessEpoch 161.88 ms/op 144.33 ms/op 1.12
phase0 processEffectiveBalanceUpdates - 250000 normalcase 7.2355 ms/op 6.3779 ms/op 1.13
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 7.3754 ms/op 6.7319 ms/op 1.10
phase0 processRegistryUpdates - 250000 normalcase 31.289 us/op 9.2290 us/op 3.39
phase0 processRegistryUpdates - 250000 badcase_full_deposits 508.94 us/op 363.07 us/op 1.40
phase0 processRegistryUpdates - 250000 worstcase 0.5 247.11 ms/op 204.73 ms/op 1.21
phase0 getAttestationDeltas - 250000 normalcase 17.161 ms/op 15.099 ms/op 1.14
phase0 getAttestationDeltas - 250000 worstcase 18.026 ms/op 15.230 ms/op 1.18
phase0 processSlashings - 250000 worstcase 7.4946 ms/op 5.4464 ms/op 1.38
shuffle list - 16384 els 11.078 ms/op 10.664 ms/op 1.04
shuffle list - 250000 els 158.79 ms/op 153.56 ms/op 1.03
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 442.23 us/op 475.62 us/op 0.93
pass gossip attestations to forkchoice per slot 4.1245 ms/op 3.4400 ms/op 1.20
computeDeltas 4.0469 ms/op 3.5377 ms/op 1.14
computeProposerBoostScoreFromBalances 486.37 us/op 502.76 us/op 0.97
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.8314 ms/op 2.0919 ms/op 1.35
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 84.510 us/op 78.444 us/op 1.08
BLS verify - blst-native 2.6886 ms/op 1.8627 ms/op 1.44
BLS verifyMultipleSignatures 3 - blst-native 5.5996 ms/op 3.8027 ms/op 1.47
BLS verifyMultipleSignatures 8 - blst-native 12.129 ms/op 8.1875 ms/op 1.48
BLS verifyMultipleSignatures 32 - blst-native 43.276 ms/op 29.670 ms/op 1.46
BLS aggregatePubkeys 32 - blst-native 58.437 us/op 40.408 us/op 1.45
BLS aggregatePubkeys 128 - blst-native 233.35 us/op 156.50 us/op 1.49
getAttestationsForBlock 61.643 ms/op 59.436 ms/op 1.04
CheckpointStateCache - add get delete 13.870 us/op 10.804 us/op 1.28
validate gossip signedAggregateAndProof - struct 6.1810 ms/op 4.2879 ms/op 1.44
validate gossip attestation - struct 2.9949 ms/op 2.0316 ms/op 1.47
pickEth1Vote - no votes 2.8918 ms/op 2.2815 ms/op 1.27
pickEth1Vote - max votes 23.352 ms/op 19.376 ms/op 1.21
pickEth1Vote - Eth1Data hashTreeRoot value x2048 14.775 ms/op 10.956 ms/op 1.35
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 25.812 ms/op 21.347 ms/op 1.21
pickEth1Vote - Eth1Data fastSerialize value x2048 2.1208 ms/op 1.6080 ms/op 1.32
pickEth1Vote - Eth1Data fastSerialize tree x2048 15.916 ms/op 12.987 ms/op 1.23
bytes32 toHexString 1.2830 us/op 962.00 ns/op 1.33
bytes32 Buffer.toString(hex) 815.00 ns/op 672.00 ns/op 1.21
bytes32 Buffer.toString(hex) from Uint8Array 1.0190 us/op 890.00 ns/op 1.14
bytes32 Buffer.toString(hex) + 0x 820.00 ns/op 684.00 ns/op 1.20
Object access 1 prop 0.42400 ns/op 0.33000 ns/op 1.28
Map access 1 prop 0.35100 ns/op 0.28500 ns/op 1.23
Object get x1000 17.938 ns/op 17.882 ns/op 1.00
Map get x1000 1.0360 ns/op 0.97400 ns/op 1.06
Object set x1000 114.24 ns/op 109.22 ns/op 1.05
Map set x1000 78.794 ns/op 68.301 ns/op 1.15
Return object 10000 times 0.42560 ns/op 0.36840 ns/op 1.16
Throw Error 10000 times 7.0694 us/op 5.8243 us/op 1.21
enrSubnets - fastDeserialize 64 bits 3.3320 us/op 2.5720 us/op 1.30
enrSubnets - ssz BitVector 64 bits 967.00 ns/op 763.00 ns/op 1.27
enrSubnets - fastDeserialize 4 bits 453.00 ns/op 411.00 ns/op 1.10
enrSubnets - ssz BitVector 4 bits 968.00 ns/op 762.00 ns/op 1.27
prioritizePeers score -10:0 att 32-0.1 sync 2-0 104.20 us/op 89.197 us/op 1.17
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 157.93 us/op 123.32 us/op 1.28
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 270.63 us/op 219.87 us/op 1.23
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 565.25 us/op 429.02 us/op 1.32
prioritizePeers score 0:0 att 64-1 sync 4-1 612.79 us/op 459.62 us/op 1.33
RateTracker 1000000 limit, 1 obj count per request 208.29 ns/op 178.64 ns/op 1.17
RateTracker 1000000 limit, 2 obj count per request 153.32 ns/op 132.56 ns/op 1.16
RateTracker 1000000 limit, 4 obj count per request 131.37 ns/op 110.44 ns/op 1.19
RateTracker 1000000 limit, 8 obj count per request 108.98 ns/op 98.901 ns/op 1.10
RateTracker with prune 4.7200 us/op 3.8390 us/op 1.23
array of 16000 items push then shift 5.4083 us/op 3.1199 us/op 1.73
LinkedList of 16000 items push then shift 19.031 ns/op 15.948 ns/op 1.19
array of 16000 items push then pop 234.62 ns/op 205.91 ns/op 1.14
LinkedList of 16000 items push then pop 18.473 ns/op 15.134 ns/op 1.22
array of 24000 items push then shift 8.2014 us/op 4.5530 us/op 1.80
LinkedList of 24000 items push then shift 20.000 ns/op 19.360 ns/op 1.03
array of 24000 items push then pop 240.67 ns/op 196.02 ns/op 1.23
LinkedList of 24000 items push then pop 19.176 ns/op 16.636 ns/op 1.15

by benchmarkbot/action

@codecov
Copy link

codecov bot commented May 12, 2022

Codecov Report

Merging #4016 (6a46abf) into master (2ed2e03) will decrease coverage by 0.04%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #4016      +/-   ##
==========================================
- Coverage   36.83%   36.79%   -0.05%     
==========================================
  Files         324      325       +1     
  Lines        9187     9203      +16     
  Branches     1494     1495       +1     
==========================================
+ Hits         3384     3386       +2     
- Misses       5612     5626      +14     
  Partials      191      191              

const powBlock = await chain.eth1.getPowBlock(powBlockRootHex);
const powBlockParent = powBlock && (await chain.eth1.getPowBlock(powBlock.parentHash));
const powBlock = await chain.eth1.getPowBlock(powBlockRootHex).catch((_error) => null);
const powBlockParent = powBlock && (await chain.eth1.getPowBlock(powBlock.parentHash).catch((_error) => null));
Copy link
Contributor

Choose a reason for hiding this comment

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

This is very serious error we must know about, at least log it

Copy link
Contributor

Choose a reason for hiding this comment

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

If isMergeTransitionBlock == true and powBlock == null it's impossible for us to accept this block right?

Copy link
Contributor Author

@g11tech g11tech May 13, 2022

Choose a reason for hiding this comment

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

no, we can still import it if executionStatus is SYNCING and we are not safeSlotsToImportOptimistically (128) blocks of the clock slot (i.e. merge has long happened, this is just syncing past merge even if EL doesn't has merge block), which is when this fetch actually throws error.

Another scenario is if TERMINAL_BLOCK_HASH is set, then also powBlock is not required as hashes are compared directly.

assertValidTerminalPowBlock takes care of these checks so we can safely assign it null and let it move to validation.

Logging them is a good idea! will update 👍

Copy link
Contributor

@dapplion dapplion May 16, 2022

Choose a reason for hiding this comment

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

Why not move the fn assertValidTerminalPowBlock into the verifyBlock.ts, and do the fetching inside the function? Seems like things will be more straight forward to reason about.

Copy link
Contributor Author

@g11tech g11tech May 16, 2022

Choose a reason for hiding this comment

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

ummm well there are couple of considerations:
i) forkchoice spec tests have spec tests for terminal conditions, so a pure function is better to have
ii) the #3508 will require this validation as per spec once the merge block status changes from SYNCING to VALID.

Lets leave it here for the moment and see if we can place it better when working on the ii) ? 🤔

@g11tech g11tech mentioned this pull request May 14, 2022
22 tasks
@dapplion dapplion merged commit 267dce7 into master May 18, 2022
@dapplion dapplion deleted the g11tech/handle-mergepow-fetch-error branch May 18, 2022 10:51
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 <35266934+dapplion@users.noreply.github.com>

* 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] <support@github.com>

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 <35266934+dapplion@users.noreply.github.com>

* 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 <35266934+dapplion@users.noreply.github.com>

* 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 <dadepo@gmail.com>
Co-authored-by: dapplion <35266934+dapplion@users.noreply.github.com>

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

* Bump to v0.37.0

Co-authored-by: tuyennhv <vutuyen2636@gmail.com>
Co-authored-by: g11tech <76567250+g11tech@users.noreply.github.com>
Co-authored-by: dadepo <dadepo@gmail.com>
Co-authored-by: Cayman <caymannava@gmail.com>
Co-authored-by: Phil Ngo <58080811+philknows@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: g11tech <gajinder@g11.in>
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