Crate sequencer_client

Crate sequencer_client 

Source
Expand description

§SequencerClient

This library is used to read messages from the arbitrum sequencer feed and parses them into alloy transactions.

§Features

§It supports the following transaction types:

  • Legacy transactions
  • EIP-2930 transactions
  • EIP-1559 transactions
  • EIP-7702 transactions

§It does not support:

  • EIP-4844 transactions
  • Compressed transactions (Not implemented in arbitrum reference either)
  • Non-mutating calls (Not implemented in arbitrum reference either)
  • Heartbeat messages (Deprecated, not used in arbitrum anymore)

Reference implementation: https://github.com/OffchainLabs/nitro/blob/9b1e622102fa2bebfd7dffd327be19f8881f1467/arbos/incomingmessage.go#L328

§Warning

Using the library without a defaut CryptoProvider will cause a panic. Make sure to install a default CryptoProvider.

§Example

use sequencer_client::reader::SequencerReader;
#[tokio::main()]
async fn main() {
    let url = "wss://arb1-feed.arbitrum.io/feed";
    rustls::crypto::aws_lc_rs::default_provider()
        .install_default()
        .expect("Failed to install rustls crypto provider");
    let (mut reader, mut receiver) = SequencerReader::new(url).await;
    tokio::spawn(async move {
        while let Some(msg) = receiver.recv().await {
            println!("Received message: {:?}", msg.sequence_number());
        }
    });
    reader.start_reading().await;
}

Re-exports§

pub use reader::SequencerMessage;
pub use reader::SequencerReader;

Modules§

reader
types