activate proof generation on fork + remove code dups
use go-verkle's post-state API to verify proofs (#262)
use prague as the verkle activation fork (#263)
upgrade to latest go-ipa
activate verkle transition in "miner" (#265)
fix: do not force cancunTime upon verkle activation
workaround: do not use root translation in replay
workaround: deactivate overlay transition for now
fixes from trying to get the devnet to work (#267)
this line was left out from the previous commit
upgrade to go-verkle with fixed newvalue serialization
fix: ensure point cache isn't nil in copy (#268)
fix: dependency cycle in tests (#269)
upgrade to latest go-verkle
fix: write trie preimage data to db (#274)
fix: zero-root in produced block + sync (#275)
upgrade go-ipa
fix build
fix typo
include review feedback
add switch to add proofs to blocks (#278)
add fee recipient to witness (#279)
touch all fields in withdrawal account header (#277)
Squash the main verkle PR ahead of rebase
don't call Bytes() in GetTreeKey (#137)
trie: avoid endianness conversion in GetTreeKey (#140)
* trie/utils: add concrete expected value in trie key generation test
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* mod: update to latest go-verkle
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* trie/utils: avoid endianness conversions
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* apply review changes & update to official go-verkle version
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
upgrade go-verkle to CoW version and get TestProcessVerkle to build (#138)
updating ci to use self-hosted machine (#143)
fix: storage offset in non-header group + reuse of value buffer (#145)
dedup call to ChunkifyCode, same as replay branch (#156)
* dedup call to ChunkifyCode, same as replay branch
* fix some linter issues
fix code offset in tree update (#157)
fix REVERT in state processor test execution (#158)
* fix code offset in tree update
* fix REVERT in test execution
save on key hashing: lump code size update with first code chunk group (#159)
fix code chunk key calculation and storage key calculation (#161)
* fix codeKey calculation
* Remove
* fix storageOffset
* fix the fix to the fix to the offset fix
* Remove copy/pasted, unused code in test
* fix linter
---------
Co-authored-by: Guillaume Ballet <3272758+gballet@users.noreply.github.com>
fix: infinite loop when calling extcodecopy on empty code (#151)
upgrade to latest go-verkle
fix: only update code in the tree if it's dirty (#174)
fix: read-touch the code size and Keccak of the origin (#175)
List of changes for converting a sepolia database (#182)
* naive conversion rebased on top of beverly hills
* changes for the sepolia shadow fork conversion
* fixes to please the linter
* fixes to please the linter
Unified point cache (#180)
* Unified point cache
* Use cache for Try*Account
* alter Trie interface to use caching for slots (#181)
* alter Trie interface to use caching for slots
* fix: use a lock to protect the point cache (#185)
* use fastest non-master go-verkle version & pull trie/Verkle.go changes to use new api (#184)
* mod: update to fastest go-verkle version today
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* trie/verkle: use new batch serialization api
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
---------
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
---------
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Ignacio Hagopian <jsign.uy@gmail.com>
* fix: TryDelete signature in unit tests
---------
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Ignacio Hagopian <jsign.uy@gmail.com>
trie/utils: fix potential overflow (#191)
* trie/utils: fix potential overflow
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* trie/utils: receive storage key as a byte slice
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* revert formatter changes
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* trie/utils: fix mod 256
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
---------
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
trie/utils: fix incorrect bigint assignment (#193)
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
upgrade precomp link to fix CI
fix: add missing code size&keccak leaves in empty accounts (#192)
fixes to use the latest go-verkle@master (#197)
* fixes to use the latest go-verkle@master
* linter fixes
* linter fixes for tests
* fix: use jsign's go-verkle fix
refactor: remove unused (*StateDB).GetXLittleEndian methods (#204)
fix gas accounting issue in state_processor_test.go (#207)
update go-verkle not to use StatelessNode anymore (#206)
* update go-verkle not to use StatelessNode anymore
* update go-verkle to latest
refactor: move verkle gas accounting to its own block in TransitionDB (#208)
fix a panic in deserializeVerkleProof if GetProofItems returns a nil ProofElements
use the cachingDB instead of a custom VerkleDB (#209)
* use the cachingDB instead of a custom VerkleDB
* fix stack trace in LES
remove holiman from CODEOWNERS as he gets too many emails
read from tree in state object if the snapshot is nil (#205)
add missing error checks for the root node type (#214)
implement OpenStorageTrie for verkle trees (#210)
* implement OpenStorageTrie for verkle trees
* add a few comments for future maintenance
* fix linter issue
fix: copy balance leaf to new buffer in TryGetAccount (#217)
implement some heretofore unimplemented iterator methods (#219)
params: move verkle params to their own file (#228)
fix: proper number of chunk evals (#215)
overlay transition (#244)
* overlay transition
Fix some bugs identified in the code review
Co-authored-by: Ignacio Hagopian <jsign.uy@gmail.com>
Include base -> overlay key-values migration logic (#199)
* mod: add go-verkle version with key-value migration new apis
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* core/stateprocessor: use constant for max number of migrated key-values
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* core: add base->overlay key-values migration logic
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* core: fix some compiler errors
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* trie: consider removing transition trie api in the future
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* mod: use latest go-verkle
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
---------
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
fix some unit tests errors
get convresion block from file
fix compilation issues
fix initialization issue in migrator
fix: changes needed to run the first 28 blocks
important sutff: fix the banner
fix: use nonce instead of balance in nonce leaf (#202)
fixes for performing the overlay transition (#203)
* fixes for performing the overlay transition
* fixes for the full replay
* fix: deletion-and-recreation of EoA
* fixes to replay 2M+ blocks
* upgrade to go-verkle@master
* fix: proper number of chunk evals
* rewrite conversion loop to fix known issues
changes to make replay work with the overlay method (#216)
* fixes for performing the overlay transition
fixes for the full replay
fix: deletion-and-recreation of EoA
fixes to replay 2M+ blocks
upgrade to go-verkle@master
fix: proper number of chunk evals
rewrite conversion loop to fix known issues
changes to make replay work with the overlay method
fixes to replay 2M+ blocks
update to latest go-verkle@master
* use a PBSS-like scheme for internal nodes (#221)
* use a PBSS-like scheme for internal nodes
* a couple of fixes coming from debugging replay
* fix: use an error to notify the transition tree that a deleted account was found in the overlay tree (#222)
* fixes for pbss replay (#227)
* fixes for pbss replay
* trie/verkle: use capped batch size (#229)
* trie/verkle: use capped batch size
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* trie/verkle: avoid path variable allocation per db.Put
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* don't keep more than 32 state root conversions in RAM (#230)
---------
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Guillaume Ballet <3272758+gballet@users.noreply.github.com>
* cleanup some code
* mod: update go-verkle
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* re-enable snapshot (#231)
* re-enable cancun block / snapshot (#226)
* clear storage conversion key upon translating account (#234)
* clear storage conversion key upon translating account
* mod: use latest go-verkle
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
---------
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Ignacio Hagopian <jsign.uy@gmail.com>
* fix: self-deadlock with translated root map mutex (#236)
* return compressed commitment as root commitment (#237)
---------
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Ignacio Hagopian <jsign.uy@gmail.com>
---------
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Ignacio Hagopian <jsign.uy@gmail.com>
---------
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Ignacio Hagopian <jsign.uy@gmail.com>
fix first panic in *TransitionTrie.Copy()
upgrade go-verkle to latest master
mod: update go-verkle (#239)
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
core: print state root every 100 blocks (#240)
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
fix: only Commit the account trie (#242)
fixes to get TestProcessVerkle to work with the overlay branch (#238)
* fixes to get TestProcessVerkle to work with the overlay branch
* fix all panics in verkle state processor test
* fix proof verification
move transition management to cachingDB
* fix: mark the verkle transition as started if it's ended without being started
* fix the verkle state processing test
* fix linter errors
* Add a function to clear verkle params for replay
* fix: handle TransitionTrie in OpenStorageTrie
* fix linter issue
* fix the deleted account error (#247)
* code cleanup (#248)
* fix: don't error on a missing conversion.txt (#249)
* Overlay Tree preimages exporting and usage (#246)
* export overlay preimages tool
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* use preimages flat file in overlay tree migration logic
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* cmd/geth: add --roothash to overlay tree preimage exporting command
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* cleanup
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* review feedback
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
---------
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* fix: reduce the PR footprint (#250)
* fix: don't fail when preimages.bin is missing (#251)
* fix: don't fail when preimages.bin is missing
* fix: don't open the preimages file when outside of transition
---------
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Ignacio Hagopian <jsign.uy@gmail.com>
review changes
remove replay-specific code
This fixes an issue where the withdrawal index was not calculated correctly
for multiple withdrawals in a single block.
Co-authored-by: Gary Rong <garyrong0905@gmail.com>
Co-authored-by: Felix Lange <fjl@twurst.com>
This change ports some changes from the main PBSS PR:
- get rid of callback function in `trie.Database.Commit` which is not required anymore
- rework the `nodeResolver` in `trie.Iterator` to make it compatible with multiple state scheme
- some other shallow changes in tests and typo-fixes
This change implements withdrawals as specified in EIP-4895.
Co-authored-by: lightclient@protonmail.com <lightclient@protonmail.com>
Co-authored-by: marioevz <marioevz@gmail.com>
Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Felix Lange <fjl@twurst.com>
This PR builds on #26299, but also updates the tests to the most recent version, which includes tests regarding TheMerge.
This change adds checks to the beacon consensus engine, making it more strict in validating the pre- and post-headers, and not relying on the caller to have already correctly sanitized the headers/blocks.
This PR introduces a node scheme abstraction. The interface is only implemented by `hashScheme` at the moment, but will be extended by `pathScheme` very soon.
Apart from that, a few changes are also included which is worth mentioning:
- port the changes in the stacktrie, tracking the path prefix of nodes during commit
- use ethdb.Database for constructing trie.Database. This is not necessary right now, but it is required for path-based used to open reverse diff freezer
This PR changes geth to read the eip1559 params from the chain config instead of the globals.
This way the parameters may be changed by forking the chain config code, without creating a large diff throughout the past and future usages of the parameters.
Co-authored-by: Martin Holst Swende <martin@swende.se>
* all: work for eth1/2 transtition
* consensus/beacon, eth: change beacon difficulty to 0
* eth: updates
* all: add terminalBlockDifficulty config, fix rebasing issues
* eth: implemented merge interop spec
* internal/ethapi: update to v1.0.0.alpha.2
This commit updates the code to the new spec, moving payloadId into
it's own object. It also fixes an issue with finalizing an empty blockhash.
It also properly sets the basefee
* all: sync polishes, other fixes + refactors
* core, eth: correct semantics for LeavePoW, EnterPoS
* core: fixed rebasing artifacts
* core: light: performance improvements
* core: use keyed field (f)
* core: eth: fix compilation issues + tests
* eth/catalyst: dbetter error codes
* all: move Merger to consensus/, remove reliance on it in bc
* all: renamed EnterPoS and LeavePoW to ReachTDD and FinalizePoS
* core: make mergelogs a function
* core: use InsertChain instead of InsertBlock
* les: drop merger from lightchain object
* consensus: add merger
* core: recoverAncestors in catalyst mode
* core: fix nitpick
* all: removed merger from beacon, use TTD, nitpicks
* consensus: eth: add docstring, removed unnecessary code duplication
* consensus/beacon: better comment
* all: easy to fix nitpicks by karalabe
* consensus/beacon: verify known headers to be sure
* core: comments
* core: eth: don't drop peers who advertise blocks, nitpicks
* core: never add beacon blocks to the future queue
* core: fixed nitpicks
* consensus/beacon: simplify IsTTDReached check
* consensus/beacon: correct IsTTDReached check
Co-authored-by: rjl493456442 <garyrong0905@gmail.com>
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
* accounts/abi/bind: fix bounded contracts and sim backend for 1559
* accounts/abi/bind, ethclient: don't rely on chain config for gas prices
* all: enable London for all internal tests
* les: get receipt type info in les tests
* les: fix weird test
Co-authored-by: Martin Holst Swende <martin@swende.se>
* internal/ethapi: add baseFee to RPCMarshalHeader
* internal/ethapi: add FeeCap, Tip and correct GasPrice to EIP-1559 RPCTransaction results
* core,eth,les,internal: add support for tip estimation in gas price oracle
* internal/ethapi,eth/gasprice: don't suggest tip larger than fee cap
* core/types,internal: use correct eip1559 terminology for json marshalling
* eth, internal/ethapi: fix rebase problems
* internal/ethapi: fix rpc name of basefee
* internal/ethapi: address review concerns
* core, eth, internal, les: simplify gasprice oracle (#25)
* core, eth, internal, les: simplify gasprice oracle
* eth/gasprice: fix typo
* internal/ethapi: minor tweak in tx args
* internal/ethapi: calculate basefee for pending block
* internal/ethapi: fix panic
* internal/ethapi, eth/tracers: simplify txargs ToMessage
* internal/ethapi: remove unused param
* core, eth, internal: fix regressions wrt effective gas price in the evm
* eth/gasprice: drop weird debug println
* internal/jsre/deps: hack in 1559 gas conversions into embedded web3
* internal/jsre/deps: hack basFee to decimal conversion
* internal/ethapi: init feecap and tipcap for legacy txs too
* eth, graphql, internal, les: fix gas price suggestion on all combos
* internal/jsre/deps: handle decimal tipcap and feecap
* eth, internal: minor review fixes
* graphql, internal: export max fee cap RPC endpoint
* internal/ethapi: fix crash in transaction_args
* internal/ethapi: minor refactor to make the code safer
Co-authored-by: Ryan Schneider <ryanleeschneider@gmail.com>
Co-authored-by: lightclient@protonmail.com <lightclient@protonmail.com>
Co-authored-by: gary rong <garyrong0905@gmail.com>
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
* core/types, miner: create TxWithMinerFee wrapper, add EIP-1559 support to TransactionsByMinerFeeAndNonce
miner: set base fee when creating a new header, handle gas limit, log miner fees
* all: rename to NewTransactionsByPriceAndNonce
* core/types, miner: rename to NewTransactionsByPriceAndNonce + EffectiveTip
miner: activate 1559 for testGenerateBlockAndImport tests
* core,miner: revert naming to TransactionsByPriceAndTime
* core/types/transaction: update effective tip calculation logic
* miner: update aleut to london
* core/types/transaction_test: use correct signer for 1559 txs + add back sender check
* miner/worker: calculate gas target from gas limit
* core, miner: fix block gas limits for 1559
Co-authored-by: Ansgar Dietrichs <adietrichs@gmail.com>
Co-authored-by: lightclient@protonmail.com <lightclient@protonmail.com>
This is the initial implementation of EIP-1559 in packages core/types and core.
Mining, RPC, etc. will be added in subsequent commits.
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
Co-authored-by: lightclient@protonmail.com <lightclient@protonmail.com>
Co-authored-by: Felix Lange <fjl@twurst.com>
This change introduces garbage collection for the light client. Historical
chain data is deleted periodically. If you want to disable the GC, use
the --light.nopruning flag.
* core: fix import errors on clique crashes + empty blocks
* cosensus/clique, core: add test for the mirrored state issue
* core: address todo question wrt log count
* core: raise a louder warning for non-clique known blocks
* core: speed up GenerateChain
Use a mock implementation of ChainReader instead of creating
and destroying a BlockChain object for each generated block.
* eth/downloader: speed up tests by generating chain only once
This change reworks the downloader tests so they share a common test
blockchain instead of generating a chain in every test. The tests are
roughly twice as fast now.
* cmd, consensus, core, miner: instatx clique for --dev
* cmd, consensus, clique: support configurable --dev block times
* cmd, core: allow --dev to use persistent storage too
This PR polishes the EIP 100 difficulty adjustment algorithm
to match the same mechanisms as the Homestead was implemented
to keep the code uniform. It also avoids a few memory allocs
by reusing big1 and big2, pulling it out of the common package
and into ethash.
The commit also fixes chain maker to forward the uncle hash
when creating a simulated chain (it wasn't needed until now
so we just skipped a copy there).
With this commit, core/state's access to the underlying key/value database is
mediated through an interface. Database errors are tracked in StateDB and
returned by CommitTo or the new Error method.
Motivation for this change: We can remove the light client's duplicated copy of
core/state. The light client now supports node iteration, so tracing and storage
enumeration can work with the light client (not implemented in this commit).