15 releases
0.0.16 | Mar 9, 2024 |
---|---|
0.0.15 | Feb 29, 2024 |
0.0.14 | Aug 30, 2023 |
0.0.8 | Jul 23, 2023 |
0.0.6 | Mar 22, 2023 |
#620 in Cryptography
48 downloads per month
Used in 4 crates
67KB
1.5K
SLoC
drand-core: Rust implementation of drand
drand-core is a library to retrieve public randomness generated by drand beacons. It features an HTTP client, and verification method.
The format specification is at drand.love/docs/specification. drand was designed in Scalable Bias-Resistant Distributed Randomness.
The reference interroperable Go implementation is available at drand/drand.
Tables of Content
Features
- Retrieve and verify drand randomness
- Built-in beacon time estimation
- Chain and unchained randomness
- Signatures verification on G1 and G2
- Interroperability with Go and JS implementation
- wasm32 compatible library
What's next
- P2P randomness retrieval
Installation
Environment | CLI Command |
---|---|
Cargo (Rust 1.74+) | cargo install drand_core |
The library is tested against the following targets: x86_64-unknown-linux-gnu
, armv7-unknown-linux-gnueabihf
, aarch64-unknown-linux-gnu
, wasm32-unknown-unknown
Usage
Retrieve the latest beacon from https://drand.cloudflare.com
.
use drand_core::HttpClient;
// Create a new client.
let client: HttpClient = "https://drand.cloudflare.com".try_into().unwrap();
// Get the latest beacon. By default, it verifies its signature against the chain info, and correlates the returned round number with the chain genesis time.
let latest = client.latest()?;
Code examples are provided in drand_core/examples. You can run them using cargo run --examples <name>
.
Common remotes
ID | Remote | Timelock encryption |
---|---|---|
quicknet-cloudflare |
https://drand.cloudflare.com/52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971 |
Yes |
quicknet-pl |
https://api.drand.sh/52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971 |
Yes |
mainnet-cloudflare |
https://drand.cloudflare.com |
No |
mainnet-pl |
https://api.drand.sh |
No |
drand_core
does not come with a default remote beacon. You should decide whichever suit your needs.
More beacon origins are available on drand website.
Security Considerations
This library has not been audited. Please use at your sole discretion.
License
This project is under the MIT license.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be MIT licensed as above, without any additional terms or conditions.
Dependencies
~7–17MB
~266K SLoC