Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
367b5fb
version: begin v1.16.6 release cycle
fjl Oct 16, 2025
5c53507
cmd/geth: log current key in expandVerkle instead of keylist[0] (#32689)
Galoretka Oct 16, 2025
c37bd67
ethclient: add support for eth_simulateV1 (#32856)
hero5512 Oct 16, 2025
ff54ca0
internal/ethapi: add eth_SendRawTransactionSync (#32830)
aodhgan Oct 16, 2025
b373d79
core/state: state copy bugfixes with Verkle Trees (#31696)
yazzaoui Oct 16, 2025
0a2c21a
eth/ethconfig : fix eth generate config (#32929)
ucwong Oct 17, 2025
342285b
eth, internal: add blob conversion for SendRawTransactionSync (#32930)
rjl493456442 Oct 17, 2025
0ec6327
cmd/utils: use maximum uint64 value for receipt chain insertion (#32934)
CertiK-Geth Oct 18, 2025
a9e6626
eth/fetcher: add metrics for tracking slow peers (#32964)
healthykim Oct 20, 2025
88576c5
eth/fetcher: remove dangling peers from alternates (#32947)
healthykim Oct 20, 2025
11c0fb9
triedb/pathdb: fix index out of range panic in decodeSingle (#32937)
hero5512 Oct 20, 2025
69df6bb
core/types: prealloc map in HashDifference as in TxDifference (#32946)
cuiweixie Oct 20, 2025
cfb3111
eth/filters: avoid rebuild the hash map multi times (#32965)
mask-pp Oct 20, 2025
b6a4ac9
core/vm: don't call SetCode after contract creation if initcode didn'…
jwasinger Oct 20, 2025
b1809d1
cmd/keeper: use the ziren keccak precompile (#32816)
gballet Oct 20, 2025
b81f03e
params: enable osaka on dev mode (#32917)
MariusVanDerWijden Oct 20, 2025
d73bfeb
core/txpool: Initialize journal writer for tx tracker (#32921)
KyrinCode Oct 21, 2025
79b6a56
core/state: prevent SetCode hook if contract code is not changed (#32…
rjl493456442 Oct 21, 2025
0a8b820
triedb/pathdb: make batch with pre-allocated size (#32914)
rjl493456442 Oct 21, 2025
407d9fa
cmd/geth: add flag to set genesis (#32844)
lightclient Oct 21, 2025
6608a2a
core/types: remove unused `ErrInvalidTxType` var (#32989)
cuiweixie Oct 21, 2025
3b80752
core/state: fix the flaky TestSizeTracker (#32993)
jsvisa Oct 22, 2025
116c916
cmd/devp2p: distinguish the jwt in devp2p and geth (#32972)
jsvisa Oct 22, 2025
2bb3d9a
p2p: silence on listener shutdown (#33001)
jsvisa Oct 23, 2025
030cd2d
cmd/utils: use IsHexAddress method (#32997)
mask-pp Oct 23, 2025
f1be215
crypto: implement ziren keccak state (#32996)
gballet Oct 23, 2025
0413af4
rpc: fix a flaky test of the websocket (#33002)
jsvisa Oct 23, 2025
53c85da
eth/tracers: fix crasher in TraceCall with BlockOverrides (#33015)
hero5512 Oct 24, 2025
074d7b7
.gitea/workflows, build: add release build for keeper (#32632)
gballet Oct 24, 2025
17e5222
build: fix keeper build (#33018)
fjl Oct 24, 2025
cfa3b96
core/rawdb, triedb/pathdb: re-structure the trienode history header (…
rjl493456442 Oct 25, 2025
7fb91f3
rpc: remove unused vars (#33012)
rizkyikiw42 Oct 26, 2025
078a5ec
core/state: improve accessList copy (#33024)
cuiweixie Oct 26, 2025
447b5f7
core: don't modify the shared chainId between tests (#33020)
jsvisa Oct 27, 2025
33dbd64
core/types: optimize modernSigner.Equal (#32971)
cuiweixie Oct 27, 2025
b1db341
core: refine condition for using legacy chain freezer directory (#33032)
jsvisa Oct 28, 2025
59d08c6
internal/jsre: pass correct args to setTimeout/setInterval callbacks …
anim001k Oct 28, 2025
739f6f4
.github: add 32-bit CI targets (#32911)
gballet Oct 28, 2025
ae37b49
accounts/abi/bind/v2: fix error assertion in test (#33041)
alarso16 Oct 29, 2025
5dd0fe2
p2p: cleanup v4 if v5 failed (#33005)
jsvisa Oct 29, 2025
ccacbd1
common: simplify FileExist helper (#32969)
MamunC0der Oct 30, 2025
243407a
eth/downloader: fix incorrect waitgroup in test `XTestDelivery` (#33047)
wit765 Oct 30, 2025
e6d34c1
eth/tracers: fix prestateTracer for EIP-6780 SELFDESTRUCT (#33050)
hero5512 Oct 31, 2025
18a9027
common: fix duration comparison in PrettyAge (#33064)
maradini77 Nov 1, 2025
28c59b7
core/rawdb: fix db inspector by supporting trienode history (#33087)
rjl493456442 Nov 3, 2025
0250724
params: set osaka and BPO1 & BPO2 mainnet dates (#33063)
MariusVanDerWijden Nov 3, 2025
044828e
version: release go-ethereum v1.16.6
fjl Nov 3, 2025
386c3de
Merge branch 'master' into release/1.16
fjl Nov 3, 2025
a098400
Merge go-ethereum v1.16.6
joshklop Nov 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .gitea/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,27 @@ jobs:
LINUX_SIGNING_KEY: ${{ secrets.LINUX_SIGNING_KEY }}
AZURE_BLOBSTORE_TOKEN: ${{ secrets.AZURE_BLOBSTORE_TOKEN }}

keeper:
name: Keeper Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: 1.24
cache: false

- name: Install cross toolchain
run: |
apt-get update
apt-get -yq --no-install-suggests --no-install-recommends install gcc-multilib

- name: Build (amd64)
run: |
go run build/ci.go keeper -dlgo

windows:
name: Windows Build
runs-on: "win-11"
Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,5 @@ cmd/ethkey/ethkey
cmd/evm/evm
cmd/geth/geth
cmd/rlpdump/rlpdump
cmd/workload/workload
cmd/workload/workload
cmd/keeper/keeper
5 changes: 2 additions & 3 deletions accounts/abi/bind/v2/util_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,10 +144,9 @@ func TestWaitDeployedCornerCases(t *testing.T) {
done := make(chan struct{})
go func() {
defer close(done)
want := errors.New("context canceled")
_, err := bind.WaitDeployed(ctx, backend.Client(), tx.Hash())
if err == nil || errors.Is(want, err) {
t.Errorf("error mismatch: want %v, got %v", want, err)
if !errors.Is(err, context.Canceled) {
t.Errorf("error mismatch: want %v, got %v", context.Canceled, err)
}
}()

Expand Down
2 changes: 1 addition & 1 deletion appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,4 @@ for:
- go run build/ci.go archive -arch %GETH_ARCH% -type zip -signer WINDOWS_SIGNING_KEY -upload gethstore/builds
- go run build/ci.go nsis -arch %GETH_ARCH% -signer WINDOWS_SIGNING_KEY -upload gethstore/builds
test_script:
- go run build/ci.go test -dlgo -arch %GETH_ARCH% -cc %GETH_CC% -short -skip-spectests
- go run build/ci.go test -dlgo -arch %GETH_ARCH% -cc %GETH_CC% -short
4 changes: 4 additions & 0 deletions beacon/params/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,8 @@ func (c *ChainConfig) LoadForks(file []byte) error {
switch version := value.(type) {
case int:
versions[name] = new(big.Int).SetUint64(uint64(version)).FillBytes(make([]byte, 4))
case int64:
versions[name] = new(big.Int).SetUint64(uint64(version)).FillBytes(make([]byte, 4))
case uint64:
versions[name] = new(big.Int).SetUint64(version).FillBytes(make([]byte, 4))
case string:
Expand All @@ -125,6 +127,8 @@ func (c *ChainConfig) LoadForks(file []byte) error {
switch epoch := value.(type) {
case int:
epochs[name] = uint64(epoch)
case int64:
epochs[name] = uint64(epoch)
case uint64:
epochs[name] = epoch
case string:
Expand Down
120 changes: 106 additions & 14 deletions build/ci.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ Available commands are:
install [ -arch architecture ] [ -cc compiler ] [ packages... ] -- builds packages and executables
test [ -coverage ] [ packages... ] -- runs the tests

keeper [ -dlgo ]
keeper-archive [ -signer key-envvar ] [ -signify key-envvar ] [ -upload dest ]

archive [ -arch architecture ] [ -type zip|tar ] [ -signer key-envvar ] [ -signify key-envvar ] [ -upload dest ] -- archives build artifacts
importkeys -- imports signing keys from env
debsrc [ -signer key-id ] [ -upload dest ] -- creates a debian source package
Expand Down Expand Up @@ -86,6 +89,30 @@ var (
executablePath("clef"),
}

// Keeper build targets with their configurations
keeperTargets = []struct {
Name string
GOOS string
GOARCH string
CC string
Tags string
Env map[string]string
}{
{
Name: "ziren",
GOOS: "linux",
GOARCH: "mipsle",
// enable when cgo works
// CC: "mipsel-linux-gnu-gcc",
Tags: "ziren",
Env: map[string]string{"GOMIPS": "softfloat", "CGO_ENABLED": "0"},
},
{
Name: "example",
Tags: "example",
},
}

// A debian package is created for all executables listed here.
debExecutables = []debExecutable{
{
Expand Down Expand Up @@ -178,6 +205,10 @@ func main() {
doPurge(os.Args[2:])
case "sanitycheck":
doSanityCheck()
case "keeper":
doInstallKeeper(os.Args[2:])
case "keeper-archive":
doKeeperArchive(os.Args[2:])
default:
log.Fatal("unknown command ", os.Args[1])
}
Expand Down Expand Up @@ -212,9 +243,6 @@ func doInstall(cmdline []string) {
// Configure the build.
gobuild := tc.Go("build", buildFlags(env, *staticlink, buildTags)...)

// We use -trimpath to avoid leaking local paths into the built executables.
gobuild.Args = append(gobuild.Args, "-trimpath")

// Show packages during build.
gobuild.Args = append(gobuild.Args, "-v")

Expand All @@ -234,6 +262,43 @@ func doInstall(cmdline []string) {
}
}

// doInstallKeeper builds keeper binaries for all supported targets.
func doInstallKeeper(cmdline []string) {
var dlgo = flag.Bool("dlgo", false, "Download Go and build with it")

flag.CommandLine.Parse(cmdline)
env := build.Env()

// Configure the toolchain.
tc := build.GoToolchain{}
if *dlgo {
csdb := download.MustLoadChecksums("build/checksums.txt")
tc.Root = build.DownloadGo(csdb)
}

for _, target := range keeperTargets {
log.Printf("Building keeper-%s", target.Name)

// Configure the build.
tc.GOARCH = target.GOARCH
tc.GOOS = target.GOOS
tc.CC = target.CC
gobuild := tc.Go("build", buildFlags(env, true, []string{target.Tags})...)
gobuild.Dir = "./cmd/keeper"
gobuild.Args = append(gobuild.Args, "-v")

for key, value := range target.Env {
gobuild.Env = append(gobuild.Env, key+"="+value)
}
outputName := fmt.Sprintf("keeper-%s", target.Name)

args := slices.Clone(gobuild.Args)
args = append(args, "-o", executablePath(outputName))
args = append(args, ".")
build.MustRun(&exec.Cmd{Path: gobuild.Path, Args: args, Env: gobuild.Env})
}
}

// buildFlags returns the go tool flags for building.
func buildFlags(env build.Environment, staticLinking bool, buildTags []string) (flags []string) {
var ld []string
Expand Down Expand Up @@ -275,6 +340,8 @@ func buildFlags(env build.Environment, staticLinking bool, buildTags []string) (
if len(buildTags) > 0 {
flags = append(flags, "-tags", strings.Join(buildTags, ","))
}
// We use -trimpath to avoid leaking local paths into the built executables.
flags = append(flags, "-trimpath")
return flags
}

Expand All @@ -284,24 +351,23 @@ func buildFlags(env build.Environment, staticLinking bool, buildTags []string) (

func doTest(cmdline []string) {
var (
dlgo = flag.Bool("dlgo", false, "Download Go and build with it")
arch = flag.String("arch", "", "Run tests for given architecture")
cc = flag.String("cc", "", "Sets C compiler binary")
coverage = flag.Bool("coverage", false, "Whether to record code coverage")
verbose = flag.Bool("v", false, "Whether to log verbosely")
race = flag.Bool("race", false, "Execute the race detector")
short = flag.Bool("short", false, "Pass the 'short'-flag to go test")
cachedir = flag.String("cachedir", "./build/cache", "directory for caching downloads")
skipspectests = flag.Bool("skip-spectests", false, "Skip downloading execution-spec-tests fixtures")
threads = flag.Int("p", 1, "Number of CPU threads to use for testing")
dlgo = flag.Bool("dlgo", false, "Download Go and build with it")
arch = flag.String("arch", "", "Run tests for given architecture")
cc = flag.String("cc", "", "Sets C compiler binary")
coverage = flag.Bool("coverage", false, "Whether to record code coverage")
verbose = flag.Bool("v", false, "Whether to log verbosely")
race = flag.Bool("race", false, "Execute the race detector")
short = flag.Bool("short", false, "Pass the 'short'-flag to go test")
cachedir = flag.String("cachedir", "./build/cache", "directory for caching downloads")
threads = flag.Int("p", 1, "Number of CPU threads to use for testing")
)
flag.CommandLine.Parse(cmdline)

// Load checksums file (needed for both spec tests and dlgo)
csdb := download.MustLoadChecksums("build/checksums.txt")

// Get test fixtures.
if !*skipspectests {
if !*short {
downloadSpecTestFixtures(csdb, *cachedir)
}

Expand Down Expand Up @@ -633,6 +699,32 @@ func doArchive(cmdline []string) {
}
}

func doKeeperArchive(cmdline []string) {
var (
signer = flag.String("signer", "", `Environment variable holding the signing key (e.g. LINUX_SIGNING_KEY)`)
signify = flag.String("signify", "", `Environment variable holding the signify key (e.g. LINUX_SIGNIFY_KEY)`)
upload = flag.String("upload", "", `Destination to upload the archives (usually "gethstore/builds")`)
)
flag.CommandLine.Parse(cmdline)

var (
env = build.Env()
vsn = version.Archive(env.Commit)
keeper = "keeper-" + vsn + ".tar.gz"
)
maybeSkipArchive(env)
files := []string{"COPYING"}
for _, target := range keeperTargets {
files = append(files, executablePath(fmt.Sprintf("keeper-%s", target.Name)))
}
if err := build.WriteArchive(keeper, files); err != nil {
log.Fatal(err)
}
if err := archiveUpload(keeper, *upload, *signer, *signify); err != nil {
log.Fatal(err)
}
}

func archiveBasename(arch string, archiveVersion string) string {
platform := runtime.GOOS + "-" + arch
if arch == "arm" {
Expand Down
4 changes: 2 additions & 2 deletions cmd/devp2p/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ with our test chain. The chain files are located in `./cmd/devp2p/internal/ethte
--nat=none \
--networkid 3503995874084926 \
--verbosity 5 \
--authrpc.jwtsecret 0x7365637265747365637265747365637265747365637265747365637265747365
--authrpc.jwtsecret jwt.secret

Note that the tests also require access to the engine API.
The test suite can now be executed using the devp2p tool.
Expand All @@ -130,7 +130,7 @@ The test suite can now be executed using the devp2p tool.
--chain internal/ethtest/testdata \
--node enode://.... \
--engineapi http://127.0.0.1:8551 \
--jwtsecret 0x7365637265747365637265747365637265747365637265747365637265747365
--jwtsecret $(cat jwt.secret)

Repeat the above process (re-initialising the node) in order to run the Eth Protocol test suite again.

Expand Down
12 changes: 0 additions & 12 deletions cmd/devp2p/rlpxcmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,9 +143,6 @@ type testParams struct {

func cliTestParams(ctx *cli.Context) *testParams {
nodeStr := ctx.String(testNodeFlag.Name)
if nodeStr == "" {
exit(fmt.Errorf("missing -%s", testNodeFlag.Name))
}
node, err := parseNode(nodeStr)
if err != nil {
exit(err)
Expand All @@ -156,14 +153,5 @@ func cliTestParams(ctx *cli.Context) *testParams {
jwt: ctx.String(testNodeJWTFlag.Name),
chainDir: ctx.String(testChainDirFlag.Name),
}
if p.engineAPI == "" {
exit(fmt.Errorf("missing -%s", testNodeEngineFlag.Name))
}
if p.jwt == "" {
exit(fmt.Errorf("missing -%s", testNodeJWTFlag.Name))
}
if p.chainDir == "" {
exit(fmt.Errorf("missing -%s", testChainDirFlag.Name))
}
return &p
}
7 changes: 5 additions & 2 deletions cmd/devp2p/runtest.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,26 +39,29 @@ var (
}

// for eth/snap tests
testChainDirFlag = &cli.StringFlag{
testChainDirFlag = &cli.PathFlag{
Name: "chain",
Usage: "Test chain directory (required)",
Category: flags.TestingCategory,
Required: true,
}
testNodeFlag = &cli.StringFlag{
Name: "node",
Usage: "Peer-to-Peer endpoint (ENR) of the test node (required)",
Category: flags.TestingCategory,
Required: true,
}
testNodeJWTFlag = &cli.StringFlag{
Name: "jwtsecret",
Usage: "JWT secret for the engine API of the test node (required)",
Category: flags.TestingCategory,
Value: "0x7365637265747365637265747365637265747365637265747365637265747365",
Required: true,
}
testNodeEngineFlag = &cli.StringFlag{
Name: "engineapi",
Usage: "Engine API endpoint of the test node (required)",
Category: flags.TestingCategory,
Required: true,
}

// These two are specific to the discovery tests.
Expand Down
3 changes: 3 additions & 0 deletions cmd/geth/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ var (
utils.OverrideBPO1,
utils.OverrideBPO2,
utils.OverrideVerkle,
utils.OverrideGenesisFlag,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we think this could be useful for platforms? I couldn't think of how off the top of my head but wanted to call it out in case we want to update docs somewhere. Here is the upstream PR.

utils.OverrideOptimismCanyon,
utils.OverrideOptimismEcotone,
utils.OverrideOptimismFjord,
Expand Down Expand Up @@ -215,6 +216,8 @@ var (
utils.AllowUnprotectedTxs,
utils.BatchRequestLimit,
utils.BatchResponseMaxSize,
utils.RPCTxSyncDefaultTimeoutFlag,
utils.RPCTxSyncMaxTimeoutFlag,
}

metricsFlags = []cli.Flag{
Expand Down
2 changes: 1 addition & 1 deletion cmd/geth/verkle.go
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ func expandVerkle(ctx *cli.Context) error {
}

for i, key := range keylist {
log.Info("Reading key", "index", i, "key", keylist[0])
log.Info("Reading key", "index", i, "key", key)
root.Get(key, chaindb.Get)
}

Expand Down
2 changes: 1 addition & 1 deletion cmd/keeper/getpayload_ziren.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
package main

import (
zkruntime "github.com/zkMIPS/zkMIPS/crates/go-runtime/zkm_runtime"
zkruntime "github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime"
)

// getInput reads the input payload from the zkVM runtime environment.
Expand Down
7 changes: 2 additions & 5 deletions cmd/keeper/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ module github.com/ethereum/go-ethereum/cmd/keeper
go 1.24.0

require (
github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6
github.com/ethereum/go-ethereum v0.0.0-00010101000000-000000000000
github.com/zkMIPS/zkMIPS/crates/go-runtime/zkm_runtime v0.0.0-20250915074013-fbc07aa2c6f5
)

require (
Expand Down Expand Up @@ -47,7 +47,4 @@ require (
gopkg.in/yaml.v2 v2.4.0 // indirect
)

replace (
github.com/ethereum/go-ethereum => ../../
github.com/zkMIPS/zkMIPS/crates/go-runtime/zkm_runtime => github.com/weilzkm/zkMIPS/crates/go-runtime/zkvm_runtime v0.0.0-20250915074013-fbc07aa2c6f5
)
replace github.com/ethereum/go-ethereum => ../../
Loading