X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fconvert.rs;fp=src%2Fconvert.rs;h=84b033e3a0820fc911f5d4dec42a32f0f8ba05df;hb=8098135a88a92f6ce50747cddea97b13c8296593;hp=64039233e7d5800fc9c1c147c2e800c328ced0fd;hpb=139e065ddd828277029d5b8db7309454e6daccfe;p=ldk-sample diff --git a/src/convert.rs b/src/convert.rs index 6403923..84b033e 100644 --- a/src/convert.rs +++ b/src/convert.rs @@ -74,6 +74,31 @@ impl TryInto for JsonResponse { } } +pub struct MempoolMinFeeResponse { + pub feerate_sat_per_kw: Option, + pub errored: bool, +} + +impl TryInto for JsonResponse { + type Error = std::io::Error; + fn try_into(self) -> std::io::Result { + let errored = !self.0["errors"].is_null(); + assert_eq!(self.0["maxmempool"].as_u64(), Some(300000000)); + Ok(MempoolMinFeeResponse { + errored, + feerate_sat_per_kw: match self.0["mempoolminfee"].as_f64() { + // Bitcoin Core gives us a feerate in BTC/KvB, which we need to convert to + // satoshis/KW. Thus, we first multiply by 10^8 to get satoshis, then divide by 4 + // to convert virtual-bytes into weight units. + Some(feerate_btc_per_kvbyte) => { + Some((feerate_btc_per_kvbyte * 100_000_000.0 / 4.0).round() as u32) + } + None => None, + }, + }) + } +} + pub struct BlockchainInfo { pub latest_height: usize, pub latest_blockhash: BlockHash,