go-ethereum/core
Roberto Bayardo 67ac5f0ae7
core, core/types: plain Message struct (#25977)
Here, the core.Message interface turns into a plain struct and
types.Message gets removed.

This is a breaking change to packages core and core/types. While we do
not promise API stability for package core, we do for core/types. An
exception can be made for types.Message, since it doesn't have any
purpose apart from invoking the state transition in package core.
types.Message was also marked deprecated by the same commit it
got added in, 4dca5d4db7 (November 2016).

The core.Message interface was added in December 2014, in commit
db494170dc, for the purpose of 'testing' state transitions. It's the
same change that made transaction struct fields private. Before that,
the state transition used *types.Transaction directly.

Over time, multiple implementations of the interface accrued across
different packages, since constructing a Message is required whenever
one wants to invoke the state transition. These implementations all
looked very similar, a struct with private fields exposing the fields
as accessor methods.

By changing Message into a struct with public fields we can remove all
these useless interface implementations. It will also hopefully
simplify future changes to the type with less updates to apply across
all of go-ethereum when a field is added to Message.

---------

Co-authored-by: Felix Lange <fjl@twurst.com>
2023-03-09 14:19:12 +01:00
..
asm all: change format 0x%x to %#x (#25221) 2022-07-04 11:03:32 +03:00
bloombits all: remove deprecated uses of math.rand (#26710) 2023-02-16 14:36:58 -05:00
forkid core/forkid: fix issue in validation test (#26544) 2023-03-09 06:37:44 -05:00
rawdb core/rawdb: find smallest block stored in key-value store when chain gapped (#26719) 2023-03-08 02:39:13 -05:00
state all: use unified emptyRootHash and emptyCodeHash (#26718) 2023-02-21 06:12:27 -05:00
txpool all: change chain head markers from block to header (#26777) 2023-03-02 08:29:15 +02:00
types core, core/types: plain Message struct (#25977) 2023-03-09 14:19:12 +01:00
vm core/vm: fix typo in comment (#26838) 2023-03-09 04:39:17 -05:00
.gitignore Renamed chain => core 2014-12-04 10:28:02 +01:00
bench_test.go all: use unified emptyRootHash and emptyCodeHash (#26718) 2023-02-21 06:12:27 -05:00
block_validator_test.go tests: update tests (#26314) 2022-12-20 09:56:52 -05:00
block_validator.go core, eth/downloader: make body validation more strict (#26704) 2023-02-16 12:10:16 +02:00
blockchain_insert.go core: fix log order in "Imported new chain segment" (#25768) 2022-09-15 13:18:23 +02:00
blockchain_reader.go all: change chain head markers from block to header (#26777) 2023-03-02 08:29:15 +02:00
blockchain_repair_test.go all: change chain head markers from block to header (#26777) 2023-03-02 08:29:15 +02:00
blockchain_sethead_test.go all: change chain head markers from block to header (#26777) 2023-03-02 08:29:15 +02:00
blockchain_snapshot_test.go all: change chain head markers from block to header (#26777) 2023-03-02 08:29:15 +02:00
blockchain_test.go all: change chain head markers from block to header (#26777) 2023-03-02 08:29:15 +02:00
blockchain.go core/types: add EffectiveGasPrice in Receipt (#26713) 2023-03-06 17:19:41 +01:00
blocks.go core: typos and comments improve 2017-05-25 17:14:33 +03: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 all: make logs a bit easier on the eye to digest (#22665) 2021-04-15 20:35:00 +03:00
chain_makers_test.go core: fix a merge fault (#26802) 2023-03-03 12:11:39 +02:00
chain_makers.go core: improve withdrawal index assignment in GenerateChain (#26756) 2023-02-28 11:46:32 +01:00
dao_test.go all: change chain head markers from block to header (#26777) 2023-03-02 08:29:15 +02:00
error.go core/vm: implement EIP-3860: Limit and meter initcode (#23847) 2023-01-11 04:05:47 -05:00
events.go eth/filters: remove use of event.TypeMux for pending logs (#20312) 2019-12-10 12:39:14 +01:00
evm.go core, core/types: plain Message struct (#25977) 2023-03-09 14:19:12 +01: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_account.go tests: update for London (#22976) 2021-06-07 14:37:56 +02:00
gen_genesis.go core: change baseFee into baseFeePerGas in genesis json 2021-06-14 14:04:44 +02:00
genesis_alloc.go all: remove support for Ropsten (#26644) 2023-02-09 10:03:00 +02:00
genesis_test.go all: remove support for Ropsten (#26644) 2023-02-09 10:03:00 +02:00
genesis.go all: use unified emptyRootHash and emptyCodeHash (#26718) 2023-02-21 06:12:27 -05:00
headerchain_test.go core, eth, les, tests, trie: abstract node scheme (#25532) 2022-11-28 14:31:28 +01:00
headerchain.go core, eth: merge snap-sync chain download progress logs (#26676) 2023-02-21 12:17:34 +02:00
mkalloc.go build: upgrade to go 1.19 (#25726) 2022-09-10 13:25:40 +02:00
rlp_test.go all: cleanup tests (#25641) 2022-09-07 20:21:59 +02: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, core/types: plain Message struct (#25977) 2023-03-09 14:19:12 +01:00
state_processor_test.go all: use unified emptyRootHash and emptyCodeHash (#26718) 2023-02-21 06:12:27 -05:00
state_processor.go core, core/types: plain Message struct (#25977) 2023-03-09 14:19:12 +01:00
state_transition.go core, core/types: plain Message struct (#25977) 2023-03-09 14:19:12 +01:00
types.go core: prefetch next block state concurrently 2019-04-01 11:06:15 +03:00