go-ethereum/core
Arran Schlosberg d210cc4fce
refactor(core/types): simplify Body RLP override (#120)
## Why this should be merged

Simplification of `types.Body` RLP overriding, resulting in reduced code
at both the implementation and consumer ends.

## How this works

Introduction of `rlp.Fields` type, to mirror regular RLP encoding of a
struct. The RLP override hook now only needs to return the fields of
interest, which MAY come from either the `Body` or the registered extra.

This pattern allows for arbitrary modification of upstream fields via
(1) reordering; (2) addition; (3) deletion; and (4) inverting required
vs optional status. While less important for `Body`, this allows for
complete support of `ava-labs/coreth` `Header` modifications, which make
use of 1-3.

## How this was tested

Existing backwards-compatibility tests + new unit tests for introduced
functionality.

---------

Signed-off-by: Arran Schlosberg <519948+ARR4N@users.noreply.github.com>
Co-authored-by: Quentin McGaw <quentin.mcgaw@avalabs.org>
2025-02-07 15:42:25 +00:00
..
asm [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
bloombits [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
forkid [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
rawdb [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
state feat: types.HeaderHooks for RLP overrides (#89) 2024-12-17 13:54:58 +00:00
txpool [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
types refactor(core/types): simplify Body RLP override (#120) 2025-02-07 15:42:25 +00:00
vm refactor: PrecompileEnvironment.{,Use,Refund}Gas() in lieu of args (#73) 2024-12-18 13:54:51 +00:00
.gitignore Renamed chain => core 2014-12-04 10:28:02 +01:00
bench_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
block_validator.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
block_validator_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
blockchain.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
blockchain_insert.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
blockchain_reader.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
blockchain_repair_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
blockchain_sethead_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
blockchain_snapshot_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
blockchain_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
blocks.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
bloom_indexer.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
chain_indexer.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
chain_indexer_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
chain_makers.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
chain_makers_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
dao_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
error.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
events.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
evm.go Merge branch 'auto-rename-module_source-2bd6bd01d2e8561dd7fc21b631f4a34ac16627a1_workflow-c1fc594f020d23958b641a4e5a856b6e52c49d3bece94b95594864db16c1b0fc-main' into arr4n/rename-module 2024-10-17 13:07:28 +11:00
forkchoice.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00: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 refactor: generate internal Header.encodeRLP() for override (#86) 2024-12-11 10:20:58 +00:00
genesis.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00: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 [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
headerchain.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
headerchain_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
mkalloc.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
rlp_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
sender_cacher.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
state_prefetcher.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
state_processor.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
state_processor_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
state_transition.go Merge branch 'auto-rename-module_source-2bd6bd01d2e8561dd7fc21b631f4a34ac16627a1_workflow-c1fc594f020d23958b641a4e5a856b6e52c49d3bece94b95594864db16c1b0fc-main' into arr4n/rename-module 2024-10-17 13:07:28 +11:00
state_transition.libevm.go chore: post-rename cleanup + libevm intro (#68) 2024-10-30 09:51:41 -04:00
state_transition.libevm_test.go Merge branch 'auto-rename-module_source-2bd6bd01d2e8561dd7fc21b631f4a34ac16627a1_workflow-c1fc594f020d23958b641a4e5a856b6e52c49d3bece94b95594864db16c1b0fc-main' into arr4n/rename-module 2024-10-17 13:07:28 +11:00
txindexer.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
txindexer_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
types.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00