mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-26 15:42:52 +01:00
Outputs to watch are tracked by ChannelMonitor as of
73dce207dd
. Instead of determining new
outputs to watch independently using ChainWatchedUtil, do so by
comparing against outputs already tracked. Thus, ChainWatchedUtil and
WatchEvent are no longer needed.
53 lines
2.2 KiB
Rust
53 lines
2.2 KiB
Rust
// This file is Copyright its original authors, visible in version control
|
|
// history.
|
|
//
|
|
// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
|
|
// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
|
|
// You may not use this file except in accordance with one or both of these
|
|
// licenses.
|
|
|
|
//! Traits and utility impls which allow other parts of rust-lightning to interact with the
|
|
//! blockchain.
|
|
//!
|
|
//! Includes traits for monitoring and receiving notifications of new blocks and block
|
|
//! disconnections, transaction broadcasting, and feerate information requests.
|
|
|
|
use bitcoin::blockdata::transaction::Transaction;
|
|
|
|
/// An interface to send a transaction to the Bitcoin network.
|
|
pub trait BroadcasterInterface: Sync + Send {
|
|
/// Sends a transaction out to (hopefully) be mined.
|
|
fn broadcast_transaction(&self, tx: &Transaction);
|
|
}
|
|
|
|
/// An enum that represents the speed at which we want a transaction to confirm used for feerate
|
|
/// estimation.
|
|
pub enum ConfirmationTarget {
|
|
/// We are happy with this transaction confirming slowly when feerate drops some.
|
|
Background,
|
|
/// We'd like this transaction to confirm without major delay, but 12-18 blocks is fine.
|
|
Normal,
|
|
/// We'd like this transaction to confirm in the next few blocks.
|
|
HighPriority,
|
|
}
|
|
|
|
/// A trait which should be implemented to provide feerate information on a number of time
|
|
/// horizons.
|
|
///
|
|
/// Note that all of the functions implemented here *must* be reentrant-safe (obviously - they're
|
|
/// called from inside the library in response to chain events, P2P events, or timer events).
|
|
pub trait FeeEstimator: Sync + Send {
|
|
/// Gets estimated satoshis of fee required per 1000 Weight-Units.
|
|
///
|
|
/// 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).
|
|
///
|
|
/// This translates to:
|
|
/// * satoshis-per-byte * 250
|
|
/// * ceil(satoshis-per-kbyte / 4)
|
|
fn get_est_sat_per_1000_weight(&self, confirmation_target: ConfirmationTarget) -> u32;
|
|
}
|
|
|
|
/// Minimum relay fee as required by bitcoin network mempool policy.
|
|
pub const MIN_RELAY_FEE_SAT_PER_1000_WEIGHT: u64 = 4000;
|