* Add epoch number and root in not a checkpt in forkchoice log
* Update beacon-chain/blockchain/process_attestation_helpers.go
Co-authored-by: Nishant Das <nishdas93@gmail.com>
* Fix test
* Fix typo
---------
Co-authored-by: Nishant Das <nishdas93@gmail.com>
* Minor typos and spelling fixes (comments, logs, & docs only, no code changes)
* Fix seplling in log message
* Additional spelling tweaks based on review from @prestonvanloon
* Pre-populate bls pubkey cache as part of state gen's Resume function. This adds some helpers and a benchmark to blst
* Do it async
* fix missing import
* lint
---------
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
Co-authored-by: rauljordan <raul@prysmaticlabs.com>
* block all the sync startup code on init signal
* don't need chainStarted if everything blocks
* set empty clock by default to work around panics
* remove unused clock, zero-value for init-sync
---------
Co-authored-by: Kasey Kirkham <kasey@users.noreply.github.com>
Co-authored-by: Nishant Das <nishdas93@gmail.com>
* refactor initialization to blocking startup method
* require genesisSetter in blockchain, fix tests
* work-around gazelle weirdness
* fix dep gazelle ignores
* only call SetGenesis once
* fix typo
* validator test setup and fix to return right error
* move waitForChainStart to Start
* wire up sync Service.genesisWaiter
* fix p2p genesisWaiter plumbing
* remove extra clock type, integrate into genesis
and rename
* use time.Now when no Nower is specified
* remove unused ClockSetter
* simplify rpc context checking
* fix typo
* use clock everywhere in sync; [32]byte val root
* don't use DeepEqual to compare [32]byte and []byte
* don't use clock in init sync, not wired up yet
* use clock waiter in blockchain as well
* use cancelable contexts in tests with goroutines
* missed a reference to WithClockSetter
* Update beacon-chain/startup/genesis.go
Co-authored-by: Radosław Kapka <rkapka@wp.pl>
* Update beacon-chain/blockchain/service_test.go
Co-authored-by: Radosław Kapka <rkapka@wp.pl>
* more clear docs
* doc for NewClock
* move clock typedef to more logical file name
* adding documentation
* gaz
* fixes for capella
* reducing test raciness
* fix races in committee cache tests
* lint
* add tests on Duration slot math helper
* startup package test coverage
* fix bad merge
* set non-zero genesis time in tests that call Start
* happy deepsource, happy me-epsource
* replace Synced event with channel
* remove unused error
* remove accidental wip commit
* gaz!
* remove unused event constants
* remove sync statefeed subscription to fix deadlock
* remove state notifier
* fix build
---------
Co-authored-by: Kasey Kirkham <kasey@users.noreply.github.com>
Co-authored-by: Radosław Kapka <rkapka@wp.pl>
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
Co-authored-by: nisdas <nishdas93@gmail.com>
* Proposer builds block in parallel. Cosensus vs Execution
* Update beacon-chain/rpc/prysm/v1alpha1/validator/proposer.go
Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com>
* Use feature flag
---------
Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com>
* Enable nilerr linter & fix findings
* Deal with other findings
* Fix another finding that I missed somehow
* Fix another another issue
Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com>
* Update tests to expect error
---------
Co-authored-by: Radosław Kapka <rkapka@wp.pl>
Co-authored-by: terencechain <terence@prysmaticlabs.com>
Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com>
* fix slashing checks
* fix to make it more performant
* gaz
* fix up
* potuz's comment
* potuz's comment
* fix cache
* change index in test for better case
* gaz
---------
Co-authored-by: Potuz <potuz@prysmaticlabs.com>
* Correctly use Gwei to compare builder bid value
* Minimal 1gwei for TestProduceBlindedBlock
---------
Co-authored-by: terence tsao <terence@prysmaticlabs.com>
* prysmctl using the same genesis func as e2e
* add whitespace to genesis.json for readability
* fix typo in fork name
* don't require validator count if deposits given
* add gosec exception
* the other nosec :(
* appease deepsource
* fix comments on renamed public value/func
---------
Co-authored-by: kasey <kasey@users.noreply.github.com>
* Add prepare-all-payloads flag
* add unit tests
* do not use the nsc
---------
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* adding fix for buildervalue nil
* fixing linting
* changing based on review comment
* editing based on suggestions
* fixing unit test
* fixing linting
* fall back to local
* fix linting
* updating based on slack feedback
* refactor next slot cache
* fix test
* rename function
* fix spectests
* remove TODO comments
---------
Co-authored-by: Nishant Das <nishdas93@gmail.com>
* Add builder bid fraction to compare with local block value and use builder bid if (bid * fraction) > local block value
* Prioritize local block construction over relay/builder block construction using a boost value for local block construction
* Refactor builder and local block value calculation to use percentage comparison
* Add a test for local with boost
* Use uint64
* Fix log
* With attribute, use justified hash as safe block hash
* Use UnrealizedJustifiedPayloadBlockHash
* Cleanups
* Add test to forkchoice
* Block proposal
* Fix mock
* Fix test
* Fix rest of the tests
* Potuz feedback
* Fix test
* Use unrealized justified hash for regular fcu
* initial impl
* review feedback
* fix tests
* review feedback
* some improvements
* tests and small improvements
* gzl
* one more review
* fix test
* fix other test
* get the roots instead of hashing them
* fix comment
* fix justified case
* fix all tests
* misc
* gzl
* fix broken tests
* use isOptimisticForRoot once we have the blockroot
* Fix is_not_finalized_when_head_is_optimistic but reviewing the logic first
* Fix is_not_finalized_when_head_is_optimistic
* better root tests
* move optimistic check before parsing root
* check for last validated checkpoint
* add right check for finalized
* fix finalized tests
* removed impossible condition
* fix TestGetSyncCommitteeDuties
* Use Ancestor from chaininfo
* fix test
---------
Co-authored-by: Potuz <potuz@prysmaticlabs.com>
Co-authored-by: Nishant Das <nishdas93@gmail.com>
Co-authored-by: rauljordan <raul@prysmaticlabs.com>
Co-authored-by: terence tsao <terence@prysmaticlabs.com>
* fixing typo on casing
* WIP get missed slot
* missed in commit
* reverting changes onfeedback
* reverting bazel
* using the current or head slots for events
* fixing linting
* use emitSlot
* fixing time and preRando change
* updating based on feedback
* fixing linting
* clarifying variable
* removing useless if statement
* fixing function to use the current slot+1
* updating based on feedback
* fixing unit tests
* missed dependency injection
* fixing linting
* forkchoice changes
* gazelle
* remove best justified from forkchoice dump
* keep protobufs and update comment
* remove phase0 tests
* bumb spectests version
* missing sha
* Fix sha256 for spec
* rpc tests
* Mark field 3 as reserved so it will never be used it again
---------
Co-authored-by: terence tsao <terence@prysmaticlabs.com>
Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com>
* removing duplicate function
* moved markInclusion for bls to use headblock instead of processed block
* updating based on internal feedback
* addressing some comments
* addressing feedback from slack
* fixing conflict
* making changes based on suggestions on slack
* reverting a change
* making chases based on potuz's comments
* removing one additional block copy
* clarifying comments
* Minor cleanups from eip4844 branch
* Add back handler
* Fix gazelle
* More fixes
* More fixes
---------
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* go.mod: set a non-zero version for tx-fuzz
* go.mod: use upstream tx-fuzz instead of fork
* run gazelle
* fix tests
---------
Co-authored-by: nisdas <nishdas93@gmail.com>
Co-authored-by: Preston Van Loon <pvanloon@offchainlabs.com>
* Regenerate cross-toolchain configs
* Remove some extra whitespaces
* Run gazelle and add that note to the README
* Format numbered lists better in markdown
* gcloud docker command is deprecated, just use docker
* Add comment about docker credentials for gcr.io
* Update dockerfile, some remote executor config work
* gazelle
* Remove commented lines
---------
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Use Epoch boundary cache to retrieve balances
* save boundary states before inserting to forkchoice
* move up last block save
* remove boundary checks on balances
* fix ordering
---------
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Raise the max grpc message size to a very large value by default
* unused import
---------
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* write locks
* fix forkchoice tests
* blockchain locks
* lock on IsOptimistic
* use forkchoice instead of chaininfo within savehead
* Use forkchoice HasNode to check if a block is consistent with finality
* interface fix
* Use forkchoice HasNode to check if a block is consistent with finality
* interface fix
* fix tests
* remove VerifyFinalizedBlkDescendant
* don't write lock wrappers
* fix validateBeaconBlock
* Terence's review and more missing locks
* add lock for InForkChoice
* lock head on fillMissingBlockPayload
* fix lock on IsOptimisticForRoot
* fix lock in fillMissingBlockPayloadId
* extra comments
* lock proposerBoost on spectests
* nishant's review
---------
Co-authored-by: Nishant Das <nishdas93@gmail.com>
* Use forkchoice HasNode to check if a block is consistent with finality
* interface fix
* fix tests
* remove VerifyFinalizedBlkDescendant
* fix validateBeaconBlock
* Update head before block proposal
* Fix first bellatrix block when using mev-boost
---------
Co-authored-by: Nishant Das <nishdas93@gmail.com>
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Implement should_override_forchoice_update
* add tests
* remove unused exported function
* go mod tidy
* fix go mod
* Fix go mod tidy
* Fix context import
* mod tidy
* fix test
* Terence's review
* fix test
---------
Co-authored-by: terence tsao <terence@prysmaticlabs.com>
* Proposer use highest value payload vs header
* Default to interface for changes
* Clean up
* Clean up
* Clean up
* Capella condition
* Proposer compare withdrawal roots
* Add unit test
* Fix test
---------
Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Update head before block proposal
* Move before opt sync
* Fix test
---------
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Aditya's PR 18
This PR implements PR18. There is still a missing piece which is
consistency of head with finalized checkpoint. I will think on ways to
enforce this.
* prune finalized incompatible
* don't check finalization on viable for head
* unit tests fixes
* gazelle
* remove finalized epoch from viableForHead
* remove finalized epoch from leadsToViableHead
* use non-slashed indices
* function rename
* lint fixes
* lint fixes
* lint fixes
* add balance cache tests to testsuite
* reuse code from stategen in the justified balance cache
* remove state getters from the balance cache
* fix unit tests
* rebase on 11962
* unused error
---------
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* delete from s.nodeByPayload as well when pruneFinalizedNodeByRootMap
* regresstion test
* add different payload node
---------
Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>
Co-authored-by: Radosław Kapka <rkapka@wp.pl>
* Use copied head state
* Move metrics to the end
---------
Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Cycle the BLS changes pool when falling below a threshold
* move cycle logic within pool
* set threshold at 2000
* fix conflict
* more fixes
---------
Co-authored-by: kasey <489222+kasey@users.noreply.github.com>
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Use correct attribute if there's a payload ID cache miss
* Test
* Default case unknown state version
Co-authored-by: Potuz <potuz@prysmaticlabs.com>
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* fixing bug and adding unit test
* reverting small change
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Do not check headstate being Capella for BLS changes on gossip
* fix test
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Do not log an overflow computing Capella's slot start
* nishant's review
Co-authored-by: Nishant Das <nishdas93@gmail.com>
Co-authored-by: Nishant Das <nishdas93@gmail.com>
* Sign BLS_TO_EXECUTION_CHANGES with GENESIS_FORK_VERSION
* update spectests
* extra blank line
* fix consensus_specs_sha
* get rid of LightClients tests
* fix unit tests
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* remove ShardingForkVersion/Epoch from config
* update magic value counting config params
* skip the sharding params, which we disavow
we wanted to remove these upstream and may well do some day but right
now it's too big of a mess to untangle.
Co-authored-by: Kasey Kirkham <kasey@users.noreply.github.com>
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* capella state version detection bug fix
* add capella to yaml "template"
* changes for capella state detection
* lint
* don't set capella fork version == altair!!!
* less brittle test for fork schedule rpc
* fix assertions that use wrong field name
* don't test capella/sharding fv against upstream
* hat tip Terence for sanity check
* Update config/params/loader_test.go
Co-authored-by: terencechain <terence@prysmaticlabs.com>
Co-authored-by: Kasey Kirkham <kasey@users.noreply.github.com>
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
Co-authored-by: terencechain <terence@prysmaticlabs.com>
* Better version checks for future proof
* Revert changes for blob
* Use if else
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Track head slot through head block
* Update beacon-chain/blockchain/head.go
Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com>
Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com>
In the event we receive a BLS_TO_EXECUTION_CHANGE and our head state is
before Capella, verify it's signature with the Capella fork version.
Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>
* e2e using dynamic configs; runtime bellatrix setup
* starts from phase0 but fee recipient eval fails
* lower TTD to cross before bellatrix epoch in e2e
* fix debug printf
* fix it
* dynamic ttd and more robust fee_recipient eval
* let multiplication set ttd=0 if bellatrix epoch=0
* refactoring fee recipient test after cognit errors
* lint
* appease deepsource
* deep sourcin
* gazelle
* missed a usage of this when refactoring
* refactoring premine genesis to work for all forks
previous set of functions was a copypasta mess
* gaz post-merge
* gaz
* resolve merge artifact and pr feedback
* back out some unneeded changes
* appease deepsource
* move premine-state next to similar utils
Co-authored-by: Kasey Kirkham <kasey@users.noreply.github.com>
Co-authored-by: nisdas <nishdas93@gmail.com>
* e2e using dynamic configs; runtime bellatrix setup
* starts from phase0 but fee recipient eval fails
* lower TTD to cross before bellatrix epoch in e2e
* fix debug printf
* fix it
* dynamic ttd and more robust fee_recipient eval
* let multiplication set ttd=0 if bellatrix epoch=0
* refactoring fee recipient test after cognit errors
* lint
* appease deepsource
* deep sourcin
* gazelle
* missed a usage of this when refactoring
Co-authored-by: Kasey Kirkham <kasey@users.noreply.github.com>
Co-authored-by: nisdas <nishdas93@gmail.com>
* Identify invalid signature within batch verification (#11582)
* Fix issues found by linter
* Make deepsource happy
* Add signature description enums
* Make descriptions a mandatory field
* More readable error message of invalid signatures
* Add 'enable-verbose-sig-verification' option
* Fix format
* Move descriptions to package signing
* Add more validation and test cases
* Fix build failure
Co-authored-by: Nishant Das <nishdas93@gmail.com>
* Improve tests for `ProduceBlockV2`
* Revert "Auxiliary commit to revert individual files from 31c606198bdc91bac798b7a446d04d5cce86dad7"
This reverts commit d8b264457168f8f5e03d0473288a56606e38ab39.
* WIP trying to start from bellatrix state
* env var to control log path with unique paths
due to flaky test re-run behavior, logs from a failed test run are
overwritten by subsequent retries. This makes it difficult to retrieve
logs after the first failed run. It also takes some squinting through
output to find the location of the log file in the first place. This
flag enables logs to be placed in an arbitrary path. Note that bazel
sandboxing generally will force this path to be in the /tmp tree.
* WIP - grabbing changes from rm-pre-genesis branch
* combine bellatrix state w/ rm-pre-genesis branch
* WIP
* use encoding/detect for genesis state bytes
* WIP more fixes towards start from bellatrix
* remove debug wrapping
* WIP
* multiple bugfixes
* fix fork ordering bug and bellatrix genesis blocks
* send deposits, spam tx to advance, fix miner alloc
* WIP
* WIP mess
* WIP
* Print process ID information for purposes of attaching a debugger
* bugs: genesis body_root and deposit index mismatch
* fix voting period start, skip altair check
* add changes
* make it better
* rm startup FCU, rm logs
* cleanup import grouping&ordering
* restore FCU log, get rid of tmp var
* rm newline
* restore newline
* restore wrapped error
* rm newline
* removing boot node version override
this doesn't seem to matter?
* add issue number to todo comment
* rm commented code
* rm vmdebug geth flag
* unexport values only used with genesis test pkg
and add comments where missing from exported values.
* adding comments to special cases for testnets
* migrate comments from PR to actual code :)
* rm unused test param
* mark e2e spawns exempt from gosec warning
* Fix DeepSource errors in `proposer_bellatrix.go` (#11739)
* Fix DeepSource errors in
* Omit receiver name
* Address PR comments
* Remove unused variable
* Fix more DeepSource errors
Co-authored-by: Radosław Kapka <rkapka@wp.pl>
* Remove `Test_IsExecutionEnabledCapella` (#11752)
Co-authored-by: Radosław Kapka <rkapka@wp.pl>
* Add REST implementation for Validator's `ProposeBeaconBlock` (#11731)
* WIP
* WIP
* WIP
* Add tests
* WIP
* Add more tests
* Address DeepSource errors
* Remove unused param
* Add more tests
* Address PR comments
* Address PR comments
* Fix formatting
* Remove unused parameter
* Fix TestLittleEndianBytesToBigInt
Co-authored-by: Radosław Kapka <rkapka@wp.pl>
* fix validator client (#11755)
* fix validator client
(cherry picked from commit deb138959a2ffcb89cd2e3eb8304477526f4a168)
* Use signed changes in middleware block
Co-authored-by: Potuz <potuz@prysmaticlabs.com>
* API `finalized` metadata field - update protos (#11749)
* API `finalized` metadata field - update protos
* change nums
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* log breaks unit tests that don't do full arg setup
easiest to just remove it for now
* restore prior behavior of phase0 block for altair
* update unit tests to account for special case
* loosen condition for fork version to match config
we don't know which fork version genesis will start from, so we
shouldn't force it to be a phase0 genesis.
* skip until we can mod configs at runtime
* NewGenesisBlockForState computes state root itself
* rm noisy log
* this log would be noisy in mainnet
* fix format specifier, []byte -> string
* core.Genesis UnmarshalJson has a value receiver :)
* no longer needs to be exported
Co-authored-by: Kasey Kirkham <kasey@users.noreply.github.com>
Co-authored-by: prestonvanloon <preston@prysmaticlabs.com>
Co-authored-by: nisdas <nishdas93@gmail.com>
Co-authored-by: Patrice Vignola <vignola.patrice@gmail.com>
Co-authored-by: Radosław Kapka <rkapka@wp.pl>
Co-authored-by: terencechain <terence@prysmaticlabs.com>
Co-authored-by: Potuz <potuz@prysmaticlabs.com>
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* fix validator client
(cherry picked from commit deb138959a2ffcb89cd2e3eb8304477526f4a168)
* Use signed changes in middleware block
Co-authored-by: Potuz <potuz@prysmaticlabs.com>
* fix it
* fix dialer for now
* fix build
* fix test
* fix to v0.24.0
* fix gaz
* fix build
Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com>