go-ethereum/core
Felix Lange 9bbb9df185
core/types: transaction and receipt encoding/decoding optimizations (#27976)
Just some minor optimizations I figured out a while ago. By using ReadBytes instead of
Bytes on the rlp stream, we can save the allocation of a temporary buffer for the typed tx
payload.

If kind == rlp.Byte, the size reported by Stream.Kind will be zero, but we need a buffer
of size 1 for ReadBytes. Since typed txs always have to be longer than 1 byte, we can just
return an error for kind == rlp.Byte.

There is a also a small change for Log: since the first three fields of Log are the ones that 
should appear in the canon encoding, we can simply ignore the remaining fields via 
struct tag. Doing this removes an indirection through the rlpLog type.

---------

Co-authored-by: Martin Holst Swende <martin@swende.se>
2023-08-25 20:03:41 +02:00
..
asm core/asm: remove unused return value (#27272) 2023-05-16 10:14:04 +02:00
bloombits core/bloombits: use atomic type (#26993) 2023-03-28 03:05:29 -04:00
forkid core/forkid: correctly compute forkid when timestamp fork is activated in genesis (#27895) 2023-08-16 23:31:02 +02:00
rawdb all: use rlp.DecodeBytes instead of rlp.Decode where possible (#27994) 2023-08-24 11:47:42 +03:00
state core/state/snapshot: replace diffToDisk ideal batch size with 64MB (#27977) 2023-08-25 15:48:10 +03:00
txpool miner: add to build block with EIP-4844 blobs (#27875) 2023-08-23 23:16:14 +02:00
types core/types: transaction and receipt encoding/decoding optimizations (#27976) 2023-08-25 20:03:41 +02:00
vm core/vm/runtime: Add Random field to config (#28001) 2023-08-25 04:05:33 -04:00
.gitignore
bench_test.go core/types, params: add blob transaction type, RLP encoded for now (#27049) 2023-04-21 12:52:02 +03:00
block_validator_test.go all: activate pbss as experimental feature (#26274) 2023-08-10 22:21:36 +03:00
block_validator.go core/types: support for optional blob sidecar in BlobTx (#27841) 2023-08-14 10:13:34 +02:00
blockchain_insert.go core, eth, trie: expose more detailed dirty ram tracking for diff layers (#27971) 2023-08-23 14:08:39 +03:00
blockchain_reader.go all: activate pbss as experimental feature (#26274) 2023-08-10 22:21:36 +03:00
blockchain_repair_test.go core/rawdb, ethdb/pebble: avoid fsync db in tests (#27836) 2023-08-23 20:43:55 +02:00
blockchain_sethead_test.go core/rawdb, ethdb/pebble: avoid fsync db in tests (#27836) 2023-08-23 20:43:55 +02:00
blockchain_snapshot_test.go core/rawdb, ethdb/pebble: avoid fsync db in tests (#27836) 2023-08-23 20:43:55 +02:00
blockchain_test.go core, eth, trie: expose more detailed dirty ram tracking for diff layers (#27971) 2023-08-23 14:08:39 +03:00
blockchain.go core, eth, trie: expose more detailed dirty ram tracking for diff layers (#27971) 2023-08-23 14:08:39 +03:00
blocks.go
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 all: activate pbss as experimental feature (#26274) 2023-08-10 22:21:36 +03:00
chain_makers.go core: add BeaconRoot to header in GenerateChain (#27974) 2023-08-22 18:29:17 +02:00
dao_test.go all: activate pbss as experimental feature (#26274) 2023-08-10 22:21:36 +03:00
error.go all: replace data gas to blob gas in comments (#27825) 2023-08-01 10:07:25 +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: rename dataGas to blobGas (#27789) 2023-07-27 16:53:28 +03: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 all: rename dataGas to blobGas (#27789) 2023-07-27 16:53:28 +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 all: activate pbss as experimental feature (#26274) 2023-08-10 22:21:36 +03:00
genesis.go cmd, core, params: add support for the Holesky testnet (#28007) 2023-08-25 18:11:40 +03:00
headerchain_test.go all: activate pbss as experimental feature (#26274) 2023-08-10 22:21:36 +03:00
headerchain.go all: remove ethash pow, only retain shims needed for consensus and tests (#27178) 2023-05-03 12:58:39 +03:00
mkalloc.go cmd, core, params: add support for the Holesky testnet (#28007) 2023-08-25 18:11:40 +03: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/types, params: add blob transaction type, RLP encoded for now (#27049) 2023-04-21 12:52:02 +03:00
state_processor_test.go core, params, beacon/engine: implement EIP 4788 BeaconRoot (#27849) 2023-08-22 08:33:39 -04:00
state_processor.go core, params, beacon/engine: implement EIP 4788 BeaconRoot (#27849) 2023-08-22 08:33:39 -04:00
state_transition.go all: replace data gas to blob gas in comments (#27825) 2023-08-01 10:07:25 +03:00
types.go core: use atomic type (#27011) 2023-03-30 06:53:32 -04:00