Skip to content

Commit e290728

Browse files
authored
use newPayloadV5 for Glamsterdam (#7980)
* use newPayloadV5 for Glamsterdam * Run make test
1 parent a174b67 commit e290728

File tree

4 files changed

+47
-22
lines changed

4 files changed

+47
-22
lines changed

AllTests-mainnet.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -613,10 +613,10 @@ AllTests-mainnet
613613
```
614614
## Engine API conversions
615615
```diff
616-
+ ExecutionPayloadV4 to deneb.ExecutionPayload conversion OK
617616
+ Roundtrip engine RPC V1 and bellatrix ExecutionPayload representations OK
618617
+ Roundtrip engine RPC V2 and capella ExecutionPayload representations OK
619618
+ Roundtrip engine RPC V3 and deneb ExecutionPayload representations OK
619+
+ Roundtrip engine RPC V4 and deneb ExecutionPayload representations OK
620620
```
621621
## Envelope Quarantine
622622
```diff

beacon_chain/el/el_manager.nim

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,18 @@ proc sendNewPayloadToSingleEL(
633633
payload, versioned_hashes, parent_beacon_block_root,
634634
executionRequests)
635635

636+
proc sendNewPayloadToSingleEL(
637+
connection: ELConnection,
638+
payload: engine_api.ExecutionPayloadV4,
639+
versioned_hashes: seq[engine_api.VersionedHash],
640+
parent_beacon_block_root: Hash32,
641+
executionRequests: seq[seq[byte]]
642+
): Future[PayloadStatusV1] {.async: (raises: [CatchableError]).} =
643+
let rpcClient = await connection.connectedRpcClient()
644+
await rpcClient.engine_newPayloadV5(
645+
payload, versioned_hashes, parent_beacon_block_root,
646+
executionRequests)
647+
636648
proc sendGetBlobsV2toSingleEl(
637649
connection: ELConnection,
638650
versioned_hashes: seq[engine_api.VersionedHash]
@@ -926,7 +938,10 @@ proc sendNewPayload*(
926938

927939
let
928940
startTime = Moment.now()
929-
payload = executionPayload.asEngineExecutionPayload()
941+
payload =
942+
when consensusFork >= ConsensusFork.Gloas:
943+
executionPayload.asEngineExecutionPayloadV4()
944+
else: executionPayload.asEngineExecutionPayload()
930945

931946
when consensusFork >= ConsensusFork.Deneb:
932947
let

beacon_chain/el/engine_api_conversions.nim

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,33 @@ func asEngineExecutionPayload*(executionPayload: deneb.ExecutionPayload):
284284
blobGasUsed: Quantity(executionPayload.blob_gas_used),
285285
excessBlobGas: Quantity(executionPayload.excess_blob_gas))
286286

287+
func asEngineExecutionPayloadV4*(executionPayload: deneb.ExecutionPayload):
288+
ExecutionPayloadV4 =
289+
template getTypedTransaction(tt: bellatrix.Transaction): TypedTransaction =
290+
TypedTransaction(tt.distinctBase)
291+
292+
engine_api.ExecutionPayloadV4(
293+
parentHash: executionPayload.parent_hash.asBlockHash,
294+
feeRecipient: executionPayload.fee_recipient,
295+
stateRoot: executionPayload.state_root.asBlockHash,
296+
receiptsRoot: executionPayload.receipts_root.asBlockHash,
297+
logsBloom:
298+
FixedBytes[BYTES_PER_LOGS_BLOOM](executionPayload.logs_bloom.data),
299+
prevRandao: executionPayload.prev_randao.data.to(Bytes32),
300+
blockNumber: Quantity(executionPayload.block_number),
301+
gasLimit: Quantity(executionPayload.gas_limit),
302+
gasUsed: Quantity(executionPayload.gas_used),
303+
timestamp: Quantity(executionPayload.timestamp),
304+
extraData: DynamicBytes[0, MAX_EXTRA_DATA_BYTES](executionPayload.extra_data),
305+
baseFeePerGas: executionPayload.base_fee_per_gas,
306+
blockHash: executionPayload.block_hash.asBlockHash,
307+
transactions: mapIt(executionPayload.transactions, it.getTypedTransaction),
308+
withdrawals: mapIt(executionPayload.withdrawals, it.asEngineWithdrawal),
309+
blobGasUsed: Quantity(executionPayload.blob_gas_used),
310+
excessBlobGas: Quantity(executionPayload.excess_blob_gas),
311+
blockAccessList: @[], # TODO: stub
312+
slotNumber: Quantity(0)) # TODO: stub
313+
287314
proc asEngineVersionedHashes*(
288315
blob_kzg_commitments: KzgCommitments
289316
): seq[VersionedHash] =

tests/test_engine_api_conversions.nim

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1611,7 +1611,7 @@ suite "Engine API conversions":
16111611
blockBody.execution_payload == asConsensusType(
16121612
asEngineExecutionPayload(blockBody.execution_payload))
16131613

1614-
test "ExecutionPayloadV4 to deneb.ExecutionPayload conversion":
1614+
test "Roundtrip engine RPC V4 and deneb ExecutionPayload representations":
16151615
# Each Eth2Digest field is chosen randomly. Each uint64 field is random,
16161616
# with boosted probabilities for 0, 1, and high(uint64). There can be 0,
16171617
# 1, 2, or 3 transactions uniformly. Each transaction is 0, 8, 13, or 16
@@ -2177,23 +2177,6 @@ suite "Engine API conversions":
21772177
)]
21782178

21792179
for execution_payload in executionPayloads:
2180-
let v4_payload = ExecutionPayloadV4(
2181-
parentHash: execution_payload.parent_hash.asBlockHash,
2182-
feeRecipient: execution_payload.fee_recipient,
2183-
stateRoot: execution_payload.state_root.asBlockHash,
2184-
receiptsRoot: execution_payload.receipts_root.asBlockHash,
2185-
logsBloom: FixedBytes[BYTES_PER_LOGS_BLOOM](execution_payload.logs_bloom.data),
2186-
prevRandao: Bytes32(execution_payload.prev_randao.data),
2187-
blockNumber: Quantity(execution_payload.block_number),
2188-
gasLimit: Quantity(execution_payload.gas_limit),
2189-
gasUsed: Quantity(execution_payload.gas_used),
2190-
timestamp: Quantity(execution_payload.timestamp),
2191-
extraData: DynamicBytes[0, MAX_EXTRA_DATA_BYTES](execution_payload.extra_data),
2192-
baseFeePerGas: execution_payload.base_fee_per_gas,
2193-
blockHash: execution_payload.block_hash.asBlockHash,
2194-
transactions: mapIt(execution_payload.transactions, TypedTransaction(it.distinctBase)),
2195-
withdrawals: mapIt(execution_payload.withdrawals, it.asEngineWithdrawal),
2196-
blobGasUsed: Quantity(execution_payload.blob_gas_used),
2197-
excessBlobGas: Quantity(execution_payload.excess_blob_gas))
21982180
check:
2199-
execution_payload == asConsensusType(v4_payload)
2181+
execution_payload == asConsensusType(
2182+
asEngineExecutionPayloadV4(execution_payload))

0 commit comments

Comments
 (0)