* feat: add system config consensus to deprecate poa
* fix: check extra field lens
* Finish implementation with one signer only
* Implement unit tests
* Only check signature if block not requested
* Remove Extra from rlp encoding (and hashing)
* Implement UpgradableEngine as middleware for Clique/SystemContract
* Use isEuclid, add json tag to Requested, make go idiomatic
* Changes post integration test
* Remove comment
* Address comments
* Merge
* New field BlockSignature (not used in hashing/JSON)
* Enforce .Extra to be an empty slice
* replace header.Requested for header.IsNewBlock
* mark new block as IsNewBlock
* Make new RLP optional fields always default for legacy/reth compatibility
* Placing new fields as last non-zero rlp:optional values used by Scroll
* Penalize nodes that send non-zero Euclid V2 header field values
* Bring back .Requested to downloader instead of .IsNewBlock
* Replace IsNewBlock for Requested
* Address comments
* merge
* prevent timing issues in tests
* fix ci
* chore: auto version bump [bot]
* Update consensus/system_contract/consensus.go
Co-authored-by: Morty <70688412+yiweichi@users.noreply.github.com>
* chore: auto version bump [bot]
* Update consensus/system_contract/consensus.go
Co-authored-by: Jonas Theis <4181434+jonastheis@users.noreply.github.com>
* Remove whitespaces and merge version number
* chore: auto version bump [bot]
* validate that the read address from L1 is not empty and improved error handling when fetching address
* Fix indentation issue
* Fix test
* goimports fix
* goimports
---------
Co-authored-by: Alejandro Ranchal-Pedrosa <a.ranchalpedrosa@gmail.com>
Co-authored-by: jonastheis <4181434+jonastheis@users.noreply.github.com>
Co-authored-by: jonastheis <jonastheis@users.noreply.github.com>
Co-authored-by: ranchalp <ranchalp@users.noreply.github.com>
Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
* port changes from #1013
* port changes from #1068
* go.mod tidy
* fix compile error
* fix goimports
* fix log
* address review comments
* upgrade golang.org/x/net to 0.23.0
* port changes from #1018
* fix tests and linter errors
* address review comments
* refactor rollup sync service / verifier to use CalldataBlobSource to retrieve data from L1
* add configuration and initialize blob clients
* fix unit tests
* remove unused code
* address review comments
* address more review comments
* implement first version of new da-codec and to handle multiple batches submitted in one transaction
* add CommitBatchDAV7 and handle multiple commit events submitted in a single transactions
* fix bug due to previous batch being empty when processing the first batch within a set of batches
* Allow using MPT
* update to latest da-codec
* add field to CommittedBatchMeta to store LastL1MessageQueueHash for CodecV7 batches
* adjust rollup verifier to support CodecV7 batches
* address review comments
* fix issues after merge
* go mod tidy
* fix unit tests
* update da-codec
* add test TestValidateBatchCodecV7
* go mod tidy
* do not log error on shutdown
* add sanity check for version to deserialization of committedBatchMetaV7
* port changes from #1073
* chore: auto version bump [bot]
* address review comments
* add more logs
* disable ENRUpdater if DA sync mode is enabled
* exit pipeline if context is cancelled
* correctly handle override by setting the head of the chain to the parent's height so that created blocks will always become part of canonical chain
* fix error with genesis event being nil
* rebase #1087 to new base branch
* chore: auto version bump [bot]
---------
Co-authored-by: Ömer Faruk Irmak <omerfirmak@gmail.com>
Co-authored-by: Thegaram <Thegaram@users.noreply.github.com>
Co-authored-by: jonastheis <jonastheis@users.noreply.github.com>
Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
* port changes from #1013
* port changes from #1068
* go.mod tidy
* fix compile error
* fix goimports
* fix log
* address review comments
* upgrade golang.org/x/net to 0.23.0
* port changes from #1018
* fix tests and linter errors
* address review comments
* refactor rollup sync service / verifier to use CalldataBlobSource to retrieve data from L1
* add configuration and initialize blob clients
* fix unit tests
* remove unused code
* address review comments
* address more review comments
* implement first version of new da-codec and to handle multiple batches submitted in one transaction
* add CommitBatchDAV7 and handle multiple commit events submitted in a single transactions
* fix bug due to previous batch being empty when processing the first batch within a set of batches
* Allow using MPT
* update to latest da-codec
* add field to CommittedBatchMeta to store LastL1MessageQueueHash for CodecV7 batches
* adjust rollup verifier to support CodecV7 batches
* address review comments
* fix issues after merge
* go mod tidy
* fix unit tests
* update da-codec
* add test TestValidateBatchCodecV7
* go mod tidy
* do not log error on shutdown
* add sanity check for version to deserialization of committedBatchMetaV7
* port changes from #1073
* chore: auto version bump [bot]
* address review comments
* add more logs
* disable ENRUpdater if DA sync mode is enabled
* exit pipeline if context is cancelled
* correctly handle override by setting the head of the chain to the parent's height so that created blocks will always become part of canonical chain
* fix error with genesis event being nil
* chore: auto version bump [bot]
* chore: auto version bump [bot]
* goimports
---------
Co-authored-by: Ömer Faruk Irmak <omerfirmak@gmail.com>
Co-authored-by: Thegaram <Thegaram@users.noreply.github.com>
Co-authored-by: jonastheis <jonastheis@users.noreply.github.com>
Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
* port changes from #1013
* port changes from #1068
* go.mod tidy
* fix compile error
* fix goimports
* fix log
* address review comments
* upgrade golang.org/x/net to 0.23.0
* port changes from #1018
* fix tests and linter errors
* address review comments
* refactor rollup sync service / verifier to use CalldataBlobSource to retrieve data from L1
* add configuration and initialize blob clients
* fix unit tests
* remove unused code
* address review comments
* address more review comments
* Allow using MPT
* fix issues after merge
* bump version
---------
Co-authored-by: Ömer Faruk Irmak <omerfirmak@gmail.com>
Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
* fix-async-ccc-print-whole-block-hash-and-tx-hash
* chore: auto version bump [bot]
* chore: auto version bump [bot]
---------
Co-authored-by: colinlyguo <colinlyguo@users.noreply.github.com>
* feat: allow changing L1 synced height via RPC/CLI
* chore: auto version bump [bot]
* fix typos
* add height validity check
* change implementation
* moved hotfix apis from ScrollAPI to PrivateAdminAPI
* change namespace from scroll to admin
* fix bugs
* add locks
* add a lock to protect latestProcessedBlock and db state
* revert some changes
* remove lock and use atomic in latestProcessedBlock
* fix CI
* tweak
* use cas in updating latestProcessedBlock
* renaming
* also update sync height in error paths
* fix a bug
* use mutex lock
---------
Co-authored-by: colinlyguo <colinlyguo@users.noreply.github.com>
Co-authored-by: colin <102356659+colinlyguo@users.noreply.github.com>
Co-authored-by: Zhang Zhuo <mycinbrin@gmail.com>
Co-authored-by: Xi Lin <zimpha@gmail.com>
* feat: enable ENRUpdater
* chore: auto version bump [bot]
* chore: auto version bump [bot]
* chore: auto version bump [bot]
---------
Co-authored-by: HAOYUatHZ <HAOYUatHZ@users.noreply.github.com>
* Implement functionality to reset gas price / suggested tip to minimal value when there's no congestion
* Add flags to configure congestion value and initialize gas price oracle accordingly
* Fix and add tests to make sure GPO works as expected depending on pre- or post-Curie (EIP 1559) upgrade
* Apply review suggestions
* chore: auto version bump [bot]
---------
Co-authored-by: omerfirmak <omerfirmak@users.noreply.github.com>
* feat: configure max block range for eth_getLogs (#521)
* configure max block range for eth_getLogs
* bump version
* address comments, add test
* set default value
* address comments
* fix golint
* Update cmd/utils/flags.go
Co-authored-by: colin <102356659+colinlyguo@users.noreply.github.com>
---------
Co-authored-by: colinlyguo <colinlyguo@scroll.io>
Co-authored-by: colin <102356659+colinlyguo@users.noreply.github.com>
* set dafault maxblockrange to -1 and fix nil pointer bug
* update version
* change error logic
* check for range in filter
* Update eth/ethconfig/config.go
Co-authored-by: colin <102356659+colinlyguo@users.noreply.github.com>
* adjust error message
* fix duplicate version
---------
Co-authored-by: colinlyguo <colinlyguo@scroll.io>
Co-authored-by: colin <102356659+colinlyguo@users.noreply.github.com>
Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
* configure max block range for eth_getLogs
* bump version
* address comments, add test
* set default value
* address comments
* fix golint
* Update cmd/utils/flags.go
Co-authored-by: colin <102356659+colinlyguo@users.noreply.github.com>
---------
Co-authored-by: colinlyguo <colinlyguo@scroll.io>
Co-authored-by: colin <102356659+colinlyguo@users.noreply.github.com>
* demo for witness generator
* add simple binary for witness generating
* revert the witgen utility
* purge some code
* induce mptwitness argument
* handle case for failed tx, and special block in POA
* mptwitness: refactor for enabling output ops with different order
* induce witness gen with rwtable order
* self-documenting options for mptwitness
* fix trace flag according to review
* fix issue in handling failed tx
* refactor
* update according to reviews
Co-authored-by: HAOYUatHZ <haoyu@protonmail.com>
This removes auto-configuration of the snap.*.ethdisco.net DNS discovery tree.
Since measurements have shown that > 75% of nodes in all.*.ethdisco.net support
snap, we have decided to retire the dedicated index for snap and just use the eth
tree instead.
The dial iterators of eth and snap now use the same DNS tree in the default configuration,
so both iterators should use the same DNS discovery client instance. This ensures that
the record cache and rate limit are shared. Records will not be requested multiple times.
While testing the change, I noticed that duplicate DNS requests do happen even
when the client instance is shared. This is because the two iterators request the tree
root, link tree root, and first levels of the tree in lockstep. To avoid this problem, the
change also adds a singleflight.Group instance in the client. When one iterator
attempts to resolve an entry which is already being resolved, the singleflight object
waits for the existing resolve call to finish and returns the entry to both places.
This change adds the --catalyst flag, enabling an RPC API for eth2 integration.
In this initial version, catalyst mode also disables all peer-to-peer networking.
Co-authored-by: Mikhail Kalinin <noblesse.knight@gmail.com>
Co-authored-by: Felix Lange <fjl@twurst.com>
The PR implements the --miner.notify.full flag that enables full pending block
notifications. When this flag is used, the block notifications sent to mining
endpoints contain the complete block header JSON instead of a work package
array.
Co-authored-by: AlexSSD7 <alexandersadovskyi7@protonmail.com>
Co-authored-by: Martin Holst Swende <martin@swende.se>
This PR prevents users from submitting transactions without EIP-155 enabled. This behaviour can be overridden by specifying the flag --rpc.allow-unprotected-txs=true.
This moves the eth config definition into a separate package, eth/ethconfig.
Packages eth and les can now import this common package instead of
importing eth from les, reducing dependencies.
Co-authored-by: Felix Lange <fjl@twurst.com>
During the snap and eth refactor, the net_version rpc call was falsely deprecated.
This restores the net_version RPC handler as most eth2 nodes and other software
depend on it.
This commit splits the eth package, separating the handling of eth and snap protocols. It also includes the capability to run snap sync (https://github.com/ethereum/devp2p/blob/master/caps/snap.md) , but does not enable it by default.
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
Co-authored-by: Martin Holst Swende <martin@swende.se>
This PR implements unclean shutdown marker. Every time geth boots, it adds a timestamp to a list of timestamps in the database. This list is capped at 10. At a clean shutdown, the timestamp is removed again.
Thus, when geth exits unclean, the marker remains, and at boot up we show the most recent unclean shutdowns to the user, which makes it easier to diagnose root-causes to certain problems.
Co-authored-by: Nagy Salem <me@muhnagy.com>