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

Oppool aggregates use BitArray only for set logic #4034

Merged
merged 5 commits into from
May 19, 2022

Conversation

dapplion
Copy link
Contributor

Motivation

From #4019 I noticed that we don't really have to use the validator indexes to compare the bit sets of attestations and check if they are subset, superset or intersect. Since all the attestations to be compared are in the same slot and committee, the bits are sufficient for that.

From performance tests dealing with BitArray directly instead of arrays and ES6 Sets is much faster and (in my subjective opinion) simpler conceptually.

Description

  • Use BitArrays only to compare attestation bit sets
  • Remove attestingIndices from data structures as it's not necessary now
  • Re-arrange tests for better maintainability
  • Move getParticipation logic to standalone function to be able to test only that

@codecov
Copy link

codecov bot commented May 18, 2022

Codecov Report

Merging #4034 (b253807) into master (01e6ffe) will decrease coverage by 0.07%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #4034      +/-   ##
==========================================
- Coverage   36.78%   36.70%   -0.08%     
==========================================
  Files         325      326       +1     
  Lines        9206     9247      +41     
  Branches     1501     1508       +7     
==========================================
+ Hits         3386     3394       +8     
- Misses       5629     5662      +33     
  Partials      191      191              

@github-actions
Copy link
Contributor

github-actions bot commented May 18, 2022

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: b432cb0 Previous: b020ccb Ratio
BeaconState.hashTreeRoot - No change 453.00 ns/op 520.00 ns/op 0.87
BeaconState.hashTreeRoot - 1 full validator 55.807 us/op 57.041 us/op 0.98
BeaconState.hashTreeRoot - 32 full validator 544.49 us/op 559.22 us/op 0.97
BeaconState.hashTreeRoot - 512 full validator 5.4950 ms/op 6.8127 ms/op 0.81
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 60.932 us/op 81.325 us/op 0.75
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 843.18 us/op 1.0076 ms/op 0.84
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 12.135 ms/op 13.848 ms/op 0.88
BeaconState.hashTreeRoot - 1 balances 46.709 us/op 55.676 us/op 0.84
BeaconState.hashTreeRoot - 32 balances 432.07 us/op 497.32 us/op 0.87
BeaconState.hashTreeRoot - 512 balances 4.1927 ms/op 4.8045 ms/op 0.87
BeaconState.hashTreeRoot - 250000 balances 103.06 ms/op 111.08 ms/op 0.93
processSlot - 1 slots 10.453 us/op 11.245 us/op 0.93
processSlot - 32 slots 1.6274 ms/op 1.6593 ms/op 0.98
getCommitteeAssignments - req 1 vs - 250000 vc 4.6142 ms/op 5.5652 ms/op 0.83
getCommitteeAssignments - req 100 vs - 250000 vc 6.3962 ms/op 8.0027 ms/op 0.80
getCommitteeAssignments - req 1000 vs - 250000 vc 6.8267 ms/op 9.2046 ms/op 0.74
computeProposers - vc 250000 16.746 ms/op 17.600 ms/op 0.95
computeEpochShuffling - vc 250000 158.15 ms/op 172.36 ms/op 0.92
getNextSyncCommittee - vc 250000 277.13 ms/op 287.09 ms/op 0.97
altair processAttestation - 250000 vs - 7PWei normalcase 3.8005 ms/op 3.9931 ms/op 0.95
altair processAttestation - 250000 vs - 7PWei worstcase 5.8737 ms/op 5.6441 ms/op 1.04
altair processAttestation - setStatus - 1/6 committees join 192.33 us/op 210.64 us/op 0.91
altair processAttestation - setStatus - 1/3 committees join 370.98 us/op 410.17 us/op 0.90
altair processAttestation - setStatus - 1/2 committees join 460.09 us/op 566.68 us/op 0.81
altair processAttestation - setStatus - 2/3 committees join 667.55 us/op 768.95 us/op 0.87
altair processAttestation - setStatus - 4/5 committees join 925.50 us/op 1.0512 ms/op 0.88
altair processAttestation - setStatus - 100% committees join 979.50 us/op 1.2739 ms/op 0.77
altair processBlock - 250000 vs - 7PWei normalcase 25.360 ms/op 27.692 ms/op 0.92
altair processBlock - 250000 vs - 7PWei normalcase hashState 37.699 ms/op 39.363 ms/op 0.96
altair processBlock - 250000 vs - 7PWei worstcase 76.563 ms/op 84.636 ms/op 0.90
altair processBlock - 250000 vs - 7PWei worstcase hashState 96.412 ms/op 107.90 ms/op 0.89
altair processEth1Data - 250000 vs - 7PWei normalcase 836.61 us/op 925.03 us/op 0.90
altair processEpoch - mainnet_e81889 480.08 ms/op 613.03 ms/op 0.78
mainnet_e81889 - altair beforeProcessEpoch 106.53 ms/op 172.79 ms/op 0.62
mainnet_e81889 - altair processJustificationAndFinalization 30.456 us/op 33.537 us/op 0.91
mainnet_e81889 - altair processInactivityUpdates 10.673 ms/op 11.803 ms/op 0.90
mainnet_e81889 - altair processRewardsAndPenalties 141.82 ms/op 91.904 ms/op 1.54
mainnet_e81889 - altair processRegistryUpdates 4.0690 us/op 13.817 us/op 0.29
mainnet_e81889 - altair processSlashings 1.0200 us/op 4.3220 us/op 0.24
mainnet_e81889 - altair processEth1DataReset 1.7830 us/op 3.2960 us/op 0.54
mainnet_e81889 - altair processEffectiveBalanceUpdates 7.4395 ms/op 7.2138 ms/op 1.03
mainnet_e81889 - altair processSlashingsReset 8.2070 us/op 15.649 us/op 0.52
mainnet_e81889 - altair processRandaoMixesReset 8.5030 us/op 16.361 us/op 0.52
mainnet_e81889 - altair processHistoricalRootsUpdate 2.2280 us/op 5.1100 us/op 0.44
mainnet_e81889 - altair processParticipationFlagUpdates 5.2330 us/op 12.133 us/op 0.43
mainnet_e81889 - altair processSyncCommitteeUpdates 1.6210 us/op 3.5300 us/op 0.46
mainnet_e81889 - altair afterProcessEpoch 178.88 ms/op 200.22 ms/op 0.89
altair processInactivityUpdates - 250000 normalcase 33.555 ms/op 42.551 ms/op 0.79
altair processInactivityUpdates - 250000 worstcase 27.590 ms/op 29.037 ms/op 0.95
altair processRewardsAndPenalties - 250000 normalcase 117.86 ms/op 89.490 ms/op 1.32
altair processRewardsAndPenalties - 250000 worstcase 81.145 ms/op 142.44 ms/op 0.57
altair processSyncCommitteeUpdates - 250000 261.61 ms/op 289.10 ms/op 0.90
Tree 40 250000 create 817.99 ms/op 757.37 ms/op 1.08
Tree 40 250000 get(125000) 289.03 ns/op 313.65 ns/op 0.92
Tree 40 250000 set(125000) 2.5540 us/op 2.5860 us/op 0.99
Tree 40 250000 toArray() 33.759 ms/op 34.160 ms/op 0.99
Tree 40 250000 iterate all - toArray() + loop 31.087 ms/op 33.696 ms/op 0.92
Tree 40 250000 iterate all - get(i) 99.872 ms/op 114.70 ms/op 0.87
MutableVector 250000 create 15.332 ms/op 17.051 ms/op 0.90
MutableVector 250000 get(125000) 13.068 ns/op 15.694 ns/op 0.83
MutableVector 250000 set(125000) 683.33 ns/op 701.79 ns/op 0.97
MutableVector 250000 toArray() 7.0854 ms/op 8.1698 ms/op 0.87
MutableVector 250000 iterate all - toArray() + loop 7.2293 ms/op 7.6360 ms/op 0.95
MutableVector 250000 iterate all - get(i) 3.2817 ms/op 3.6042 ms/op 0.91
Array 250000 create 6.2895 ms/op 6.2961 ms/op 1.00
Array 250000 clone - spread 3.5745 ms/op 3.7868 ms/op 0.94
Array 250000 get(125000) 1.4970 ns/op 1.6160 ns/op 0.93
Array 250000 set(125000) 1.5010 ns/op 1.5940 ns/op 0.94
Array 250000 iterate all - loop 147.89 us/op 185.07 us/op 0.80
effectiveBalanceIncrements clone Uint8Array 300000 122.13 us/op 92.791 us/op 1.32
effectiveBalanceIncrements clone MutableVector 300000 655.00 ns/op 1.2640 us/op 0.52
effectiveBalanceIncrements rw all Uint8Array 300000 301.90 us/op 344.93 us/op 0.88
effectiveBalanceIncrements rw all MutableVector 300000 171.75 ms/op 228.55 ms/op 0.75
aggregationBits - 2048 els - zipIndexesInBitList 28.220 us/op 35.431 us/op 0.80
regular array get 100000 times 67.452 us/op 73.370 us/op 0.92
wrappedArray get 100000 times 67.452 us/op 75.081 us/op 0.90
arrayWithProxy get 100000 times 33.051 ms/op 32.812 ms/op 1.01
ssz.Root.equals 392.00 ns/op 526.00 ns/op 0.75
byteArrayEquals 370.00 ns/op 516.00 ns/op 0.72
phase0 processBlock - 250000 vs - 7PWei normalcase 3.5002 ms/op 4.5098 ms/op 0.78
phase0 processBlock - 250000 vs - 7PWei worstcase 45.300 ms/op 48.607 ms/op 0.93
phase0 afterProcessEpoch - 250000 vs - 7PWei 177.06 ms/op 189.34 ms/op 0.94
phase0 beforeProcessEpoch - 250000 vs - 7PWei 81.054 ms/op 82.494 ms/op 0.98
phase0 processEpoch - mainnet_e58758 512.60 ms/op 563.91 ms/op 0.91
mainnet_e58758 - phase0 beforeProcessEpoch 236.79 ms/op 245.77 ms/op 0.96
mainnet_e58758 - phase0 processJustificationAndFinalization 37.346 us/op 38.422 us/op 0.97
mainnet_e58758 - phase0 processRewardsAndPenalties 133.42 ms/op 93.605 ms/op 1.43
mainnet_e58758 - phase0 processRegistryUpdates 18.126 us/op 21.019 us/op 0.86
mainnet_e58758 - phase0 processSlashings 1.9520 us/op 3.6350 us/op 0.54
mainnet_e58758 - phase0 processEth1DataReset 1.6420 us/op 3.3470 us/op 0.49
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 5.9917 ms/op 5.9018 ms/op 1.02
mainnet_e58758 - phase0 processSlashingsReset 6.5200 us/op 12.926 us/op 0.50
mainnet_e58758 - phase0 processRandaoMixesReset 8.7240 us/op 16.992 us/op 0.51
mainnet_e58758 - phase0 processHistoricalRootsUpdate 2.3430 us/op 4.8160 us/op 0.49
mainnet_e58758 - phase0 processParticipationRecordUpdates 9.9370 us/op 12.474 us/op 0.80
mainnet_e58758 - phase0 afterProcessEpoch 144.65 ms/op 172.40 ms/op 0.84
phase0 processEffectiveBalanceUpdates - 250000 normalcase 6.5828 ms/op 7.0621 ms/op 0.93
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 6.8508 ms/op 7.6834 ms/op 0.89
phase0 processRegistryUpdates - 250000 normalcase 8.3390 us/op 20.978 us/op 0.40
phase0 processRegistryUpdates - 250000 badcase_full_deposits 410.80 us/op 659.22 us/op 0.62
phase0 processRegistryUpdates - 250000 worstcase 0.5 214.45 ms/op 226.72 ms/op 0.95
phase0 getAttestationDeltas - 250000 normalcase 15.856 ms/op 14.444 ms/op 1.10
phase0 getAttestationDeltas - 250000 worstcase 15.264 ms/op 16.229 ms/op 0.94
phase0 processSlashings - 250000 worstcase 5.7383 ms/op 6.3517 ms/op 0.90
shuffle list - 16384 els 10.727 ms/op 12.218 ms/op 0.88
shuffle list - 250000 els 155.30 ms/op 165.46 ms/op 0.94
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 358.63 us/op 551.06 us/op 0.65
pass gossip attestations to forkchoice per slot 3.0774 ms/op 3.8758 ms/op 0.79
computeDeltas 3.5600 ms/op 4.0405 ms/op 0.88
computeProposerBoostScoreFromBalances 479.57 us/op 546.99 us/op 0.88
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.2050 ms/op 1.8759 ms/op 1.18
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 77.878 us/op 89.013 us/op 0.87
BLS verify - blst-native 1.8641 ms/op 2.0382 ms/op 0.91
BLS verifyMultipleSignatures 3 - blst-native 3.8028 ms/op 4.5719 ms/op 0.83
BLS verifyMultipleSignatures 8 - blst-native 8.1861 ms/op 8.9020 ms/op 0.92
BLS verifyMultipleSignatures 32 - blst-native 29.666 ms/op 31.587 ms/op 0.94
BLS aggregatePubkeys 32 - blst-native 39.246 us/op 43.155 us/op 0.91
BLS aggregatePubkeys 128 - blst-native 153.67 us/op 163.35 us/op 0.94
getAttestationsForBlock 64.012 ms/op 71.065 ms/op 0.90
CheckpointStateCache - add get delete 9.5840 us/op 12.388 us/op 0.77
validate gossip signedAggregateAndProof - struct 3.7429 ms/op 4.7016 ms/op 0.80
validate gossip attestation - struct 1.7841 ms/op 2.3457 ms/op 0.76
altair verifyImport mainnet_s3766816:31 5.9580 s/op 6.7936 s/op 0.88
pickEth1Vote - no votes 2.2314 ms/op 2.4333 ms/op 0.92
pickEth1Vote - max votes 26.637 ms/op 25.587 ms/op 1.04
pickEth1Vote - Eth1Data hashTreeRoot value x2048 12.072 ms/op 13.822 ms/op 0.87
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 22.560 ms/op 24.776 ms/op 0.91
pickEth1Vote - Eth1Data fastSerialize value x2048 1.4968 ms/op 2.0202 ms/op 0.74
pickEth1Vote - Eth1Data fastSerialize tree x2048 18.485 ms/op 18.293 ms/op 1.01
bytes32 toHexString 906.00 ns/op 1.0790 us/op 0.84
bytes32 Buffer.toString(hex) 615.00 ns/op 715.00 ns/op 0.86
bytes32 Buffer.toString(hex) from Uint8Array 832.00 ns/op 897.00 ns/op 0.93
bytes32 Buffer.toString(hex) + 0x 598.00 ns/op 715.00 ns/op 0.84
Object access 1 prop 0.30100 ns/op 0.36700 ns/op 0.82
Map access 1 prop 0.25700 ns/op 0.30900 ns/op 0.83
Object get x1000 15.587 ns/op 18.107 ns/op 0.86
Map get x1000 0.90800 ns/op 1.0670 ns/op 0.85
Object set x1000 109.26 ns/op 119.81 ns/op 0.91
Map set x1000 66.827 ns/op 75.029 ns/op 0.89
Return object 10000 times 0.32930 ns/op 0.41060 ns/op 0.80
Throw Error 10000 times 5.2431 us/op 6.2273 us/op 0.84
enrSubnets - fastDeserialize 64 bits 2.5520 us/op 2.8930 us/op 0.88
enrSubnets - ssz BitVector 64 bits 686.00 ns/op 785.00 ns/op 0.87
enrSubnets - fastDeserialize 4 bits 364.00 ns/op 430.00 ns/op 0.85
enrSubnets - ssz BitVector 4 bits 691.00 ns/op 801.00 ns/op 0.86
prioritizePeers score -10:0 att 32-0.1 sync 2-0 82.482 us/op 100.61 us/op 0.82
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 120.83 us/op 139.84 us/op 0.86
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 203.50 us/op 214.84 us/op 0.95
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 352.48 us/op 459.95 us/op 0.77
prioritizePeers score 0:0 att 64-1 sync 4-1 417.93 us/op 474.20 us/op 0.88
RateTracker 1000000 limit, 1 obj count per request 164.71 ns/op 198.17 ns/op 0.83
RateTracker 1000000 limit, 2 obj count per request 122.70 ns/op 143.69 ns/op 0.85
RateTracker 1000000 limit, 4 obj count per request 101.70 ns/op 114.48 ns/op 0.89
RateTracker 1000000 limit, 8 obj count per request 90.761 ns/op 108.98 ns/op 0.83
RateTracker with prune 4.0440 us/op 4.7590 us/op 0.85
array of 16000 items push then shift 2.7246 us/op 3.4547 us/op 0.79
LinkedList of 16000 items push then shift 26.475 ns/op 24.209 ns/op 1.09
array of 16000 items push then pop 225.48 ns/op 241.59 ns/op 0.93
LinkedList of 16000 items push then pop 20.827 ns/op 21.982 ns/op 0.95
array of 24000 items push then shift 3.9916 us/op 5.2682 us/op 0.76
LinkedList of 24000 items push then shift 26.891 ns/op 24.974 ns/op 1.08
array of 24000 items push then pop 180.32 ns/op 218.83 ns/op 0.82
LinkedList of 24000 items push then pop 20.418 ns/op 20.732 ns/op 0.98
intersect bitArray bitLen 8 9.1280 ns/op
intersect array and set length 8 146.76 ns/op
intersect bitArray bitLen 128 44.661 ns/op
intersect array and set length 128 1.9805 us/op

by benchmarkbot/action

@twoeths
Copy link
Contributor

twoeths commented May 18, 2022

The idea is great, not sure why getAttestationsForBlock() benchmark test (78ms/op) is worse than master (60ms/op) @dapplion , does it matter?

@dapplion
Copy link
Contributor Author

not sure why getAttestationsForBlock() benchmark test (78ms/op) is worse than master (60ms/op) @dapplion , does it matter?

Benchmarks in CI are very unstable, 60 -> 78 unless observed multiple times locally is inconclusive. Happy to merge your branch tho if you believe it's a worthwhile improvement

@twoeths
Copy link
Contributor

twoeths commented May 19, 2022

not sure why getAttestationsForBlock() benchmark test (78ms/op) is worse than master (60ms/op) @dapplion , does it matter?

Benchmarks in CI are very unstable, 60 -> 78 unless observed multiple times locally is inconclusive. Happy to merge your branch tho if you believe it's a worthwhile improvement

that's actually not a worthwhile improvement, we'll likely have less AggregateAndProof gossip messages thanks to #4019, we can consider that PR if this place becomes a bottle neck

@twoeths twoeths merged commit 2535f40 into master May 19, 2022
@twoeths twoeths deleted the dapplion/oppool-aggregate-bitarray2 branch May 19, 2022 03:42
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