* eth, miner: remove duplicated code
* eth/catalyst: remove unneeded code
* miner: keep update pending state even the Merge is happened
* eth, miner: rebase
* miner: fix tests
* eth, miner: address comments from marius
* miner: use empty zero randomness for pending blocks after the merge
* eth/catalyst: gofmt
* miner: add warning log for state recovery
* miner: ignore uncles for post-merge blocks
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
* trie/proof: edge case for VerifyRangeProof
* more consistency with other tests in the file
* trie: fix test todo
Co-authored-by: Martin Holst Swende <martin@swende.se>
This replaces the sketchy and undocumented string context keys for HTTP requests
with a defined interface. Using string keys with context is discouraged because
they may clash with keys created by other packages.
We added these keys to make connection metadata available in the signer, so this
change also updates signer/core to use the new PeerInfo API.
* eth/catalyst: evict old payloads, type PayloadID
* eth/catalyst: added tracing info to engine api
* eth/catalyst: add test for create payload timestamps
* catalyst: better logs
* eth/catalyst: computePayloadId return style
* catalyst: add queue for payloads
* eth/catalyst: nitpicks
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
* offline block prune
* update
* update
* update and add unit test
* addressed comments from walt
* Addressed comments from walt and Igor
* ensure MPT and snapshot matched
* add one more parameter to indicate blockprune
* update the logic of creating freezerDb
* update flag command description
* expose the function for db inspect the offset/startBlockNumber
* add flags to inspect prune info
* rename flag of reserved-recent-blocks to block-amount-reserved
* addressed comments from walt
* handle the case of command interruption
* refined goimports
* addressed comments from walt
* change the logic as restarting prune after interruption
* addressed comments
* reclaimed freezer logic
* introduce flag to enable/disable check between MPT and snapshot
* update the logic of frozen field in freezerDB
* update the code in all places related to freezer change
* addressed comments from dylan
* update the logic for backup block difficulty
* addressed comments from dylan
* cmd/geth: add db cmd to show metadata
* cmd/geth: better output generator status
Co-authored-by: Sina Mahmoodi <1591639+s1na@users.noreply.github.com>
* cmd: minor
Co-authored-by: Sina Mahmoodi <1591639+s1na@users.noreply.github.com>
Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com>
* freezer: add readonly flag to table
* freezer: enforce readonly in table repair
* freezer: enforce readonly in newFreezer
* minor fix
* minor
* core/rawdb: test that writing during readonly fails
* rm unused log
* check readonly on batch append
* minor
* Revert "check readonly on batch append"
This reverts commit 2ddb5ec4ba7534bf6edbdfec158ea99a2eed5036.
* review fixes
* minor test refactor
* attempt at fixing windows issue
* add comment re windows sync issue
* k->kind
* open readonly db for genesis check
Co-authored-by: Martin Holst Swende <martin@swende.se>
Using curve P384 for encryption causes the error "ecies: shared key params
are too big". Also, readme.md says curve P384 should use AES192 not AES256.
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
* core: implement eip-4399 random opcode
* core: make vmconfig threadsafe
* core: miner: pass vmConfig by value not reference
* all: enable 4399 by Rules
* core: remove diff (f)
* tests: set proper difficulty (f)
* smaller diff (f)
* eth/catalyst: nit
* core: make RANDOM a pointer which is only set post-merge
* cmd/evm/internal/t8ntool: fix t8n tracing of 4399
* tests: set difficulty
* cmd/evm/internal/t8ntool: check that baserules are london before applying the merge chainrules
SyncProgress was modified in PR #23576 to add the fields reported for
snap sync. The PR also changed ethclient to use the SyncProgress struct
directly instead of wrapping it for hex-decoding. This broke the
SyncProgress method.
Fix it by putting back the custom wrapper. While here, also put back the
fast sync related fields because SyncProgress is stable API and thus
removing fields is not allowed.
Fixes#24180Fixes#24176
Fixes#24167
New behaviour is that the endpoint returns results only for available
blocks without returning an error when it doesn't find a block. Note we
skip any block after a non-existent block.
This adds a header fetch for every block in range (even if header
is not needed). Alternatively, we could do the check in every field's
resolver method to avoid this overhead.
* eth/tracers: implement debug.intermediateRoots (#23594)
This PR implements a new debug method, which I've talked briefly about to some other client developers. It allows the caller to obtain the intermediate state roots for a block (which might be either a canon block or a 'bad' block).
Signed-off-by: wenbiao <delweng@gmail.com>
* core, rpc: disable memory output by default in traces (#23558)
* core: cmd: invert disableMemory
* core: fix missed inversion
* cmd/evm: preserve Flags but change default value
* Apply suggestions from code review
Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Martin Holst Swende <martin@swende.se>
Signed-off-by: wenbiao <delweng@gmail.com>
* eth/tracers: abort evm execution when trace is aborted (#23580)
Signed-off-by: wenbiao <delweng@gmail.com>
* eth/tracers: avoid unsyncronized mutations on trie database (#23632)
This PR fixes an issue in traceChain, where the statedb Commit operation was performed asynchronously with dereference-operations agains the underlying trie.Database instance. Due to how the reference counting works within the trie database (where parent count is recursively updated when new parents are added), doing dereferencing in the middle of Commit can cause the refcount to become wrong, leading to an inconsistent state.
This was fixed by doing Commit/Deref from the same routine.
Signed-off-by: wenbiao <delweng@gmail.com>
* core,eth: call frame tracing (#23087)
This change introduces 2 new optional methods; `enter()` and `exit()` for js tracers, and makes `step()` optiona. The two new methods are invoked when entering and exiting a call frame (but not invoked for the outermost scope, which has it's own methods). Currently these are the data fields passed to each of them:
enter: type (opcode), from, to, input, gas, value
exit: output, gasUsed, error
The PR also comes with a re-write of the callTracer. As a backup we keep the previous tracing script under the name `callTracerLegacy`. Behaviour of both tracers are equivalent for the most part, although there are some small differences (improvements), where the new tracer is more correct / has more information.
Signed-off-by: wenbiao <delweng@gmail.com>
* eth/tracers: re-write of 4byte tracer using enter/exit (#23622)
* eth/tracers: add re-write of 4byte tracer using enter/exit
* eth/tracers: fix 4byte indent
Signed-off-by: wenbiao <delweng@gmail.com>
* eth/tracers: tx.BaseFee not implemented
Signed-off-by: wenbiao <delweng@gmail.com>
* eth/tracers: do the JSON serialization via .js to capture C faults
Signed-off-by: wenbiao <delweng@gmail.com>
* eth/tracers: fix callTracer fault handling (#23667)
* eth/tracers: fix calltracer fault handling
* eth/tracers: fix calltracer indentation
Signed-off-by: wenbiao <delweng@gmail.com>
* eth/tracers: invoke enter/exit on 0-value calls to inex accounts (#23828)
Signed-off-by: wenbiao <delweng@gmail.com>
* eth: make traceChain avoid OOM on long-running tracing (#23736)
This PR changes long-running chain tracing, so that it at some points releases the memory trie db, and switch over to a fresh disk-backed trie.
Signed-off-by: wenbiao <delweng@gmail.com>
* eth/tracers: expose contextual infos (block hash, tx hash, tx index)
Signed-off-by: wenbiao <wenbiao.zheng@ambergroup.io>
* eth/tracers: redefine Context
Signed-off-by: wenbiao <wenbiao.zheng@ambergroup.io>
* eth/tracers: support for golang tracers + add golang callTracer (#23708)
* eth/tracers: add basic native loader
* eth/tracers: add GetResult to tracer interface
* eth/tracers: add native call tracer
* eth/tracers: fix call tracer json result
* eth/tracers: minor fix
* eth/tracers: fix
* eth/tracers: fix benchTracer
* eth/tracers: test native call tracer
* eth/tracers: fix
* eth/tracers: rm extra make
Co-authored-by: Martin Holst Swende <martin@swende.se>
* eth/tracers: rm extra make
* eth/tracers: make callFrame private
* eth/tracers: clean-up and comments
* eth/tracers: add license
* eth/tracers: rework the model a bit
* eth/tracers: move tracecall tests to subpackage
* cmd/geth: load native tracers
* eth/tracers: minor fix
* eth/tracers: impl stop
* eth/tracers: add native noop tracer
* renamings
Co-authored-by: Martin Holst Swende <martin@swende.se>
* eth/tracers: more renamings
* eth/tracers: make jstracer non-exported, avoid cast
* eth/tracers, core/vm: rename vm.Tracer to vm.EVMLogger for clarity
* eth/tracers: minor comment fix
* eth/tracers/testing: lint nitpicks
* core,eth: cancel evm on nativecalltracer stop
* Revert "core,eth: cancel evm on nativecalltracer stop"
This reverts commit 01bb908790a369c1bb9d3937df9325c6857bf855.
* eth/tracers: linter nits
* eth/tracers: fix output on err
Co-authored-by: Martin Holst Swende <martin@swende.se>
Signed-off-by: wenbiao <wenbiao.zheng@ambergroup.io>
* eth/tracers: make native calltracer default (#23867)
Signed-off-by: wenbiao <wenbiao.zheng@ambergroup.io>
* eth/tracers: package restructuring (#23857)
* eth/tracers: restructure tracer package
* core/vm/runtime: load js tracers
* eth/tracers: mv bigint js code to own file
* eth/tracers: add method docs for native tracers
* eth/tracers: minor doc fix
* core,eth: cancel evm on nativecalltracer stop
* core/vm: fix failing test
Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com>
Signed-off-by: wenbiao <wenbiao.zheng@ambergroup.io>
* eth/tracers: ethapi.TransactionArgs was not merged
Signed-off-by: wenbiao <wenbiao.zheng@ambergroup.io>
* eth/tracers: fix the api_test with ErrInsufficientFunds to ErrInsufficientFundsForTransfer
Signed-off-by: wenbiao <wenbiao.zheng@ambergroup.io>
* eth/tracers: check posa before statedb.Prepare in IntermiateRoots api
Signed-off-by: wenbiao <wenbiao.zheng@ambergroup.io>
* eth/tracers: make js calltracer default, compatible with old version
Signed-off-by: wenbiao <wenbiao.zheng@ambergroup.io>
* eth/tracers: fix the default callTrace name of callTracerJs
Signed-off-by: wenbiao <wenbiao.zheng@ambergroup.io>
* Revert "eth/tracers: fix the default callTrace name of callTracerJs"
This reverts commit 62a3bc215d9f07e422a4c659289bb3ba4f9ed2fa.
Signed-off-by: wenbiao <wenbiao.zheng@ambergroup.io>
* Revert "eth/tracers: make js calltracer default, compatible with old version"
This reverts commit 85ef42c0ea651f0b228d4209b1b2598b24e12f1f.
Signed-off-by: wenbiao <wenbiao.zheng@ambergroup.io>
* eth/tracers: fix the variable race condition
Signed-off-by: wenbiao <wenbiao.zheng@ambergroup.io>
Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
Co-authored-by: Sina Mahmoodi <1591639+s1na@users.noreply.github.com>
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com>