Skip to content

Commit 302cc72

Browse files
committed
feat(api)!: relay_fee returns bitcoin::Amount
1 parent aeccf77 commit 302cc72

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

src/api.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::convert::TryInto;
55
use std::ops::Deref;
66

77
use bitcoin::consensus::encode::{deserialize, serialize};
8-
use bitcoin::{block, Script, Transaction, Txid};
8+
use bitcoin::{block, Amount, Script, Transaction, Txid};
99

1010
use crate::batch::Batch;
1111
use crate::types::*;
@@ -46,7 +46,7 @@ where
4646
(**self).estimate_fee(number)
4747
}
4848

49-
fn relay_fee(&self) -> Result<f64, Error> {
49+
fn relay_fee(&self) -> Result<Amount, Error> {
5050
(**self).relay_fee()
5151
}
5252

@@ -270,8 +270,8 @@ pub trait ElectrumApi {
270270
/// Estimates the fee required in **Bitcoin per kilobyte** to confirm a transaction in `number` blocks.
271271
fn estimate_fee(&self, number: usize) -> Result<f64, Error>;
272272

273-
/// Returns the minimum accepted fee by the server's node in **Bitcoin, not Satoshi**.
274-
fn relay_fee(&self) -> Result<f64, Error>;
273+
/// Returns the minimum accepted fee by the server's node.
274+
fn relay_fee(&self) -> Result<Amount, Error>;
275275

276276
/// Subscribes to notifications for activity on a specific *scriptPubKey*.
277277
///
@@ -411,6 +411,8 @@ pub trait ElectrumApi {
411411
mod test {
412412
use std::{borrow::Cow, sync::Arc};
413413

414+
use bitcoin::Amount;
415+
414416
use super::ElectrumApi;
415417

416418
#[derive(Debug, Clone)]
@@ -453,7 +455,7 @@ mod test {
453455
unreachable!()
454456
}
455457

456-
fn relay_fee(&self) -> Result<f64, super::Error> {
458+
fn relay_fee(&self) -> Result<Amount, super::Error> {
457459
unreachable!()
458460
}
459461

src/client.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
33
use std::{borrow::Borrow, sync::RwLock};
44

5+
use bitcoin::Amount;
56
use log::{info, warn};
67

78
use bitcoin::{Script, Txid};
@@ -212,7 +213,7 @@ impl ElectrumApi for Client {
212213
}
213214

214215
#[inline]
215-
fn relay_fee(&self) -> Result<f64, Error> {
216+
fn relay_fee(&self) -> Result<Amount, Error> {
216217
impl_inner_call!(self, relay_fee)
217218
}
218219

src/raw_client.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use log::{debug, error, info, trace, warn};
1717

1818
use bitcoin::consensus::encode::deserialize;
1919
use bitcoin::hex::{DisplayHex, FromHex};
20-
use bitcoin::{Script, Txid};
20+
use bitcoin::{Amount, Script, Txid};
2121

2222
#[cfg(feature = "use-openssl")]
2323
use openssl::ssl::{SslConnector, SslMethod, SslStream, SslVerifyMode};
@@ -902,17 +902,19 @@ impl<T: Read + Write> ElectrumApi for RawClient<T> {
902902
.ok_or_else(|| Error::InvalidResponse(result.clone()))
903903
}
904904

905-
fn relay_fee(&self) -> Result<f64, Error> {
905+
fn relay_fee(&self) -> Result<Amount, Error> {
906906
let req = Request::new_id(
907907
self.last_id.fetch_add(1, Ordering::SeqCst),
908908
"blockchain.relayfee",
909909
vec![],
910910
);
911911
let result = self.call(req)?;
912912

913-
result
913+
let btc = result
914914
.as_f64()
915-
.ok_or_else(|| Error::InvalidResponse(result.clone()))
915+
.ok_or_else(|| Error::InvalidResponse(result.clone()))?;
916+
917+
Amount::from_btc(btc).map_err(|e| Error::Message(format!("{e}")))
916918
}
917919

918920
fn script_subscribe(&self, script: &Script) -> Result<Option<ScriptStatus>, Error> {
@@ -1249,7 +1251,7 @@ mod test {
12491251
let client = RawClient::new(get_test_server(), None).unwrap();
12501252

12511253
let resp = client.relay_fee().unwrap();
1252-
assert_eq!(resp, 0.00001);
1254+
assert_eq!(resp.to_sat(), 100);
12531255
}
12541256

12551257
#[test]

0 commit comments

Comments
 (0)