HTTP Provider
The Http
provider establishes an HTTP connection with a node, allowing you to send JSON-RPC requests to the node to fetch data, simulate calls, send transactions and much more.
Initializing an Http Provider
The recommended way of initializing a Http
provider is by using the
on_http
method on the
ProviderBuilder
.
//! Example of creating an HTTP provider using the `on_http` method on the `ProviderBuilder`.
use alloy::providers::{Provider, ProviderBuilder};
use eyre::Result;
#[tokio::main]
async fn main() -> eyre::Result<()> {
// Set up the HTTP transport which is consumed by the RPC client.
let rpc_url = "https://eth.merkle.io".parse()?;
// Create a provider with the HTTP transport using the `reqwest` crate.
let provider = ProviderBuilder::new().on_http(rpc_url);
Ok(())
}
An alternative way of initializing is to use the
on_builtin
method on the
ProviderBuilder
. This method will automatically determine the connection type (Http
, Ws
or Ipc
) depending on the format of the URL. This method is particularly useful if you need a boxed transport.
//! Example of creating an HTTP provider using the `on_builtin` method on the `ProviderBuilder`.
use alloy::providers::{Provider, ProviderBuilder};
use eyre::Result;
#[tokio::main]
async fn main() -> eyre::Result<()> {
// Create a provider with the HTTP transport using the `reqwest` crate.
let provider = ProviderBuilder::new().on_builtin("https://eth.merkle.io").await?;
Ok(())
}
Example: http
Example
To run this example:
- Clone the examples repository:
git clone git@github.com:alloy-rs/examples.git
- Run:
cargo run --example http
//! Example of using the HTTP provider with the `reqwest` crate to get the latest block number.
use alloy::providers::{Provider, ProviderBuilder};
use eyre::Result;
#[tokio::main]
async fn main() -> Result<()> {
// Create a provider with the HTTP transport using the `reqwest` crate.
let rpc_url = "https://eth.merkle.io".parse()?;
let provider = ProviderBuilder::new().on_http(rpc_url);
// Get latest block number.
let latest_block = provider.get_block_number().await?;
println!("Latest block number: {latest_block}");
Ok(())
}
Find the source code on Github here.