Skip to content

Conversation

@bharath-123
Copy link
Contributor

@bharath-123 bharath-123 commented Mar 3, 2025

This PR upgrade to geth 1.14.13 on top of geth 1.14.3.

Below we describe the key upstream changes that we need to be aware:

  1. common/math: fix out of bounds access in json unmarshalling ethereum/go-ethereum#30014 is an important fix which fixes out of bound errors during json unmarshalling
  2. snapshot: upgrade lock usage ethereum/go-ethereum#30001 and core/state/snapshot: acquire the lock on Release ethereum/go-ethereum#30011 fix some data races that happen when we get a snapshot
  3. core/types: don't modify signature V when reading large chainID ethereum/go-ethereum#30157 fixes an issue where the V value in the signatures is modified when using a very large chain id.
  4. core/txpool: use the cached address in ValidateTransactionWithState ethereum/go-ethereum#30208 uses the cached address when doing stateful validation of a tx. This can lead to some performance improvements in the mempool.
  5. internal/ethapi: eth_simulateV1 ethereum/go-ethereum#27720 introduces eth_simulateV1
  6. TotalDifficulty field is removed from block in internal/ethapi: remove td field from block ethereum/go-ethereum#30386
  7. GHSA-q26p-9cq4-7fc2 is fixed in 1.14.13 which is an issue with malicious message passing in p2p.
  8. all: remove personal RPC namespace ethereum/go-ethereum#30704 removes the PersonalApi in geth.
  9. ethdb/pebble: switch to increasing level sizes ethereum/go-ethereum#30602 adds a DB optimization which reduces the number of database files from 160k to 10k.

Below we describe the key code changes that impacts the ExecutionApi:

  1. BuildPayload now takes in a boolean parameter called witness which we can set to false as we won't be using the verkle upgrade for now.
  2. PersonalApi is removed from geth

Below we list some notes:

  1. We don't have to worry about verkle related code because we are not close to the upgrade and all the code should be feature flagged.

Resolves: #48

bearpebble and others added 30 commits July 30, 2024 07:31
The test specifies `ListenAddr: ":0"`, which means a random ephemeral
port will be chosen for the TCP listener by the OS. Additionally, since
no `DiscAddr` was specified, the same port that is chosen automatically
by the OS will also be used for the UDP listener in the discovery UDP
setup. This sometimes leads to test failures if the TCP listener picks a
free TCP port that is already taken for UDP. By specifying `DiscAddr:
":0"`, the UDP port will be chosen independently from the TCP port,
fixing the random failure.

See issue #29830.

Verified using
```
cd p2p
go test -c -race
stress ./p2p.test -test.run=TestServerPortMapping
...
5m0s: 4556 runs so far, 0 failures
```

The issue described above can technically lead to sporadic failures on
systems that specify a listen address via the `--port` flag of 0 while
not setting `--discovery.port`. Since the default is using port `30303`
and using a random ephemeral port is likely not used much to begin with,
not addressing the root cause might be acceptable.
…(#30239)

## Issue

If `nextTime` has passed, but all nodes are excluded, `get` would return
`nil` and `run` would therefore not invoke `schedule`. Then, we schedule
a timer for the past, as neither `nextTime` value has been updated. This
creates a busy loop, as the timer immediately returns.

## Fix

With this PR, revalidation will be also rescheduled when all nodes are
excluded.

---------

Co-authored-by: lightclient <[email protected]>
This PR fixes an issue in the setMode method of beaconBackfiller where the
log message was not displaying the previous mode correctly. The log message
now shows both the old and new sync modes.
The package `github.com/golang/protobuf/proto` is deprecated in favor
`google.golang.org/protobuf/proto`. We should update the codes to
recommended package.

Signed-off-by: Icarus Wu <[email protected]>
Adding the correct accessList parameter when calling a contract can
reduce gas consumption. However, the current version only allows adding
the accessList manually when constructing the transaction. This PR can
provide convenience for saving gas.
Removing because memsize will very likely be broken by Go 1.23. See
fjl/memsize#4
Fixes #30254 

It seems like the removed CreateAccount call is very old and not needed anymore.
After removing it, setting a sender that does not exist in the state doesn't seem to cause
an issue.
…sed (#30267)

Seems it is checked with the wrong argument

Signed-off-by: jsvisa <[email protected]>
The struct-based tracing added in #29189 seems to have caused an issue
with the benchmark `BenchmarkTracerStepVsCallFrame`. On master we see
the following panic:

```console
BenchmarkTracerStepVsCallFrame
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x40 pc=0x1019782f0]

goroutine 37 [running]:
github.com/ethereum/go-ethereum/eth/tracers/js.(*jsTracer).OnOpcode(0x140004c4000, 0x0, 0x10?, 0x989680, 0x1, {0x101ea2298, 0x1400000e258}, {0x1400000e258?, 0x14000155928?, 0x10173020c?}, ...)
        /Users/matt/dev/go-ethereum/eth/tracers/js/goja.go:328 +0x140
github.com/ethereum/go-ethereum/core/vm.(*EVMInterpreter).Run(0x14000307da0, 0x140003cc0d0, {0x0, 0x0, 0x0}, 0x0)
 ...
FAIL    github.com/ethereum/go-ethereum/core/vm/runtime 0.420s
FAIL
```

The issue seems to be that `OnOpcode` expects that `OnTxStart` has
already been called to initialize the `env` value in the tracer. The JS
tracer uses it in `OnOpcode` for the `GetRefund()` method.

This patch resolves the issue by reusing the `Call` method already
defined in `runtime_test.go` which correctly calls `OnTxStart`.
Some chains’ network IDs use hexadecimal such as Optimism ("0xa" instead
of "10"), so when converting the string to big.Int, we cannot specify
base 10; otherwise, it will encounter errors with hexadecimal network
IDs.
This PR adds the methods `Stack.swap1..16()` that faster than `Stack.swap(1..16)`. 

Co-authored-by: lmittmann <[email protected]>
…0274) (#30277)

Precomputes valid primitive types into a map to use for validation, thus removing sprintf.
Consistently use `uint64` for indices in `Memory` and drop lots of type
conversions from `uint64` to `int64`.

---------

Co-authored-by: lmittmann <[email protected]>
Due to https://github.com/ethereum/tests/releases/tag/v10.1, the format
of the TransactionTest changed, but it was not properly addressed, causing the test
to pass unexpectedly.

---------

Co-authored-by: Martin Holst Swende <[email protected]>
…nloader queue (#30276)

Fixes a slight miscalculation in the downloader queue, which was not accurately taking block withdrawals into account when calculating the size of the items in the queue
fixes #30279 -- previously we did not use the basefee from the genesis, and instead the defaults were used from `runtime.go/setDefaults`-function
…ead of hard-coded value (#29721)


Co-authored-by: Felix Lange <[email protected]>
Co-authored-by: Marius van der Wijden <[email protected]>
Co-authored-by: lightclient <[email protected]>
Looking at the history of these packages over the past several years, there
haven't been any meaningful contributions or usages:
https://github.com/ethereum/go-ethereum/commits/master/p2p/simulations?before=de6d5976794a9ed3b626d4eba57bf7f0806fb970+35

Almost all of the commits are part of larger refactors or low-hanging-fruit contributions.
Seems like it's not providing much value and taking up team + contributor time.
…lete storage (#30258)

This pull request fixes #30229.
 
During snap sync, large storage will be split into several pieces and
synchronized concurrently. Unfortunately, the tradeoff is that the respective
merkle trie of each storage chunk will be incomplete due to the incomplete
boundaries. The trie nodes on these boundaries will be discarded, and any
dangling nodes on disk will also be removed if they fall on these paths,
ensuring the state healer won't be blocked.

However, the dangling account trie nodes on the path from the root to the
associated account are left untouched. This means the dangling account trie
nodes could potentially stop the state healing and break the assumption that the
entire subtrie should exist if the subtrie root exists. We should consider the
account trie node as the ancestor of the corresponding storage trie node.

In the scenarios described in the above ticket, the state corruption could occur
if there is a dangling account trie node while some storage trie nodes are
removed due to synchronization redo.

The fixing idea is pretty straightforward, the trie nodes on the path from root
to account should all be explicitly removed if an incomplete storage trie
occurs. Therefore, a `delete` operation has been added into `gentrie` to
explicitly clear the account along with all nodes on this path. The special
thing is that it's a cross-trie clearing. In theory, there may be a dangling
node at any position on this account key and we have to clear all of them.
the validation process only checks for 'less than', which is
inconsistent with the error output
rjl493456442 and others added 20 commits November 19, 2024 14:50
Adds a protocol handler fuzzer to fuzz the ETH68 protocol handlers
add unit tests for `p2p/addrutil`

---------

Co-authored-by: Martin HS <[email protected]>
fixes a typo on one of the postmortems
Fixes an error in the binary iterator, adds additional testcases

---------

Co-authored-by: Gary Rong <[email protected]>
This is one further step towards removing account management from
`geth`. This PR deprecates the flag `unlock`, and makes the flag moot:
unlock via geth is no longer possible.
The [kilic](https://github.com/kilic/bls12-381) bls12381 implementation
has been archived. It shouldn't be necessary to include it as a fuzzing
target any longer.

This also adds fuzzers for G1/G2 mul that use inputs that are guaranteed
to be valid. Previously, we just did random input fuzzing for these
precompiles.
This adds an API method `DropTransactions` to legacy pool, blob pool and
txpool interface. This method removes all txs currently tracked in the
pools.

It modifies the simulated beacon to use the new method in `Rollback`
which removes previous hacky implementation that also erroneously reset
the gas tip to 1 gwei.

---------

Co-authored-by: Felix Lange <[email protected]>
@bharath-123 bharath-123 marked this pull request as ready for review March 10, 2025 14:04
@SuperFluffy
Copy link
Contributor

SuperFluffy commented Apr 28, 2025

It is not feasible to continue down this path. I am closing this effort in order to follow the steps outlined in this issue: #92

The notes and (new/written by us) commits in this PR are useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore: upgrade to be based on latest geth version