Commit graph

16153 commits

Author SHA1 Message Date
Chen Kai
d73538ef2b Merge branch 'gethmaster' into gethintegration 2025-01-10 16:44:30 +08:00
Marius van der Wijden
033de2a05b
README: remove private network section from readme (#31005) 2025-01-08 14:22:37 +01:00
Chen Kai
01c41acb7a
Merge branch 'ethereum:master' into gethintegration 2025-01-08 14:09:24 +08:00
Ceyhun Onur
5065e6c935
triedb/pathdb: fix tester generator (#30972)
This change fixes is a rare bug in test generator: If the run is very unlucky it
can use `modifyAccountOp` / `deleteAccountOp` without creating any
account, leading to have a trie root same as the parent.

This change makes the first operation always be a creation.
2025-01-07 11:49:13 +01:00
Savely
e75f354ae7
cmd/clef: fix JS issues in documentation (#30980)
Fixes a couple of js-flaws in the docs
2025-01-07 10:31:10 +01:00
Chen Kai
b013b8a629
Merge branch 'ethereum:master' into gethintegration 2025-01-07 13:04:43 +08:00
Martin HS
9298074633
eth/protocols/eth: prevent hanging dispatch (#30918)
This PR attempts to fix a strange test-failure (timeout) observed on a
windows-32 platform.

https://ci.appveyor.com/project/ethereum/go-ethereum/builds/51174391/job/d8ascanwwltrlqd5

A goroutine is stuck trying to deliver a response:
```
goroutine 9632 [select, 29 minutes]:
github.com/ethereum/go-ethereum/eth/protocols/eth.(*Peer).dispatchResponse(0x314f100, 0x3e5f6d0, 0x3acbb84)
	C:/projects/go-ethereum/eth/protocols/eth/dispatcher.go:172 +0x2a5
github.com/ethereum/go-ethereum/eth/protocols/eth.handleBlockHeaders({0x12abe68, 0x30021b8}, {0x12a815c, 0x40b41c0}, 0x314f100)
	C:/projects/go-ethereum/eth/protocols/eth/handlers.go:301 +0x173
github.com/ethereum/go-ethereum/eth/protocols/eth.handleMessage({0x12abe68, 0x30021b8}, 0x314f100)
	C:/projects/go-ethereum/eth/protocols/eth/handler.go:205 +0x4f6
github.com/ethereum/go-ethereum/eth/protocols/eth.Handle({0x12abe68, 0x30021b8}, 0x314f100)
	C:/projects/go-ethereum/eth/protocols/eth/handler.go:149 +0x33
github.com/ethereum/go-ethereum/eth.testSnapSyncDisabling.func1(0x314f100)
	C:/projects/go-ethereum/eth/sync_test.go:65 +0x33
github.com/ethereum/go-ethereum/eth.(*handler).runEthPeer(0x30021b8, 0x314f100, 0x427f648)
	C:/projects/go-ethereum/eth/handler.go:355 +0xe65
created by github.com/ethereum/go-ethereum/eth.testSnapSyncDisabling in goroutine 11
	C:/projects/go-ethereum/eth/sync_test.go:64 +0x54f
FAIL	github.com/ethereum/go-ethereum/eth	1800.138s

```

---------

Co-authored-by: Gary Rong <garyrong0905@gmail.com>
2025-01-06 16:31:53 +01:00
georgehao
6897a4a9e0
core/types: improve printList in DeriveSha test (#30969) 2025-01-06 16:28:28 +01:00
Chen Kai
fbaafaf988
Merge branch 'ethereum:master' into gethintegration 2025-01-06 15:05:23 +08:00
Marius van der Wijden
c5a8d34851
core/rawdb: fix panic in freezer (#30973)
Fixes an issue where the node panics when an LStat fails with something 
other than os.ErrNotExist

closes https://github.com/ethereum/go-ethereum/issues/30968
2025-01-06 14:52:01 +08:00
Chen Kai
b8283a0ae6
Merge branch 'ethereum:master' into gethintegration 2025-01-06 13:05:52 +08:00
Sina M
a9ab53d751
internal/ethapi: update default simulation timestamp increment to 12 (#30981)
Update the default timestamp increment to 12s for `eth_simulate` endpoint
2025-01-03 20:15:06 +08:00
Felix Lange
06883c1686
eth/tracers/logger: skip system calls (#30923)
This commit makes it so that the struct logger will not emit logs while
system calls are being executed. This will make it consistent with
the JSON and MD loggers. It is as it stands hard to distinguish when
system calls are being processed vs when a tx is being processed.

---------

Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com>
2025-01-02 18:37:58 +01:00
gitglorythegreat
85ffbde427
all: use cmp.Compare (#30958) 2025-01-02 14:06:47 +01:00
gitglorythegreat
0feb999d3f
crypto/bn256: fix MulScalar (#30974)
The `a` parameter should be used in the `MulScalar` function. The
upstream cloudflare and google repos have already merged fixes.

Reference:
*
8d7daa0c54
* https://github.com/cloudflare/bn256/pull/33
2025-01-02 14:04:06 +01:00
かげ
f4e8e877f6
internal/flags: update copyright year to 2025 (#30976) 2025-01-02 09:48:25 +08:00
Chen Kai
fe0986aca6 Merge branch 'gethmaster' into gethintegration 2024-12-23 14:55:21 +08:00
Felix Lange
f3f0050f9c params: update system contracts for prague devnet-5 (#30938) 2024-12-23 14:48:43 +08:00
Felix Lange
9005f35a2b core, core/types: rename AuthList to SetCodeAuthorizations (#30935)
As a follow-up to #30933, I propose to also use the SetCode prefix in
our internal APIs for the authorization list.
2024-12-23 14:48:43 +08:00
Felix Lange
f563989eb5 cmd/evm: update tests for SetCodeAuthorization JSON encoding change (#30936)
Fixing a regression introduced by 73a4ecf675, which I accidentally
pushed to the master branch directly.
2024-12-23 14:48:43 +08:00
Felix Lange
ae7b444b66 core/types: rename SetCodeAuthorization 'v' to 'yParity'
The API spec requires the name yParity.
2024-12-23 14:48:43 +08:00
Felix Lange
89a0bb8f26 core/types: updates for EIP-7702 API functions (#30933)
Here I am proposing two small changes to the exported API for EIP-7702:

(1) `Authorization` has a very generic name, but it is in fact only used
for one niche use case: authorizing code in a `SetCodeTx`. So I propose
calling it `SetCodeAuthorization` instead. The signing function is
renamed to `SignSetCode` instead of `SignAuth`.
   
(2) The signing function for authorizations should take key as the first
parameter, and the authorization second. The key will almost always be
in a variable, while the authorization can be given as a literal.
2024-12-23 14:48:43 +08:00
Martin HS
43207fc30c cmd/evm: make evm statetest accept non-json files (#30927)
This fixes a regression introduced recently. Without this fix, it's not
possible to use statetests without `.json` suffix. This is problematic for
goevmlab `minimizer`, which appends the suffix `.min` during processing.
2024-12-23 14:48:43 +08:00
Felix Lange
86f89b31bd core/types, internal/ethapi: fixes for prague RPC encoding (#30926)
Fixing some issues I found while regenerating RPC tests for Prague:

- Authorization signature values were not encoded as hex
- `requestsRoot` in block should be `requestsHash`
- `authorizationList` should work for `eth_call`
2024-12-23 14:48:43 +08:00
Martin HS
bfb807c7ae core/vm: make all opcodes proper type (#30925)
Noticed this omission while doing some work on goevmlab. We don't
properly type some of the opcodes, but apparently implicit casting works
in all the internal usecases.
2024-12-23 14:48:43 +08:00
dependabot[bot]
ec0ddaaf7a build(deps): bump golang.org/x/crypto from 0.26.0 to 0.31.0 (#30921)
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from
0.26.0 to 0.31.0.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-23 14:48:38 +08:00
Felix Lange
63fad1515c core: fixes for Prague fork in GenerateChain (#30924)
Adding some missing functionality I noticed while updating the hivechain
tool for the Prague fork:

- we forgot to process the parent block hash
- added `ConsensusLayerRequests` to get the requests list of the block
2024-12-23 14:40:25 +08:00
Felix Lange
341647f186
params: update system contracts for prague devnet-5 (#30938) 2024-12-19 16:03:05 +01:00
Felix Lange
f1e6372eea
core, core/types: rename AuthList to SetCodeAuthorizations (#30935)
As a follow-up to #30933, I propose to also use the SetCode prefix in
our internal APIs for the authorization list.
2024-12-19 10:06:33 +01:00
Felix Lange
f861535f1e
cmd/evm: update tests for SetCodeAuthorization JSON encoding change (#30936)
Fixing a regression introduced by 73a4ecf675, which I accidentally
pushed to the master branch directly.
2024-12-18 20:17:49 +01:00
Felix Lange
73a4ecf675 core/types: rename SetCodeAuthorization 'v' to 'yParity'
The API spec requires the name yParity.
2024-12-18 19:46:15 +01:00
Felix Lange
9d4b29f291
core/types: updates for EIP-7702 API functions (#30933)
Here I am proposing two small changes to the exported API for EIP-7702:

(1) `Authorization` has a very generic name, but it is in fact only used
for one niche use case: authorizing code in a `SetCodeTx`. So I propose
calling it `SetCodeAuthorization` instead. The signing function is
renamed to `SignSetCode` instead of `SignAuth`.
   
(2) The signing function for authorizations should take key as the first
parameter, and the authorization second. The key will almost always be
in a variable, while the authorization can be given as a literal.
2024-12-18 19:10:53 +01:00
Martin HS
1321a42525
cmd/evm: make evm statetest accept non-json files (#30927)
This fixes a regression introduced recently. Without this fix, it's not
possible to use statetests without `.json` suffix. This is problematic for
goevmlab `minimizer`, which appends the suffix `.min` during processing.
2024-12-18 00:18:36 +01:00
Felix Lange
06dfb42365
core/types, internal/ethapi: fixes for prague RPC encoding (#30926)
Fixing some issues I found while regenerating RPC tests for Prague:

- Authorization signature values were not encoded as hex
- `requestsRoot` in block should be `requestsHash`
- `authorizationList` should work for `eth_call`
2024-12-17 19:47:10 +01:00
Martin HS
5b9a3ea9d2
core/vm: make all opcodes proper type (#30925)
Noticed this omission while doing some work on goevmlab. We don't
properly type some of the opcodes, but apparently implicit casting works
in all the internal usecases.
2024-12-17 18:37:29 +01:00
dependabot[bot]
feaf1c95b1
build(deps): bump golang.org/x/crypto from 0.26.0 to 0.31.0 (#30921)
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from
0.26.0 to 0.31.0.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-17 15:26:03 +01:00
Felix Lange
71c28d8d2b
core: fixes for Prague fork in GenerateChain (#30924)
Adding some missing functionality I noticed while updating the hivechain
tool for the Prague fork:

- we forgot to process the parent block hash
- added `ConsensusLayerRequests` to get the requests list of the block
2024-12-17 15:16:17 +01:00
Chen Kai
5650b3efb2
Merge branch 'ethereum:master' into gethintegration 2024-12-17 16:57:18 +08:00
maskpp
3c208cdea8
accounts/abi/bind: make it possible to wait for tx hash (#30079)
This change adds methods which makes it possible for to wait for a transaction with a specific hash when deploying contracts during abi bind interaction.

---------

Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
2024-12-17 09:12:10 +01:00
Martin HS
5c58612e12
core/vm, go.mod: update uint256 and use faster method to write to memory (#30868)
Updates geth to use the latest uint256, and use faster memory-writer
2024-12-17 08:58:26 +01:00
rjl493456442
bc1ec69008
trie/pathdb: state iterator (snapshot integration pt 4) (#30654)
In this pull request, the state iterator is implemented. It's mostly a copy-paste
from the original state snapshot package, but still has some important changes
to highlight here:

(a) The iterator for the disk layer consists of a diff iterator and a disk iterator.

Originally, the disk layer in the state snapshot was a wrapper around the disk, 
and its corresponding iterator was also a wrapper around the disk iterator.
However, due to structural differences, the disk layer iterator is divided into
two parts:

- The disk iterator, which traverses the content stored on disk.
- The diff iterator, which traverses the aggregated state buffer.

Checkout `BinaryIterator` and `FastIterator` for more details.

(b) The staleness management is improved in the diffAccountIterator and
diffStorageIterator

Originally, in the `diffAccountIterator`, the layer’s staleness had to be checked 
within the Next function to ensure the iterator remained usable. Additionally, 
a read lock on the associated diff layer was required to first retrieve the account 
blob. This read lock protection is essential to prevent concurrent map read/write. 
Afterward, a staleness check was performed to ensure the retrieved data was 
not outdated.

The entire logic can be simplified as follows: a loadAccount callback is provided 
to retrieve account data. If the corresponding state is immutable (e.g., diff layers
in the path database), the staleness check can be skipped, and a single account 
data retrieval is sufficient. However, if the corresponding state is mutable (e.g., 
the disk layer in the path database), the callback can operate as follows:

```go
func(hash common.Hash) ([]byte, error) {
    dl.lock.RLock()
    defer dl.lock.RUnlock()

    if dl.stale {
        return nil, errSnapshotStale
    }
    return dl.buffer.states.mustAccount(hash)
}
```

The callback solution can eliminate the complexity for managing
concurrency with the read lock for atomic operation.
2024-12-16 21:10:08 +08:00
lightclient
f808d7357e
all: implement eip-7702 set code tx (#30078)
This PR implements EIP-7702: "Set EOA account code". 
Specification: https://eips.ethereum.org/EIPS/eip-7702

> Add a new transaction type that adds a list of `[chain_id, address,
nonce, y_parity, r, s]` authorization tuples. For each tuple, write a
delegation designator `(0xef0100 ++ address)` to the signing account’s
code. All code reading operations must load the code pointed to by the
designator.

---------

Co-authored-by: Mario Vega <marioevz@gmail.com>
Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Felix Lange <fjl@twurst.com>
2024-12-16 11:29:37 +01:00
Lucas
804d45cc2e
p2p: DNS resolution for static nodes (#30822)
Closes #23210 

# Context 
When deploying Geth in Kubernetes with ReplicaSets, we encountered two
DNS-related issues affecting node connectivity. First, during startup,
Geth tries to resolve DNS names for static nodes too early in the config
unmarshaling phase. If peer nodes aren't ready yet (which is common in
Kubernetes rolling deployments), this causes an immediate failure:


```
INFO [11-26|10:03:42.816] Starting Geth on Ethereum mainnet...
INFO [11-26|10:03:42.817] Bumping default cache on mainnet         provided=1024 updated=4096
Fatal: config.toml, line 81: (p2p.Config.StaticNodes) lookup idontexist.geth.node: no such host
``` 

The second issue comes up when pods get rescheduled to different nodes -
their IPs change but peers keep using the initially resolved IP, never
updating the DNS mapping.

This PR adds proper DNS support for enode:// URLs by deferring resolution
to connection time. It also handles DNS failures gracefully instead of failing
fatally during startup, making it work better in container environments where
IPs are dynamic and peers come and go during rollouts.

---------

Co-authored-by: Felix Lange <fjl@twurst.com>
2024-12-13 12:46:12 +01:00
Chen Kai
63d9a45739
Merge branch 'ethereum:master' into gethintegration 2024-12-13 11:36:51 +08:00
Antony Denyer
88cbfab332
internal/ethapi: add block override to estimateGas (#30695)
Add block overrides to `eth_estimateGas` to align consistency with
`eth_call`.


https://github.com/ethereum/go-ethereum/issues/27800#issuecomment-1658186166

Fixes https://github.com/ethereum/go-ethereum/issues/28175

---------

Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com>
2024-12-12 12:39:03 +01:00
lorenzo
c1c2507148
p2p: fix DiscReason encoding/decoding (#30855)
This fixes an issue where the disconnect message was not wrapped in a list.
The specification requires it to be a list like any other message.

In order to remain compatible with legacy geth versions, we now accept both
encodings when parsing a disconnect message.

---------

Co-authored-by: Felix Lange <fjl@twurst.com>
2024-12-12 12:33:42 +01:00
Chen Kai
13a227a9ca Merge branch 'gethmaster' into gethintegration 2024-12-11 22:34:49 +08:00
gitglorythegreat
c7e740f40c
core/state: remove pointless wrapper functions (#30891) 2024-12-11 11:05:59 +01:00
Darren Kelly
330190e476
accounts/abi: support unpacking solidity errors (#30738)
This PR adds the error fragments to `func (abi ABI) getArguments` which
allows typed decoding of errors.
2024-12-10 14:30:24 +01:00
Hteev Oli
4ed36ea1f8
build: update to Go 1.23.4 (#30872) 2024-12-10 14:22:43 +01:00