Skip to content

sambacha/adjustable-bid-encoding-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Adjustable Bid Encoding

Note

This crate provides a Rust implementation of adjustable Ethereum block submission requests for use by block builders.

Based on Go reference implementation from Ultra Sound Relay

  • Submission of block data using adjustable request formats.
  • Compatibility with Ethereum's Deneb and Electra forks.
  • Optional SSZ (SimpleSerialize) encoding/decoding.
  • Full integration with the alloy-rs Ethereum ecosystem.

Network Support

Feature Description
Deneb Support AdjustableSubmitBlockRequest type for Deneb fork submission
Electra Support AdjustableSubmitBlockRequestV4 for Electra fork submission
SSZ Serialization Optional SSZ support via sszb, behind a crate feature
Alloy Integration Uses types from the alloy-rs ecosystem for Ethereum primitives

Installation

Add the crate to your Cargo.toml:

[dependencies]
adjustable-bid-encoding-rs = "0.1"

To enable SSZ serialization, use the optional ssz feature:

[dependencies]
adjustable-bid-encoding-rs = { version = "0.1", features = ["ssz"] }

Adjustable Bid Encoding

use adjustable_bid_encoding_rs::types::{AdjustableSubmitBlockRequest, AdjustmentData};
use alloy_primitives::{Address, B256};

// Create adjustment data
let adjustment_data = AdjustmentData {
    state_root: B256::default(),
    transactions_root: B256::default(),
    receipts_root: B256::default(),
    builder_address: Address::default(),
    builder_proof: vec![],
    fee_recipient_address: Address::default(),
    fee_recipient_proof: vec![],
    fee_payer_address: Address::default(),
    fee_payer_proof: vec![],
    placeholder_tx_proof: vec![],
    placeholder_receipt_proof: vec![],
};

// Construct the submission request
let request = AdjustableSubmitBlockRequest {
    message: Default::default(),
    execution_payload: Default::default(),
    blobs_bundle: Default::default(),
    signature: [0; 96],
    adjustment_data,
};

Note The AdjustableSubmitBlockRequestV4 type can be used similarly for Electra fork compatibility.

SSZ Support

SSZ serialization and deserialization is typically used via the ssz-rs library.

Instead we are using sszb

Warning

The amount of crates needed to implement SSZ in Alloy is like 5 crates. YMMV.

[dependencies]
adjustable-bid-encoding-rs = { version = "0.1", features = ["ssz"] }

Once enabled, types like AdjustableSubmitBlockRequest and AdjustmentData will implement Encode and Decode.

License

GPL-2.0

About

adjustable bid encoding for bid submissions by ethereum block builders

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages