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.go core: fix typo (#29438) 2024-04-08 13:02:56 +02: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
blockchain.go core/tracing: Add OnClose Trace Hook (#29629) 2024-04-24 07:54:59 +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
bloom_indexer.go core: preallocate batch size in bloomIndexer (#25289) 2022-08-03 17:02:09 +02:00
chain_indexer.go core,console: replace noarg fmt.Errorf with errors.New (#27332) 2023-05-25 08:24:09 -04:00
chain_indexer_test.go core: fix potential race in chainIndexerTest (#22346) 2021-03-19 13:32:57 +01:00
chain_makers.go core: add an end-to-end verkle test (#29262) 2024-03-26 21:25:41 +01:00
chain_makers_test.go params: use the same variable name as EIP-4788 (#29195) 2024-03-15 09:14:31 +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.go core: fix dev mode genesis difficulty (#29469) 2024-04-08 13:01:22 +02: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
headerchain.go core: remove bad block checks (#29609) 2024-04-22 20:00:42 +03:00
headerchain_test.go all: remove the dependency from trie to triedb (#28824) 2024-02-13 14:49:53 +01: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.go eth/tracers: live chain tracing with hooks (#29189) 2024-03-22 18:53:53 +01:00
state_processor_test.go core: add an end-to-end verkle test (#29262) 2024-03-26 21:25:41 +01:00
state_transition.go eth/tracers: live chain tracing with hooks (#29189) 2024-03-22 18:53:53 +01:00
txindexer.go core: cache transaction indexing tail in memory (#28908) 2024-02-06 10:44:42 +08:00
txindexer_test.go core: move genesis alloc types to core/types (#29003) 2024-02-16 19:05:33 +01:00
types.go core: use atomic type (#27011) 2023-03-30 06:53:32 -04:00