X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fchain%2Fchaininterface.rs;h=c187d2f8b055d3c0962276e6a50845a161b0a672;hb=87126b391b895098484a86dc484a381b825e9a31;hp=ad08c817dcea362187fb223629b989810b5309fd;hpb=7d6234662cb49d38dcd792ef8034e5111401e75e;p=rust-lightning diff --git a/lightning/src/chain/chaininterface.rs b/lightning/src/chain/chaininterface.rs index ad08c817..c187d2f8 100644 --- a/lightning/src/chain/chaininterface.rs +++ b/lightning/src/chain/chaininterface.rs @@ -9,10 +9,8 @@ use bitcoin::blockdata::transaction::Transaction; use bitcoin::blockdata::script::Script; use bitcoin::blockdata::constants::genesis_block; use bitcoin::util::hash::BitcoinHash; -use bitcoin_hashes::sha256d::Hash as Sha256dHash; use bitcoin::network::constants::Network; - -use util::logger::Logger; +use bitcoin::hash_types::{Txid, BlockHash}; use std::sync::{Mutex, MutexGuard, Arc}; use std::sync::atomic::{AtomicUsize, Ordering}; @@ -22,6 +20,7 @@ use std::marker::PhantomData; use std::ptr; /// Used to give chain error details upstream +#[derive(Clone)] pub enum ChainError { /// Client doesn't support UTXO lookup (but the chain hash matches our genesis block hash) NotSupported, @@ -39,11 +38,11 @@ pub enum ChainError { /// events). pub trait ChainWatchInterface: Sync + Send { /// Provides a txid/random-scriptPubKey-in-the-tx which much be watched for. - fn install_watch_tx(&self, txid: &Sha256dHash, script_pub_key: &Script); + fn install_watch_tx(&self, txid: &Txid, script_pub_key: &Script); /// Provides an outpoint which must be watched for, providing any transactions which spend the /// given outpoint. - fn install_watch_outpoint(&self, outpoint: (Sha256dHash, u32), out_script: &Script); + fn install_watch_outpoint(&self, outpoint: (Txid, u32), out_script: &Script); /// Indicates that a listener needs to see all transactions. fn watch_all_txn(&self); @@ -52,7 +51,7 @@ pub trait ChainWatchInterface: Sync + Send { /// short_channel_id (aka unspent_tx_output_identier). For BTC/tBTC channels the top three /// bytes are the block height, the next 3 the transaction index within the block, and the /// final two the output within the transaction. - fn get_chain_utxo(&self, genesis_hash: Sha256dHash, unspent_tx_output_identifier: u64) -> Result<(Script, u64), ChainError>; + fn get_chain_utxo(&self, genesis_hash: BlockHash, unspent_tx_output_identifier: u64) -> Result<(Script, u64), ChainError>; /// Gets the list of transactions and transaction indices that the ChainWatchInterface is /// watching for. @@ -127,17 +126,18 @@ pub trait FeeEstimator: Sync + Send { pub const MIN_RELAY_FEE_SAT_PER_1000_WEIGHT: u64 = 4000; /// Utility for tracking registered txn/outpoints and checking for matches +#[cfg_attr(test, derive(PartialEq))] pub struct ChainWatchedUtil { watch_all: bool, // We are more conservative in matching during testing to ensure everything matches *exactly*, // even though during normal runtime we take more optimized match approaches... #[cfg(test)] - watched_txn: HashSet<(Sha256dHash, Script)>, + watched_txn: HashSet<(Txid, Script)>, #[cfg(not(test))] watched_txn: HashSet