v1.17.2: 仅限提款的负载状态根匹配三个前一个区块中的收款人余额
System information
Geth version: v1.17.2 (payload extraData decodes to geth/v1.17.2 go1.26.1 linux)
CL client & version: not yet available from the proposer
OS & Version: Linux
Commit hash: release tag v1.17.2 (be4dc0c4be2fe316dbdd0a73e48421f64978232f)
Expected behaviour
A payload builder starting from the declared parent state should apply the 16 withdrawals and put the resulting post-state root in the block header. A fresh execution/import of that payload should derive the same root.
Actual behaviour
On LUKSO testnet, a finalized withdrawals-only payload built by Geth v1.17.2 declares:
0x0c9916983660769626ac87965447cf873047afdd9d62f8a907d18fa9a1ce8d9a
as its state root. Applying the payload's withdrawals to a public Merkle proof from the declared parent derives:
0x33986ae79dc11959ca90b93b9e46ef0a3764d7386b2aea10b2b7390a27db015c
That second root exactly matches the InvalidStateRoot result reported by a Nethermind live-sync node. More specifically, the header root can be reproduced exactly by using the withdrawal recipient's balance from three execution blocks earlier, while keeping the rest of the parent trie proof and then applying the current withdrawals.
In the reported Nethermind error, expected is the payload/header root 0x0c9916...e8d9a, while got is the independently executed root 0x33986a...015c.
This report is about an upstream Geth code path used on LUKSO. LUKSO documents that its blockchain runs an unmodified version of the Ethereum protocol, and its execution layer is designed as an Ethereum-equivalent, 1:1 EVM execution environment. LUKSO is nevertheless a separate network with different chain IDs, genesis data, fork activation settings, and operational configuration. This evidence does not establish that Ethereum mainnet is affected. If an empty or withdrawals-only payload plus the same stale-state condition is the trigger class, the upstream bug could theoretically affect Ethereum under a comparable condition.
Primary public case
| Field | Value |
|---|---|
| Network | LUKSO testnet, chain ID 4201 |
| Consensus slot | 8740857, finalized/canonical |
| Execution block | 8414592 |
| Execution hash | 0xe1b258f8dcbc7705d3afe60cda960a35886efc5ac56ed5f5cecbd7d0c860e5db |
| Parent hash | 0xcb3e73ce00236266d625f26070ce8916440c95a069fdb85eb81143f53e84d66b |
| Time | 2026-08-29 16:31:24 UTC |
| Proposer | 3532 |
| Transactions | 0 |
| Withdrawals | 16 |
| Withdrawal recipient | 0x6109dcd72b8a2485A5b3Ac4E76965159e9893aB7 for all 16 |
| Total withdrawn | 22,438,550 gwei |
| Header state root | 0x0c9916983660769626ac87965447cf873047afdd9d62f8a907d18fa9a1ce8d9a |
| Recomputed post-state root | 0x33986ae79dc11959ca90b93b9e46ef0a3764d7386b2aea10b2b7390a27db015c |
内容来源: ethereum/go-ethereum