Struct Client

Source
pub struct Client {
    pub bitcoind_request_client: Client,
}

Fields§

§bitcoind_request_client: Client

Implementations§

Source§

impl Client

Source

pub fn new(url: &str, user: &str, pass: &str) -> Result<Self, Error>

Examples found in repository?
examples/example.rs (line 39)
32fn main() {
33    /////////////////////////////////////////////////////////////////////
34    //////////Blockchain Data //////////////////////////////////////////
35    /////////////////////////////////////////////////////////////////////
36    let password = env::var("BITCOIND_PASSWORD").expect("BITCOIND_PASSWORD env variable not set");
37    let username = env::var("BITCOIND_USERNAME").expect("BITCOIND_USERNAME env variable not set");
38    let url = env::var("BITCOIND_URL").expect("BITCOIND_URL env variable not set");
39    let client = Client::new(&url, &username, &password).expect("failed to create client");
40
41    let block_height = get_block_height(&client);
42    println!("BLOCK HEIGHT: {:#?}", block_height);
43
44    // let seconds_since_last_block = get_time_since_last_block_in_seconds(&client);
45    // println!(
46    //     "TIME SINCE LAST BLOCK: {}",
47    //     format_duration(seconds_since_last_block)
48    // );
49
50    // let average_seconds_per_block_last_2016_blocks =
51    //     get_average_block_time_for_last_2016_blocks(&client);
52    // println!(
53    //     "AVERAGE BLOCK TIME (2016): {}",
54    //     format_duration(average_seconds_per_block_last_2016_blocks as i64)
55    // );
56    // let average_seconds_per_block_since_last_difficulty_adjustment =
57    //     get_average_block_time_for_since_last_difficulty_adjustement(&client);
58    // println!(
59    //     "AVERAGE BLOCK TIME (SINCE LAST_DIFFICULTY ADJUSTMENT): {}",
60    //     format_duration(average_seconds_per_block_since_last_difficulty_adjustment as i64)
61    // );
62
63    // // Errors out because: https://github.com/apoelstra/rust-jsonrpc/issues/67
64    // // let total_money_supply = get_total_money_supply(&client);
65    // // println!("TOTAL MONEY SUPPLY: {:#?}", total_money_supply);
66
67    // let chain_size = get_chain_size(&client);
68    // let chain_size_in_gbs = chain_size as f64 / 1_000_000_000.0;
69    // println!("CHAIN SIZE: {:#?}GB", chain_size_in_gbs);
70
71    // // Errors out because: https://github.com/apoelstra/rust-jsonrpc/issues/67
72    // // let utxo_set_size = get_utxo_set_size(&client);
73    // // println!("UTXO SET SIZE: {:#?}", utxo_set_size);
74
75    // /////////////////////////////////////////////////////////////////////
76    // //////////Blockchain Data //////////////////////////////////////////
77    // /////////////////////////////////////////////////////////////////////
78    // let total_transactions_count = get_total_transactions_count(&client);
79    // println!("TOTAL TRANSACTIONS COUNT: {:#?}", total_transactions_count);
80
81    // let tps_for_last_30_days = get_tps_for_last_30_days(&client);
82    // println!(
83    //     "TRANSACTIONS PER SECOND (last 30 days): {:#?} tx/s",
84    //     tps_for_last_30_days
85    // );
86
87    // // takes a long time
88    // let transactions_count_over_last_30_days = get_transactions_count_over_last_30_days(&client);
89    // println!(
90    //     "TRANSACTIONS COUNT OVER LAST 30 DAYS: {:#?}",
91    //     transactions_count_over_last_30_days
92    // );
93
94    // // takes a long time
95    // let total_fee_for_24_hours = get_total_fee_for_24_hours(&client);
96    // println!(
97    //     "TOTAL FEE FOR LAST 24 hours: {:#?} btc",
98    //     total_fee_for_24_hours as f64 / 100_000_000.0
99    // );
100
101    // let difficulty = get_difficulty(&client);
102    // let trillion: u64 = 1_000_000_000_000;
103    // let difficulty_per_trillion: f64 = difficulty as f64 / trillion as f64;
104    // println!("Difficulty: {:.2}x10^12", difficulty_per_trillion);
105
106    // let current_difficulty_epoch = get_current_difficulty_epoch(&client);
107    // println!("CURRENT EPOCH: {:?}", current_difficulty_epoch);
108    // let block_height_of_last_difficulty_adjustment =
109    //     get_block_height_of_last_difficulty_adjustment(&client);
110    // println!(
111    //     "BLOCK HEIGHT OF LAST DIFFICULTY: {:?}",
112    //     block_height_of_last_difficulty_adjustment
113    // );
114
115    // let mempool_transaction_count = get_mempool_transactions_count(&client);
116    // println!("MEMPOOL TRANSACTION COUNT: {:?}", mempool_transaction_count);
117
118    // let hash_rate_since_last_difficulty_change =
119    //     get_estimated_hash_rate_per_second_for_block_since_last_difficulty_change(&client);
120    // println!(
121    //     "ESTIMATED HASH RATE SINCE LAST DIFFICULTY CHANGE: {}",
122    //     hash_rate_since_last_difficulty_change
123    // );
124    // let hash_rate_for_last_2016_blocks =
125    //     get_estimated_hash_rate_per_second_for_last_2016_blocks(&client);
126    // println!(
127    //     "ESTIMATED HASH RATE FOR LAST 2016 BLOCKS: {}",
128    //     hash_rate_for_last_2016_blocks
129    // );
130    // let hash_rate_for_last_epoch = get_estimated_hash_rate_per_second_for_last_epoch(&client);
131    // println!(
132    //     "ESTIMATED HASH RATE FOR LAST EPOCH: {}",
133    //     hash_rate_for_last_epoch
134    // );
135    // let blocks_till_difficulty_adjustment = get_blocks_count_until_retarget(&client);
136    // println!(
137    //     "BLOCKS TILL DIFFICULTY ADJUSTMENT: {}",
138    //     blocks_till_difficulty_adjustment
139    // );
140    // let estimated_seconds_until_retarget = get_estimated_seconds_until_retarget(&client);
141    // println!(
142    //     "ESTIMATED SECONDS UNTIL RETARGET: {}",
143    //     estimated_seconds_until_retarget
144    // );
145
146    // // takes a long time
147    // let blocks_mined_over_last_24_hours = get_blocks_mined_over_last_24_hours_count(&client);
148    // println!(
149    //     "BLOCKS MINED OVER LAST 24 HOURS: {}",
150    //     blocks_mined_over_last_24_hours
151    // );
152    // // takes a long time
153    // let average_fees_per_block_over_last_24_hours =
154    //     get_average_fees_per_block_over_last_24_hours(&client);
155    // println!(
156    //     "AVERAGE FEES PER BLOCK OVER LAST 24 HOURS: {} btc",
157    //     average_fees_per_block_over_last_24_hours as f64 / 100_000_000.0
158    // );
159    // // takes a long time
160    // let average_fees_per_block_over_last_2016_blocks =
161    //     get_average_fees_per_block_over_last_2016_blocks(&client);
162    // println!(
163    //     "AVERAGE FEES PER BLOCK OVER LAST 2016 BLOCKS: {} btc",
164    //     average_fees_per_block_over_last_2016_blocks as f64 / 100_000_000.0
165    // );
166
167    // //takes a long time
168    // let fees_as_a_percent_of_reward_for_last_24_hours_ =
169    //     get_fees_as_a_percent_of_reward_for_last_24_hours(&client);
170    // println!(
171    //     "FEES AS A PERCENT OF REWARD OVER THE LAST 24 HOURS: {}",
172    //     fees_as_a_percent_of_reward_for_last_24_hours_
173    // );
174    // // takes a long time
175    let fees_as_a_percent_of_reward_for_last_2016_blocks =
176        get_fees_as_a_percent_of_reward_for_last_2016_blocks(&client);
177    println!(
178        "FEES AS A PERCENT OF REWARD OVER THE LAST 2016 BLOCKS: {}",
179        fees_as_a_percent_of_reward_for_last_2016_blocks
180    );
181
182    // let block_subsidy_of_most_recent_block = get_block_subsidy_of_most_recent_block(&client);
183    // println!(
184    //     "BLOCK SUBSIDY OF MOST RECENT BLOCK: {} btc",
185    //     block_subsidy_of_most_recent_block as f64 / 100_000_000.0
186    // );
187
188    // I expect about 37.4% Script hash transactions over the last 90 days
189    //let script_hash = get_percent_of_vouts_used_scripthash_over_last_90_days(&client);
190    //println!("scripthash (starts with 3)%: {:#?}", script_hash);
191
192    // I expect about 37.4% Script hash transactions over the last 90 days
193    // SEGWIT ADOPTION
194    // TODO: check the is_segwith_adress function and make sure it's exactly how you want to
195    // define what segwith type you're looking for
196    let (
197        percent_of_transactions_with_a_segwit_vout,
198        percent_of_transactions_with_a_segwit_vin_or_vout,
199        percent_based_on_transaction_hexes,
200        percent_of_payments_spending_segwit_per_day,
201        percent_of_segwit_spending_transactions_per_day,
202    ) = get_percent_of_vouts_used_segwit_over_last_24_hours(&client);
203    println!(
204        "segwit percent (vouts): {:#?}",
205        percent_of_transactions_with_a_segwit_vout
206    );
207    println!(
208        "segwit percent (vouts or vins): {:#?}",
209        percent_of_transactions_with_a_segwit_vin_or_vout,
210    );
211    // https://bitbo.io/
212    println!(
213        "segwit percent (transaction_hexes): {:#?}",
214        percent_based_on_transaction_hexes
215    );
216    // https://transactionfee.info/charts/payments-spending-segwit/
217    println!(
218        "percent of payments spending segwit_per_day: {:#?}",
219        percent_of_payments_spending_segwit_per_day
220    );
221    // https://transactionfee.info/charts/transactions-spending-segwit/
222    println!(
223        "percent of segwit spending transactions per day: {:#?}",
224        percent_of_segwit_spending_transactions_per_day
225    );
226    println!("total money supply: {:#?}", get_total_money_supply(&client));
227    println!("utxo set size: {:#?}", get_utxo_set_size(&client));
228    println!("total money supply: {:#?}", get_total_money_supply(&client));
229    println!("utxo set size: {:#?}", get_utxo_set_size(&client));
230}
Source

pub fn build_request<'a>( &self, command: &'a str, params: &'a Vec<Box<RawValue>>, ) -> Request<'a>

Source

pub fn send_request( &self, request: Request<'_>, ) -> Result<JsonRPCResponse, Error>

Auto Trait Implementations§

§

impl !Freeze for Client

§

impl !RefUnwindSafe for Client

§

impl Send for Client

§

impl Sync for Client

§

impl Unpin for Client

§

impl !UnwindSafe for Client

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.