@@ -41,20 +41,41 @@ func validateVersionedHashed(payload: ExecutionPayload,
4141 true
4242
4343template validateVersion (com, timestamp, payloadVersion, apiVersion) =
44- if apiVersion == Version .V4 :
44+ if apiVersion == Version .V5 :
45+ if not com.isAmsterdamOrLater (timestamp):
46+ raise unsupportedFork (" newPayloadV5 expect payload timestamp fall within Amsterdam" )
47+ if payloadVersion != Version .V4 :
48+ raise invalidParams (" newPayload" & $ apiVersion &
49+ " expect ExecutionPayloadV4" &
50+ " but got ExecutionPayload" & $ payloadVersion)
51+
52+ elif apiVersion == Version .V4 :
4553 if not com.isPragueOrLater (timestamp):
4654 raise unsupportedFork (" newPayloadV4 expect payload timestamp fall within Prague" )
47-
48- if com.isPragueOrLater (timestamp):
4955 if payloadVersion != Version .V3 :
50- raise invalidParams (" if timestamp is Prague or later, " &
51- " payload must be ExecutionPayloadV3, got ExecutionPayload" & $ payloadVersion)
56+ raise invalidParams (" newPayload" & $ apiVersion &
57+ " expect ExecutionPayloadV3" &
58+ " but got ExecutionPayload" & $ payloadVersion)
5259
53- if apiVersion == Version .V3 :
60+ elif apiVersion == Version .V3 :
5461 if not com.isCancunOrLater (timestamp):
5562 raise unsupportedFork (" newPayloadV3 expect payload timestamp fall within Cancun" )
63+ if payloadVersion != Version .V3 :
64+ raise invalidParams (" newPayload" & $ apiVersion &
65+ " expect ExecutionPayloadV3" &
66+ " but got ExecutionPayload" & $ payloadVersion)
5667
57- if com.isCancunOrLater (timestamp):
68+ if com.isAmsterdamOrLater (timestamp):
69+ if payloadVersion != Version .V4 :
70+ raise invalidParams (" if timestamp is Amsterdam or later, " &
71+ " payload must be ExecutionPayloadV4, got ExecutionPayload" & $ payloadVersion)
72+
73+ elif com.isPragueOrLater (timestamp):
74+ if payloadVersion != Version .V3 :
75+ raise invalidParams (" if timestamp is Prague or later, " &
76+ " payload must be ExecutionPayloadV3, got ExecutionPayload" & $ payloadVersion)
77+
78+ elif com.isCancunOrLater (timestamp):
5879 if payloadVersion != Version .V3 :
5980 raise invalidParams (" if timestamp is Cancun or later, " &
6081 " payload must be ExecutionPayloadV3, got ExecutionPayload" & $ payloadVersion)
@@ -68,13 +89,6 @@ template validateVersion(com, timestamp, payloadVersion, apiVersion) =
6889 raise invalidParams (" if timestamp is earlier than Shanghai, " &
6990 " payload must be ExecutionPayloadV1, got ExecutionPayload" & $ payloadVersion)
7091
71- if apiVersion == Version .V3 or apiVersion == Version .V4 :
72- # both newPayloadV3 and newPayloadV4 expect ExecutionPayloadV3
73- if payloadVersion != Version .V3 :
74- raise invalidParams (" newPayload" & $ apiVersion &
75- " expect ExecutionPayload3" &
76- " but got ExecutionPayload" & $ payloadVersion)
77-
7892template validatePayload (apiVersion, payloadVersion, payload) =
7993 if payloadVersion >= Version .V2 :
8094 if payload.withdrawals.isNone:
@@ -89,6 +103,11 @@ template validatePayload(apiVersion, payloadVersion, payload) =
89103 raise invalidParams (" newPayload" & $ apiVersion &
90104 " excessBlobGas is expected from execution payload" )
91105
106+ if apiVersion >= Version .V5 or payloadVersion >= Version .V4 :
107+ if payload.blockAccessList.isNone:
108+ raise invalidParams (" newPayload" & $ apiVersion &
109+ " blockAccessList is expected from execution payload" )
110+
92111# https://github.com/ethereum/execution-apis/blob/40088597b8b4f48c45184da002e27ffc3c37641f/src/engine/prague.md#request
93112func validateExecutionRequest (blockHash: Hash32 ,
94113 requests: openArray [seq [byte ]], apiVersion: Version ):
0 commit comments