Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
tersec committed Jun 29, 2023
1 parent 66febf2 commit d699ff3
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 16 deletions.
3 changes: 1 addition & 2 deletions beacon_chain/beacon_node_light_client.nim
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,7 @@ proc initLightClient*(

if not blckPayload.block_hash.isZero:
# engine_newPayloadV1
discard await node.elManager.newExecutionPayload(
blck.message.body)
discard await node.elManager.newExecutionPayload(blck.message)

# Retain optimistic head for other `forkchoiceUpdated` callers.
# May temporarily block `forkchoiceUpdatedV1` calls, e.g., Geth:
Expand Down
16 changes: 10 additions & 6 deletions beacon_chain/el/el_manager.nim
Original file line number Diff line number Diff line change
Expand Up @@ -1058,10 +1058,12 @@ proc sendNewPayloadToSingleEL(connection: ELConnection,

proc sendNewPayloadToSingleEL(connection: ELConnection,
payload: engine_api.ExecutionPayloadV3,
versioned_hashes: seq[engine_api.VersionedHash]):
versioned_hashes: seq[engine_api.VersionedHash],
parent_beacon_block_root: FixedBytes[32]):
Future[PayloadStatusV1] {.async.} =
let rpcClient = await connection.connectedRpcClient()
return await rpcClient.engine_newPayloadV3(payload, versioned_hashes)
return await rpcClient.engine_newPayloadV3(
payload, versioned_hashes, parent_beacon_block_root)

type
StatusRelation = enum
Expand Down Expand Up @@ -1153,23 +1155,25 @@ proc processResponse[ELResponseType](
url2 = connections[idx].engineUrl.url,
status2 = status

proc sendNewPayload*(m: ELManager, blockBody: SomeForkyBeaconBlockBody):
proc sendNewPayload*(m: ELManager, blck: SomeForkyBeaconBlock):
Future[PayloadExecutionStatus] {.async.} =
let
earlyDeadline = sleepAsync(chronos.seconds 1)
startTime = Moment.now
deadline = sleepAsync(NEWPAYLOAD_TIMEOUT)
payload = blockBody.execution_payload.asEngineExecutionPayload
payload = blck.body.execution_payload.asEngineExecutionPayload
requests = m.elConnections.mapIt:
let req =
when payload is engine_api.ExecutionPayloadV3:
# https://github.com/ethereum/consensus-specs/blob/v1.4.0-alpha.1/specs/deneb/beacon-chain.md#process_execution_payload
# Verify the execution payload is valid
# [Modified in Deneb] Pass `versioned_hashes` to Execution Engine
let versioned_hashes = mapIt(
blockBody.blob_kzg_commitments,
blck.body.blob_kzg_commitments,
engine_api.VersionedHash(kzg_commitment_to_versioned_hash(it)))
sendNewPayloadToSingleEL(it, payload, versioned_hashes)
sendNewPayloadToSingleEL(
it, payload, versioned_hashes,
FixedBytes[32] blck.parent_root.data)
elif payload is engine_api.ExecutionPayloadV1 or
payload is engine_api.ExecutionPayloadV2:
sendNewPayloadToSingleEL(it, payload)
Expand Down
9 changes: 4 additions & 5 deletions beacon_chain/gossip_processing/block_processor.nim
Original file line number Diff line number Diff line change
Expand Up @@ -303,11 +303,10 @@ from ../spec/datatypes/capella import
from ../spec/datatypes/deneb import SignedBeaconBlock, asTrusted, shortLog

proc newExecutionPayload*(
elManager: ELManager,
blockBody: SomeForkyBeaconBlockBody):
elManager: ELManager, blck: SomeForkyBeaconBlock):
Future[Opt[PayloadExecutionStatus]] {.async.} =

template executionPayload: untyped = blockBody.execution_payload
template executionPayload: untyped = blck.body.execution_payload

if not elManager.hasProperlyConfiguredConnection:
if elManager.hasConnection:
Expand All @@ -322,7 +321,7 @@ proc newExecutionPayload*(
executionPayload = shortLog(executionPayload)

try:
let payloadStatus = await elManager.sendNewPayload(blockBody)
let payloadStatus = await elManager.sendNewPayload(blck)

debug "newPayload: succeeded",
parentHash = executionPayload.parent_hash,
Expand All @@ -349,7 +348,7 @@ proc getExecutionValidity(

try:
let executionPayloadStatus = await elManager.newExecutionPayload(
blck.message.body)
blck.message)
if executionPayloadStatus.isNone:
return NewPayloadStatus.noResponse

Expand Down
4 changes: 2 additions & 2 deletions beacon_chain/nimbus_light_client.nim
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ programMain:
template payload(): auto = blck.message.body.execution_payload

if elManager != nil and not payload.block_hash.isZero:
discard await elManager.newExecutionPayload(blck.message.body)
discard await elManager.newExecutionPayload(blck.message)
discard await elManager.forkchoiceUpdated(
headBlockHash = payload.block_hash,
safeBlockHash = payload.block_hash, # stub value
Expand All @@ -124,7 +124,7 @@ programMain:
template payload(): auto = blck.message.body.execution_payload

if elManager != nil and not payload.block_hash.isZero:
discard await elManager.newExecutionPayload(blck.message.body)
discard await elManager.newExecutionPayload(blck.message)
discard await elManager.forkchoiceUpdated(
headBlockHash = payload.block_hash,
safeBlockHash = payload.block_hash, # stub value
Expand Down
2 changes: 1 addition & 1 deletion vendor/nim-web3

0 comments on commit d699ff3

Please sign in to comment.