Skip to content

Commit

Permalink
add engine API consolidation requests support for getPayloadV4/newPay…
Browse files Browse the repository at this point in the history
…loadV4 (#6368)
  • Loading branch information
tersec authored Jun 18, 2024
1 parent 597f473 commit bfd1a36
Show file tree
Hide file tree
Showing 3 changed files with 122 additions and 18 deletions.
48 changes: 33 additions & 15 deletions beacon_chain/el/el_manager.nim
Original file line number Diff line number Diff line change
Expand Up @@ -502,21 +502,27 @@ func asConsensusType*(rpcExecutionPayload: ExecutionPayloadV4):
template getTransaction(tt: TypedTransaction): bellatrix.Transaction =
bellatrix.Transaction.init(tt.distinctBase)

template getDepositRequest(dr: DepositReceiptV1): DepositRequest =
template getDepositRequest(dr: DepositRequestV1): DepositRequest =
DepositRequest(
pubkey: ValidatorPubKey(blob: dr.pubkey.distinctBase),
withdrawal_credentials: dr.withdrawalCredentials.asEth2Digest,
amount: dr.amount.Gwei,
signature: ValidatorSig(blob: dr.signature.distinctBase),
index: dr.index.uint64)

template getExecutionLayerWithdrawalRequest(elwr: WithdrawalRequestV1):
WithdrawalRequest =
template getWithdrawalRequest(wr: WithdrawalRequestV1): WithdrawalRequest =
WithdrawalRequest(
source_address: ExecutionAddress(data: elwr.sourceAddress.distinctBase),
source_address: ExecutionAddress(data: wr.sourceAddress.distinctBase),
validator_pubkey: ValidatorPubKey(
blob: elwr.validatorPublicKey.distinctBase),
amount: elwr.amount.Gwei)
blob: wr.validatorPublicKey.distinctBase),
amount: wr.amount.Gwei)

template getConsolidationRequest(cr: ConsolidationRequestV1):
ConsolidationRequest =
ConsolidationRequest(
source_address: ExecutionAddress(data: cr.sourceAddress.distinctBase),
source_pubkey: ValidatorPubKey(blob: cr.sourcePubkey.distinctBase),
target_pubkey: ValidatorPubKey(blob: cr.targetPubkey.distinctBase))

electra.ExecutionPayload(
parent_hash: rpcExecutionPayload.parentHash.asEth2Digest,
Expand All @@ -543,11 +549,14 @@ func asConsensusType*(rpcExecutionPayload: ExecutionPayloadV4):
deposit_requests:
List[electra.DepositRequest, MAX_DEPOSIT_REQUESTS_PER_PAYLOAD].init(
mapIt(rpcExecutionPayload.depositRequests, it.getDepositRequest)),
withdrawal_requests:
List[electra.WithdrawalRequest,
MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD].init(
mapIt(rpcExecutionPayload.withdrawalRequests,
it.getExecutionLayerWithdrawalRequest)))
withdrawal_requests: List[electra.WithdrawalRequest,
MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD].init(
mapIt(rpcExecutionPayload.withdrawalRequests,
it.getWithdrawalRequest)),
consolidation_requests: List[electra.ConsolidationRequest,
Limit MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD].init(
mapIt(rpcExecutionPayload.consolidationRequests,
it.getConsolidationRequest)))

func asConsensusType*(payload: engine_api.GetPayloadV4Response):
electra.ExecutionPayloadForSigning =
Expand Down Expand Up @@ -647,8 +656,8 @@ func asEngineExecutionPayload*(executionPayload: electra.ExecutionPayload):
template getTypedTransaction(tt: bellatrix.Transaction): TypedTransaction =
TypedTransaction(tt.distinctBase)

template getDepositRequest(dr: DepositRequest): DepositReceiptV1 =
DepositReceiptV1(
template getDepositRequest(dr: DepositRequest): DepositRequestV1 =
DepositRequestV1(
pubkey: FixedBytes[RawPubKeySize](dr.pubkey.blob),
withdrawalCredentials: FixedBytes[32](dr.withdrawal_credentials.data),
amount: dr.amount.Quantity,
Expand All @@ -661,6 +670,13 @@ func asEngineExecutionPayload*(executionPayload: electra.ExecutionPayload):
validatorPublicKey: FixedBytes[RawPubKeySize](wr.validator_pubkey.blob),
amount: wr.amount.Quantity)

template getConsolidationRequest(cr: ConsolidationRequest):
ConsolidationRequestV1 =
ConsolidationRequestV1(
sourceAddress: Address(cr.source_address.data),
sourcePubkey: FixedBytes[RawPubKeySize](cr.source_pubkey.blob),
targetPubkey: FixedBytes[RawPubKeySize](cr.target_pubkey.blob))

engine_api.ExecutionPayloadV4(
parentHash: executionPayload.parent_hash.asBlockHash,
feeRecipient: Address(executionPayload.fee_recipient.data),
Expand All @@ -682,8 +698,10 @@ func asEngineExecutionPayload*(executionPayload: electra.ExecutionPayload):
excessBlobGas: Quantity(executionPayload.excess_blob_gas),
depositRequests: mapIt(
executionPayload.deposit_requests, it.getDepositRequest),
withdrawalRequests:
mapIt(executionPayload.withdrawal_requests, it.getWithdrawalRequest))
withdrawalRequests: mapIt(
executionPayload.withdrawal_requests, it.getWithdrawalRequest),
consolidationRequests: mapIt(
executionPayload.consolidation_requests, it.getConsolidationRequest))

func isConnected(connection: ELConnection): bool =
connection.web3.isSome
Expand Down
Loading

0 comments on commit bfd1a36

Please sign in to comment.