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.
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 |
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"] }
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 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
.
GPL-2.0