pulsechain.box
Getting Started

ethers-rs (Rust)

Connect to PulseChain using the ethers-rs Rust crate.

Connect to PulseChain using ethers-rs. Note: ethers-rs is in maintenance mode. For new projects, use Alloy instead.

Setup

Add to Cargo.toml:

[dependencies]
ethers = { version = "2", features = ["rustls"] }
tokio = { version = "1", features = ["full"] }
eyre = "0.6"

Connect and query

use ethers::prelude::*;
use eyre::Result;

#[tokio::main]
async fn main() -> Result<()> {
    let provider = Provider::<Http>::try_from("https://rpc.pulsechain.box")?;

    let chain_id = provider.get_chainid().await?;
    println!("Chain ID: {}", chain_id); // 369

    let block_number = provider.get_block_number().await?;
    println!("Block number: {}", block_number);

    Ok(())
}

Get balance

use ethers::prelude::*;
use eyre::Result;

#[tokio::main]
async fn main() -> Result<()> {
    let provider = Provider::<Http>::try_from("https://rpc.pulsechain.box")?;

    let address: Address = "0x3693693693693693693693693693693693693693".parse()?;
    let balance = provider.get_balance(address, None).await?;
    println!("Balance: {} wei", balance);

    Ok(())
}

Get block

use ethers::prelude::*;
use eyre::Result;

#[tokio::main]
async fn main() -> Result<()> {
    let provider = Provider::<Http>::try_from("https://rpc.pulsechain.box")?;

    let block = provider.get_block(BlockNumber::Latest).await?;
    if let Some(block) = block {
        println!("Hash: {:?}", block.hash.unwrap());
        println!("Transactions: {}", block.transactions.len());
    }

    Ok(())
}

Send transaction

use ethers::prelude::*;
use ethers::signers::LocalWallet;
use eyre::Result;

#[tokio::main]
async fn main() -> Result<()> {
    let provider = Provider::<Http>::try_from("https://rpc.pulsechain.box")?;
    let chain_id = provider.get_chainid().await?.as_u64();

    let wallet: LocalWallet = "YOUR_PRIVATE_KEY"
        .parse::<LocalWallet>()?
        .with_chain_id(chain_id);

    let client = SignerMiddleware::new(provider, wallet);

    let tx = TransactionRequest::new()
        .to("0x0000000000000000000000000000000000000000".parse::<Address>()?)
        .value(ethers::utils::parse_ether("1.0")?);

    let pending_tx = client.send_transaction(tx, None).await?;
    let receipt = pending_tx.await?;
    println!("TX hash: {:?}", receipt);

    Ok(())
}
Copyright © 2026 AvecdrA. Made with love.