diff --git a/src/api.rs b/src/api.rs index 971908c..1721fec 100644 --- a/src/api.rs +++ b/src/api.rs @@ -4,7 +4,7 @@ use std::borrow::Borrow; use std::convert::TryInto; use bitcoin::consensus::encode::{deserialize, serialize}; -use bitcoin::{block, Script, Transaction, Txid}; +use bitcoin::{block, Amount, Script, Transaction, Txid}; use crate::batch::Batch; use crate::types::*; @@ -97,8 +97,8 @@ pub trait ElectrumApi { /// Estimates the fee required in **Bitcoin per kilobyte** to confirm a transaction in `number` blocks. fn estimate_fee(&self, number: usize) -> Result; - /// Returns the minimum accepted fee by the server's node in **Bitcoin, not Satoshi**. - fn relay_fee(&self) -> Result; + /// Returns the minimum accepted fee by the server's node. + fn relay_fee(&self) -> Result; /// Subscribes to notifications for activity on a specific *scriptPubKey*. /// diff --git a/src/client.rs b/src/client.rs index 5cdf0d8..5763fd0 100644 --- a/src/client.rs +++ b/src/client.rs @@ -4,7 +4,7 @@ use std::{borrow::Borrow, sync::RwLock}; use log::{info, warn}; -use bitcoin::{Script, Txid}; +use bitcoin::{Amount, Script, Txid}; use crate::api::ElectrumApi; use crate::batch::Batch; @@ -212,7 +212,7 @@ impl ElectrumApi for Client { } #[inline] - fn relay_fee(&self) -> Result { + fn relay_fee(&self) -> Result { impl_inner_call!(self, relay_fee) } diff --git a/src/raw_client.rs b/src/raw_client.rs index eb78185..ba28c02 100644 --- a/src/raw_client.rs +++ b/src/raw_client.rs @@ -17,7 +17,7 @@ use log::{debug, error, info, trace, warn}; use bitcoin::consensus::encode::deserialize; use bitcoin::hex::{DisplayHex, FromHex}; -use bitcoin::{Script, Txid}; +use bitcoin::{Amount, Script, Txid}; #[cfg(feature = "use-openssl")] use openssl::ssl::{SslConnector, SslMethod, SslStream, SslVerifyMode}; @@ -879,7 +879,7 @@ impl ElectrumApi for RawClient { .ok_or_else(|| Error::InvalidResponse(result.clone())) } - fn relay_fee(&self) -> Result { + fn relay_fee(&self) -> Result { let req = Request::new_id( self.last_id.fetch_add(1, Ordering::SeqCst), "blockchain.relayfee", @@ -887,9 +887,10 @@ impl ElectrumApi for RawClient { ); let result = self.call(req)?; - result + let amount_float = result .as_f64() - .ok_or_else(|| Error::InvalidResponse(result.clone())) + .ok_or_else(|| Error::InvalidResponse(result.clone()))?; + Amount::from_btc(amount_float).map_err(|_| Error::InvalidResponse(result.clone())) } fn script_subscribe(&self, script: &Script) -> Result, Error> { @@ -1195,7 +1196,7 @@ mod test { let client = RawClient::new(get_test_server(), None).unwrap(); let resp = client.relay_fee().unwrap(); - assert_eq!(resp, 0.00001); + assert_eq!(resp, bitcoin::Amount::from_btc(0.00001).unwrap()); } #[test]