optimistic v3
// Electra submission
pub struct HeaderSubmission {
pub url: Vec<u8>,
pub tx_count: u32,
pub submission: SignedAdjustableHeaderSubmission,
}
pub struct SignedAdjustableHeaderSubmission {
pub message: AdjustableHeaderSubmission,
pub signature: BlsSignature,
}
pub struct AdjustableHeaderSubmission {
pub bid_trace: BidTrace,
pub execution_payload_header: ExecutionPayloadHeader,
pub execution_requests: ExecutionRequests,
pub commitments: Vec<Bytes48>,
// Additional field, either AdjustmentDataV2 or AdjustmentDataV3
pub adjustment_data: AdjustmentDataV2,
}
// EL: execution layer, CL: consensus layer
pub struct AdjustmentDataV2 {
pub el_transactions_root: B256,
pub el_withdrawals_root: B256,
pub builder_address: Address,
pub builder_proof: Vec<Bytes>,
pub fee_recipient_address: Address,
pub fee_recipient_proof: Vec<Bytes>,
pub fee_payer_address: Address,
pub fee_payer_proof: Vec<Bytes>,
pub el_placeholder_transaction_proof: Vec<Bytes>,
// New in V2: SSZ merkle proof for last transaction
pub cl_placeholder_transaction_proof: Vec<B256>,
pub placeholder_receipt_proof: Vec<Bytes>,
// New in V2: Logs bloom accrued until but not including the last (payment) transaction.
pub pre_payment_logs_bloom: Bloom,
}
// Updated version, otherwise same as V2 but adds gas_used for the placeholder transaction.
// With V3 we relax the gas_limit == gas_used assumption and use the provided value instead.
pub struct AdjustmentDataV3 {
pub el_transactions_root: B256,
pub el_withdrawals_root: B256,
pub builder_address: Address,
pub builder_proof: Vec<Bytes>,
pub fee_recipient_address: Address,
pub fee_recipient_proof: Vec<Bytes>,
pub fee_payer_address: Address,
pub fee_payer_proof: Vec<Bytes>,
pub el_placeholder_transaction_proof: Vec<Bytes>,
pub cl_placeholder_transaction_proof: Vec<B256>,
pub el_placeholder_receipt_proof: Vec<Bytes>,
pub pre_payment_logs_bloom: Bloom,
pub placeholder_gas_used: u64,
}Error responses
Last updated
