18 releases

0.1.17 Nov 4, 2022
0.1.16 Oct 26, 2022
0.1.12 Aug 25, 2022

#2403 in Magic Beans

Download history 98/week @ 2024-02-19 30/week @ 2024-02-26

128 downloads per month
Used in 5 crates (4 directly)

MIT license

125KB
1.5K SLoC

Bitcoind Request

Send RPC commands to a bitcoind server.


⚠️ This is experimental. Please use at your own risk.⚠️


This library provides typesafe functions over raw RPC bitcoind commands to easily and safely retrieve information from a bitcoin node.

As this library only provides typesafety over raw RPC commands, functions will be mapped 1:1 to RPC commands. See bitcoin core docs for a list of all commands and what they return.

If you're looking for additional information about the Bitcoin Network (i.e. time since last block, etc) , take a look at bitcoin-node-query, which provides additional functions to query bitcoin network data.

Install

Add package to Cargo.toml file

[dependencies]
bitcoind-request = "0.1.17"

Usage:

use bitcoind_request::{
    client::Client,
    command::{
        get_blockchain_info::GetBlockchainInfoCommand,
        CallableCommand,
    },
};

// Create a Client.
let bitcoind_password: &str = ...
let bitcoind_username: &str = ...
let bitcoind_url = "127.0.0.1:8332"
let client = Client::new(
        &bitcoind_url,
        &bitcoind_username,
        &bitcoind_password
    ).expect("failed to create client");

// Get the estimated size of the block and undo files on disk.
// Note: this calls "getblockchaininfo" bitcoin core rpc command under the hood.
let blockchain_info = GetBlockchainInfoCommand::new().call(client);
println!("{}", blockchain_info.size_on_disk);

// Compute statistics about the total number and rate of transactions in the chain.
// Note: this calls "getchaintxstats" bitcoin core rpc command under the hood.
let maybe_chain_tx_stats = GetChainTxStatsCommand::new()
	.set_n_blocks(2016)
	.call(client);
println!("{:#?}", maybe_chain_tx_stats.unwrap());

Commands

List of all bitcoind commands can be found at bitcoin.org

They can also be found in the bitcoin-cli docs:

$ bitcoin-cli help

License

MIT © Joe Gesualdo

Dependencies

~6–18MB
~229K SLoC