@@ -19,14 +19,13 @@ use bitcoin::hashes::Hash;
19
19
use bitcoin:: blockdata:: transaction:: TxOut ;
20
20
use bitcoin:: hash_types:: BlockHash ;
21
21
22
- use crate :: chain;
23
- use crate :: chain:: Access ;
24
22
use crate :: ln:: chan_utils:: make_funding_redeemscript;
25
23
use crate :: ln:: features:: { ChannelFeatures , NodeFeatures , InitFeatures } ;
26
24
use crate :: ln:: msgs:: { DecodeError , ErrorAction , Init , LightningError , RoutingMessageHandler , NetAddress , MAX_VALUE_MSAT } ;
27
25
use crate :: ln:: msgs:: { ChannelAnnouncement , ChannelUpdate , NodeAnnouncement , GossipTimestampFilter } ;
28
26
use crate :: ln:: msgs:: { QueryChannelRange , ReplyChannelRange , QueryShortChannelIds , ReplyShortChannelIdsEnd } ;
29
27
use crate :: ln:: msgs;
28
+ use crate :: routing:: gossip_checking:: { ChainAccess , ChainAccessError } ;
30
29
use crate :: util:: ser:: { Readable , ReadableArgs , Writeable , Writer , MaybeReadable } ;
31
30
use crate :: util:: logger:: { Logger , Level } ;
32
31
use crate :: util:: events:: { MessageSendEvent , MessageSendEventsProvider } ;
@@ -214,7 +213,7 @@ impl_writeable_tlv_based_enum_upgradable!(NetworkUpdate,
214
213
/// Provides interface to help with initial routing sync by
215
214
/// serving historical announcements.
216
215
pub struct P2PGossipSync < G : Deref < Target =NetworkGraph < L > > , C : Deref , L : Deref >
217
- where C :: Target : chain :: Access , L :: Target : Logger
216
+ where C :: Target : ChainAccess , L :: Target : Logger
218
217
{
219
218
network_graph : G ,
220
219
chain_access : Option < C > ,
@@ -225,7 +224,7 @@ where C::Target: chain::Access, L::Target: Logger
225
224
}
226
225
227
226
impl < G : Deref < Target =NetworkGraph < L > > , C : Deref , L : Deref > P2PGossipSync < G , C , L >
228
- where C :: Target : chain :: Access , L :: Target : Logger
227
+ where C :: Target : ChainAccess , L :: Target : Logger
229
228
{
230
229
/// Creates a new tracker of the actual state of the network of channels and nodes,
231
230
/// assuming an existing Network Graph.
@@ -322,7 +321,7 @@ macro_rules! secp_verify_sig {
322
321
}
323
322
324
323
impl < G : Deref < Target =NetworkGraph < L > > , C : Deref , L : Deref > RoutingMessageHandler for P2PGossipSync < G , C , L >
325
- where C :: Target : chain :: Access , L :: Target : Logger
324
+ where C :: Target : ChainAccess , L :: Target : Logger
326
325
{
327
326
fn handle_node_announcement ( & self , msg : & msgs:: NodeAnnouncement ) -> Result < bool , LightningError > {
328
327
self . network_graph . update_node_from_announcement ( msg) ?;
@@ -613,7 +612,7 @@ where C::Target: chain::Access, L::Target: Logger
613
612
614
613
impl < G : Deref < Target =NetworkGraph < L > > , C : Deref , L : Deref > MessageSendEventsProvider for P2PGossipSync < G , C , L >
615
614
where
616
- C :: Target : chain :: Access ,
615
+ C :: Target : ChainAccess ,
617
616
L :: Target : Logger ,
618
617
{
619
618
fn get_and_clear_pending_msg_events ( & self ) -> Vec < MessageSendEvent > {
@@ -1316,13 +1315,13 @@ impl<L: Deref> NetworkGraph<L> where L::Target: Logger {
1316
1315
/// RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
1317
1316
/// routing messages from a source using a protocol other than the lightning P2P protocol.
1318
1317
///
1319
- /// If a `chain::Access` object is provided via `chain_access`, it will be called to verify
1318
+ /// If a [`ChainAccess`] object is provided via `chain_access`, it will be called to verify
1320
1319
/// the corresponding UTXO exists on chain and is correctly-formatted.
1321
1320
pub fn update_channel_from_announcement < C : Deref > (
1322
1321
& self , msg : & msgs:: ChannelAnnouncement , chain_access : & Option < C > ,
1323
1322
) -> Result < ( ) , LightningError >
1324
1323
where
1325
- C :: Target : chain :: Access ,
1324
+ C :: Target : ChainAccess ,
1326
1325
{
1327
1326
let msg_hash = hash_to_message ! ( & Sha256dHash :: hash( & msg. contents. encode( ) [ ..] ) [ ..] ) ;
1328
1327
secp_verify_sig ! ( self . secp_ctx, & msg_hash, & msg. node_signature_1, & msg. contents. node_id_1, "channel_announcement" ) ;
@@ -1336,13 +1335,13 @@ impl<L: Deref> NetworkGraph<L> where L::Target: Logger {
1336
1335
/// signatures. Because we aren't given the associated signatures here we cannot relay the
1337
1336
/// channel announcement to any of our peers.
1338
1337
///
1339
- /// If a `chain::Access` object is provided via `chain_access`, it will be called to verify
1338
+ /// If a [`ChainAccess`] object is provided via `chain_access`, it will be called to verify
1340
1339
/// the corresponding UTXO exists on chain and is correctly-formatted.
1341
1340
pub fn update_channel_from_unsigned_announcement < C : Deref > (
1342
1341
& self , msg : & msgs:: UnsignedChannelAnnouncement , chain_access : & Option < C >
1343
1342
) -> Result < ( ) , LightningError >
1344
1343
where
1345
- C :: Target : chain :: Access ,
1344
+ C :: Target : ChainAccess ,
1346
1345
{
1347
1346
self . update_channel_from_unsigned_announcement_intern ( msg, None , chain_access)
1348
1347
}
@@ -1428,7 +1427,7 @@ impl<L: Deref> NetworkGraph<L> where L::Target: Logger {
1428
1427
& self , msg : & msgs:: UnsignedChannelAnnouncement , full_msg : Option < & msgs:: ChannelAnnouncement > , chain_access : & Option < C >
1429
1428
) -> Result < ( ) , LightningError >
1430
1429
where
1431
- C :: Target : chain :: Access ,
1430
+ C :: Target : ChainAccess ,
1432
1431
{
1433
1432
if msg. node_id_1 == msg. node_id_2 || msg. bitcoin_key_1 == msg. bitcoin_key_2 {
1434
1433
return Err ( LightningError { err : "Channel announcement node had a channel with itself" . to_owned ( ) , action : ErrorAction :: IgnoreError } ) ;
@@ -1499,10 +1498,10 @@ impl<L: Deref> NetworkGraph<L> where L::Target: Logger {
1499
1498
//to the new HTLC max field in channel_update
1500
1499
Some ( value)
1501
1500
} ,
1502
- Err ( chain :: AccessError :: UnknownChain ) => {
1501
+ Err ( ChainAccessError :: UnknownChain ) => {
1503
1502
return Err ( LightningError { err : format ! ( "Channel announced on an unknown chain ({})" , msg. chain_hash. encode( ) . to_hex( ) ) , action : ErrorAction :: IgnoreError } ) ;
1504
1503
} ,
1505
- Err ( chain :: AccessError :: UnknownTx ) => {
1504
+ Err ( ChainAccessError :: UnknownTx ) => {
1506
1505
return Err ( LightningError { err : "Channel announced without corresponding UTXO entry" . to_owned ( ) , action : ErrorAction :: IgnoreError } ) ;
1507
1506
} ,
1508
1507
}
@@ -1932,11 +1931,11 @@ impl ReadOnlyNetworkGraph<'_> {
1932
1931
1933
1932
#[ cfg( test) ]
1934
1933
mod tests {
1935
- use crate :: chain;
1936
1934
use crate :: ln:: channelmanager;
1937
1935
use crate :: ln:: chan_utils:: make_funding_redeemscript;
1938
1936
use crate :: ln:: features:: InitFeatures ;
1939
1937
use crate :: routing:: gossip:: { P2PGossipSync , NetworkGraph , NetworkUpdate , NodeAlias , MAX_EXCESS_BYTES_FOR_RELAY , NodeId , RoutingFees , ChannelUpdateInfo , ChannelInfo , NodeAnnouncementInfo , NodeInfo } ;
1938
+ use crate :: routing:: gossip_checking:: ChainAccessError ;
1940
1939
use crate :: ln:: msgs:: { RoutingMessageHandler , UnsignedNodeAnnouncement , NodeAnnouncement ,
1941
1940
UnsignedChannelAnnouncement , ChannelAnnouncement , UnsignedChannelUpdate , ChannelUpdate ,
1942
1941
ReplyChannelRange , QueryChannelRange , QueryShortChannelIds , MAX_VALUE_MSAT } ;
@@ -2168,7 +2167,7 @@ mod tests {
2168
2167
2169
2168
// Test if an associated transaction were not on-chain (or not confirmed).
2170
2169
let chain_source = test_utils:: TestChainSource :: new ( Network :: Testnet ) ;
2171
- * chain_source. utxo_ret . lock ( ) . unwrap ( ) = Err ( chain :: AccessError :: UnknownTx ) ;
2170
+ * chain_source. utxo_ret . lock ( ) . unwrap ( ) = Err ( ChainAccessError :: UnknownTx ) ;
2172
2171
let network_graph = NetworkGraph :: new ( genesis_hash, & logger) ;
2173
2172
gossip_sync = P2PGossipSync :: new ( & network_graph, Some ( & chain_source) , & logger) ;
2174
2173
0 commit comments