Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Upgrade] Go-Ethereum release v1.10.1 #1314

Conversation

quorumbot
Copy link
Collaborator

TODO

Plan & Analyse

  • Review the Release Notes
  • Review PRs in the section below

As you review, list extra changes and/or tests to be implemented to ensure compatibility with GoQuorum specific features.

Build & Test

  • Pull and checkout PR branch locally, then merge GoQuorum master into this branch
  • Resolve conflicts, taking into account the prior analysis
  • Implement required changes until lint passes
  • Implement required changes until all unit tests pass
  • Implement required changes until acceptance tests pass
  • Implement extra changes and/or tests
  • Verify any left TODOs in the code

Add any extra changes/tests as comments on this PR.

Go-Ethereum Release: Gemini Sigma (v1.10.1)

  • Version: v1.10.1
  • Published: 2021-03-08T09:35:47Z

Release notes

Geth v1.10.1 is a minor release with the sole purpose of enabling the Berlin hard-fork! This hard-fork takes a step towards making opcodes fairer and lays the groundwork to new types of transactions, with lots of interesting features to be built on top.

The Ethereum Foundation will have a dedicated blog post for Berlin. The essential parts from Geth's perspective is that v1.10.1 is required for Berlin on all testnets and the mainnet too. Below you can find the fork blocks for the different networks and their expected schedules. Please ensure you are upgraded well in advance of the forks to ensure a smooth transition.

  • Ropsten 9,812,189 (10 Mar 2021)
  • Goerli 4,460,644 (17 Mar 2021)
  • Rinkeby 8,290,928 (24 Mar 2021)
  • Mainnet 12,244,000 (14 Apr 2021)

For a full rundown of the changes please consult the Geth 1.10.1 release milestone.


As with all our previous releases, you can find the:

Codebase changes assessment

Legend

File Stats: (A) Added, (M) Modified and (R) Removed

Line Stats: (A) Added and (R) Removed

Assessment:

  • ✅ No conflict expected
  • ⚠ Review required to assess changes
  • ‼️ Conflicts expected and review required

5 Pull Requests

🔍 Link Title File Stats
M/A/R
Packages changed
(files changed)
Line Stats
A/R
Top 5 Changed Files
(lines changed)
⚠️ #22431 build: fix PPA failure due to updated debsrc 1/0/0
build (1)
6/5
build/ci.go (22)
⚠️ #22432 build: add support for Ubuntu Hirsute Hippo 1/0/0
build (1)
6/6
build/ci.go (24)
‼️ #22414 core, eth: unship EIP 2315 15/0/0
core/vm (12)
eth/tracers (2)
core/vm/runtime (1)
50/428
core/vm/runtime/runtime_test.go (450)
core/vm/logger.go (70)
core/vm/opcodes.go (68)
core/vm/instructions_test.go (66)
core/vm/instructions.go (64)
‼️ #22426 Revert "core/forkid, params: unset Berlin fork number" 2/0/0
core/forkid (1)
params (1)
37/25
core/forkid/forkid_test.go (116)
params/config.go (8)
‼️ #22452 tests: update reference tests with 2315 removed from Berlin 1/0/0
tests (1)
1/1
tests/testdata (4)

20 Changed files

🔍 File Lines Changed Linked PR
‼️ core/vm/runtime/runtime_test.go 450 #22414
‼️ core/forkid/forkid_test.go 116 #22426
core/vm/logger.go 70 #22414
core/vm/opcodes.go 68 #22414
‼️ core/vm/instructions_test.go 66 #22414
‼️ core/vm/instructions.go 64 #22414
core/vm/stack.go 62 #22414
core/vm/eips.go 58 #22414
⚠️ build/ci.go 46 #22431
#22432
⚠️ core/vm/interpreter.go 32 #22414
core/vm/contract.go 26 #22414
core/vm/gen_structlog.go 26 #22414
core/vm/logger_json.go 10 #22414
eth/tracers/tracer.go 8 #22414
‼️ params/config.go 8 #22426
‼️ eth/tracers/tracer_test.go 8 #22414
‼️ core/vm/logger_test.go 6 #22414
‼️ tests/testdata 4 #22452
‼️ params/version.go 4
core/vm/jump_table.go 2 #22414

karalabe and others added 30 commits November 23, 2020 17:47
github: Add new style of issue-templates
Resolves #21532

Co-authored-by: roger <dengjun@huobi.com>
This type is automatically offered by github after changing to the new style and a security.md being present
* cmd/devp2p/internal/ethtest: added large announcement tests

* cmd/devp2p/internal/ethtest: added large announcement tests

* cmd/devp2p/internal/ethtest: refactored stuff a bit

* cmd/devp2p/internal/ethtest: added TestMaliciousStatus/Handshake

* cmd/devp2p/internal/ethtest: fixed rebasing issue

* happy linter, happy life

* cmd/devp2p/internal/ethtest: used readAndServe

* stuff

* cmd/devp2p/internal/ethtest: fixed test cases
…atement (#21854)

Changes:

    Simplify nested complexity
    If an if blocks ends with a return statement then remove the else nesting.

Most of the changes has also been reported in golint https://goreportcard.com/report/github.com/ethereum/go-ethereum#golint
…882)

* Make sure to return 400 when errors are present in the response

* graphql: use less memory in chainconfig for tests

Co-authored-by: Martin Holst Swende <martin@swende.se>
This fixes a deadlock that could occur when a response packet arrived
after a call had already received enough responses and was about to
signal completion to the dispatch loop.

Co-authored-by: Felix Lange <fjl@twurst.com>
* internal/build: implement signify's signing func
* Add signify to the ci utility
* fix output file format
* Add unit test for signify
* holiman's + travis' feedback
* internal/build: verify signify's output
* crypto: move signify to common dir
* use go-minisign to verify binaries
* more holiman feedback
* crypto, ci: support minisign output
* only accept one-line trusted comments
* configurable untrusted comments
* code cleanup in tests
* revert to use ed25519 from the stdlib
* bug: fix for empty untrusted comments
* write timestamp as comment if trusted comment isn't present
* rename line checker to commentHasManyLines
* crypto: added signify fuzzer (#6)
* crypto: added signify fuzzer
* stuff
* crypto: updated signify fuzzer to fuzz comments
* crypto: repro signify crashes
* rebased fuzzer on build-signify branch
* hide fuzzer behind gofuzz build flag
* extract key data inside a single function
* don't treat \r as a newline
* travis: fix signing command line
* do not use an external binary in tests
* crypto: move signify to crypto/signify
* travis: fix formatting issue
* ci: fix linter build after package move

Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
…757)

* signer/core/api: fix derivation of ledger live accounts

For ledger hardware wallets, change account iteration as follows:

- ledger legacy: m/44'/60'/0'/X; for 0<=X<5
- ledger live: m/44'/60'/0'/0/X; for 0<=X<5

- ledger legacy: m/44'/60'/0'/X; for 0<=X<10
- ledger live: m/44'/60'/X'/0/0; for 0<=X<10

Non-ledger derivation is unchanged and remains as:
- non-ledger: m/44'/60'/0'/0/X; for 0<=X<10

* signer/core/api: derive ten default paths for all hardware wallets, plus ten legacy and ten live paths for ledger wallets

* signer/core/api: as .../0'/0/0 already included by default paths, do not include it again with ledger live paths

* accounts, signer: implement path iterators for hd wallets

Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Pascal Dierich <pascal@pascaldierich.com>
This PR fixes a deadlock reported here: #21925

The cause is that many operations may be pending, but if the close happens, only one of them gets awoken and exits, the others remain waiting for a signal that never comes.
* eth: fix error in tracing if reexec is set

* eth: change pointer embedding to value-embedding
This updates the snappy library depency to include a fix for
a Go 1.16 incompatibility issue.
This line is duplicated, though it doesn't cause any issues.
A lot of times when we hit 'core' errors, example: invalid tx, the information provided is
insufficient. We miss several pieces of information: what account has nonce too high,
and what transaction in that block was offending?

This PR adds that information, using the new type of wrapped errors.
It also adds a testcase which (partly) verifies the output from the errors.

The first commit changes all usage of direct equality-checks on core errors, into
using errors.Is. The second commit adds contextual information. This wraps most
of the core errors with more information, and also wraps it one more time in
stateprocessor, to further provide tx index and tx hash, if such a tx is encoutered in
a block. The third commit uses the chainmaker to try to generate chains with such
errors in them, thus triggering the errors and checking that the generated string meets
expectations.
* cmd/geth: implement vulnerability check

* cmd/geth: use minisign to verify vulnerability feed

* cmd/geth: add the test too

* cmd/geth: more minisig/signify testing

* cmd/geth: support multiple pubfiles for signing

* cmd/geth: add @holiman minisig pubkey

* cmd/geth: polishes on vulnerability check

* cmd/geth: fix ineffassign linter nit

* cmd/geth: add CVE to version check struct

* cmd/geth/testdata: add missing testfile

* cmd/geth: add more keys to versionchecker

* cmd/geth: support file:// URLs in version check

* cmd/geth: improve key ID printing when signature check fails

Co-authored-by: Felix Lange <fjl@twurst.com>
* les: revert arm float bug workaround to check go 1.15

* add traces to reproduce outside travis

* simpler workaround
Go won't vendor C files if there are no Go files present in the directory.
Workaround is to add dummy Go files.

Fixes: #20232
This commit enables users to specify which signer they want to use while creating their transactOpts.
Previously all contract interactions used the homestead signer. Now a user can specify whether they
want to sign with homestead or EIP155 and specify the chainID which adds another layer of security.

Closes #16484
Both Hash and Address have a String method, which returns the value as
hex with 0x prefix. They also had a Format method which tried to print
the value using printf of []byte. The way Format worked was at odds with
String though, leading to a situation where fmt.Sprintf("%v", hash)
returned the decimal notation and hash.String() returned a hex string.

This commit makes it consistent again. Both types now support the %v,
%s, %q format verbs for 0x-prefixed hex output. %x, %X creates
unprefixed hex output. %d is also supported and returns the decimal
notation "[1 2 3...]".

For Address, the case of hex characters in %v, %s, %q output is
determined using the EIP-55 checksum. Using %x, %X with Address
disables checksumming.

Co-authored-by: Felix Lange <fjl@twurst.com>
* core: add test for headerchain inserts

* core, light: write headerchains in batches

* core: change to one callback per batch of inserted headers + review concerns

* core: error-check on batch write

* core: unexport writeHeaders

* core: remove callback parameter in InsertHeaderChain

The semantics of InsertHeaderChain are now much simpler: it is now an
all-or-nothing operation. The new WriteStatus return value allows
callers to check for the canonicality of the insertion. This change
simplifies use of HeaderChain in package les, where the callback was
previously used to post chain events.

* core: skip some hashing when writing headers

* core: less hashing in header validation

* core: fix headerchain flaw regarding blacklisted hashes

Co-authored-by: Felix Lange <fjl@twurst.com>
karalabe and others added 26 commits February 26, 2021 15:04
all: define and enable the Berlin hard fork on all networks
This replaces the github.com/pborman/uuid dependency with
github.com/google/uuid because the former is only a wrapper for
the latter (since v1.0.0).

Co-authored-by: Felix Lange <fjl@twurst.com>
This PR implements the first one of the "lespay" UDP queries which
is already useful in itself: the capacity query. The server pool is making
use of this query by doing a cheap UDP query to determine whether it is
worth starting the more expensive TCP connection process.
* cmd/utils: fix exclusive check for archive node

* cmd/utils: set the txlookuplimit to 0
* cmd: retire whisper flags

* cmd/geth: remove whisper configs
This updates the consensus tests to commit 31d6630 and
adds support for access list transactions in the test runner.

Co-authored-by: Martin Holst Swende <martin@swende.se>
build: fix PPA failure due to updated debsrc
build: add support for Ubuntu Hirsute Hippo
Revert "core/forkid, params: unset Berlin fork number"
tests: update reference tests with 2315 removed from Berlin
@CLAassistant
Copy link

CLAassistant commented Jan 28, 2022

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
0 out of 8 committers have signed the CLA.

❌ zsfelfoldi
❌ rjl493456442
❌ holiman
❌ karalabe
❌ renaynay
❌ lightclient
❌ MariusVanDerWijden
❌ fjl
You have signed the CLA already but the status is still pending? Let us recheck it.

@baptiste-b-pegasys baptiste-b-pegasys deleted the upgrade/go-ethereum/v1.10.1-2022128040550 branch April 7, 2022 16:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.