Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
139 commits
Select commit Hold shift + click to select a range
8b39453
version: start release 1.17.4 cycle (#34938)
rjl493456442 May 11, 2026
22919ce
eth/tracers: fix data race on interruption reason across tracers (#34…
rayjun May 11, 2026
298c835
cmd/evm: fix gasUsed in evm run cmd (#34732)
gzliudan May 11, 2026
56d391b
cmd, core, internal, miner: wrap pre/post-execution (#34812)
rjl493456442 May 11, 2026
c16684c
internal/ethapi: fix withdrawal regression in eth_simulateV1 (#34939)
s1na May 12, 2026
d446676
core: write head hash to db after snap sync is complete (#34912)
cuiweixie May 12, 2026
ab28bda
eth/catalyst: fix getBlobsV3 partial/complete metrics (#34666)
adblesss May 12, 2026
726d657
core/txpool/blobpool: add blobTxForPool type (#34882)
healthykim May 12, 2026
91f8e7c
internal/ethapi: add balHash to block results (#34652)
cuiweixie May 12, 2026
6af374e
accounts/abi: fix unittest code (#34740)
cuiweixie May 12, 2026
21c5a28
cmd/abigen: respect --v2=false (#34943)
RekCuy63 May 12, 2026
0494cdc
core: introduce GasChangeHook v2 (#34946)
rjl493456442 May 13, 2026
b2aa698
core/state: track the block-level accessList (#34803)
rjl493456442 May 13, 2026
da34eb5
node: default OpenTelemetry SampleRatio to 1.0 (#34948)
barnabasbusa May 13, 2026
31bb680
miner: re-use basefee and big.Int in loop (#34783)
cuiweixie May 14, 2026
6f6d006
core/txpool/blobpool: silence GetRLP miss-log spam (#34965)
s1na May 15, 2026
8a0223e
core/txpool: use blobTxForPool inside of `Reset` function (#34960)
cuiweixie May 15, 2026
d4027f3
node: normalize HTTP vhost host matching (#34693)
afurm May 18, 2026
3d1e6aa
signer/core: fix unconditional http request metadata scheme overwrite…
cuiweixie May 18, 2026
1149f76
internal/ethapi: add eth_baseFee RPC method (#34904)
wjmelements May 19, 2026
4f4bfdb
beacon/light/sync: check error (#34818)
cuiweixie May 19, 2026
970e3cd
beacon/light: fix lock after lock deadlock (#34800)
cuiweixie May 19, 2026
e3ce773
internal/ethapi: propagate SetHead errors to API (#35001)
cuiweixie May 19, 2026
1bdc4a6
core, consensus, internal, eth, miner: construct block accessList (#3…
rjl493456442 May 19, 2026
a484a85
eth/protocols/eth: implement eth71 bal response (#34879)
healthykim May 19, 2026
50ae34c
core/types/bal: add additional static validation for access lists (#3…
jwasinger May 20, 2026
918d46b
core, cmd, internal: rework BAL json marshalling to adhere EELS (#34972)
rjl493456442 May 20, 2026
efe58ea
beacon/engine, rpc: optimize JSON encoding for large blob payloads (#…
jrhea May 20, 2026
ef5041e
eth/catalyst: engine_hasBlobs (#34859)
MariusVanDerWijden May 21, 2026
dc07433
beacon/engine: preserve nil blob list JSON (#35019)
fallintoplace May 21, 2026
36520d8
accounts/usbwallet: add support for blob and setcode transactions (#3…
BZO95 May 21, 2026
4daaaad
eth/catalyst: implement engine_newPayloadWithWitnessV5 and use witnes…
jsign May 21, 2026
2522b71
eth/catalyst, core/txpool/blobpool: add tracing to GetBlobs endpoints…
jrhea May 22, 2026
92cd26c
core: add code cache hit/miss meters (#34821)
tooshiNoko May 22, 2026
12eabbd
cmd/evm/internal/t8ntool: Amsterdam t8n updates; adds BAL and slotNum…
fselmo May 22, 2026
a059a35
eth/catalyst: count actually-available blobs in getBlobs (#35028)
rayjun May 22, 2026
d3edc58
graphql: handle missing block body in Raw resolver (#35027)
RekCuy63 May 22, 2026
c0fc5e0
internal/ethapi: fix base fee too low error code in eth_simulateV1 (#…
s1na May 26, 2026
8209b9c
accounts/abi: forEachUnpack ABI error message arguments swapped (#35046)
cuiweixie May 26, 2026
ca1a027
core: add slot number (#35036)
cuiweixie May 26, 2026
9429725
p2p/discover: waitForNodes hangs on RespCount=0 from peer (#35043)
cuiweixie May 26, 2026
c6b2a27
graphql: end == 0 and begin > 0 should be reject (#35032)
cuiweixie May 26, 2026
cae4c5f
cmd/utils: respect --state.size-tracking=false (#35011)
RekCuy63 May 26, 2026
5933fa4
.github: cancel CI run for stale PR commits (#34964)
s1na May 26, 2026
622cef2
eth/protocols/snap: fix error message (#34976)
cuiweixie May 26, 2026
d902837
core/vm: global cache for jumpdest bitmaps (#34850)
s1na May 27, 2026
ace9c51
cmd/utils: fix archive mode detection for TransactionHistory override…
vickkkkkyy May 27, 2026
ac1fdc5
internal/ethapi: add eth_capabilities RPC method (#33886)
locoholy May 27, 2026
90cd7d1
eth: should return basefee for the next block as doc says (#35023)
cuiweixie May 27, 2026
c782197
graphql: limit request body size (#35034)
fallintoplace May 27, 2026
1a23336
eth/catalyst: import new payload if at genesis, regardless of sync st…
lightclient May 27, 2026
45698e9
p2p/nat: bump pion/stun to v3 to pull in fixed pion/dtls (#34980)
ozpool May 27, 2026
1482002
cmd/clef, cmd/geth: remove CLI flags that were deprecated for more th…
gballet May 27, 2026
9d21f6e
crypto/ecies: correctly return ErrInvalidMessage (#35037)
cuiweixie May 27, 2026
f4a90d1
rpc: fix method-name matched before maxMethodNameLength (#35038)
cuiweixie May 27, 2026
ab20d50
log: return TerminalHandler write errors from Handle (#35055)
cuiweixie May 27, 2026
b0df339
node, cmd/clef, graphql: disable gzip on engine API (#35057)
jrhea May 28, 2026
10a1982
eth/protocols/eth: fix track-before-send (#35056)
cuiweixie May 28, 2026
9f434c0
go.mod: update pion/dtls (#35062)
MariusVanDerWijden May 28, 2026
4017efe
rpc: reject empty batch in BatchCallContext (#34985)
rayjun May 28, 2026
95320ff
miner: set slot number for pending block post-Amsterdam (#34792)
barnabasbusa May 28, 2026
61342e9
trie/bintrie: record inserted leaves for t8n (#34843)
gballet May 28, 2026
0ef867b
triedb/pathdb: fix swapped want/got args in journal-root mismatch err…
Pablosinyores May 29, 2026
7a73ffe
accounts/usbwallet: check ledger versions for typed txs (#35044)
RekCuy63 May 29, 2026
b908022
rpc: always set content-length on HTTP responses (#35072)
fjl May 29, 2026
33711da
accounts/abi: fix wrong want count for events (#35077)
cuiweixie May 29, 2026
046a10e
go.mod: bump go.opentelemetry.io from 1.40.0 to 1.41.0 (#35073)
jrhea May 29, 2026
b71f750
core, core/txpool, eth: move subscriptions to constructor (#35048)
MariusVanDerWijden Jun 1, 2026
ff45d1d
internal: SetCodeTx tx.To must not be nil (#35094)
cuiweixie Jun 1, 2026
5016e54
eth/protocols/eth: only track after send is okay (#35086)
cuiweixie Jun 1, 2026
831ef5a
node: only delete db ref on close successfully (#35083)
cuiweixie Jun 1, 2026
00f7c72
core/txpool/blobpool: blob pool with status queue (#35075)
cuiweixie Jun 1, 2026
fdf99d9
core/rawdb, ethdb, cmd, triedb: manage finalized block-accessList in …
rjl493456442 Jun 1, 2026
02dd66d
core/txpool/locals: fix data race (#35096)
rjl493456442 Jun 2, 2026
77a2816
eth/protocols/snap: introduce snapv2 skeleton (#35098)
rjl493456442 Jun 2, 2026
19f5fe0
rpc, internal/telemetry: trace JSON-RPC response writes (#35049)
jrhea Jun 2, 2026
38667bc
p2p/nat: server list contains IPv6 servers (#35084)
cuiweixie Jun 2, 2026
e514ede
rpc: fix flaky otel tests (#35101)
jrhea Jun 2, 2026
f439317
triedb: reconcile stale storage roots in GenerateTrie, add cancel sup…
jrhea Jun 3, 2026
80d9ba5
internal/era: update to latest ere spec (#34896)
s1na Jun 3, 2026
6b451a4
internal/ethapi: default block parameter to latest on state methods (…
MysticRyuujin Jun 3, 2026
eb429a0
core/txpool: drop reorged v0 blob sidecars (#35099)
s1na Jun 3, 2026
f493364
build, cmd/geth, signer: remove clef (#35097)
gballet Jun 3, 2026
369521b
cmd/utils: avoid extra newlines when reading era checksums (#35104)
yorickdowne Jun 3, 2026
7835a71
core/types: fix length of BlobVersionedHashed can not be zero (#35065)
cuiweixie Jun 3, 2026
dcf6d0c
rpc: accept Windows reset error in websocket read limit test (#34928)
ozpool Jun 4, 2026
f5c62d0
core/types: BlobHashes should iterate Commitments (#35109)
cuiweixie Jun 4, 2026
bc1967f
core/state/snapshot: snapshot generation shutdown race condition (#33…
JonathanOppenheimer Jun 5, 2026
13d8df6
core/types/bal: improve the bal validation (#35110)
rjl493456442 Jun 5, 2026
f1b2573
accounts/abi: array-parse error reports the wrong character (#35106)
cuiweixie Jun 8, 2026
0ee7018
accounts/abi, core, metrics, miner, rlp, signer, triedb: fix all inco…
cuiweixie Jun 8, 2026
31d227e
cmd/devp2p: swap want and got (#35125)
cuiweixie Jun 8, 2026
e774a8f
cmd/utils: validates trimmed string but parses the untrimmed one (#35…
cuiweixie Jun 8, 2026
1f87331
eth/protocols/eth: track announced tx hashes only after send (#35122)
rayjun Jun 8, 2026
10614fc
beacon/engine: only print the bad hash on error (#35112)
cuiweixie Jun 9, 2026
08aaa7c
eth: add debug_clearTxpool api (#33347)
cuiweixie Jun 9, 2026
43b7b4e
eth: fix borked test introduced in merging #33347 (#35130)
gballet Jun 9, 2026
11f0a83
node: fix wrong status code in ws (#35111)
cuiweixie Jun 10, 2026
39b17c5
all: fix all typos, as reported by crates-ci/typos (#35008)
gballet Jun 10, 2026
e444c26
rpc: add option to configure TextMapPropagator on client (#35132)
fjl Jun 10, 2026
8a8beca
beacon/engine: ensure nil ExecutionPayloadEnvelope.BlockValue doesn't…
fjl Jun 10, 2026
eea6242
log: share mutex in log handles with same writer and other fields (#3…
cuiweixie Jun 10, 2026
17aab1a
core, eth/protocols/snap, eth/downloader: snap/2 sync logic (#34626)
jrhea Jun 11, 2026
e595aed
core/txpool/blobpool: add cache for GetBlobs request (#35124)
healthykim Jun 11, 2026
9067270
p2p/discover: optimize findnodeByID (#33348)
Sahil-4555 Jun 12, 2026
d93dda4
internal/memlimit: respect cgroup memory cap (#34947)
s1na Jun 12, 2026
9059157
core: implement EIP-8037, state creation gas cost increase (#33601)
MariusVanDerWijden Jun 12, 2026
116314b
core/vm: fix test error message (#35134)
cuiweixie Jun 12, 2026
2348301
cmd/geth: fix logging line count error (#35136)
cuiweixie Jun 12, 2026
e2164cc
eth/downloader, eth/protocols/snap: freeze pivot once state is downlo…
jrhea Jun 15, 2026
6ed112a
eth/protocols/snap: fix catchup stall (#35158)
rjl493456442 Jun 16, 2026
7d74166
core: re-enable the legacy snapshot after sync (#35163)
rjl493456442 Jun 16, 2026
a326298
rpc: fix flaky TestTracingHTTPTimeout (#35172)
jrhea Jun 16, 2026
6e62cc5
core/vm: compute stack operations in place (#35156)
jrhea Jun 16, 2026
cb387c9
cmd/devp2p/internal/ethtest: validate received txs, not the sent ones…
cuiweixie Jun 16, 2026
ad68ce2
eth: reserve peer slot for usable snap peer (#35180)
rjl493456442 Jun 17, 2026
1be5da2
eth/protocols/snap: redo the snap sync if the bal is unavailable (#35…
rjl493456442 Jun 17, 2026
0e810e4
eth, triedb, internal: add snap/2 sync progress (#35178)
rjl493456442 Jun 17, 2026
7122ecc
eth/protocols/snap: remove uncovered states before resuming (#35159)
rjl493456442 Jun 17, 2026
8c540cb
eth/catalyst: add testing_commitBlockV1 (#34995)
MysticRyuujin Jun 17, 2026
7c9032d
all: change reflect.Ptr to reflect.Pointer (#35176)
MariusVanDerWijden Jun 18, 2026
e5ff359
p2p/discover: fix waiting wrong duration (#35002)
cuiweixie Jun 20, 2026
6b72f26
triedb/pathdb: log the expected version in obsolete-index cleanup (#3…
ozpool Jun 22, 2026
36a7dc7
version: release go-ethereum v1.17.4
fjl Jun 22, 2026
859b9fa
merge geth 1149f76dc (v1.17.4 sync, batch 27/33)
pratikspatil024 Aug 4, 2026
5df1648
merge geth ca1a027fa (v1.17.4 sync, batch 28/33)
pratikspatil024 Aug 4, 2026
047e24c
merge geth 4017efe34 (v1.17.4 sync, batch 29/33)
pratikspatil024 Aug 4, 2026
51aa427
merge geth 80d9ba5d9 (v1.17.4 sync, batch 30/33)
pratikspatil024 Aug 4, 2026
338ffb8
merge geth e444c267a (v1.17.4 sync, batch 31/33)
pratikspatil024 Aug 4, 2026
8ce37d5
merge geth 8c540cb08 (v1.17.4 sync, batch 32/33)
pratikspatil024 Aug 5, 2026
f397229
merge geth 36a7dc72e (v1.17.4 sync, batch 33/33)
pratikspatil024 Aug 5, 2026
2888b2d
docs: record the v1.17.4 milestone of the go-ethereum v1.17.4 sync
pratikspatil024 Aug 5, 2026
f6fd02a
docs: record the v1.17.4 milestone verification suite
pratikspatil024 Aug 5, 2026
14fff24
version: set the go-ethereum base version to v1.17.4
pratikspatil024 Aug 5, 2026
f30864f
Merge ppatil-upstream-v1.17.3-part3 into ppatil-upstream-v1.17.4
pratikspatil024 Aug 5, 2026
9714290
docs: record the develop-drift cascade and the UBT witness gap
pratikspatil024 Aug 5, 2026
f399939
Merge ppatil-upstream-v1.17.3-part3 into ppatil-upstream-v1.17.4
pratikspatil024 Aug 5, 2026
39ca6c7
Merge branch 'ppatil-upstream-v1.17.3-part3' into ppatil-upstream-v1.…
pratikspatil024 Aug 13, 2026
658aaf2
Merge branch 'ppatil-upstream-v1.17.3-part3' into ppatil-upstream-v1.…
pratikspatil024 Aug 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions accounts/abi/argument.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ func (arguments Arguments) UnpackIntoMap(v map[string]any, data []byte) error {
// Copy performs the operation go format -> provided struct.
func (arguments Arguments) Copy(v any, values []any) error {
// make sure the passed value is arguments pointer
if reflect.Ptr != reflect.ValueOf(v).Kind() {
if reflect.Pointer != reflect.ValueOf(v).Kind() {
return fmt.Errorf("abi: Unpack(non-pointer %T)", v)
}

Expand Down Expand Up @@ -184,7 +184,7 @@ func (arguments Arguments) copyTuple(v any, marshalledValues []any) error {
}
case reflect.Slice, reflect.Array:
if value.Len() < len(marshalledValues) {
return fmt.Errorf("abi: insufficient number of arguments for unpack, want %d, got %d", len(arguments), value.Len())
return fmt.Errorf("abi: insufficient number of arguments for unpack, want %d, got %d", len(marshalledValues), value.Len())
}

for i := range nonIndexedArgs {
Expand Down
2 changes: 1 addition & 1 deletion accounts/abi/bind/v2/lib_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ done:
t.Fatalf("expected e1Count of 2 from filter call. got %d", e1Count)
}
if e2Count != 1 {
t.Fatalf("expected e2Count of 1 from filter call. got %d", e1Count)
t.Fatalf("expected e2Count of 1 from filter call. got %d", e2Count)
}
}

Expand Down
4 changes: 2 additions & 2 deletions accounts/abi/pack.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func packElement(t Type, reflectValue reflect.Value) ([]byte, error) {
switch t.T {
case UintTy:
// make sure to not pack a negative value into a uint type.
if reflectValue.Kind() == reflect.Ptr {
if reflectValue.Kind() == reflect.Pointer {
val := new(big.Int).Set(reflectValue.Interface().(*big.Int))
if val.Sign() == -1 {
return nil, errInvalidSign
Expand Down Expand Up @@ -90,7 +90,7 @@ func packNum(value reflect.Value) []byte {
return math.U256Bytes(new(big.Int).SetUint64(value.Uint()))
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
return math.U256Bytes(big.NewInt(value.Int()))
case reflect.Ptr:
case reflect.Pointer:
return math.U256Bytes(new(big.Int).Set(value.Interface().(*big.Int)))
default:
panic("abi: fatal error")
Expand Down
8 changes: 4 additions & 4 deletions accounts/abi/reflect.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func ConvertType(in interface{}, proto interface{}) interface{} {
// indirect recursively dereferences the value until it either gets the value
// or finds a big.Int
func indirect(v reflect.Value) reflect.Value {
if v.Kind() == reflect.Ptr && v.Elem().Type() != reflect.TypeFor[big.Int]() {
if v.Kind() == reflect.Pointer && v.Elem().Type() != reflect.TypeFor[big.Int]() {
return indirect(v.Elem())
}

Expand Down Expand Up @@ -108,9 +108,9 @@ func set(dst, src reflect.Value) error {
dstType, srcType := dst.Type(), src.Type()

switch {
case dstType.Kind() == reflect.Interface && dst.Elem().IsValid() && (dst.Elem().Type().Kind() == reflect.Ptr || dst.Elem().CanSet()):
case dstType.Kind() == reflect.Interface && dst.Elem().IsValid() && (dst.Elem().Type().Kind() == reflect.Pointer || dst.Elem().CanSet()):
return set(dst.Elem(), src)
case dstType.Kind() == reflect.Ptr && dstType.Elem() != reflect.TypeFor[big.Int]():
case dstType.Kind() == reflect.Pointer && dstType.Elem() != reflect.TypeFor[big.Int]():
return set(dst.Elem(), src)
case srcType.AssignableTo(dstType) && dst.CanSet():
dst.Set(src)
Expand Down Expand Up @@ -146,7 +146,7 @@ func setSlice(dst, src reflect.Value) error {
}

func setArray(dst, src reflect.Value) error {
if src.Kind() == reflect.Ptr {
if src.Kind() == reflect.Pointer {
return set(dst, indirect(src))
}

Expand Down
8 changes: 5 additions & 3 deletions accounts/abi/selector_parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,11 @@ func parseElementaryType(unescapedSelector string) (string, string, error) {
parsedType = parsedType + string(rest[0])
rest = rest[1:]
}

if len(rest) == 0 || rest[0] != ']' {
return "", "", fmt.Errorf("failed to parse array: expected ']', got %c", unescapedSelector[0])
if len(rest) == 0 {
return "", "", fmt.Errorf("failed to parse array: expected ']', got end of string")
}
if rest[0] != ']' {
return "", "", fmt.Errorf("failed to parse array: expected ']', got %c", rest[0])
}

parsedType = parsedType + string(rest[0])
Expand Down
2 changes: 1 addition & 1 deletion accounts/abi/unpack.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ func forEachUnpack(t Type, output []byte, start, size int) (interface{}, error)
}

if start+32*size > len(output) {
return nil, fmt.Errorf("abi: cannot marshal into go array: offset %d would go over slice boundary (len=%d)", len(output), start+32*size)
return nil, fmt.Errorf("abi: cannot marshal into go array: offset %d would go over slice boundary (len=%d)", start+32*size, len(output))
}

// this value will become our slice or our array, depending on the type
Expand Down
4 changes: 2 additions & 2 deletions accounts/abi/unpack_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -975,7 +975,7 @@ func TestUnpackTuple(t *testing.T) {
},
},
FieldT: T{
big.NewInt(0), big.NewInt(1),
big.NewInt(0).SetBits([]big.Word{}), big.NewInt(1),
},
A: big.NewInt(1),
}
Expand All @@ -985,7 +985,7 @@ func TestUnpackTuple(t *testing.T) {
t.Error(err)
}

if reflect.DeepEqual(ret, expected) {
if !reflect.DeepEqual(ret, expected) {
t.Error("unexpected unpack value")
}
}
Expand Down
55 changes: 46 additions & 9 deletions accounts/usbwallet/ledger.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,16 @@ func (w *ledgerDriver) offline() bool {
return w.version == [3]byte{0, 0, 0}
}

func ledgerVersionLessThan(version [3]byte, major, minor, patch byte) bool {
if version[0] != major {
return version[0] < major
}
if version[1] != minor {
return version[1] < minor
}
return version[2] < patch
}

// Open implements usbwallet.driver, attempting to initialize the connection to the
// Ledger hardware wallet. The Ledger does not require a user passphrase, so that
// parameter is silently discarded.
Expand Down Expand Up @@ -172,7 +182,19 @@ func (w *ledgerDriver) SignTx(path accounts.DerivationPath, tx *types.Transactio
return common.Address{}, nil, accounts.ErrWalletClosed
}
// Ensure the wallet is capable of signing the given transaction
if chainID != nil && (w.version[0] < 1 || (w.version[0] == 1 && w.version[1] == 0 && w.version[2] < 3)) {
switch tx.Type() {
case types.AccessListTxType, types.DynamicFeeTxType:
if ledgerVersionLessThan(w.version, 1, 9, 0) {
//lint:ignore ST1005 brand name displayed on the console
return common.Address{}, nil, fmt.Errorf("Ledger version >= 1.9.0 required for EIP-2930/EIP-1559 signing (found version v%d.%d.%d)", w.version[0], w.version[1], w.version[2])
}
case types.SetCodeTxType:
if ledgerVersionLessThan(w.version, 1, 17, 0) {
//lint:ignore ST1005 brand name displayed on the console
return common.Address{}, nil, fmt.Errorf("Ledger version >= 1.17.0 required for EIP-7702 signing (found version v%d.%d.%d)", w.version[0], w.version[1], w.version[2])
}
}
if chainID != nil && ledgerVersionLessThan(w.version, 1, 0, 3) {
//lint:ignore ST1005 brand name displayed on the console
return common.Address{}, nil, fmt.Errorf("Ledger v%d.%d.%d doesn't support signing this transaction, please update to v1.0.3 at least", w.version[0], w.version[1], w.version[2])
}
Expand All @@ -190,7 +212,7 @@ func (w *ledgerDriver) SignTypedMessage(path accounts.DerivationPath, domainHash
return nil, accounts.ErrWalletClosed
}
// Ensure the wallet is capable of signing the given transaction
if w.version[0] < 1 || (w.version[0] == 1 && w.version[1] < 5) {
if ledgerVersionLessThan(w.version, 1, 5, 0) {
//lint:ignore ST1005 brand name displayed on the console
return nil, fmt.Errorf("Ledger version >= 1.5.0 required for EIP-712 signing (found version v%d.%d.%d)", w.version[0], w.version[1], w.version[2])
}
Expand Down Expand Up @@ -349,26 +371,41 @@ func (w *ledgerDriver) ledgerSign(derivationPath []uint32, tx *types.Transaction
)

if chainID == nil {
if txrlp, err = rlp.EncodeToBytes([]interface{}{tx.Nonce(), tx.GasPrice(), tx.Gas(), tx.To(), tx.Value(), tx.Data()}); err != nil {
if txrlp, err = rlp.EncodeToBytes([]any{tx.Nonce(), tx.GasPrice(), tx.Gas(), tx.To(), tx.Value(), tx.Data()}); err != nil {
return common.Address{}, nil, err
}
} else {
if tx.Type() == types.DynamicFeeTxType {
if txrlp, err = rlp.EncodeToBytes([]interface{}{chainID, tx.Nonce(), tx.GasTipCap(), tx.GasFeeCap(), tx.Gas(), tx.To(), tx.Value(), tx.Data(), tx.AccessList()}); err != nil {
switch tx.Type() {
case types.SetCodeTxType:
if txrlp, err = rlp.EncodeToBytes([]any{chainID, tx.Nonce(), tx.GasTipCap(), tx.GasFeeCap(), tx.Gas(), tx.To(), tx.Value(), tx.Data(), tx.AccessList(), tx.SetCodeAuthorizations()}); err != nil {
return common.Address{}, nil, err
}
// append type to transaction
txrlp = append([]byte{tx.Type()}, txrlp...)
case types.BlobTxType:
if txrlp, err = rlp.EncodeToBytes([]any{chainID, tx.Nonce(), tx.GasTipCap(), tx.GasFeeCap(), tx.Gas(), tx.To(), tx.Value(), tx.Data(), tx.AccessList(), tx.BlobGasFeeCap(), tx.BlobHashes()}); err != nil {
return common.Address{}, nil, err
}
// append type to transaction
txrlp = append([]byte{tx.Type()}, txrlp...)
case types.DynamicFeeTxType:
if txrlp, err = rlp.EncodeToBytes([]any{chainID, tx.Nonce(), tx.GasTipCap(), tx.GasFeeCap(), tx.Gas(), tx.To(), tx.Value(), tx.Data(), tx.AccessList()}); err != nil {
return common.Address{}, nil, err
}
// append type to transaction
txrlp = append([]byte{tx.Type()}, txrlp...)
} else if tx.Type() == types.AccessListTxType {
if txrlp, err = rlp.EncodeToBytes([]interface{}{chainID, tx.Nonce(), tx.GasPrice(), tx.Gas(), tx.To(), tx.Value(), tx.Data(), tx.AccessList()}); err != nil {
case types.AccessListTxType:
if txrlp, err = rlp.EncodeToBytes([]any{chainID, tx.Nonce(), tx.GasPrice(), tx.Gas(), tx.To(), tx.Value(), tx.Data(), tx.AccessList()}); err != nil {
return common.Address{}, nil, err
}
// append type to transaction
txrlp = append([]byte{tx.Type()}, txrlp...)
} else if tx.Type() == types.LegacyTxType {
if txrlp, err = rlp.EncodeToBytes([]interface{}{tx.Nonce(), tx.GasPrice(), tx.Gas(), tx.To(), tx.Value(), tx.Data(), chainID, big.NewInt(0), big.NewInt(0)}); err != nil {
case types.LegacyTxType:
if txrlp, err = rlp.EncodeToBytes([]any{tx.Nonce(), tx.GasPrice(), tx.Gas(), tx.To(), tx.Value(), tx.Data(), chainID, big.NewInt(0), big.NewInt(0)}); err != nil {
return common.Address{}, nil, err
}
default:
return common.Address{}, nil, fmt.Errorf("unsupported transaction type: %d", tx.Type())
}
}

Expand Down
75 changes: 75 additions & 0 deletions beacon/engine/bapl_encode.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
// Copyright 2026 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.

package engine

import (
"github.com/fjl/jsonw"
)

// MarshalJSON implements json.Marshaler.
func (list BlobAndProofListV1) MarshalJSON() ([]byte, error) {
if list == nil {
return []byte("null"), nil
}
var b jsonw.Buffer
b.Array(func() {
for _, item := range list {
marshalBlobAndProofV1(&b, item)
}
})
return b.Output(), nil
}

func marshalBlobAndProofV1(b *jsonw.Buffer, item *BlobAndProofV1) {
if item == nil {
b.Null()
} else {
b.Object(func() {
b.Key("blob")
b.HexBytes(item.Blob)
b.Key("proof")
b.HexBytes(item.Proof)
})
}
}

// MarshalJSON implements json.Marshaler.
func (list BlobAndProofListV2) MarshalJSON() ([]byte, error) {
if list == nil {
return []byte("null"), nil
}
var b jsonw.Buffer
b.Array(func() {
for _, item := range list {
marshalBlobAndProofV2(&b, item)
}
})
return b.Output(), nil
}

func marshalBlobAndProofV2(b *jsonw.Buffer, item *BlobAndProofV2) {
if item == nil {
b.Null()
} else {
b.Object(func() {
b.Key("blob")
b.HexBytes(item.Blob)
b.Key("proofs")
appendHexBytesArray(b, item.CellProofs)
})
}
}
File renamed without changes.
31 changes: 0 additions & 31 deletions beacon/engine/gen_epe.go → beacon/engine/epe_decode.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading