X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fchain%2Fchaininterface.rs;h=7e9e9aeff05b902923703846337cc5c9b9666edd;hb=b17211ffe42d029280fc45df42dd1d6152eadd13;hp=f99f581f133a4fea18642c152444418d250a25f1;hpb=de523c4ca38c4f671df11fa4c7f5781ba0ab00fc;p=rust-lightning diff --git a/src/chain/chaininterface.rs b/src/chain/chaininterface.rs index f99f581f..7e9e9aef 100644 --- a/src/chain/chaininterface.rs +++ b/src/chain/chaininterface.rs @@ -12,7 +12,7 @@ use std::sync::atomic::{AtomicUsize, Ordering}; /// events). pub trait ChainWatchInterface: Sync + Send { /// Provides a scriptPubKey which much be watched for. - fn install_watch_script(&self, script_pub_key: Script); + fn install_watch_script(&self, script_pub_key: &Script); /// Provides an outpoint which must be watched for, providing any transactions which spend the /// given outpoint. @@ -57,7 +57,12 @@ pub enum ConfirmationTarget { /// called from inside the library in response to ChainListener events, P2P events, or timer /// events). pub trait FeeEstimator: Sync + Send { - fn get_est_sat_per_vbyte(&self, confirmation_target: ConfirmationTarget) -> u64; + /// Gets estimated satoshis of fee required per 1000 Weight-Units. This translates to: + /// * satoshis-per-byte * 250 + /// * ceil(satoshis-per-kbyte / 4) + /// Must be no smaller than 253 (ie 1 satoshi-per-byte rounded up to ensure later round-downs + /// don't put us below 1 satoshi-per-byte). + fn get_est_sat_per_1000_weight(&self, confirmation_target: ConfirmationTarget) -> u64; } /// Utility to capture some common parts of ChainWatchInterface implementors. @@ -70,9 +75,9 @@ pub struct ChainWatchInterfaceUtil { /// Register listener impl ChainWatchInterface for ChainWatchInterfaceUtil { - fn install_watch_script(&self, script_pub_key: Script) { + fn install_watch_script(&self, script_pub_key: &Script) { let mut watched = self.watched.lock().unwrap(); - watched.0.push(Script::from(script_pub_key)); + watched.0.push(script_pub_key.clone()); self.reentered.fetch_add(1, Ordering::Relaxed); } @@ -103,7 +108,7 @@ impl ChainWatchInterfaceUtil { } } - /// Notify listeners that a block was connected. + /// Notify listeners that a block was connected given a full, unfiltered block. /// Handles re-scanning the block and calling block_connected again if listeners register new /// watch data during the callbacks for you (see ChainListener::block_connected for more info). pub fn block_connected_with_filtering(&self, block: &Block, height: u32) { @@ -135,7 +140,8 @@ impl ChainWatchInterfaceUtil { } } - /// Notify listeners that a block was connected. + /// Notify listeners that a block was connected, given pre-filtered list of transactions in the + /// block which matched the filter (probably using does_match_tx). /// Returns true if notified listeners registered additional watch data (implying that the /// block must be re-scanned and this function called again prior to further block_connected /// calls, see ChainListener::block_connected for more info).