Skip to content

Repository files navigation

Crates.io link Docs.rs link License

blockfrost-rust


A Rust SDK for Blockfrost.io API.

Getting startedInstallationExamplesEndpoints

Getting started

To use this SDK you need to login at blockfrost.io and create a new project to receive an API key.

Installation

Add to your project's Cargo.toml:

blockfrost = "1.3.0"

Examples

All the examples are located at the examples/ folder.

You might want to check all_requests.rs and ipfs.rs.

Here is simple_request.rs with the basic setup necessary and no settings customization:

use blockfrost::{BlockfrostAPI, BlockfrostResult};

fn build_api() -> BlockfrostResult<BlockfrostAPI> {
    let api = BlockfrostAPI::new("mainnetxvMK4xOpp5mHJgihi055KDLU64JJv2be", Default::default());
    Ok(api)
}

#[tokio::main]
async fn main() -> blockfrost::BlockfrostResult<()> {
    let api = build_api()?;
    let genesis = api.genesis().await?;

    println!("{:#?}", genesis);
    Ok(())
}

Pagination

Every paginated endpoint takes a Pagination, which controls page, count and order:

use blockfrost::{Order, Pagination};

let pagination = Pagination::new(Order::Desc, 1, 100);
let everything = Pagination::all(); // fetch every page

Block range cursors

Three endpoints additionally accept inclusive from/to block cursors:

  • accounts_transactions
  • addresses_transactions
  • assets_transactions
use blockfrost::{BlockCursor, Pagination};

// a plain block height, or a block height with a transaction index
let pagination = Pagination::default().with_range(8929261, BlockCursor::tx(9999269, 10));

Cursors also accept BlockCursor::block(..), BlockCursor::tx(..) and "8929261:10".parse(). They are preserved across pages when fetch_all is set.

Note: every other paginated endpoint ignores from/to. Passing a Pagination that carries cursors to, say, accounts_utxos returns the full unfiltered list rather than an error, so keep cursors on a Pagination you only hand to the three endpoints above.

Releases

Used by

Contributors

Languages