projects
/
rust-lightning
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge pull request #3045 from TheBlueMatt/2024-03-fees-are-dust
[rust-lightning]
/
lightning-block-sync
/
src
/
lib.rs
diff --git
a/lightning-block-sync/src/lib.rs
b/lightning-block-sync/src/lib.rs
index 5d8bc27f8d141c2dcaaad9f1f53f97a25daa1cb0..4a01d4673b31e91d56c3cb350d995c1b7a3d7403 100644
(file)
--- a/
lightning-block-sync/src/lib.rs
+++ b/
lightning-block-sync/src/lib.rs
@@
-13,9
+13,8
@@
//! Both features support either blocking I/O using `std::net::TcpStream` or, with feature `tokio`,
//! non-blocking I/O using `tokio::net::TcpStream` from inside a Tokio runtime.
//! Both features support either blocking I/O using `std::net::TcpStream` or, with feature `tokio`,
//! non-blocking I/O using `tokio::net::TcpStream` from inside a Tokio runtime.
-// Prefix these with `rustdoc::` when we update our MSRV to be >= 1.52 to remove warnings.
-#![deny(broken_intra_doc_links)]
-#![deny(private_intra_doc_links)]
+#![deny(rustdoc::broken_intra_doc_links)]
+#![deny(rustdoc::private_intra_doc_links)]
#![deny(missing_docs)]
#![deny(unsafe_code)]
#![deny(missing_docs)]
#![deny(unsafe_code)]
@@
-28,6
+27,8
@@
pub mod http;
pub mod init;
pub mod poll;
pub mod init;
pub mod poll;
+pub mod gossip;
+
#[cfg(feature = "rest-client")]
pub mod rest;
#[cfg(feature = "rest-client")]
pub mod rest;
@@
-45,9
+46,9
@@
mod utils;
use crate::poll::{ChainTip, Poll, ValidatedBlockHeader};
use crate::poll::{ChainTip, Poll, ValidatedBlockHeader};
-use bitcoin::blockdata::block::{Block,
Block
Header};
+use bitcoin::blockdata::block::{Block, Header};
use bitcoin::hash_types::BlockHash;
use bitcoin::hash_types::BlockHash;
-use bitcoin::
util::uint::Uint256
;
+use bitcoin::
pow::Work
;
use lightning::chain;
use lightning::chain::Listen;
use lightning::chain;
use lightning::chain::Listen;
@@
-98,7
+99,7
@@
pub struct BlockSourceError {
}
/// The kind of `BlockSourceError`, either persistent or transient.
}
/// The kind of `BlockSourceError`, either persistent or transient.
-#[derive(Clone, Copy, Debug, PartialEq)]
+#[derive(Clone, Copy, Debug, PartialEq
, Eq
)]
pub enum BlockSourceErrorKind {
/// Indicates an error that won't resolve when retrying a request (e.g., invalid data).
Persistent,
pub enum BlockSourceErrorKind {
/// Indicates an error that won't resolve when retrying a request (e.g., invalid data).
Persistent,
@@
-132,6
+133,9
@@
impl BlockSourceError {
}
/// Converts the error into the underlying error.
}
/// Converts the error into the underlying error.
+ ///
+ /// May contain an [`std::io::Error`] from the [`BlockSource`]. See implementations for further
+ /// details, if any.
pub fn into_inner(self) -> Box<dyn std::error::Error + Send + Sync> {
self.error
}
pub fn into_inner(self) -> Box<dyn std::error::Error + Send + Sync> {
self.error
}
@@
-139,17
+143,16
@@
impl BlockSourceError {
/// A block header and some associated data. This information should be available from most block
/// sources (and, notably, is available in Bitcoin Core's RPC and REST interfaces).
/// A block header and some associated data. This information should be available from most block
/// sources (and, notably, is available in Bitcoin Core's RPC and REST interfaces).
-#[derive(Clone, Copy, Debug, PartialEq)]
+#[derive(Clone, Copy, Debug, PartialEq
, Eq
)]
pub struct BlockHeaderData {
/// The block header itself.
pub struct BlockHeaderData {
/// The block header itself.
- pub header:
Block
Header,
+ pub header: Header,
/// The block height where the genesis block has height 0.
pub height: u32,
/// The block height where the genesis block has height 0.
pub height: u32,
- /// The total chain work in expected number of double-SHA256 hashes required to build a chain
- /// of equivalent weight.
- pub chainwork: Uint256,
+ /// The total chain work required to build a chain of equivalent weight.
+ pub chainwork: Work,
}
/// A block including either all its transactions or only the block header.
}
/// A block including either all its transactions or only the block header.
@@
-161,7
+164,7
@@
pub enum BlockData {
/// A block containing all its transactions.
FullBlock(Block),
/// A block header for when the block does not contain any pertinent transactions.
/// A block containing all its transactions.
FullBlock(Block),
/// A block header for when the block does not contain any pertinent transactions.
- HeaderOnly(
Block
Header),
+ HeaderOnly(Header),
}
/// A lightweight client for keeping a listener in sync with the chain, allowing for Simplified
}
/// A lightweight client for keeping a listener in sync with the chain, allowing for Simplified
@@
-411,15
+414,15
@@
impl<'a, C: Cache, L: Deref> ChainNotifier<'a, C, L> where L::Target: chain::Lis
let height = header.height;
let block_data = chain_poller
.fetch_block(&header).await
let height = header.height;
let block_data = chain_poller
.fetch_block(&header).await
- .
or_else(|e| Err((e, Some(new_tip)
)))?;
+ .
map_err(|e| (e, Some(new_tip
)))?;
debug_assert_eq!(block_data.block_hash, header.block_hash);
match block_data.deref() {
BlockData::FullBlock(block) => {
debug_assert_eq!(block_data.block_hash, header.block_hash);
match block_data.deref() {
BlockData::FullBlock(block) => {
- self.chain_listener.block_connected(
&
block, height);
+ self.chain_listener.block_connected(block, height);
},
BlockData::HeaderOnly(header) => {
},
BlockData::HeaderOnly(header) => {
- self.chain_listener.filtered_block_connected(
&
header, &[], height);
+ self.chain_listener.filtered_block_connected(header, &[], height);
},
}
},
}