Skip to content

Commit

Permalink
bump op geth to v1.101311.0 (#6)
Browse files Browse the repository at this point in the history
* params: begin v1.13.9 release cycle

* core/state: logic equivalence for GetCodeHash (#28733)

* tests: add currentExcessBlobGas to state tests (#28735)

* accounts,signer: fix typos in comments (#28730)

* build: add support for ubuntu 23.10 (mantic minotaur) (#28728)

* log: avoid setting default slog logger in init (#28747)

slog.SetDefault has undesirable side effects. It also sets the default logger destination,
for example. So we should not call it by default in init.

* cmd/evm: fix link in README.md (#28755)

* core/vm: update comments to match eip number (#28743)

* cmd/evm: Fix blob-gas-used on invalid transactions in t8n (#28734)

cmd/evm: fixes the blob gas calculation if a transaction is invalid

* internal/flags: update copyright year to 2024 (#28760)


Co-authored-by: Felix Lange <fjl@twurst.com>

* ethclient: simplify error handling in TransactionReceipt (#28748)


Co-authored-by: Martin HS <martin@swende.se>
Co-authored-by: Felix Lange <fjl@twurst.com>

* eth/downloader, eth/filters: use defer to call Unsubscribe (#28762)

* log: emit error level string as "error", not "eror" (#28774)

* eth/filters: fix early Unsubscribe of log events (#28769)

* cmd/devp2p/internal/ethtest: fix typos in comments (#28772)

* params, core/forkid: schedule cancun fork on goerli (#28719)

This PR schedules the cancun fork for the goerli testnet as discussed on ACD.
Spec: ethereum/execution-specs#860

We schedule:
  goerli at 1705473120

* cmd/geth: make it possible to autopilot removedb (#28725)

When managing geth, it is sometimes desirable to do a partial wipe; deleting state but retaining freezer data. A partial wipe can be somewhat tricky to accomplish. 

This change implements the ability to perform partial wipe by making it possible to run geth removedb non-interactive, using command line options instead.

* accounts/abi: fix bigInt topic encoding (#28764)

* cmd/geth: update log test data (#28780)

update logger test data

* ethclient/simulated: implement new sim backend (#28202)

This is a rewrite of the 'simulated backend', an implementation of the ethclient interfaces
which is backed by a simulated blockchain. It was getting annoying to maintain the old
version of the simulated backend feature because there was a lot of code duplication with
the main client. 

The new version is built using parts that we already have: an in-memory geth node instance
running in developer mode provides the chain, while the Go API is provided by ethclient.
A backwards-compatibility wrapper is provided, but the simulated backend has also moved to
a more sensible import path: github.com/ethereum/go-ethereum/ethclient/simulated

---------

Co-authored-by: Felix Lange <fjl@twurst.com>
Co-authored-by: Gary Rong <garyrong0905@gmail.com>

* params: go-ethereum v1.13.9 stable

* params: begin v1.13.10 release cycle

* version: release v1.13.10 to fix bad tag

* params: begin v1.13.11 release cycle

* docs: fix badge in README (#28796)

* Fix broken badge in README.md

Replaced broken Github link with IPFS link for long-term storage.

* update go badge

Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>

---------

Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>

* eth: minor change of config-accessor (#28782)

eth: refactor `GetVM`

* cmd: fix typos (#28798)

* build: fix typo in comment (#28800)

* accounts, ethclient: minor tweaks on the new simulated backend (#28799)

* accounts, ethclient: minor tweaks on the new simulated backend

* ethclient/simulated: add an initial batch of gas options

* accounts, ethclient: remove mandatory gasLimit constructor param

* accounts, ethclient: minor option naming tweaks

* cmd/geth, internal/debug: get rid of by-default log config (#28801)

* cmd/devp2p/internal/ethtest: skip large tx test on github build (#28794)

This test was failling consistently on the github 32-bit build probably due to slow IO. Skipping it for that green check.

* p2p/dnsdisc: use strings.Cut over strings.IndexByte (#28787)

* internal/ethapi: avoid using pending for defaults (#28784)

Given the discussions around deprecating pending (see #28623 or ethereum/execution-apis#495), we can move away from using the pending block internally, and use latest instead

* core/state: unexport GetOrNewStateObject (#28804)

* cmd/rlpdump: add -pos flag, displaying byte positions (#28785)

* tests: update reference tests (#28778)

Updates the reference tests to the latest version

* ethclient: add tests for TransactionInBlock (#28283)


Co-authored-by: Felix Lange <fjl@twurst.com>

* eth: fix potential hang in waitSnapExtension (#28744)

This should fix a rare hang in waitSnapExtension during shutdown.

* core/txpool/blobpool: fix typos

* acounts/usbwallet: fix typo (#28815)

acounts:fix typo

* tests: more verbosity if block decoding fails (#28814)

* tracer: use proper base fee in tests (#28775)

 In the tracing tests, the base fee was generally set to nil. This commit changes this to pass the proper base instead, and fixes the few tests which become broken by the change.

* miner: fix typo in payload_building_test.go (#28825)

* internal/ethapi: handle blobs in API methods (#28786)

EIP-4844 adds a new transaction type for blobs. Users can submit such transactions via `eth_sendRawTransaction`. In this PR we refrain from adding support to `eth_sendTransaction` and in fact it will fail if the user passes in a blob hash.

However since the chain can handle such transactions it makes sense to allow simulating them. E.g. an L2 operator should be able to simulate submitting a rollup blob and updating the L2 state. Most methods that take in a transaction object should recognize blobs. The change boils down to adding `blobVersionedHashes` and `maxFeePerBlobGas` to `TransactionArgs`. In summary:

- `eth_sendTransaction`: will fail for blob txes
- `eth_signTransaction`: will fail for blob txes

The methods that sign txes does not, as of this PR, add support the for new EIP-4844 transaction types. Resuming the summary:

- `eth_sendRawTransaction`: can send blob txes
- `eth_fillTransaction`: will fill in a blob tx. Note: here we simply fill in normal transaction fields + possibly `maxFeePerBlobGas` when blobs are present. One can imagine a more elaborate set-up where users can submit blobs themselves and we fill in proofs and commitments and such. Left for future PRs if desired.
- `eth_call`: can simulate blob messages
- `eth_estimateGas`: blobs have no effect here. They have a separate unit of gas which is not tunable in the transaction.

* eth/filters: reset filter.begin in BenchmarkFilters (#28830)

* crypto/kzg4844: add helpers for versioned blob hashes (#28827)

The code to compute a versioned hash was duplicated a couple times, and also had a small
issue: if we ever change params.BlobTxHashVersion, it will most likely also cause changes
to the actual hash computation. So it's a bit useless to have this constant in params.

* ethclient: apply accessList field in toCallArg (#28832)


Co-authored-by: Felix Lange <fjl@twurst.com>

* params, core/forkid: enable cancun on sepolia and holesky (#28834)

This change enables Cancun 

- Sepolia at 1706655072 (Jan 31st, 2024)
- Holesky at 1707305664 (Feb 7th, 2024)

Specification: ethereum/execution-specs#860

* core, core/rawdb, eth/sync: no tx indexing during snap sync (#28703)

This change simplifies the logic for indexing transactions and enhances the UX when transaction is not found by returning more information to users.

Transaction indexing is now considered as a part of the initial sync, and `eth.syncing` will thus be `true` if transaction indexing is not yet finished. API consumers can use the syncing status to determine if the node is ready to serve users.

* docs: remove reference to being official (#28858)

* go.{mod,sum}: upgrade go-ole to support arm64 (#28859)

go.{mod,sum}: upgrade go-ole

* core: fix genesis setup in benchReadChain (#28856)

* all: use uint256 in state (#28598)

This change makes use of uin256 to represent balance in state. It touches primarily upon statedb, stateobject and state processing, trying to avoid changes in transaction pools, core types, rpc and tracers.

* build: upgrade -dlgo version to Go 1.21.6 (#28836)

* core/state/snapshot: use AddHash/ContainHash instead of Hasher interface (#28849)

This change switches from using the `Hasher` interface to add/query the bloomfilter to implementing it as methods.
This significantly reduces the allocations for Search and Rebloom.

* core/vm: fix misleading comment (#28860)

fix misleading comment

* eth/catalyst: add timestamp checks to fcu and new payload and improve param checks (#28230)

 This PR introduces a few changes with respect to payload verification in fcu and new payload requests:

* First of all, it undoes the `verifyPayloadAttributes(..)` simplification I attempted in #27872. 
* Adds timestamp validation to fcu payload attributes [as required](https://github.com/ethereum/execution-apis/blob/main/src/engine/cancun.md#specification-1) (section 2) by the Engine API spec. 
* For the new payload methods, I also update the verification of the executable data. For `newPayloadV2`, it does not currently ensure that cancun values are `nil`. Which could make it possible to submit cancun payloads through it. 
* On `newPayloadV3` the same types of checks are added. All shanghai and cancun related fields in the executable data must be non-nil, with the addition that the timestamp is _only_ with cancun.
* Finally it updates a newly failing catalyst test to call the correct fcu and new payload methods depending on the fork.

* core/txpool, eth/catalyst: fix racy simulator due to txpool background reset (#28837)

This PR fixes an issues in the new simulated backend. The root cause is the fact that the transaction pool has an internal reset operation that runs on a background thread.

When a new transaction is added to the pool via the RPC, the transaction is added to a non-executable queue and will be moved to its final location on a background thread. If the machine is overloaded (or simply due to timing issues), it can happen that the simulated backend will try to produce the next block, whilst the pool has not yet marked the newly added transaction executable. This will cause the block to not contain the transaction. This is an issue because we want determinism from the simulator: add a tx, mine a block. It should be in there.

The PR fixes it by adding a Sync function to the txpool, which waits for the current reset operation (if any) to finish, and then runs an entire round of reset on top. The new round is needed because resets are only triggered by new head events, so newly added transactions will not trigger the outer resets that we can wait on. The transaction pool would eventually internally do a reset even on transaction addition, but there's no easy way to wait on that and there's no meaningful reason to bubble that across everything. A clean outer reset will at worse be a small noop goroutine.

* core: move tx indexer to its own file (#28857)

This change moves all the transaction indexing functions to a separate txindexer.go file and defines a txIndexer structure as a refactoring.

* eth/catalyst: prefix payload id with version (#28246)

GetPayloadVX should only return payloads which match its version. GetPayloadV2 is a special snowflake that supports v1 and v2 payloads. This change uses a a version-specific prefix within in the payload id, basically a namespace for the version number.

* ethclient: fix flaky test (#28864)

Fix flaky test due to incomplete transaction indexing

* params: go-ethereum v1.13.11 stable

* go get github.com/ethereum-optimism/superchain-registry/superchain@52d3dbd1605dd43f419e838584abd0ec163d462b

* params: begin v1.13.9 release cycle

* core/state: logic equivalence for GetCodeHash (#28733)

* tests: add currentExcessBlobGas to state tests (#28735)

* accounts,signer: fix typos in comments (#28730)

* build: add support for ubuntu 23.10 (mantic minotaur) (#28728)

* log: avoid setting default slog logger in init (#28747)

slog.SetDefault has undesirable side effects. It also sets the default logger destination,
for example. So we should not call it by default in init.

* cmd/evm: fix link in README.md (#28755)

* core/vm: update comments to match eip number (#28743)

* cmd/evm: Fix blob-gas-used on invalid transactions in t8n (#28734)

cmd/evm: fixes the blob gas calculation if a transaction is invalid

* internal/flags: update copyright year to 2024 (#28760)


Co-authored-by: Felix Lange <fjl@twurst.com>

* ethclient: simplify error handling in TransactionReceipt (#28748)


Co-authored-by: Martin HS <martin@swende.se>
Co-authored-by: Felix Lange <fjl@twurst.com>

* eth/downloader, eth/filters: use defer to call Unsubscribe (#28762)

* log: emit error level string as "error", not "eror" (#28774)

* eth/filters: fix early Unsubscribe of log events (#28769)

* cmd/devp2p/internal/ethtest: fix typos in comments (#28772)

* params, core/forkid: schedule cancun fork on goerli (#28719)

This PR schedules the cancun fork for the goerli testnet as discussed on ACD.
Spec: ethereum/execution-specs#860

We schedule:
  goerli at 1705473120

* cmd/geth: make it possible to autopilot removedb (#28725)

When managing geth, it is sometimes desirable to do a partial wipe; deleting state but retaining freezer data. A partial wipe can be somewhat tricky to accomplish. 

This change implements the ability to perform partial wipe by making it possible to run geth removedb non-interactive, using command line options instead.

* accounts/abi: fix bigInt topic encoding (#28764)

* cmd/geth: update log test data (#28780)

update logger test data

* ethclient/simulated: implement new sim backend (#28202)

This is a rewrite of the 'simulated backend', an implementation of the ethclient interfaces
which is backed by a simulated blockchain. It was getting annoying to maintain the old
version of the simulated backend feature because there was a lot of code duplication with
the main client.

The new version is built using parts that we already have: an in-memory geth node instance
running in developer mode provides the chain, while the Go API is provided by ethclient.
A backwards-compatibility wrapper is provided, but the simulated backend has also moved to
a more sensible import path: github.com/ethereum/go-ethereum/ethclient/simulated

---------

Co-authored-by: Felix Lange <fjl@twurst.com>
Co-authored-by: Gary Rong <garyrong0905@gmail.com>

* params: go-ethereum v1.13.9 stable

* add ability to create simulated backend from ethconfig

update fork.yaml

* Revert "Merge upstream geth v1.13.9 into op-geth"

* remove duplicate file reference which breaks forkdiff (#285)

* fix JSON logger to properly handle debug & lower log level

* core/vm, params: ensure order of forks, prevent overflow (#29023)

This PR fixes an overflow which can could happen if inconsistent blockchain rules were configured. Additionally, it tries to prevent such inconsistencies from occurring by making sure that merge cannot be enabled unless previous fork(s) are also enabled.

---------

Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: cygaar <97691933+cygaar@users.noreply.github.com>
Co-authored-by: Mario Vega <marioevz@gmail.com>
Co-authored-by: Taeguk Kwon <xornrbboy@gmail.com>
Co-authored-by: Felix Lange <fjl@twurst.com>
Co-authored-by: ddl <ddl196526@163.com>
Co-authored-by: Darioush Jalali <darioush.jalali@avalabs.org>
Co-authored-by: Marius Kjærstad <sandakersmann@users.noreply.github.com>
Co-authored-by: Rossen Krastev <rosen4obg@gmail.com>
Co-authored-by: ucwong <ucwong@126.com>
Co-authored-by: jwasinger <j-wasinger@hotmail.com>
Co-authored-by: vuittont60 <81072379+vuittont60@users.noreply.github.com>
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
Co-authored-by: rjl493456442 <garyrong0905@gmail.com>
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
Co-authored-by: drstevenbrule <110744990+drstevenbrule@users.noreply.github.com>
Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>
Co-authored-by: HAOYUatHZ <37070449+HAOYUatHZ@users.noreply.github.com>
Co-authored-by: Sina Mahmoodi <1591639+s1na@users.noreply.github.com>
Co-authored-by: hyunchel <3271191+hyunchel@users.noreply.github.com>
Co-authored-by: 牛晓婕 <30611384+niuxiaojie81@users.noreply.github.com>
Co-authored-by: Alfie John <alfiedotwtf@users.noreply.github.com>
Co-authored-by: alex <152680487+bodhi-crypo@users.noreply.github.com>
Co-authored-by: Paul Lange <palango@users.noreply.github.com>
Co-authored-by: Thabokani <149070269+Thabokani@users.noreply.github.com>
Co-authored-by: colin <102356659+colinlyguo@users.noreply.github.com>
Co-authored-by: Guillaume Ballet <3272758+gballet@users.noreply.github.com>
Co-authored-by: trocher <trooocher@proton.me>
Co-authored-by: geoknee <georgeknee@googlemail.com>
Co-authored-by: Sebastian Stammler <seb@oplabs.co>
Co-authored-by: Roberto Bayardo <roberto.bayardo@coinbase.com>
Co-authored-by: Joshua Gutow <jgutow@oplabs.co>
Co-authored-by: Joshua Gutow <jbgutow@gmail.com>
Co-authored-by: protolambda <proto@protolambda.com>
  • Loading branch information
Show file tree
Hide file tree
Showing 185 changed files with 3,072 additions and 4,216 deletions.
4 changes: 2 additions & 2 deletions README.md
@@ -1,9 +1,9 @@
## Go Ethereum

Official Golang execution layer implementation of the Ethereum protocol.
Golang execution layer implementation of the Ethereum protocol.

[![API Reference](
https://camo.githubusercontent.com/915b7be44ada53c290eb157634330494ebe3e30a/68747470733a2f2f676f646f632e6f72672f6769746875622e636f6d2f676f6c616e672f6764646f3f7374617475732e737667
https://pkg.go.dev/badge/github.com/ethereum/go-ethereum
)](https://pkg.go.dev/github.com/ethereum/go-ethereum?tab=doc)
[![Go Report Card](https://goreportcard.com/badge/github.com/ethereum/go-ethereum)](https://goreportcard.com/report/github.com/ethereum/go-ethereum)
[![Travis](https://travis-ci.com/ethereum/go-ethereum.svg?branch=master)](https://travis-ci.com/ethereum/go-ethereum)
Expand Down
43 changes: 11 additions & 32 deletions accounts/abi/bind/backend.go
Expand Up @@ -84,6 +84,11 @@ type BlockHashContractCaller interface {
// used when the user does not provide some needed values, but rather leaves it up
// to the transactor to decide.
type ContractTransactor interface {
ethereum.GasEstimator
ethereum.GasPricer
ethereum.GasPricer1559
ethereum.TransactionSender

// HeaderByNumber returns a block header from the current canonical chain. If
// number is nil, the latest known header is returned.
HeaderByNumber(ctx context.Context, number *big.Int) (*types.Header, error)
Expand All @@ -93,38 +98,6 @@ type ContractTransactor interface {

// PendingNonceAt retrieves the current pending nonce associated with an account.
PendingNonceAt(ctx context.Context, account common.Address) (uint64, error)

// SuggestGasPrice retrieves the currently suggested gas price to allow a timely
// execution of a transaction.
SuggestGasPrice(ctx context.Context) (*big.Int, error)

// SuggestGasTipCap retrieves the currently suggested 1559 priority fee to allow
// a timely execution of a transaction.
SuggestGasTipCap(ctx context.Context) (*big.Int, error)

// EstimateGas tries to estimate the gas needed to execute a specific
// transaction based on the current pending state of the backend blockchain.
// There is no guarantee that this is the true gas limit requirement as other
// transactions may be added or removed by miners, but it should provide a basis
// for setting a reasonable default.
EstimateGas(ctx context.Context, call ethereum.CallMsg) (gas uint64, err error)

// SendTransaction injects the transaction into the pending pool for execution.
SendTransaction(ctx context.Context, tx *types.Transaction) error
}

// ContractFilterer defines the methods needed to access log events using one-off
// queries or continuous event subscriptions.
type ContractFilterer interface {
// FilterLogs executes a log filter operation, blocking during execution and
// returning all the results in one batch.
//
// TODO(karalabe): Deprecate when the subscription one can return past data too.
FilterLogs(ctx context.Context, query ethereum.FilterQuery) ([]types.Log, error)

// SubscribeFilterLogs creates a background log filtering operation, returning
// a subscription immediately, which can be used to stream the found events.
SubscribeFilterLogs(ctx context.Context, query ethereum.FilterQuery, ch chan<- types.Log) (ethereum.Subscription, error)
}

// DeployBackend wraps the operations needed by WaitMined and WaitDeployed.
Expand All @@ -133,6 +106,12 @@ type DeployBackend interface {
CodeAt(ctx context.Context, account common.Address, blockNumber *big.Int) ([]byte, error)
}

// ContractFilterer defines the methods needed to access log events using one-off
// queries or continuous event subscriptions.
type ContractFilterer interface {
ethereum.LogFilterer
}

// ContractBackend defines the methods needed to work with contracts on a read-write basis.
type ContractBackend interface {
ContractCaller
Expand Down

0 comments on commit d5c5331

Please sign in to comment.