Skip to content

Commit 70d766e

Browse files
committed
Update to LDK 0.1
1 parent 3676248 commit 70d766e

File tree

5 files changed

+38
-53
lines changed

5 files changed

+38
-53
lines changed

Cargo.toml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ edition = "2018"
88
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
99

1010
[dependencies]
11-
lightning = { version = "0.0.125", features = ["max_level_trace"] }
12-
lightning-block-sync = { version = "0.0.125", features = [ "rpc-client", "tokio" ] }
13-
lightning-invoice = { version = "0.32.0" }
14-
lightning-net-tokio = { version = "0.0.125" }
15-
lightning-persister = { version = "0.0.125" }
16-
lightning-background-processor = { version = "0.0.125", features = [ "futures" ] }
17-
lightning-rapid-gossip-sync = { version = "0.0.125" }
11+
lightning = { version = "0.1.0", features = ["dnssec"] }
12+
lightning-block-sync = { version = "0.1.0", features = [ "rpc-client", "tokio" ] }
13+
lightning-invoice = { version = "0.33.0" }
14+
lightning-net-tokio = { version = "0.1.0" }
15+
lightning-persister = { version = "0.1.0" }
16+
lightning-background-processor = { version = "0.1.0", features = [ "futures" ] }
17+
lightning-rapid-gossip-sync = { version = "0.1.0" }
1818

1919
base64 = "0.13.0"
2020
bitcoin = "0.32"

src/bitcoind_client.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ impl BitcoindClient {
7171
let http_endpoint = HttpEndpoint::for_host(host.clone()).with_port(port);
7272
let rpc_credentials =
7373
base64::encode(format!("{}:{}", rpc_user.clone(), rpc_password.clone()));
74-
let bitcoind_rpc_client = RpcClient::new(&rpc_credentials, http_endpoint)?;
74+
let bitcoind_rpc_client = RpcClient::new(&rpc_credentials, http_endpoint);
7575
let _dummy = bitcoind_rpc_client
7676
.call_method::<BlockchainInfo>("getblockchaininfo", &vec![])
7777
.await
@@ -226,7 +226,7 @@ impl BitcoindClient {
226226
});
227227
}
228228

229-
pub fn get_new_rpc_client(&self) -> std::io::Result<RpcClient> {
229+
pub fn get_new_rpc_client(&self) -> RpcClient {
230230
let http_endpoint = HttpEndpoint::for_host(self.host.clone()).with_port(self.port);
231231
let rpc_credentials =
232232
base64::encode(format!("{}:{}", self.rpc_user.clone(), self.rpc_password.clone()));

src/cli.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use bitcoin::network::Network;
1010
use bitcoin::secp256k1::PublicKey;
1111
use lightning::chain::channelmonitor::Balance;
1212
use lightning::ln::bolt11_payment::payment_parameters_from_invoice;
13-
use lightning::ln::bolt11_payment::payment_parameters_from_zero_amount_invoice;
13+
use lightning::ln::bolt11_payment::payment_parameters_from_variable_amount_invoice;
1414
use lightning::ln::channelmanager::{PaymentId, RecipientOnionFields, Retry};
1515
use lightning::ln::invoice_utils as utils;
1616
use lightning::ln::msgs::SocketAddress;
@@ -746,7 +746,7 @@ fn send_payment(
746746
invoice.amount_milli_satoshis().is_none() || invoice.amount_milli_satoshis() == Some(0);
747747
let pay_params_opt = if zero_amt_invoice {
748748
if let Some(amt_msat) = required_amount_msat {
749-
payment_parameters_from_zero_amount_invoice(invoice, amt_msat)
749+
payment_parameters_from_variable_amount_invoice(invoice, amt_msat)
750750
} else {
751751
println!("Need an amount for the given 0-value invoice");
752752
print!("> ");
@@ -826,7 +826,7 @@ fn keysend<E: EntropySource>(
826826
},
827827
);
828828
fs_store.write("", "", OUTBOUND_PAYMENTS_FNAME, &outbound_payments.encode()).unwrap();
829-
match channel_manager.send_spontaneous_payment_with_retry(
829+
match channel_manager.send_spontaneous_payment(
830830
Some(payment_preimage),
831831
RecipientOnionFields::spontaneous_empty(),
832832
payment_id,
@@ -859,9 +859,6 @@ fn get_invoice(
859859
};
860860
let invoice = match utils::create_invoice_from_channelmanager(
861861
channel_manager,
862-
keys_manager,
863-
logger,
864-
currency,
865862
Some(amt_msat),
866863
"ldk-tutorial-node".to_string(),
867864
expiry_secs,

src/disk.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ use bitcoin::secp256k1::PublicKey;
33
use bitcoin::Network;
44
use chrono::Utc;
55
use lightning::routing::scoring::{ProbabilisticScorer, ProbabilisticScoringDecayParameters};
6+
use lightning::util::hash_tables::{new_hash_map, HashMap};
67
use lightning::util::logger::{Logger, Record};
78
use lightning::util::ser::{Readable, ReadableArgs};
8-
use std::collections::HashMap;
99
use std::fs;
1010
use std::fs::File;
1111
use std::io::{BufRead, BufReader, Write};
@@ -58,9 +58,9 @@ pub(crate) fn persist_channel_peer(path: &Path, peer_info: &str) -> std::io::Res
5858
pub(crate) fn read_channel_peer_data(
5959
path: &Path,
6060
) -> Result<HashMap<PublicKey, SocketAddr>, std::io::Error> {
61-
let mut peer_data = HashMap::new();
61+
let mut peer_data = new_hash_map();
6262
if !Path::new(&path).exists() {
63-
return Ok(HashMap::new());
63+
return Ok(new_hash_map());
6464
}
6565
let file = File::open(path)?;
6666
let reader = BufReader::new(file);
@@ -92,7 +92,7 @@ pub(crate) fn read_inbound_payment_info(path: &Path) -> InboundPaymentInfoStorag
9292
return info;
9393
}
9494
}
95-
InboundPaymentInfoStorage { payments: HashMap::new() }
95+
InboundPaymentInfoStorage { payments: new_hash_map() }
9696
}
9797

9898
pub(crate) fn read_outbound_payment_info(path: &Path) -> OutboundPaymentInfoStorage {
@@ -101,7 +101,7 @@ pub(crate) fn read_outbound_payment_info(path: &Path) -> OutboundPaymentInfoStor
101101
return info;
102102
}
103103
}
104-
OutboundPaymentInfoStorage { payments: HashMap::new() }
104+
OutboundPaymentInfoStorage { payments: new_hash_map() }
105105
}
106106

107107
pub(crate) fn read_scorer(

src/main.rs

Lines changed: 21 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ use lightning::routing::scoring::ProbabilisticScoringFeeParameters;
3434
use lightning::sign::{EntropySource, InMemorySigner, KeysManager};
3535
use lightning::types::payment::{PaymentHash, PaymentPreimage, PaymentSecret};
3636
use lightning::util::config::UserConfig;
37+
use lightning::util::hash_tables::hash_map::Entry;
38+
use lightning::util::hash_tables::HashMap;
3739
use lightning::util::persist::{
3840
self, KVStore, MonitorUpdatingPersister, OUTPUT_SWEEPER_PERSISTENCE_KEY,
3941
OUTPUT_SWEEPER_PERSISTENCE_PRIMARY_NAMESPACE, OUTPUT_SWEEPER_PERSISTENCE_SECONDARY_NAMESPACE,
@@ -49,8 +51,7 @@ use lightning_block_sync::UnboundedCache;
4951
use lightning_net_tokio::SocketDescriptor;
5052
use lightning_persister::fs_store::FilesystemStore;
5153
use rand::{thread_rng, Rng};
52-
use std::collections::hash_map::Entry;
53-
use std::collections::HashMap;
54+
use std::collections::HashMap as StdHashMap;
5455
use std::convert::TryInto;
5556
use std::fmt;
5657
use std::fs;
@@ -158,7 +159,7 @@ pub(crate) type PeerManager = SimpleArcPeerManager<
158159
ChainMonitor,
159160
BitcoindClient,
160161
BitcoindClient,
161-
GossipVerifier,
162+
Arc<GossipVerifier>,
162163
FilesystemLogger,
163164
>;
164165

@@ -219,7 +220,7 @@ async fn handle_ldk_events(
219220
)
220221
.expect("Lightning funding tx should always be to a SegWit output")
221222
.to_address();
222-
let mut outputs = vec![HashMap::with_capacity(1)];
223+
let mut outputs = vec![StdHashMap::new()];
223224
outputs[0].insert(addr, channel_value_satoshis as f64 / 100_000_000.0);
224225
let raw_tx = bitcoind_client.create_raw_transaction(outputs).await;
225226

@@ -246,17 +247,7 @@ async fn handle_ldk_events(
246247
Event::FundingTxBroadcastSafe { .. } => {
247248
// We don't use the manual broadcasting feature, so this event should never be seen.
248249
},
249-
Event::PaymentClaimable {
250-
payment_hash,
251-
purpose,
252-
amount_msat,
253-
receiver_node_id: _,
254-
via_channel_id: _,
255-
via_user_channel_id: _,
256-
claim_deadline: _,
257-
onion_fields: _,
258-
counterparty_skimmed_fee_msat: _,
259-
} => {
250+
Event::PaymentClaimable { payment_hash, purpose, amount_msat, .. } => {
260251
println!(
261252
"\nEVENT: received payment from payment hash {} of {} millisatoshis",
262253
payment_hash, amount_msat,
@@ -402,9 +393,7 @@ async fn handle_ldk_events(
402393
total_fee_earned_msat,
403394
claim_from_onchain_tx,
404395
outbound_amount_forwarded_msat,
405-
skimmed_fee_msat: _,
406-
prev_user_channel_id: _,
407-
next_user_channel_id: _,
396+
..
408397
} => {
409398
let read_only_network_graph = network_graph.read_only();
410399
let nodes = read_only_network_graph.nodes();
@@ -497,14 +486,7 @@ async fn handle_ldk_events(
497486
print!("> ");
498487
std::io::stdout().flush().unwrap();
499488
},
500-
Event::ChannelClosed {
501-
channel_id,
502-
reason,
503-
user_channel_id: _,
504-
counterparty_node_id,
505-
channel_capacity_sats: _,
506-
channel_funding_txo: _,
507-
} => {
489+
Event::ChannelClosed { channel_id, reason, counterparty_node_id, .. } => {
508490
println!(
509491
"\nEVENT: Channel {} with counterparty {} closed due to: {:?}",
510492
channel_id,
@@ -688,7 +670,7 @@ async fn start_ldk() {
688670
Arc::clone(&logger),
689671
)));
690672

691-
// Step 10: Create Router
673+
// Step 10: Create Routers
692674
let scoring_fee_params = ProbabilisticScoringFeeParameters::default();
693675
let router = Arc::new(DefaultRouter::new(
694676
network_graph.clone(),
@@ -698,6 +680,9 @@ async fn start_ldk() {
698680
scoring_fee_params,
699681
));
700682

683+
let message_router =
684+
Arc::new(DefaultMessageRouter::new(Arc::clone(&network_graph), Arc::clone(&keys_manager)));
685+
701686
// Step 11: Initialize the ChannelManager
702687
let mut user_config = UserConfig::default();
703688
user_config.channel_handshake_limits.force_announced_channel_preference = false;
@@ -706,9 +691,9 @@ async fn start_ldk() {
706691
let mut restarting_node = true;
707692
let (channel_manager_blockhash, channel_manager) = {
708693
if let Ok(f) = fs::File::open(format!("{}/manager", ldk_data_dir.clone())) {
709-
let mut channel_monitor_mut_references = Vec::new();
710-
for (_, channel_monitor) in channelmonitors.iter_mut() {
711-
channel_monitor_mut_references.push(channel_monitor);
694+
let mut channel_monitor_references = Vec::new();
695+
for (_, channel_monitor) in channelmonitors.iter() {
696+
channel_monitor_references.push(channel_monitor);
712697
}
713698
let read_args = ChannelManagerReadArgs::new(
714699
keys_manager.clone(),
@@ -718,9 +703,10 @@ async fn start_ldk() {
718703
chain_monitor.clone(),
719704
broadcaster.clone(),
720705
router,
706+
Arc::clone(&message_router),
721707
logger.clone(),
722708
user_config,
723-
channel_monitor_mut_references,
709+
channel_monitor_references,
724710
);
725711
<(BlockHash, ChannelManager)>::read(&mut BufReader::new(f), read_args).unwrap()
726712
} else {
@@ -736,6 +722,7 @@ async fn start_ldk() {
736722
chain_monitor.clone(),
737723
broadcaster.clone(),
738724
router,
725+
Arc::clone(&message_router),
739726
logger.clone(),
740727
keys_manager.clone(),
741728
keys_manager.clone(),
@@ -842,7 +829,8 @@ async fn start_ldk() {
842829
Arc::clone(&keys_manager),
843830
Arc::clone(&logger),
844831
Arc::clone(&channel_manager),
845-
Arc::new(DefaultMessageRouter::new(Arc::clone(&network_graph), Arc::clone(&keys_manager))),
832+
Arc::clone(&message_router),
833+
Arc::clone(&channel_manager),
846834
Arc::clone(&channel_manager),
847835
Arc::clone(&channel_manager),
848836
IgnoringMessageHandler {},
@@ -871,7 +859,7 @@ async fn start_ldk() {
871859
Arc::clone(&gossip_sync),
872860
Arc::clone(&peer_manager),
873861
);
874-
gossip_sync.add_utxo_lookup(Some(utxo_lookup));
862+
gossip_sync.add_utxo_lookup(Some(Arc::new(utxo_lookup)));
875863

876864
// ## Running LDK
877865
// Step 17: Initialize networking

0 commit comments

Comments
 (0)