#scheme #http-transport #random #drand #retrieving #numbers

drand-client-rs

A small rust library for retrieving random numbers from drand

1 unstable release

0.1.0 Sep 11, 2023

#456 in HTTP client

MIT license

37KB
710 lines

🎲 🦀 drand-client-rs

A simple drand client implementation written in rust

Features

  • HTTP transport
  • pedersen-bls-chained scheme
  • pedersen-bls-unchained scheme
  • bls-unchained-on-g1 scheme
  • bls-unchained-on-g1-rfc9380 scheme

Example usage

use drand_client_rs::{new_http_client, DrandClientError};

fn main() -> Result<(), DrandClientError> {
    // first create the client using one of the relays as a `base_url`
    let drand_client = new_http_client("https://api.drand.sh")?;

    // you can fetch the latest random value using `latest_randomness`
    if let Ok(beacon) = drand_client.latest_randomness() {
        println!("the latest round is {}", beacon.round_number);
        println!("the latest randomness is {:?}", beacon.randomness);
    }

    // or a specific round using `randomness`
    if let Ok(beacon) = drand_client.randomness(1) {
        println!("the selected round is {}", beacon.round_number);
        println!("the latest randomness is {:?}", beacon.randomness);
    }

    Ok(())
}

Roadmap

  • rustdoc
  • wasm-specific target
  • libp2p transport

Dependencies

~5–16MB
~249K SLoC