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 merge transition/finalization banners #3963

Merged
merged 2 commits into from
May 12, 2022

Conversation

g11tech
Copy link
Contributor

@g11tech g11tech commented May 2, 2022

Motivation
This PR adds a merge transition/merge finalization banner capabilities plus additional helpful log around merge block/finalization.

Also fixes the flag of isMergeTransitionBlock on the flags passed to the forkchoice. Earlier it was being evaluated on a postState which was problematic, because even on the merge transition block, postState would already have show the mergeCompleted. Fixed it to evaluate on preState.

PS: Banners could be updated later as per contributions to #3961 (which is a separate issue of having the banner art contributions, hence this PR doesn't close that issue, but only enables it)

@g11tech g11tech requested a review from a team as a code owner May 2, 2022 06:21
@@ -0,0 +1,36 @@
/* eslint-disable no-useless-escape */
export const POS_PANDA_FINALIZED_BANNER = `
Copy link
Contributor Author

@g11tech g11tech May 2, 2022

Choose a reason for hiding this comment

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

@philknows , do we want a similar banner on the finalization of the merge, i.e. first finalized checkpoint post merge? we can remove this or make it super minimal or have something else about it.

Copy link
Member

Choose a reason for hiding this comment

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

I think just the merge transition block is enough for the banner. It's what the other clients are doing. Finalization can just remain a normal log statement.

@g11tech g11tech mentioned this pull request May 2, 2022
22 tasks
@codecov
Copy link

codecov bot commented May 2, 2022

Codecov Report

Merging #3963 (794483a) into master (15d8ae2) will decrease coverage by 0.02%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #3963      +/-   ##
==========================================
- Coverage   36.83%   36.81%   -0.03%     
==========================================
  Files         324      325       +1     
  Lines        9187     9198      +11     
  Branches     1494     1495       +1     
==========================================
+ Hits         3384     3386       +2     
- Misses       5612     5621       +9     
  Partials      191      191              

@github-actions
Copy link
Contributor

github-actions bot commented May 2, 2022

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 80fc224 Previous: 2ed2e03 Ratio
BeaconState.hashTreeRoot - No change 679.00 ns/op 415.00 ns/op 1.64
BeaconState.hashTreeRoot - 1 full validator 64.913 us/op 55.358 us/op 1.17
BeaconState.hashTreeRoot - 32 full validator 646.23 us/op 540.88 us/op 1.19
BeaconState.hashTreeRoot - 512 full validator 6.9947 ms/op 5.9123 ms/op 1.18
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 81.615 us/op 67.639 us/op 1.21
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.1272 ms/op 949.40 us/op 1.19
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 15.621 ms/op 12.747 ms/op 1.23
BeaconState.hashTreeRoot - 1 balances 61.947 us/op 52.322 us/op 1.18
BeaconState.hashTreeRoot - 32 balances 560.62 us/op 464.44 us/op 1.21
BeaconState.hashTreeRoot - 512 balances 5.4125 ms/op 4.5010 ms/op 1.20
BeaconState.hashTreeRoot - 250000 balances 119.09 ms/op 92.645 ms/op 1.29
processSlot - 1 slots 12.727 us/op 9.4100 us/op 1.35
processSlot - 32 slots 1.8643 ms/op 1.5288 ms/op 1.22
getCommitteeAssignments - req 1 vs - 250000 vc 6.2266 ms/op 5.2690 ms/op 1.18
getCommitteeAssignments - req 100 vs - 250000 vc 8.6811 ms/op 7.3558 ms/op 1.18
getCommitteeAssignments - req 1000 vs - 250000 vc 9.3105 ms/op 7.9330 ms/op 1.17
computeProposers - vc 250000 19.585 ms/op 15.995 ms/op 1.22
computeEpochShuffling - vc 250000 186.88 ms/op 158.63 ms/op 1.18
getNextSyncCommittee - vc 250000 321.53 ms/op 266.86 ms/op 1.20
altair processAttestation - 250000 vs - 7PWei normalcase 4.4626 ms/op 3.5174 ms/op 1.27
altair processAttestation - 250000 vs - 7PWei worstcase 6.3324 ms/op 5.1886 ms/op 1.22
altair processAttestation - setStatus - 1/6 committees join 223.58 us/op 190.69 us/op 1.17
altair processAttestation - setStatus - 1/3 committees join 437.25 us/op 368.33 us/op 1.19
altair processAttestation - setStatus - 1/2 committees join 611.40 us/op 519.02 us/op 1.18
altair processAttestation - setStatus - 2/3 committees join 791.28 us/op 669.75 us/op 1.18
altair processAttestation - setStatus - 4/5 committees join 1.0895 ms/op 915.71 us/op 1.19
altair processAttestation - setStatus - 100% committees join 1.3008 ms/op 1.0837 ms/op 1.20
altair processBlock - 250000 vs - 7PWei normalcase 29.850 ms/op 22.434 ms/op 1.33
altair processBlock - 250000 vs - 7PWei normalcase hashState 38.318 ms/op 34.499 ms/op 1.11
altair processBlock - 250000 vs - 7PWei worstcase 84.630 ms/op 72.883 ms/op 1.16
altair processBlock - 250000 vs - 7PWei worstcase hashState 125.63 ms/op 93.709 ms/op 1.34
altair processEth1Data - 250000 vs - 7PWei normalcase 916.17 us/op 790.44 us/op 1.16
altair processEpoch - mainnet_e81889 665.06 ms/op 466.38 ms/op 1.43
mainnet_e81889 - altair beforeProcessEpoch 102.82 ms/op 140.29 ms/op 0.73
mainnet_e81889 - altair processJustificationAndFinalization 34.542 us/op 24.036 us/op 1.44
mainnet_e81889 - altair processInactivityUpdates 12.408 ms/op 11.004 ms/op 1.13
mainnet_e81889 - altair processRewardsAndPenalties 171.96 ms/op 126.44 ms/op 1.36
mainnet_e81889 - altair processRegistryUpdates 7.4030 us/op 3.7280 us/op 1.99
mainnet_e81889 - altair processSlashings 3.3070 us/op 1.6220 us/op 2.04
mainnet_e81889 - altair processEth1DataReset 3.4910 us/op 1.8840 us/op 1.85
mainnet_e81889 - altair processEffectiveBalanceUpdates 8.5864 ms/op 6.8170 ms/op 1.26
mainnet_e81889 - altair processSlashingsReset 11.220 us/op 8.1760 us/op 1.37
mainnet_e81889 - altair processRandaoMixesReset 11.765 us/op 7.7190 us/op 1.52
mainnet_e81889 - altair processHistoricalRootsUpdate 4.6590 us/op 1.4210 us/op 3.28
mainnet_e81889 - altair processParticipationFlagUpdates 7.3600 us/op 7.0900 us/op 1.04
mainnet_e81889 - altair processSyncCommitteeUpdates 2.6970 us/op 2.9950 us/op 0.90
mainnet_e81889 - altair afterProcessEpoch 217.75 ms/op 182.45 ms/op 1.19
altair processInactivityUpdates - 250000 normalcase 37.662 ms/op 30.902 ms/op 1.22
altair processInactivityUpdates - 250000 worstcase 31.957 ms/op 26.257 ms/op 1.22
altair processRewardsAndPenalties - 250000 normalcase 132.82 ms/op 77.879 ms/op 1.71
altair processRewardsAndPenalties - 250000 worstcase 89.638 ms/op 72.747 ms/op 1.23
altair processSyncCommitteeUpdates - 250000 336.52 ms/op 275.09 ms/op 1.22
Tree 40 250000 create 768.77 ms/op 606.99 ms/op 1.27
Tree 40 250000 get(125000) 337.34 ns/op 277.06 ns/op 1.22
Tree 40 250000 set(125000) 2.4586 us/op 2.0168 us/op 1.22
Tree 40 250000 toArray() 36.903 ms/op 30.660 ms/op 1.20
Tree 40 250000 iterate all - toArray() + loop 36.663 ms/op 30.153 ms/op 1.22
Tree 40 250000 iterate all - get(i) 128.97 ms/op 107.89 ms/op 1.20
MutableVector 250000 create 19.921 ms/op 13.637 ms/op 1.46
MutableVector 250000 get(125000) 15.904 ns/op 14.765 ns/op 1.08
MutableVector 250000 set(125000) 636.29 ns/op 512.26 ns/op 1.24
MutableVector 250000 toArray() 7.6156 ms/op 5.9927 ms/op 1.27
MutableVector 250000 iterate all - toArray() + loop 7.8643 ms/op 6.2848 ms/op 1.25
MutableVector 250000 iterate all - get(i) 4.1196 ms/op 3.4397 ms/op 1.20
Array 250000 create 6.8894 ms/op 5.2159 ms/op 1.32
Array 250000 clone - spread 3.0863 ms/op 2.4193 ms/op 1.28
Array 250000 get(125000) 1.4670 ns/op 1.1410 ns/op 1.29
Array 250000 set(125000) 1.4270 ns/op 1.1300 ns/op 1.26
Array 250000 iterate all - loop 200.03 us/op 168.93 us/op 1.18
effectiveBalanceIncrements clone Uint8Array 300000 87.141 us/op 68.373 us/op 1.27
effectiveBalanceIncrements clone MutableVector 300000 947.00 ns/op 786.00 ns/op 1.20
effectiveBalanceIncrements rw all Uint8Array 300000 359.77 us/op 301.76 us/op 1.19
effectiveBalanceIncrements rw all MutableVector 300000 202.27 ms/op 174.57 ms/op 1.16
aggregationBits - 2048 els - zipIndexesInBitList 33.243 us/op 26.803 us/op 1.24
regular array get 100000 times 79.567 us/op 67.381 us/op 1.18
wrappedArray get 100000 times 80.362 us/op 67.465 us/op 1.19
arrayWithProxy get 100000 times 34.513 ms/op 29.518 ms/op 1.17
ssz.Root.equals 518.00 ns/op 451.00 ns/op 1.15
byteArrayEquals 504.00 ns/op 437.00 ns/op 1.15
phase0 processBlock - 250000 vs - 7PWei normalcase 4.1097 ms/op 3.4031 ms/op 1.21
phase0 processBlock - 250000 vs - 7PWei worstcase 54.133 ms/op 44.060 ms/op 1.23
phase0 afterProcessEpoch - 250000 vs - 7PWei 208.16 ms/op 173.29 ms/op 1.20
phase0 beforeProcessEpoch - 250000 vs - 7PWei 81.314 ms/op 70.753 ms/op 1.15
phase0 processEpoch - mainnet_e58758 642.81 ms/op 498.55 ms/op 1.29
mainnet_e58758 - phase0 beforeProcessEpoch 239.37 ms/op 234.08 ms/op 1.02
mainnet_e58758 - phase0 processJustificationAndFinalization 31.935 us/op 32.456 us/op 0.98
mainnet_e58758 - phase0 processRewardsAndPenalties 149.27 ms/op 74.104 ms/op 2.01
mainnet_e58758 - phase0 processRegistryUpdates 17.343 us/op 9.7650 us/op 1.78
mainnet_e58758 - phase0 processSlashings 3.6760 us/op 1.7790 us/op 2.07
mainnet_e58758 - phase0 processEth1DataReset 3.3360 us/op 1.8150 us/op 1.84
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 6.4727 ms/op 5.4198 ms/op 1.19
mainnet_e58758 - phase0 processSlashingsReset 10.788 us/op 8.3430 us/op 1.29
mainnet_e58758 - phase0 processRandaoMixesReset 12.180 us/op 8.5240 us/op 1.43
mainnet_e58758 - phase0 processHistoricalRootsUpdate 4.1870 us/op 1.5220 us/op 2.75
mainnet_e58758 - phase0 processParticipationRecordUpdates 10.464 us/op 8.1030 us/op 1.29
mainnet_e58758 - phase0 afterProcessEpoch 181.98 ms/op 157.49 ms/op 1.16
phase0 processEffectiveBalanceUpdates - 250000 normalcase 7.6736 ms/op 6.5449 ms/op 1.17
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 8.0317 ms/op 6.7875 ms/op 1.18
phase0 processRegistryUpdates - 250000 normalcase 14.787 us/op 9.6080 us/op 1.54
phase0 processRegistryUpdates - 250000 badcase_full_deposits 499.15 us/op 510.66 us/op 0.98
phase0 processRegistryUpdates - 250000 worstcase 0.5 240.19 ms/op 207.69 ms/op 1.16
phase0 getAttestationDeltas - 250000 normalcase 16.863 ms/op 14.250 ms/op 1.18
phase0 getAttestationDeltas - 250000 worstcase 17.227 ms/op 14.370 ms/op 1.20
phase0 processSlashings - 250000 worstcase 6.8184 ms/op 5.4952 ms/op 1.24
shuffle list - 16384 els 12.664 ms/op 10.659 ms/op 1.19
shuffle list - 250000 els 184.08 ms/op 153.68 ms/op 1.20
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 425.75 us/op 358.93 us/op 1.19
pass gossip attestations to forkchoice per slot 3.9896 ms/op 3.3324 ms/op 1.20
computeDeltas 3.6727 ms/op 3.4809 ms/op 1.06
computeProposerBoostScoreFromBalances 598.38 us/op 502.98 us/op 1.19
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.2740 ms/op 1.9276 ms/op 1.18
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 92.875 us/op 70.048 us/op 1.33
BLS verify - blst-native 2.2111 ms/op 1.8585 ms/op 1.19
BLS verifyMultipleSignatures 3 - blst-native 4.5569 ms/op 3.8019 ms/op 1.20
BLS verifyMultipleSignatures 8 - blst-native 9.7550 ms/op 8.1844 ms/op 1.19
BLS verifyMultipleSignatures 32 - blst-native 35.450 ms/op 29.672 ms/op 1.19
BLS aggregatePubkeys 32 - blst-native 47.018 us/op 39.246 us/op 1.20
BLS aggregatePubkeys 128 - blst-native 183.61 us/op 153.58 us/op 1.20
getAttestationsForBlock 63.425 ms/op 55.810 ms/op 1.14
CheckpointStateCache - add get delete 12.168 us/op 10.617 us/op 1.15
validate gossip signedAggregateAndProof - struct 5.0357 ms/op 4.2565 ms/op 1.18
validate gossip attestation - struct 2.4283 ms/op 2.0263 ms/op 1.20
pickEth1Vote - no votes 2.5871 ms/op 2.1380 ms/op 1.21
pickEth1Vote - max votes 21.607 ms/op 18.051 ms/op 1.20
pickEth1Vote - Eth1Data hashTreeRoot value x2048 12.697 ms/op 10.636 ms/op 1.19
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 23.119 ms/op 22.674 ms/op 1.02
pickEth1Vote - Eth1Data fastSerialize value x2048 1.9094 ms/op 1.5739 ms/op 1.21
pickEth1Vote - Eth1Data fastSerialize tree x2048 14.437 ms/op 12.921 ms/op 1.12
bytes32 toHexString 1.0870 us/op 920.00 ns/op 1.18
bytes32 Buffer.toString(hex) 776.00 ns/op 646.00 ns/op 1.20
bytes32 Buffer.toString(hex) from Uint8Array 1.0310 us/op 872.00 ns/op 1.18
bytes32 Buffer.toString(hex) + 0x 807.00 ns/op 633.00 ns/op 1.27
Object access 1 prop 0.37500 ns/op 0.31100 ns/op 1.21
Map access 1 prop 0.33800 ns/op 0.29000 ns/op 1.17
Object get x1000 19.928 ns/op 17.425 ns/op 1.14
Map get x1000 1.1440 ns/op 0.98200 ns/op 1.16
Object set x1000 124.19 ns/op 100.68 ns/op 1.23
Map set x1000 75.893 ns/op 59.867 ns/op 1.27
Return object 10000 times 0.43600 ns/op 0.37070 ns/op 1.18
Throw Error 10000 times 6.9938 us/op 5.7725 us/op 1.21
enrSubnets - fastDeserialize 64 bits 2.9580 us/op 2.3820 us/op 1.24
enrSubnets - ssz BitVector 64 bits 873.00 ns/op 704.00 ns/op 1.24
enrSubnets - fastDeserialize 4 bits 445.00 ns/op 355.00 ns/op 1.25
enrSubnets - ssz BitVector 4 bits 856.00 ns/op 721.00 ns/op 1.19
prioritizePeers score -10:0 att 32-0.1 sync 2-0 103.59 us/op 85.078 us/op 1.22
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 151.94 us/op 121.75 us/op 1.25
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 239.96 us/op 189.70 us/op 1.26
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 460.57 us/op 415.47 us/op 1.11
prioritizePeers score 0:0 att 64-1 sync 4-1 533.27 us/op 459.59 us/op 1.16
RateTracker 1000000 limit, 1 obj count per request 208.25 ns/op 172.63 ns/op 1.21
RateTracker 1000000 limit, 2 obj count per request 155.53 ns/op 131.83 ns/op 1.18
RateTracker 1000000 limit, 4 obj count per request 128.46 ns/op 108.31 ns/op 1.19
RateTracker 1000000 limit, 8 obj count per request 113.75 ns/op 95.385 ns/op 1.19
RateTracker with prune 4.3520 us/op 3.4350 us/op 1.27
array of 16000 items push then shift 3.7177 us/op 3.0725 us/op 1.21
LinkedList of 16000 items push then shift 19.244 ns/op 16.511 ns/op 1.17
array of 16000 items push then pop 245.33 ns/op 194.46 ns/op 1.26
LinkedList of 16000 items push then pop 18.929 ns/op 16.003 ns/op 1.18
array of 24000 items push then shift 5.3708 us/op 4.5430 us/op 1.18
LinkedList of 24000 items push then shift 22.291 ns/op 18.435 ns/op 1.21
array of 24000 items push then pop 220.62 ns/op 180.70 ns/op 1.22
LinkedList of 24000 items push then pop 20.303 ns/op 17.340 ns/op 1.17

by benchmarkbot/action

}
if (!prevIsMergeTransitionFinalized && chain.forkChoice.getMergeTransitionFinalized()) {
const finalizedCheckpoint = chain.forkChoice.getFinalizedCheckpoint();
chain.logger.info(POS_PANDA_FINALIZED_BANNER);
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@philknows yea this banner can go, or it can be super minimal, or we can add it later now we have a spot

blockHash: mergeBlockHash,
executionHash: mergeExecutionHash,
powHash: mergePowHash,
});
Copy link
Contributor

@dapplion dapplion May 4, 2022

Choose a reason for hiding this comment

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

To keep this function cleaner we can move this logic into a function such as

   if (onBlockPrecachedData.isMergeTransitionBlock) {
     logOnPowBlock(chain, block)
   } else if (!chain.forkChoice.getMergeTransitionFinalized() && chain.forkChoice.getMergeTransitionFinalized()) {
     logOnPowBlockFinalized(chain, block)
   }

// in forkchoice! Its now PoS all the way!!!!
if (onBlockPrecachedData.isMergeTransitionBlock) {
const mergeBlock = block.message as bellatrix.BeaconBlock;
const mergeBlockHash = toHexString(ssz.bellatrix.BeaconBlock.hashTreeRoot(mergeBlock));
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 not safe, you must use config to get the block type from the slot. There will be more forks after bellatrix

@@ -0,0 +1,36 @@
/* eslint-disable no-useless-escape */
export const POS_PANDA_TRANSITIONING_BANNER = `
Copy link
Contributor

Choose a reason for hiding this comment

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

Just put this in utils, not sure we will have that many banners hahaha

) {
const finalizedBlock = this.getFinalizedBlock();
if (finalizedBlock.executionStatus !== ExecutionStatus.PreMerge) {
this.isMergeTransitionFinalized = true;
Copy link
Contributor

Choose a reason for hiding this comment

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

Is this strategy sufficient to not log again after restarting?

Copy link
Contributor

Choose a reason for hiding this comment

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

Moving this logic here just for the log doesn't feel great. Is lighthouse doing the same?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

lighthouse doesn't seem to be logging finalized, i wanted to add this on my own.
on restart, if if it starts post merge, isMergeTransitionFinalized should be set true on init and shouldn't log.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Copy link
Contributor

Choose a reason for hiding this comment

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

While I know it's not a lot, I'm not super keen on adding some complexity for a non critical item like this. While we (coredevs) celebrate finalization users may only care about the merge block, and it's very easy to detect once. Let me know what you think.

Copy link
Member

Choose a reason for hiding this comment

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

I also have no solicited any banner work for finalized at this time.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

ok no issues, removed 🙂

@@ -290,5 +288,10 @@ export async function verifyBlockStateTransition(
});
}

return {postState, executionStatus};
const isMergeTransitionBlock =
Copy link
Contributor

Choose a reason for hiding this comment

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

Why has this variable been moved to verifyBlock?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

need preState to evaluate it, on postState it was always coming as false as on merge block poststate will have merge complete

@dapplion
Copy link
Contributor

Note this PR was blocked by #3984

#3984 is now merged ✔️

@g11tech g11tech force-pushed the g11tech/merge-transition-banner branch from 4f1b7c1 to 16d4fae Compare May 10, 2022 17:39
return {postState, executionStatus};
}

function logOnPowBlock(chain: VerifyBlockModules, block: allForks.SignedBeaconBlock): void {
Copy link
Contributor

@dapplion dapplion May 12, 2022

Choose a reason for hiding this comment

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

I think it would be safer to have

function logOnPowBlock(chain: VerifyBlockModules, block: bellatrix.BeaconBlock): void

and do the casting right below isMergeTransitionBlock where it's clear that the casting is safe

@@ -43,14 +44,13 @@ export async function verifyBlock(
): Promise<FullyVerifiedBlock> {
const parentBlock = verifyBlockSanityChecks(chain, partiallyVerifiedBlock);

const {postState, executionStatus} = await verifyBlockStateTransition(chain, partiallyVerifiedBlock, opts);
const processedBlockData = await verifyBlockStateTransition(chain, partiallyVerifiedBlock, opts);
Copy link
Contributor

Choose a reason for hiding this comment

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

Why this change? Being explicit and not doing the spread feels more readable in my opinion

@dapplion dapplion merged commit 5c1833d into master May 12, 2022
@dapplion dapplion deleted the g11tech/merge-transition-banner branch May 12, 2022 11:39
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.

3 participants