mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-05-08 01:01:34 +00:00
eth/catalyst: allow getPayloadV2 for pre-shanghai payloads (#33932)
I observed failing tests in Hive `engine-withdrawals`: - https://hive.ethpandaops.io/#/test/generic/1772351960-ad3e3e460605c670efe1b4f4178eb422?testnumber=146 - https://hive.ethpandaops.io/#/test/generic/1772351960-ad3e3e460605c670efe1b4f4178eb422?testnumber=147 ```shell DEBUG (Withdrawals Fork on Block 2): NextPayloadID before getPayloadV2: id=0x01487547e54e8abe version=1 >> engine_getPayloadV2("0x01487547e54e8abe") << error: {"code":-38005,"message":"Unsupported fork"} FAIL: Expected no error on EngineGetPayloadV2: error=Unsupported fork ``` The same failure pattern occurred for Block 3. Per Shanghai engine_getPayloadV2 spec, pre-Shanghai payloads should be accepted via V2 and returned as ExecutionPayloadV1: - executionPayload: ExecutionPayloadV1 | ExecutionPayloadV2 - ExecutionPayloadV1 MUST be returned if payload timestamp < Shanghai timestamp - ExecutionPayloadV2 MUST be returned if payload timestamp >= Shanghai timestamp Reference: - https://github.com/ethereum/execution-apis/blob/main/src/engine/shanghai.md#engine_getpayloadv2 Current implementation only allows GetPayloadV2 on the Shanghai fork window (`[]forks.Fork{forks.Shanghai}`), so pre-Shanghai payloads are rejected with Unsupported fork. If my interpretation of the spec is incorrect, please let me know and I can adjust accordingly. --------- Co-authored-by: muzry.li <muzry.li1@ambergroup.io>
This commit is contained in:
parent
00540f9469
commit
b08aac1dbc
2 changed files with 6 additions and 1 deletions
|
|
@ -435,7 +435,7 @@ func (api *ConsensusAPI) GetPayloadV2(payloadID engine.PayloadID) (*engine.Execu
|
||||||
payloadID,
|
payloadID,
|
||||||
false,
|
false,
|
||||||
[]engine.PayloadVersion{engine.PayloadV1, engine.PayloadV2},
|
[]engine.PayloadVersion{engine.PayloadV1, engine.PayloadV2},
|
||||||
[]forks.Fork{forks.Shanghai},
|
[]forks.Fork{forks.Paris, forks.Shanghai},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1219,6 +1219,11 @@ func TestNilWithdrawals(t *testing.T) {
|
||||||
Random: test.blockParams.Random,
|
Random: test.blockParams.Random,
|
||||||
Version: payloadVersion,
|
Version: payloadVersion,
|
||||||
}).Id()
|
}).Id()
|
||||||
|
if !shanghai {
|
||||||
|
if _, err := api.GetPayloadV2(payloadID); err != nil {
|
||||||
|
t.Fatalf("GetPayloadV2 rejected pre-shanghai payload: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
execData, err := api.getPayload(payloadID, false, nil, nil)
|
execData, err := api.getPayload(payloadID, false, nil, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error getting payload, err=%v", err)
|
t.Fatalf("error getting payload, err=%v", err)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue