go-ethereum/core
Péter Szilágyi 4f4f9d88d3
core/state: storage journal entry should revert dirtyness too (#29641)
Currently our state journal tracks each storage update to a contract, having the ability to revert those changes to the previously set value.

For the very first modification however, it behaves a bit wonky. Reverting the update doesn't actually remove the dirty-ness of the slot, rather leaves it as "change this slot to it's original value". This can cause issues down the line with for example write witnesses needing to gather an unneeded proof.

This PR modifies the storageChange journal entry to not only track the previous value of a slot, but also whether there was any previous value at all set in the current execution context. In essence, the PR changes the semantic of storageChange so it does not simply track storage changes, rather it tracks dirty storage changes, an important distinction for being able to cleanly revert the journal item.
2024-04-24 17:45:24 +02:00
..
asm all: fix mismatched names in comments (#29348) 2024-03-26 21:01:28 +01:00
bloombits all: use timer instead of time.After in loops, to avoid memleaks (#29241) 2024-04-09 08:51:54 +02:00
forkid all: remove dependency on golang.org/exp (#29314) 2024-03-25 07:50:18 +01:00
rawdb all: fix various typos (#29542) 2024-04-16 15:44:00 +03:00
state core/state: storage journal entry should revert dirtyness too (#29641) 2024-04-24 17:45:24 +02:00
tracing core/tracing: Add OnClose Trace Hook (#29629) 2024-04-24 07:54:59 +02:00
txpool core/txpool: repair the limbo Billy too on unclean shutdowns (#29451) 2024-04-04 16:51:10 +03:00
types signer: implement blob txs sendtxargs, enable blobtx-signing (#28976) 2024-04-05 19:29:44 +02:00
vm core/state: remove account reset operation v2 (#29520) 2024-04-24 12:59:06 +03:00
.gitignore Renamed chain => core 2014-12-04 10:28:02 +01:00
bench_test.go core: move genesis alloc types to core/types (#29003) 2024-02-16 19:05:33 +01:00
block_validator_test.go consensus, cmd, core, eth: remove support for non-merge mode of operation (#29169) 2024-03-05 16:13:28 +02:00
block_validator.go core: fix typo (#29438) 2024-04-08 13:02:56 +02:00
blockchain_insert.go all: fix various typos (#29600) 2024-04-23 13:09:42 +03:00
blockchain_reader.go core: add txlookup lock (#29343) 2024-04-09 08:37:18 +02:00
blockchain_repair_test.go cmd: use package filepath over path for file system operations (#29227) 2024-03-12 10:00:34 +01:00
blockchain_sethead_test.go all: replace path.Join with filepath.Join (#29479) 2024-04-08 12:29:49 +03:00
blockchain_snapshot_test.go cmd: use package filepath over path for file system operations (#29227) 2024-03-12 10:00:34 +01:00
blockchain_test.go core: remove bad block checks (#29609) 2024-04-22 20:00:42 +03:00
blockchain.go core/tracing: Add OnClose Trace Hook (#29629) 2024-04-24 07:54:59 +02:00
bloom_indexer.go core: preallocate batch size in bloomIndexer (#25289) 2022-08-03 17:02:09 +02:00
chain_indexer_test.go core: fix potential race in chainIndexerTest (#22346) 2021-03-19 13:32:57 +01:00
chain_indexer.go core,console: replace noarg fmt.Errorf with errors.New (#27332) 2023-05-25 08:24:09 -04:00
chain_makers_test.go params: use the same variable name as EIP-4788 (#29195) 2024-03-15 09:14:31 +01:00
chain_makers.go core: add an end-to-end verkle test (#29262) 2024-03-26 21:25:41 +01:00
dao_test.go all: activate pbss as experimental feature (#26274) 2023-08-10 22:21:36 +03:00
error.go core: remove bad block checks (#29609) 2024-04-22 20:00:42 +03:00
events.go eth/filters: remove use of event.TypeMux for pending logs (#20312) 2019-12-10 12:39:14 +01:00
evm.go all: use big.Sign to compare with zero (#29490) 2024-04-09 12:14:30 +02:00
forkchoice.go core: clarify code in forkchoice (#26257) 2022-11-28 11:07:25 +01:00
gaspool.go core, miner: revert block gas counter in case of invalid transaction (#26799) 2023-03-07 05:23:52 -05:00
gen_genesis.go core: go fmt (#29544) 2024-04-16 15:42:16 +03:00
genesis_alloc.go cmd, core, params: add support for the Holesky testnet (#28007) 2023-08-25 18:11:40 +03:00
genesis_test.go core: move genesis alloc types to core/types (#29003) 2024-02-16 19:05:33 +01:00
genesis.go core: fix dev mode genesis difficulty (#29469) 2024-04-08 13:01:22 +02:00
headerchain_test.go all: remove the dependency from trie to triedb (#28824) 2024-02-13 14:49:53 +01:00
headerchain.go core: remove bad block checks (#29609) 2024-04-22 20:00:42 +03:00
mkalloc.go all: remove dependency on golang.org/exp (#29314) 2024-03-25 07:50:18 +01:00
rlp_test.go core: move genesis alloc types to core/types (#29003) 2024-02-16 19:05:33 +01:00
sender_cacher.go all: refactor txpool into it's own package in prep for 4844 2022-10-24 16:35:53 +03:00
state_prefetcher.go core/types, params: add blob transaction type, RLP encoded for now (#27049) 2023-04-21 12:52:02 +03:00
state_processor_test.go core: add an end-to-end verkle test (#29262) 2024-03-26 21:25:41 +01:00
state_processor.go eth/tracers: live chain tracing with hooks (#29189) 2024-03-22 18:53:53 +01:00
state_transition.go eth/tracers: live chain tracing with hooks (#29189) 2024-03-22 18:53:53 +01:00
txindexer_test.go core: move genesis alloc types to core/types (#29003) 2024-02-16 19:05:33 +01:00
txindexer.go core: cache transaction indexing tail in memory (#28908) 2024-02-06 10:44:42 +08:00
types.go core: use atomic type (#27011) 2023-03-30 06:53:32 -04:00