ethers-fireblocks
Provides ethers-compatible Signer and Middleware
implementations for the Fireblocks Vaults API.
Documentation
Clone the repository and run cd ethers-fireblocks/ && cargo doc --open
Add ethers-fireblocks to your repository
[dependencies]
ethers-fireblocks = { git = "https://github.com/gakonst/ethers-fireblocks" }
To use the example, you must have the following env vars set:
export FIREBLOCKS_API_SECRET_PATH=<path to your fireblocks.key>
export FIREBLOCKS_API_KEY=<your fireblocks api key>
export FIREBLOCKS_SOURCE_VAULT_ACCOUNT=<the vault id being used for sending txs>
Example Usage
use ethers_core::types::{Address, TransactionRequest};
use ethers_fireblocks::{Config, FireblocksMiddleware, FireblocksSigner};
use ethers_providers::{Middleware, Provider};
use std::convert::TryFrom;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let wallet_id = "1"; let chain_id = 3; let cfg = Config::new(
&std::env::var("FIREBLOCKS_SECRET_PATH").expect("fireblocks secret not set"),
&std::env::var("FIREBLOCKS_API_KEY").expect("fireblocks api key not set"),
wallet_id,
chain_id,
)?;
let mut signer = FireblocksSigner::new(cfg).await;
let provider = Provider::try_from("http://localhost:8545")?;
let provider = FireblocksMiddleware::new(provider, signer);
let address: Address = "cbe74e21b070a979b9d6426b11e876d4cb618daf".parse()?;
let tx = TransactionRequest::new().to(address);
let pending_tx = provider.send_transaction(tx, None).await?;
let receipt = pending_tx.confirmations(6).await?;
Ok(())
}