Commit Graph

15713 Commits

Author SHA1 Message Date
lightclient e26468f6f6
beacon/engine,eth/catalyst: hex marshal requests in engine api (#30603)
Co-authored-by: Felix Lange <fjl@twurst.com>
2024-10-17 10:05:17 +02:00
lightclient 1da34a37ec
miner: send full request when resolving full payload (#30615)
Fixes an issue missed in #30576 where we send empty requests for a full
payload being resolved, causing hash mismatch later on when we get the
payload back via `NewPayload`.
2024-10-17 10:04:20 +02:00
Sina M 978ca5fc5e
eth/tracers: various fixes (#30540)
Breaking changes:

- The ChainConfig was exposed to tracers via VMContext passed in
`OnTxStart`. This is unnecessary specially looking through the lens of
live tracers as chain config remains the same throughout the lifetime of
the program. It was there so that native API-invoked tracers could
access it. So instead we moved it to the constructor of API tracers.

Non-breaking:

- Change the default config of the tracers to be `{}` instead of nil.
This way an extra nil check can be avoided.

Refactoring:

- Rename `supply` struct to `supplyTracer`.
- Un-export some hook definitions.
2024-10-17 06:51:47 +02:00
Marius van der Wijden 18a591811f
core: reduce peak memory usage during reorg (#30600)
~~Opening this as a draft to have a discussion.~~ Pressed the wrong
button
I had [a previous PR
](https://github.com/ethereum/go-ethereum/pull/24616)a long time ago
which reduced the peak memory used during reorgs by not accumulating all
transactions and logs.
This PR reduces the peak memory further by not storing the blocks in
memory.
However this means we need to pull the blocks back up from storage
multiple times during the reorg.
I collected the following numbers on peak memory usage: 

// Master: BenchmarkReorg-8 10000 899591 ns/op 820154 B/op 1440
allocs/op 1549443072 bytes of heap used
// WithoutOldChain: BenchmarkReorg-8 10000 1147281 ns/op 943163 B/op
1564 allocs/op 1163870208 bytes of heap used
// WithoutNewChain: BenchmarkReorg-8 10000 1018922 ns/op 943580 B/op
1564 allocs/op 1171890176 bytes of heap used

Each block contains a transaction with ~50k bytes and we're doing a 10k
block reorg, so the chain should be ~500MB in size

---------

Co-authored-by: Péter Szilágyi <peterke@gmail.com>
2024-10-16 19:46:40 +03:00
Péter Szilágyi 368e16f39d
core, eth, ethstats: simplify chain head events (#30601) 2024-10-16 10:32:58 +03:00
Marius van der Wijden 56ff85a808
Merge pull request #58 from shemnon/state-tests-origin
Restore state test transaction context
2024-10-16 05:54:54 +02:00
Danno Ferrin ff7ac51348 limit scope to state tests 2024-10-15 15:01:27 -06:00
Danno Ferrin 1b9940486e Restore state test transction context
In state tests when running prague system contracts the origin remains as the system account.
Restore the prior tx context after running system contracts.
2024-10-15 10:11:44 -06:00
rjl493456442 15bf90ebc5
core, ethdb/pebble: run pebble in non-sync mode (#30573)
Implements https://github.com/ethereum/go-ethereum/issues/29819
2024-10-15 18:10:03 +03:00
Péter Szilágyi a44905763e
ethdb/pebble: switch to increasing level sizes (#30602) 2024-10-15 17:00:14 +03:00
Roman Krasiuk 4c4219e405
beacon/engine: omit null witness field from payload envelope (#30597)
## Description

Omit null `witness` field from payload envelope.

## Motivation

Currently, JSON encoded payload types always include `"witness": null`,
which, I believe, is not intentional.
2024-10-15 11:51:20 +03:00
Alex Gartner 30ce17386b
crypto: use decred secp256k1 directly (#30595)
Use `github.com/decred/dcrd/dcrec/secp256k1/v4` directly rather than
`github.com/btcsuite/btcd/btcec/v2` which is just a wrapper around the
underlying decred library. Inspired by
https://github.com/cosmos/cosmos-sdk/pull/15018

`github.com/btcsuite/btcd/btcec/v2` has a very annoying breaking change
when upgrading from `v2.3.3` to `v2.3.4`. The easiest way to workaround
this is to just remove the wrapper.

Would be very nice if you could backport this to the release branches.

References:
- https://github.com/btcsuite/btcd/issues/2221
- https://github.com/cometbft/cometbft/pull/4294
- https://github.com/cometbft/cometbft/pull/3728
- https://github.com/zeta-chain/node/pull/2934
2024-10-15 11:49:08 +03:00
jwasinger 4b9c7821b9
internal/ethapi: refactor `TxArgs.setCancunFeeDefaults` (#30541)
calculating a reasonable tx blob fee cap (`max_blob_fee_per_gas *
total_blob_gas`) only depends on the excess blob gas of the parent
header. The parent header is assumed to be correct, so the method should
not be able to fail and return an error.
2024-10-15 10:02:02 +02:00
Felix Lange add5709cb5
beacon/engine: strip type byte in requests (#30576)
This change brings geth into compliance with the current engine API
specification for the Prague fork. I have moved the assignment of
ExecutionPayloadEnvelope.Requests into BlockToExecutableData to ensure
there is a single place where the type is removed.

While doing so, I noticed that handling of requests in the miner was not
quite correct for the empty payload. It would return `nil` requests for
the empty payload even for blocks after the Prague fork. To fix this, I
have added the emptyRequests field in miner.Payload.
2024-10-14 21:43:35 +02:00
Martin HS 5adc314817
build: update to golangci-lint 1.61.0 (#30587)
Changelog: https://golangci-lint.run/product/changelog/#1610 

Removes `exportloopref` (no longer needed), replaces it with
`copyloopvar` which is basically the opposite.

Also adds: 
- `durationcheck`
- `gocheckcompilerdirectives`
- `reassign`
- `mirror`
- `tenv`

---------

Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
2024-10-14 19:25:22 +02:00
Martin HS f4dc7530b1
trie: concurrent commit (#30545)
This change makes the trie commit operation concurrent, if the number of changes exceed 100. 

Co-authored-by: stevemilk <wangpeculiar@gmail.com>
Co-authored-by: Gary Rong <garyrong0905@gmail.com>
2024-10-14 13:32:15 +02:00
Felix Lange 16f64098b9
core: enable EIP-2935 in chain maker (#30575) 2024-10-13 18:51:51 +02:00
lightclient 2246d66135
cmd/evm: fixup issues with requests in t8n (#30584)
This fixes a few issues missed in #29052:

* `requests` must be hex encoded, so added a helper to marshal.
* The statedb was committed too early and so the result of the system
calls was lost.
* For devnet-4 we need to pull off the type byte prefix from the request
data.
2024-10-13 18:47:51 +02:00
Hteev Oli fad7e74a1b
build: add support for ubuntu 24.10 (#30580) 2024-10-12 12:25:58 +03:00
Felix Lange 3a5313f3f3
all: implement EIP-7002 & EIP-7251 (#30571)
This is a redo of #29052 based on newer specs. Here we implement EIPs
scheduled for the Prague fork:

- EIP-7002: Execution layer triggerable withdrawals
- EIP-7251: Increase the MAX_EFFECTIVE_BALANCE

Co-authored-by: lightclient <lightclient@protonmail.com>
2024-10-11 21:36:13 +02:00
Marius van der Wijden 8b40d4e36f core: fix new error string 2024-10-11 14:15:48 +02:00
Marius van der Wijden e027042d01 core: addressed review comments 2024-10-11 12:43:09 +02:00
Marius van der Wijden a73a8e7851 happy lint, happy life 2024-10-11 12:42:56 +02:00
Marius van der Wijden d2af47a16d core/vm: fix rebasing issue 2024-10-11 12:42:41 +02:00
Marius van der Wijden 1b300b26b2 core/vm: fix rebasing issue 2024-10-11 12:42:41 +02:00
Marius van der Wijden d0dfef2eb4 core/vm: fix eofcreate auxdata 2024-10-11 12:42:41 +02:00
Marius van der Wijden 3e56fde23b tests: changes needed to pass tests, drop before merging 2024-10-11 12:42:40 +02:00
Marius van der Wijden 1d5144465f core/vm: fix create rules 2024-10-11 12:42:13 +02:00
Marius van der Wijden 55e2e277bf core: fix a bug in state transition 2024-10-11 12:42:13 +02:00
Marius van der Wijden ce4a1c51ad core: modify eoa check in statetransition 2024-10-11 12:42:13 +02:00
Marius van der Wijden 3d82fb13a3 core/vm: add gas computation for EOFCREATE, EXT{CALL,DELEGATECALL,STATICCALL} 2024-10-11 12:42:13 +02:00
Marius van der Wijden d206fba16d core/vm: added EXTCALL,EXTDELEGATECALL,EXTSTATICCALL opcode 2024-10-11 12:42:13 +02:00
Marius van der Wijden c7db447b1f core/vm: added RETURNDATALOAD opcode 2024-10-11 12:42:13 +02:00
Marius van der Wijden bb1885c78e core/vm: added DATALOAD,DATALOADN,DATASIZE,DATACOPY opcode 2024-10-11 12:42:13 +02:00
Marius van der Wijden 5992baf543 core/vm: added RETURNCONTRACT opcode 2024-10-11 12:42:13 +02:00
Marius van der Wijden 9fa14a1af4 core/vm: added EOFCREATE opcode 2024-10-11 12:42:13 +02:00
Marius van der Wijden a58ba40cf6 core/vm: added JUMPF opcodes 2024-10-11 12:42:13 +02:00
Marius van der Wijden 026306218b core/vm: added CALLF,RETF opcodes 2024-10-11 12:42:13 +02:00
Marius van der Wijden 866ad956a4 core/vm: added RJUMP,RJUMPI,RJUMPV opcodes 2024-10-11 12:42:13 +02:00
Marius van der Wijden 5bd220b2f0 core/vm: added opSwapN,Exchange,DupN opcodes 2024-10-11 12:42:13 +02:00
Marius van der Wijden 3012db54ee core/vm: added new behavior to legacy opcodes 2024-10-11 12:42:13 +02:00
Marius van der Wijden 8374793fec core/vm: add new eof-behavior to opDelegateCall 2024-10-11 12:42:13 +02:00
Marius van der Wijden 2297ef65dd core/vm: add ReturnStack etc to ScopeContext 2024-10-11 12:42:13 +02:00
Marius van der Wijden d23c5e5e62 core: special case on creation for eof code 2024-10-11 12:42:13 +02:00
Marius van der Wijden d744516b74 core/vm: parse containers on call 2024-10-11 12:42:13 +02:00
Marius van der Wijden 44125c2e45 core/vm: add analysis tests 2024-10-11 12:42:13 +02:00
Karol Chojnowski 16bf471151
core/tracing: add GetTransientState method to StateDB interface (#30531)
Allows live custom tracers to access contract transient storage through the StateDB interface.
2024-10-10 13:03:03 +02:00
Shude Li 5b393ac85a
eth/protocols/eth: remove Requests in block body (#30562)
Block no longer has Requests. This PR just removes some code that wasn't removed in #30425.
2024-10-10 10:47:40 +02:00
Martin HS 58cf152e98
eth/catalyst, core/txpool/blobpool: make tests output less logs (#30563)
A couple of tests set the debug level to `TRACE` on stdout,
and all subsequent tests in the same package are also affected
by that, resulting in outputs of tens of megabytes. 

This PR removes such calls from two packages where it was prevalent.
This makes getting a summary of failing tests simpler, and possibly
reduces some strain from the CI pipeline.
2024-10-10 07:54:07 +02:00
easyfold 7942a6b5ad
eth/tracers: do system contract processing prior to parallel-tracing (#30520)
This fixes `debug_traceBlock` methods for JS tracers in that it correctly
applies the beacon block root processing to the state.
2024-10-09 14:45:14 +02:00