Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
b1eb33c
version: begin v1.16.5 release cycle
fjl Sep 26, 2025
a8f7965
internal/ethapi: fix outdated comments (#32751)
wit765 Sep 26, 2025
2e2fece
ethapi: reject oversize storage keys before hex decode (#32750)
MatusKysel Sep 26, 2025
16b735f
signer/core: fix TestSignTx to decode res2 (#32749)
VolodymyrBg Sep 26, 2025
8e87b75
trie: correct error messages for UpdateStorage operations (#32746)
MozirDmitriy Sep 26, 2025
c984d90
eth/tracers/native: add keccak256preimage tracer (#32569)
draganm Sep 26, 2025
b19452d
params: add amsterdam fork config (#32687)
MariusVanDerWijden Sep 26, 2025
943a30d
build: remove duplicated func FileExist (#32768)
cuiweixie Sep 29, 2025
265db06
eth/catalyst: check osaka in engine_getBlobsV1 (#32731)
jsvisa Sep 29, 2025
c5a1c35
trie: fix error message in test (#32772)
VolodymyrBg Sep 29, 2025
4b08020
internal/ethapi: remove redundant check in test (#32760)
GarmashAlex Sep 29, 2025
46b7e78
cmd/evm/internal/t8ntool: panic on database corruption (#32776)
CPerezz Sep 29, 2025
ea28346
params: fix bpo config comments (#32755)
lightclient Sep 29, 2025
1cfe624
core/rawdb: update comments (#32668)
VolodymyrBg Sep 29, 2025
891bbad
params: implement String() method for ChainConfig (#32766)
futreall Sep 29, 2025
01d0ce0
params: add blob config information in the banner (#32771)
rjl493456442 Sep 30, 2025
c1e9d78
core/txpool: remove unused signer field from TxPool (#32787)
MozirDmitriy Sep 30, 2025
2037c53
core/state: correct expected value in TestMessageCallGas (#32780)
Galoretka Sep 30, 2025
6f8e28b
go.mod, cmd/keeper/go.mod: upgrade victoria metrics dependency (#32720)
gballet Sep 30, 2025
9986270
eth/catalyst: extend payloadVersion support to osaka/post-osaka forks…
yysung1123 Sep 30, 2025
f9756bb
p2p: fix error message in test (#32804)
zach871 Sep 30, 2025
bb00d26
signer/core: fix error message in test (#32807)
zach871 Sep 30, 2025
1487a85
params: fix banner message (#32796)
zach871 Sep 30, 2025
0576671
core/types, trie: reduce allocations in derivesha (#30747)
holiman Oct 1, 2025
f0dc47a
p2p/enode: fix discovery AyncFilter deadlock on shutdown (#32572)
zzzckck Oct 2, 2025
fc8c8c1
core: refactor StateProcessor to accept ChainContext interface (#32739)
hero5512 Oct 2, 2025
4927e89
p2p/enode: fix asyncfilter comment (#32823)
cskiraly Oct 2, 2025
1e4b39e
trie: cleaner array concatenation (#32756)
hero5512 Oct 2, 2025
477ee58
internal/ethapi: add timestamp to logs in eth_simulate (#32831)
deffrian Oct 6, 2025
ee30982
build: faster gh actions workflow, no ubuntu on appveyor (#32829)
s1na Oct 7, 2025
d67037a
cmd/devp2p/internal/ethtest: update to PoS-only test chain (#32850)
fjl Oct 8, 2025
168d699
core/rawdb: remove duplicated type storedReceiptRLP (#32820)
sashass1315 Oct 8, 2025
064ab70
eth/protocols/eth: use BlockChain interface in Handshake (#32847)
ngotchac Oct 8, 2025
e42af53
cmd/devp2p/internal/ethtest: accept responses in any order (#32834)
flcl42 Oct 8, 2025
695c144
core/rawdb: correct misleading comments for state history accessors (…
phrwlk Oct 9, 2025
a1b8e48
eth/filters: terminate pending tx subscription on error (#32794)
CertiK-Geth Oct 9, 2025
1120855
eth/filters: add `transactionReceipts` subscription (#32697)
10gic Oct 9, 2025
4d6d5a3
core/txpool/legacypool: fix validTxMeter to count transactions (#32845)
cskiraly Oct 10, 2025
ed264a1
eth/protocols/snap: optimize incHash (#32748)
cuiweixie Oct 10, 2025
de24450
core/rawdb, triedb/pathdb: introduce trienode history (#32596)
rjl493456442 Oct 10, 2025
659342a
ethclient: add SubscribeTransactionReceipts (#32869)
10gic Oct 10, 2025
a3aae29
node: fix error condition in gzipResponseWriter.init() (#32896)
lukema95 Oct 13, 2025
2010781
core/types: optimize MergeBloom by using bitutil (#32882)
cuiweixie Oct 13, 2025
85e9977
p2p: rm unused var seedMinTableTime (#32876)
jsvisa Oct 13, 2025
bc0a21a
eth/filters: uninstall subscription in filter apis on error (#32894)
hyeonLewis Oct 13, 2025
a7359ce
triedb, core/rawdb: implement the partial read in freezer (#32132)
jsvisa Oct 13, 2025
5c6ba6b
p2p/enode: optimize LogDist (#32887)
cuiweixie Oct 13, 2025
b87581f
p2p/enode: optimize DistCmp (#32888)
cuiweixie Oct 13, 2025
7b693ea
core/txpool/legacypool: move queue out of main txpool (#32270)
MariusVanDerWijden Oct 13, 2025
b28241b
cmd/workload: filter fuzzer test (#31613)
zsfelfoldi Oct 13, 2025
6337577
p2p/discover: wait for bootstrap to be done (#32881)
jsvisa Oct 13, 2025
52c484d
triedb/pathdb: catch int conversion overflow in 32-bit (#32899)
gballet Oct 14, 2025
00f6f2b
eth/catalyst: remove useless log on enabling Engine API (#32901)
cskiraly Oct 14, 2025
fb8d229
eth: do not warn on switching from snap sync to full sync (#32900)
cskiraly Oct 14, 2025
e03d97a
core/txpool/legacypool: fix pricedList updates (#32906)
rjl493456442 Oct 14, 2025
55a5320
accounts/abi: check presence of payable fallback or receive before pr…
cuiweixie Oct 14, 2025
f6064f3
internal/ethapi: convert legacy blobtx proofs in sendRawTransaction (…
fjl Oct 14, 2025
3cfc334
rpc: fix flaky test TestServerWebsocketReadLimit (#32889)
mishraa-G Oct 15, 2025
40505a9
eth/protocols/eth: reject message containing duplicated txs and drop …
jsvisa Oct 15, 2025
7c107c2
p2p/discover: remove hot-spin in table refresh trigger (#32912)
fjl Oct 15, 2025
32ccb54
version: release go-ethereum v1.16.5 stable
fjl Oct 16, 2025
737ffd1
Merge branch 'master' into release/1.16
fjl Oct 16, 2025
b46f1ab
Merge go-ethereum v1.16.5
joshklop Nov 19, 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
6 changes: 3 additions & 3 deletions accounts/abi/abigen/bind_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -485,13 +485,13 @@ var bindTests = []struct {
contract Defaulter {
address public caller;

function() {
fallback() external payable {
caller = msg.sender;
}
}
`,
[]string{`6060604052606a8060106000396000f360606040523615601d5760e060020a6000350463fc9c8d3981146040575b605e6000805473ffffffffffffffffffffffffffffffffffffffff191633179055565b606060005473ffffffffffffffffffffffffffffffffffffffff1681565b005b6060908152602090f3`},
[]string{`[{"constant":true,"inputs":[],"name":"caller","outputs":[{"name":"","type":"address"}],"type":"function"}]`},
[]string{`608060405234801561000f575f80fd5b5061013d8061001d5f395ff3fe608060405260043610610021575f3560e01c8063fc9c8d391461006257610022565b5b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055005b34801561006d575f80fd5b5061007661008c565b60405161008391906100ee565b60405180910390f35b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100d8826100af565b9050919050565b6100e8816100ce565b82525050565b5f6020820190506101015f8301846100df565b9291505056fea26469706673582212201e9273ecfb1f534644c77f09a25c21baaba81cf1c444ebc071e12a225a23c72964736f6c63430008140033`},
[]string{`[{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"caller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]`},
`
"math/big"

Expand Down
6 changes: 4 additions & 2 deletions accounts/abi/bind/v2/base.go
Original file line number Diff line number Diff line change
Expand Up @@ -277,8 +277,10 @@ func (c *BoundContract) RawCreationTransact(opts *TransactOpts, calldata []byte)
// Transfer initiates a plain transaction to move funds to the contract, calling
// its default method if one is available.
func (c *BoundContract) Transfer(opts *TransactOpts) (*types.Transaction, error) {
// todo(rjl493456442) check the payable fallback or receive is defined
// or not, reject invalid transaction at the first place
// Check if payable fallback or receive is defined
if !c.abi.HasReceive() && !(c.abi.HasFallback() && c.abi.Fallback.IsPayable()) {
return nil, fmt.Errorf("contract does not have a payable fallback or receive function")
}
return c.transact(opts, &c.address, nil)
}

Expand Down
22 changes: 1 addition & 21 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ clone_depth: 5
version: "{branch}.{build}"

image:
- Ubuntu
- Visual Studio 2019

environment:
Expand All @@ -17,25 +16,6 @@ install:
- go version

for:
# Linux has its own script without -arch and -cc.
# The linux builder also runs lint.
- matrix:
only:
- image: Ubuntu
build_script:
- go run build/ci.go lint
- go run build/ci.go check_generate
- go run build/ci.go check_baddeps
- go run build/ci.go install -dlgo
test_script:
- go run build/ci.go test -dlgo -short

# linux/386 is disabled.
- matrix:
exclude:
- image: Ubuntu
GETH_ARCH: 386

# Windows builds for amd64 + 386.
- matrix:
only:
Expand All @@ -56,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
- go run build/ci.go test -dlgo -arch %GETH_ARCH% -cc %GETH_CC% -short -skip-spectests
33 changes: 20 additions & 13 deletions build/ci.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ import (
"time"

"github.com/cespare/cp"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto/signify"
"github.com/ethereum/go-ethereum/internal/build"
"github.com/ethereum/go-ethereum/internal/download"
Expand Down Expand Up @@ -148,7 +149,7 @@ func executablePath(name string) string {
func main() {
log.SetFlags(log.Lshortfile)

if !build.FileExist(filepath.Join("build", "ci.go")) {
if !common.FileExist(filepath.Join("build", "ci.go")) {
log.Fatal("this script must be run from the root of the repository")
}
if len(os.Args) < 2 {
Expand Down Expand Up @@ -283,20 +284,26 @@ 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")
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")
)
flag.CommandLine.Parse(cmdline)

// Get test fixtures.
// Load checksums file (needed for both spec tests and dlgo)
csdb := download.MustLoadChecksums("build/checksums.txt")
downloadSpecTestFixtures(csdb, *cachedir)

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

// Configure the toolchain.
tc := build.GoToolchain{GOARCH: *arch, CC: *cc}
Expand All @@ -317,7 +324,7 @@ func doTest(cmdline []string) {

// Test a single package at a time. CI builders are slow
// and some tests run into timeouts under load.
gotest.Args = append(gotest.Args, "-p", "1")
gotest.Args = append(gotest.Args, "-p", fmt.Sprintf("%d", *threads))
if *coverage {
gotest.Args = append(gotest.Args, "-covermode=atomic", "-cover")
}
Expand Down Expand Up @@ -898,7 +905,7 @@ func ppaUpload(workdir, ppa, sshUser string, files []string) {
var idfile string
if sshkey := getenvBase64("PPA_SSH_KEY"); len(sshkey) > 0 {
idfile = filepath.Join(workdir, "sshkey")
if !build.FileExist(idfile) {
if !common.FileExist(idfile) {
os.WriteFile(idfile, sshkey, 0600)
}
}
Expand Down
5 changes: 3 additions & 2 deletions cmd/devp2p/internal/ethtest/mkchain.sh
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
#!/bin/sh

hivechain generate \
--pos \
--fork-interval 6 \
--tx-interval 1 \
--length 500 \
--length 600 \
--outdir testdata \
--lastfork cancun \
--lastfork prague \
--outputs accounts,genesis,chain,headstate,txinfo,headblock,headfcu,newpayload,forkenv
6 changes: 6 additions & 0 deletions cmd/devp2p/internal/ethtest/protocol.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,3 +86,9 @@ func protoOffset(proto Proto) uint64 {
panic("unhandled protocol")
}
}

// msgTypePtr is the constraint for protocol message types.
type msgTypePtr[U any] interface {
*U
Kind() byte
}
32 changes: 16 additions & 16 deletions cmd/devp2p/internal/ethtest/snap.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,29 +86,29 @@ func (s *Suite) TestSnapGetAccountRange(t *utesting.T) {
root: root,
startingHash: zero,
limitHash: ffHash,
expAccounts: 86,
expAccounts: 67,
expFirst: firstKey,
expLast: common.HexToHash("0x445cb5c1278fdce2f9cbdb681bdd76c52f8e50e41dbd9e220242a69ba99ac099"),
expLast: common.HexToHash("0x622e662246601dd04f996289ce8b85e86db7bb15bb17f86487ec9d543ddb6f9a"),
desc: "In this test, we request the entire state range, but limit the response to 4000 bytes.",
},
{
nBytes: 3000,
root: root,
startingHash: zero,
limitHash: ffHash,
expAccounts: 65,
expAccounts: 49,
expFirst: firstKey,
expLast: common.HexToHash("0x2e6fe1362b3e388184fd7bf08e99e74170b26361624ffd1c5f646da7067b58b6"),
expLast: common.HexToHash("0x445cb5c1278fdce2f9cbdb681bdd76c52f8e50e41dbd9e220242a69ba99ac099"),
desc: "In this test, we request the entire state range, but limit the response to 3000 bytes.",
},
{
nBytes: 2000,
root: root,
startingHash: zero,
limitHash: ffHash,
expAccounts: 44,
expAccounts: 34,
expFirst: firstKey,
expLast: common.HexToHash("0x1c3f74249a4892081ba0634a819aec9ed25f34c7653f5719b9098487e65ab595"),
expLast: common.HexToHash("0x2ef46ebd2073cecde499c2e8df028ad79a26d57bfaa812c4c6f7eb4c9617b913"),
desc: "In this test, we request the entire state range, but limit the response to 2000 bytes.",
},
{
Expand Down Expand Up @@ -177,9 +177,9 @@ The server should return the first available account.`,
root: root,
startingHash: firstKey,
limitHash: ffHash,
expAccounts: 86,
expAccounts: 67,
expFirst: firstKey,
expLast: common.HexToHash("0x445cb5c1278fdce2f9cbdb681bdd76c52f8e50e41dbd9e220242a69ba99ac099"),
expLast: common.HexToHash("0x622e662246601dd04f996289ce8b85e86db7bb15bb17f86487ec9d543ddb6f9a"),
desc: `In this test, startingHash is exactly the first available account key.
The server should return the first available account of the state as the first item.`,
},
Expand All @@ -188,9 +188,9 @@ The server should return the first available account of the state as the first i
root: root,
startingHash: hashAdd(firstKey, 1),
limitHash: ffHash,
expAccounts: 86,
expAccounts: 67,
expFirst: secondKey,
expLast: common.HexToHash("0x4615e5f5df5b25349a00ad313c6cd0436b6c08ee5826e33a018661997f85ebaa"),
expLast: common.HexToHash("0x66192e4c757fba1cdc776e6737008f42d50370d3cd801db3624274283bf7cd63"),
desc: `In this test, startingHash is after the first available key.
The server should return the second account of the state as the first item.`,
},
Expand Down Expand Up @@ -226,9 +226,9 @@ server to return no data because genesis is older than 127 blocks.`,
root: s.chain.RootAt(int(s.chain.Head().Number().Uint64()) - 127),
startingHash: zero,
limitHash: ffHash,
expAccounts: 84,
expAccounts: 66,
expFirst: firstKey,
expLast: common.HexToHash("0x580aa878e2f92d113a12c0a3ce3c21972b03dbe80786858d49a72097e2c491a3"),
expLast: common.HexToHash("0x729953a43ed6c913df957172680a17e5735143ad767bda8f58ac84ec62fbec5e"),
desc: `This test requests data at a state root that is 127 blocks old.
We expect the server to have this state available.`,
},
Expand Down Expand Up @@ -657,8 +657,8 @@ The server should reject the request.`,
// It's a bit unfortunate these are hard-coded, but the result depends on
// a lot of aspects of the state trie and can't be guessed in a simple
// way. So you'll have to update this when the test chain is changed.
common.HexToHash("0x3e963a69401a70224cbfb8c0cc2249b019041a538675d71ccf80c9328d114e2e"),
common.HexToHash("0xd0670d09cdfbf3c6320eb3e92c47c57baa6c226551a2d488c05581091e6b1689"),
common.HexToHash("0x5bdc0d6057b35642a16d27223ea5454e5a17a400e28f7328971a5f2a87773b76"),
common.HexToHash("0x0a76c9812ca90ffed8ee4d191e683f93386b6e50cfe3679c0760d27510aa7fc5"),
empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty,
empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty,
empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty,
Expand All @@ -678,8 +678,8 @@ The server should reject the request.`,
// be updated when the test chain is changed.
expHashes: []common.Hash{
empty,
common.HexToHash("0xd0670d09cdfbf3c6320eb3e92c47c57baa6c226551a2d488c05581091e6b1689"),
common.HexToHash("0x3e963a69401a70224cbfb8c0cc2249b019041a538675d71ccf80c9328d114e2e"),
common.HexToHash("0x0a76c9812ca90ffed8ee4d191e683f93386b6e50cfe3679c0760d27510aa7fc5"),
common.HexToHash("0x5bdc0d6057b35642a16d27223ea5454e5a17a400e28f7328971a5f2a87773b76"),
},
},

Expand Down
Loading