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(())
}
