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

Ignore gossip AggregateAndProof if aggregate is seen #4019

Merged
merged 10 commits into from
May 20, 2022

Conversation

twoeths
Copy link
Contributor

@twoeths twoeths commented May 13, 2022

Motivation

Address this spec when validating beacon_aggregate_and_proof gossip message:

[IGNORE] The valid aggregate attestation defined by hash_tree_root(aggregate) has not already been seen (via aggregate gossip, within a verified block, or through the creation of an equivalent aggregate locally).

Description

  • Implement SeenAggregatedAttestations
  • Populate seen aggregated attestations from api / gossip / blocks
  • Check if the aggregated attestation is seen when validating gossip AggregateAndProof message

Closes #3794

TODO

  • Deploy and test in a node, make sure it takes less time to validate AggregateAndProof gossip messages

@codecov
Copy link

codecov bot commented May 13, 2022

Codecov Report

Merging #4019 (3bc130e) into master (2535f40) will decrease coverage by 0.47%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #4019      +/-   ##
==========================================
- Coverage   36.73%   36.26%   -0.48%     
==========================================
  Files         326      327       +1     
  Lines        9238     9430     +192     
  Branches     1505     1548      +43     
==========================================
+ Hits         3394     3420      +26     
- Misses       5653     5818     +165     
- Partials      191      192       +1     

@dapplion
Copy link
Contributor

This PR is a subset of ethereum/consensus-specs#2847 right?

This PR ignores only exact "copies" of received aggregates. Not sure if the plan is to keep both conditions

@twoeths
Copy link
Contributor Author

twoeths commented May 13, 2022

This PR is a subset of ethereum/consensus-specs#2847 right?

yeah it's just implemented what's already merged in the spec v1.1.10, thanks for pointing me to the PR, I can make it one step further to ignore attestations with subset aggregation bits. The performance should be even better!

@github-actions
Copy link
Contributor

github-actions bot commented May 16, 2022

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 0bb3385 Previous: fbfae0c Ratio
BeaconState.hashTreeRoot - No change 521.00 ns/op 385.00 ns/op 1.35
BeaconState.hashTreeRoot - 1 full validator 65.133 us/op 48.326 us/op 1.35
BeaconState.hashTreeRoot - 32 full validator 641.86 us/op 475.11 us/op 1.35
BeaconState.hashTreeRoot - 512 full validator 7.0257 ms/op 5.5266 ms/op 1.27
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 83.107 us/op 63.104 us/op 1.32
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.1355 ms/op 840.76 us/op 1.35
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 15.606 ms/op 12.585 ms/op 1.24
BeaconState.hashTreeRoot - 1 balances 63.301 us/op 48.444 us/op 1.31
BeaconState.hashTreeRoot - 32 balances 561.92 us/op 423.64 us/op 1.33
BeaconState.hashTreeRoot - 512 balances 5.3940 ms/op 4.2132 ms/op 1.28
BeaconState.hashTreeRoot - 250000 balances 121.89 ms/op 108.32 ms/op 1.13
processSlot - 1 slots 12.905 us/op 11.290 us/op 1.14
processSlot - 32 slots 1.8951 ms/op 1.6539 ms/op 1.15
getCommitteeAssignments - req 1 vs - 250000 vc 6.2466 ms/op 5.2758 ms/op 1.18
getCommitteeAssignments - req 100 vs - 250000 vc 8.7447 ms/op 7.4404 ms/op 1.18
getCommitteeAssignments - req 1000 vs - 250000 vc 9.4118 ms/op 8.0486 ms/op 1.17
computeProposers - vc 250000 20.302 ms/op 17.613 ms/op 1.15
computeEpochShuffling - vc 250000 190.97 ms/op 161.14 ms/op 1.19
getNextSyncCommittee - vc 250000 325.78 ms/op 291.65 ms/op 1.12
altair processAttestation - 250000 vs - 7PWei normalcase 3.9910 ms/op 4.2965 ms/op 0.93
altair processAttestation - 250000 vs - 7PWei worstcase 6.1030 ms/op 6.0860 ms/op 1.00
altair processAttestation - setStatus - 1/6 committees join 212.10 us/op 192.15 us/op 1.10
altair processAttestation - setStatus - 1/3 committees join 423.80 us/op 371.67 us/op 1.14
altair processAttestation - setStatus - 1/2 committees join 607.73 us/op 526.70 us/op 1.15
altair processAttestation - setStatus - 2/3 committees join 766.11 us/op 672.27 us/op 1.14
altair processAttestation - setStatus - 4/5 committees join 1.0603 ms/op 936.49 us/op 1.13
altair processAttestation - setStatus - 100% committees join 1.2811 ms/op 1.1092 ms/op 1.15
altair processBlock - 250000 vs - 7PWei normalcase 25.759 ms/op 27.679 ms/op 0.93
altair processBlock - 250000 vs - 7PWei normalcase hashState 41.636 ms/op 38.208 ms/op 1.09
altair processBlock - 250000 vs - 7PWei worstcase 89.879 ms/op 74.671 ms/op 1.20
altair processBlock - 250000 vs - 7PWei worstcase hashState 111.86 ms/op 113.50 ms/op 0.99
altair processEth1Data - 250000 vs - 7PWei normalcase 1.0260 ms/op 927.72 us/op 1.11
altair processEpoch - mainnet_e81889 554.18 ms/op 583.66 ms/op 0.95
mainnet_e81889 - altair beforeProcessEpoch 141.35 ms/op 149.30 ms/op 0.95
mainnet_e81889 - altair processJustificationAndFinalization 29.452 us/op 28.448 us/op 1.04
mainnet_e81889 - altair processInactivityUpdates 11.079 ms/op 12.583 ms/op 0.88
mainnet_e81889 - altair processRewardsAndPenalties 145.58 ms/op 136.10 ms/op 1.07
mainnet_e81889 - altair processRegistryUpdates 11.686 us/op 5.9190 us/op 1.97
mainnet_e81889 - altair processSlashings 4.5580 us/op 1.9850 us/op 2.30
mainnet_e81889 - altair processEth1DataReset 4.7420 us/op 2.1720 us/op 2.18
mainnet_e81889 - altair processEffectiveBalanceUpdates 8.5052 ms/op 7.8332 ms/op 1.09
mainnet_e81889 - altair processSlashingsReset 10.772 us/op 9.7700 us/op 1.10
mainnet_e81889 - altair processRandaoMixesReset 12.137 us/op 11.130 us/op 1.09
mainnet_e81889 - altair processHistoricalRootsUpdate 4.3570 us/op 2.2660 us/op 1.92
mainnet_e81889 - altair processParticipationFlagUpdates 7.6400 us/op 6.9240 us/op 1.10
mainnet_e81889 - altair processSyncCommitteeUpdates 3.0200 us/op 1.5120 us/op 2.00
mainnet_e81889 - altair afterProcessEpoch 212.50 ms/op 183.67 ms/op 1.16
altair processInactivityUpdates - 250000 normalcase 33.727 ms/op 34.472 ms/op 0.98
altair processInactivityUpdates - 250000 worstcase 27.532 ms/op 28.263 ms/op 0.97
altair processRewardsAndPenalties - 250000 normalcase 88.863 ms/op 139.18 ms/op 0.64
altair processRewardsAndPenalties - 250000 worstcase 137.21 ms/op 124.36 ms/op 1.10
altair processSyncCommitteeUpdates - 250000 330.21 ms/op 298.76 ms/op 1.11
Tree 40 250000 create 772.60 ms/op 970.93 ms/op 0.80
Tree 40 250000 get(125000) 333.00 ns/op 291.89 ns/op 1.14
Tree 40 250000 set(125000) 2.6586 us/op 2.9544 us/op 0.90
Tree 40 250000 toArray() 36.726 ms/op 33.669 ms/op 1.09
Tree 40 250000 iterate all - toArray() + loop 36.835 ms/op 33.718 ms/op 1.09
Tree 40 250000 iterate all - get(i) 129.92 ms/op 112.52 ms/op 1.15
MutableVector 250000 create 18.648 ms/op 17.120 ms/op 1.09
MutableVector 250000 get(125000) 15.384 ns/op 13.363 ns/op 1.15
MutableVector 250000 set(125000) 766.17 ns/op 752.07 ns/op 1.02
MutableVector 250000 toArray() 8.5896 ms/op 7.5976 ms/op 1.13
MutableVector 250000 iterate all - toArray() + loop 8.7670 ms/op 8.0146 ms/op 1.09
MutableVector 250000 iterate all - get(i) 4.0406 ms/op 3.2824 ms/op 1.23
Array 250000 create 8.0862 ms/op 7.4443 ms/op 1.09
Array 250000 clone - spread 4.3081 ms/op 4.1320 ms/op 1.04
Array 250000 get(125000) 1.8690 ns/op 1.5810 ns/op 1.18
Array 250000 set(125000) 1.9310 ns/op 1.5380 ns/op 1.26
Array 250000 iterate all - loop 199.70 us/op 167.85 us/op 1.19
effectiveBalanceIncrements clone Uint8Array 300000 114.68 us/op 101.31 us/op 1.13
effectiveBalanceIncrements clone MutableVector 300000 1.4390 us/op 1.1140 us/op 1.29
effectiveBalanceIncrements rw all Uint8Array 300000 362.30 us/op 302.06 us/op 1.20
effectiveBalanceIncrements rw all MutableVector 300000 238.60 ms/op 248.02 ms/op 0.96
aggregationBits - 2048 els - zipIndexesInBitList 36.886 us/op 41.264 us/op 0.89
regular array get 100000 times 80.551 us/op 67.453 us/op 1.19
wrappedArray get 100000 times 80.733 us/op 67.473 us/op 1.20
arrayWithProxy get 100000 times 34.226 ms/op 29.563 ms/op 1.16
ssz.Root.equals 555.00 ns/op 520.00 ns/op 1.07
byteArrayEquals 535.00 ns/op 499.00 ns/op 1.07
phase0 processBlock - 250000 vs - 7PWei normalcase 4.7180 ms/op 4.1778 ms/op 1.13
phase0 processBlock - 250000 vs - 7PWei worstcase 55.316 ms/op 48.523 ms/op 1.14
phase0 afterProcessEpoch - 250000 vs - 7PWei 203.69 ms/op 167.19 ms/op 1.22
phase0 beforeProcessEpoch - 250000 vs - 7PWei 82.413 ms/op 112.95 ms/op 0.73
phase0 processEpoch - mainnet_e58758 605.79 ms/op 612.75 ms/op 0.99
mainnet_e58758 - phase0 beforeProcessEpoch 256.47 ms/op 247.23 ms/op 1.04
mainnet_e58758 - phase0 processJustificationAndFinalization 30.121 us/op 34.559 us/op 0.87
mainnet_e58758 - phase0 processRewardsAndPenalties 154.69 ms/op 111.62 ms/op 1.39
mainnet_e58758 - phase0 processRegistryUpdates 18.335 us/op 18.868 us/op 0.97
mainnet_e58758 - phase0 processSlashings 3.6450 us/op 2.2880 us/op 1.59
mainnet_e58758 - phase0 processEth1DataReset 3.0480 us/op 1.7080 us/op 1.78
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 6.6657 ms/op 5.2359 ms/op 1.27
mainnet_e58758 - phase0 processSlashingsReset 9.8040 us/op 8.0710 us/op 1.21
mainnet_e58758 - phase0 processRandaoMixesReset 12.647 us/op 8.0640 us/op 1.57
mainnet_e58758 - phase0 processHistoricalRootsUpdate 3.9290 us/op 1.1880 us/op 3.31
mainnet_e58758 - phase0 processParticipationRecordUpdates 11.012 us/op 9.1620 us/op 1.20
mainnet_e58758 - phase0 afterProcessEpoch 177.12 ms/op 157.76 ms/op 1.12
phase0 processEffectiveBalanceUpdates - 250000 normalcase 7.6009 ms/op 6.4102 ms/op 1.19
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 7.8680 ms/op 6.9669 ms/op 1.13
phase0 processRegistryUpdates - 250000 normalcase 14.762 us/op 11.808 us/op 1.25
phase0 processRegistryUpdates - 250000 badcase_full_deposits 488.79 us/op 494.23 us/op 0.99
phase0 processRegistryUpdates - 250000 worstcase 0.5 258.10 ms/op 217.92 ms/op 1.18
phase0 getAttestationDeltas - 250000 normalcase 19.905 ms/op 16.233 ms/op 1.23
phase0 getAttestationDeltas - 250000 worstcase 18.973 ms/op 16.020 ms/op 1.18
phase0 processSlashings - 250000 worstcase 6.3657 ms/op 5.7594 ms/op 1.11
shuffle list - 16384 els 12.491 ms/op 10.801 ms/op 1.16
shuffle list - 250000 els 177.32 ms/op 156.44 ms/op 1.13
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 433.28 us/op 486.58 us/op 0.89
pass gossip attestations to forkchoice per slot 3.8832 ms/op 3.5617 ms/op 1.09
computeDeltas 4.0934 ms/op 4.1044 ms/op 1.00
computeProposerBoostScoreFromBalances 584.50 us/op 503.38 us/op 1.16
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.0003 ms/op 2.4207 ms/op 0.83
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 91.035 us/op 81.818 us/op 1.11
BLS verify - blst-native 2.1264 ms/op 1.8625 ms/op 1.14
BLS verifyMultipleSignatures 3 - blst-native 4.2974 ms/op 3.8087 ms/op 1.13
BLS verifyMultipleSignatures 8 - blst-native 9.2453 ms/op 8.1992 ms/op 1.13
BLS verifyMultipleSignatures 32 - blst-native 33.720 ms/op 29.721 ms/op 1.13
BLS aggregatePubkeys 32 - blst-native 46.138 us/op 39.805 us/op 1.16
BLS aggregatePubkeys 128 - blst-native 173.15 us/op 153.84 us/op 1.13
getAttestationsForBlock 75.936 ms/op 75.374 ms/op 1.01
isKnown best case - 1 super set check 471.00 ns/op
isKnown normal case - 2 super set checks 448.00 ns/op
isKnown worse case - 16 super set checks 454.00 ns/op
CheckpointStateCache - add get delete 12.567 us/op 11.566 us/op 1.09
validate gossip signedAggregateAndProof - struct 4.9500 ms/op 4.3233 ms/op 1.14
validate gossip attestation - struct 2.3435 ms/op 2.0490 ms/op 1.14
altair verifyImport mainnet_s3766816:31 7.1798 s/op 6.3387 s/op 1.13
pickEth1Vote - no votes 2.5455 ms/op 2.2103 ms/op 1.15
pickEth1Vote - max votes 26.014 ms/op 32.047 ms/op 0.81
pickEth1Vote - Eth1Data hashTreeRoot value x2048 12.910 ms/op 13.050 ms/op 0.99
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 24.006 ms/op 25.777 ms/op 0.93
pickEth1Vote - Eth1Data fastSerialize value x2048 1.8125 ms/op 1.7861 ms/op 1.01
pickEth1Vote - Eth1Data fastSerialize tree x2048 17.380 ms/op 20.626 ms/op 0.84
bytes32 toHexString 1.0960 us/op 1.2370 us/op 0.89
bytes32 Buffer.toString(hex) 760.00 ns/op 733.00 ns/op 1.04
bytes32 Buffer.toString(hex) from Uint8Array 1.0050 us/op 944.00 ns/op 1.06
bytes32 Buffer.toString(hex) + 0x 764.00 ns/op 720.00 ns/op 1.06
Object access 1 prop 0.42000 ns/op 0.40400 ns/op 1.04
Map access 1 prop 0.34300 ns/op 0.29200 ns/op 1.17
Object get x1000 20.345 ns/op 17.412 ns/op 1.17
Map get x1000 1.1400 ns/op 1.0010 ns/op 1.14
Object set x1000 124.05 ns/op 124.00 ns/op 1.00
Map set x1000 76.668 ns/op 79.790 ns/op 0.96
Return object 10000 times 0.42580 ns/op 0.38240 ns/op 1.11
Throw Error 10000 times 6.6352 us/op 5.9691 us/op 1.11
enrSubnets - fastDeserialize 64 bits 3.1370 us/op 3.2420 us/op 0.97
enrSubnets - ssz BitVector 64 bits 901.00 ns/op 843.00 ns/op 1.07
enrSubnets - fastDeserialize 4 bits 462.00 ns/op 474.00 ns/op 0.97
enrSubnets - ssz BitVector 4 bits 842.00 ns/op 833.00 ns/op 1.01
prioritizePeers score -10:0 att 32-0.1 sync 2-0 109.15 us/op 103.15 us/op 1.06
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 143.55 us/op 142.61 us/op 1.01
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 246.95 us/op 248.21 us/op 0.99
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 496.87 us/op 395.54 us/op 1.26
prioritizePeers score 0:0 att 64-1 sync 4-1 518.42 us/op 465.31 us/op 1.11
RateTracker 1000000 limit, 1 obj count per request 207.65 ns/op 197.27 ns/op 1.05
RateTracker 1000000 limit, 2 obj count per request 164.07 ns/op 149.57 ns/op 1.10
RateTracker 1000000 limit, 4 obj count per request 147.28 ns/op 123.51 ns/op 1.19
RateTracker 1000000 limit, 8 obj count per request 136.50 ns/op 112.32 ns/op 1.22
RateTracker with prune 4.7850 us/op 4.9570 us/op 0.97
array of 16000 items push then shift 3.7055 us/op 3.1770 us/op 1.17
LinkedList of 16000 items push then shift 27.042 ns/op 27.047 ns/op 1.00
array of 16000 items push then pop 275.93 ns/op 248.09 ns/op 1.11
LinkedList of 16000 items push then pop 22.280 ns/op 21.722 ns/op 1.03
array of 24000 items push then shift 5.3191 us/op 4.5476 us/op 1.17
LinkedList of 24000 items push then shift 28.178 ns/op 28.112 ns/op 1.00
array of 24000 items push then pop 232.72 ns/op 216.40 ns/op 1.08
LinkedList of 24000 items push then pop 22.597 ns/op 21.877 ns/op 1.03
intersect bitArray bitLen 8 13.238 ns/op 10.379 ns/op 1.28
intersect array and set length 8 186.77 ns/op 179.57 ns/op 1.04
intersect bitArray bitLen 128 54.938 ns/op 50.684 ns/op 1.08
intersect array and set length 128 2.5493 us/op 2.3732 us/op 1.07

by benchmarkbot/action

@twoeths
Copy link
Contributor Author

twoeths commented May 17, 2022

This PR shows a better performance of lodestar overall

  • Memory is saved 10%

Screen Shot 2022-05-17 at 09 22 30

  • CPU is saved 10% - 20%

Screen Shot 2022-05-17 at 09 23 23

  • Less signature verification

Screen Shot 2022-05-17 at 09 24 54

  • Better performance of AggregateAndProof gossip validation

Screen Shot 2022-05-17 at 09 25 39

  • Gossip block processed time is improved too

Screen Shot 2022-05-17 at 09 26 56

  • 75% of AggregateAndProof gossip messages were ignored

Screen Shot 2022-05-17 at 09 28 02

  • Gossipsub-js forwarded less AggregateAndProof messages

Screen Shot 2022-05-17 at 09 29 36

@twoeths twoeths marked this pull request as ready for review May 17, 2022 02:30
@twoeths twoeths requested a review from a team as a code owner May 17, 2022 02:30
@dapplion
Copy link
Contributor

@tuyennhv There's are some important nuances in how to consider an aggregate overlapping

From ethereum/consensus-specs#2847

it does not mandate dropping aggregates where a union of previous aggregates would cause it to become a subset

Do we have to check against the union of bitfields from all aggregates, or each bitfield from each aggregate? Raised this question in ethereum/consensus-specs#2847 (comment)

@dapplion
Copy link
Contributor

This PR can re-use the BitArray set comparison logic from #4034

@twoeths twoeths marked this pull request as draft May 18, 2022 08:53
@twoeths twoeths force-pushed the tuyen/seen-aggregated-attestations branch from a2b5ede to 4b6d06e Compare May 19, 2022 10:29
@twoeths
Copy link
Contributor Author

twoeths commented May 20, 2022

Metrics show that it's less than 2 isNonStrictSuperSet calls per isKnown since we sorted by trueBitCount desc

Screen Shot 2022-05-20 at 11 15 39

Perf test shows that the "isKnown" api is cheap

SeenAggregatedAttestations perf test
    ✓ isKnown best case - 1 super set check                                2398082 ops/s    417.0000 ns/op        -     291100 runs   1.31 s
    ✓ isKnown normal case - 2 super set checks                             2487562 ops/s    402.0000 ns/op        -      89806 runs  0.404 s
    ✓ isKnown worse case - 16 super set checks                             2493766 ops/s    401.0000 ns/op        -     111188 runs  0.506 s

@twoeths twoeths marked this pull request as ready for review May 20, 2022 04:23

isKnown(targetEpoch: Epoch, attDataRoot: RootHex, aggregationBits: BitArray): boolean {
const seenAggregationInfoArr = this.aggregateRootsByEpoch.getOrDefault(targetEpoch).getOrDefault(attDataRoot);
this.metrics?.seenCache.aggregatedAttestations.isKnownTotal.inc();
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
this.metrics?.seenCache.aggregatedAttestations.isKnownTotal.inc();
this.metrics?.seenCache.aggregatedAttestations.isKnownCalls.inc();

for (let i = 0; i < seenAggregationInfoArr.length; i++) {
if (isNonStrictSuperSet(seenAggregationInfoArr[i].aggregationBits, aggregationBits)) {
this.metrics?.seenCache.aggregatedAttestations.superSetCheckTotal.observe(i + 1);
this.metrics?.seenCache.aggregatedAttestations.isKnownSuccess.inc();
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
this.metrics?.seenCache.aggregatedAttestations.isKnownSuccess.inc();
this.metrics?.seenCache.aggregatedAttestations.isKnownHits.inc();

Copy link
Contributor

Choose a reason for hiding this comment

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

Same for contribution and proofs

Copy link
Contributor

@dapplion dapplion left a comment

Choose a reason for hiding this comment

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

Looks great!

@twoeths twoeths merged commit ef9528a into master May 20, 2022
@twoeths twoeths deleted the tuyen/seen-aggregated-attestations branch May 20, 2022 08:37
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.

Ignore AggregateAndProof with duplicate aggregated attestations
2 participants