Skip to content

Commit 00c6a00

Browse files
committed
Update C/C++ demos to LDK 0.1
1 parent 026b994 commit 00c6a00

File tree

2 files changed

+71
-38
lines changed

2 files changed

+71
-38
lines changed

lightning-c-bindings/demo.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,10 @@ LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ monitors_pending_
4040
return empty_htlc_vec;
4141
}
4242

43-
void never_handle_event(const void *this_arg, const struct LDKEvent event) {
43+
LDKCResult_NoneReplayEventZ never_handle_event(const void *this_arg, const struct LDKEvent event) {
4444
// Note that we never actually generate any events to handle in the code below.
4545
assert(false);
46+
return CResult_NoneReplayEventZ_ok();
4647
}
4748

4849
LDKCResult_RouteLightningErrorZ do_find_route(const void *this_arg, LDKPublicKey payer, const LDKRouteParameters *route_params, LDKCVec_ChannelDetailsZ *first_hops, const LDKInFlightHtlcs inflight_htlcs) {
@@ -94,6 +95,14 @@ int main() {
9495
.free = NULL,
9596
};
9697

98+
LDKMessageRouter msg_router = {
99+
.this_arg = NULL,
100+
.find_path = NULL,
101+
.create_blinded_paths = NULL,
102+
.create_compact_blinded_paths = NULL,
103+
.free = NULL,
104+
};
105+
97106
LDKKeysManager keys = KeysManager_new(&node_seed, 0, 0);
98107
LDKEntropySource entropy_source = KeysManager_as_EntropySource(&keys);
99108
LDKNodeSigner node_signer = KeysManager_as_NodeSigner(&keys);
@@ -103,7 +112,7 @@ int main() {
103112
LDKThirtyTwoBytes chain_tip;
104113
memset(&chain_tip, 0, 32);
105114
LDKChainParameters chain = ChainParameters_new(net, BestBlock_new(chain_tip, 0));
106-
LDKChannelManager cm = ChannelManager_new(fee_est, mon, broadcast, router, logger, entropy_source, node_signer, signer_provider, config, chain, 42);
115+
LDKChannelManager cm = ChannelManager_new(fee_est, mon, broadcast, router, msg_router, logger, entropy_source, node_signer, signer_provider, config, chain, 42);
107116

108117
LDKCVec_ChannelDetailsZ channels = ChannelManager_list_channels(&cm);
109118
assert((unsigned long)channels.data < 4096); // There's an offset, but it should still be an offset against null in the 0 page

lightning-c-bindings/demo.cpp

Lines changed: 60 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,16 @@ const uint8_t channel_open_block[] = {
6767
0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6868
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6969
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
70-
0x01, 0x40, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x20, 0xc5, 0x1c, 0xad, 0x5e,
71-
0x51, 0x11, 0xb0, 0x11, 0xa1, 0x14, 0xf4, 0xda, 0x02, 0x3d, 0xbc, 0xc1, 0x44, 0x3c, 0x67, 0x31,
72-
0xec, 0x6f, 0x10, 0x2f, 0x89, 0xc1, 0x05, 0x80, 0xfe, 0xfc, 0xd6, 0xc7, 0x01, 0x00, 0x00, 0x00,
70+
0x01, 0x40, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x20, 0x6e, 0x78, 0xd3, 0x6c,
71+
0x07, 0x22, 0x76, 0x2d, 0x7c, 0x24, 0xa0, 0x43, 0xbb, 0xbb, 0x96, 0xfe, 0x5b, 0x15, 0x1b, 0x30,
72+
0x9c, 0x3f, 0xfe, 0xc9, 0x09, 0x61, 0xee, 0xa0, 0x52, 0x4f, 0x9d, 0xc3, 0x01, 0x00, 0x00, 0x00,
7373
0x00, 0x00
7474
};
7575

7676
// The first transaction in the block is header (80 bytes) + transaction count (1 byte) into the block data.
7777
const uint8_t channel_open_txid[] = {
78-
0x7a, 0x14, 0x8f, 0xb4, 0x08, 0x49, 0x9b, 0x51, 0x2e, 0xff, 0xf9, 0x46, 0x73, 0xca, 0xc6, 0x48,
79-
0xfd, 0x95, 0x0e, 0x72, 0xd4, 0xd3, 0xdb, 0x79, 0xc9, 0x20, 0xed, 0x83, 0xb2, 0xde, 0xed, 0x41,
78+
0x1d, 0x5d, 0x36, 0x00, 0x47, 0xa7, 0x11, 0x5d, 0x40, 0xf9, 0x57, 0x7a, 0xd0, 0x8d, 0x9d, 0x9c,
79+
0x06, 0xb7, 0x36, 0xdf, 0x87, 0x37, 0xc6, 0x57, 0x9d, 0xfa, 0xc1, 0xad, 0xbe, 0x38, 0x29, 0x35,
8080
};
8181

8282
// Two blocks built on top of channel_open_block:
@@ -119,6 +119,19 @@ const LDKFeeEstimator fee_est {
119119
.free = NULL,
120120
};
121121

122+
uint64_t get_zero_penalty(const void *this_arg, const struct LDKCandidateRouteHop *candidate, struct LDKChannelUsage usage, const struct LDKProbabilisticScoringFeeParameters *score_params) {
123+
LDK::ChannelUsage cpp_usage(std::move(usage)); // Make sure we free usage
124+
return 0;
125+
}
126+
const LDKScoreLookUp zero_score_lookup {
127+
.this_arg = NULL,
128+
.channel_penalty_msat = get_zero_penalty,
129+
.free = NULL,
130+
};
131+
struct LDKScoreLookUp fetch_zero_scorer(const void *this_arg) {
132+
return zero_score_lookup;
133+
}
134+
122135
static std::atomic_int num_txs_broadcasted(0);
123136
void broadcast_txn(const void *this_arg, LDKCVec_TransactionZ txn) {
124137
num_txs_broadcasted += 1;
@@ -603,6 +616,13 @@ int main() {
603616
.free = NULL,
604617
};
605618

619+
LDKMessageRouter panic_msg_router = {
620+
.this_arg = NULL,
621+
.create_blinded_paths = NULL, // Segfault if we ever try to find a route
622+
.create_compact_blinded_paths = NULL, // Segfault if we ever try to find a route
623+
.free = NULL,
624+
};
625+
606626
LDK::NetworkGraph net_graph2 = NetworkGraph_new(network, logger2);
607627
LDK::P2PGossipSync graph_msg_handler2 = P2PGossipSync_new(&net_graph2, COption_UtxoLookupZ_none(), logger2);
608628

@@ -618,14 +638,22 @@ int main() {
618638
LDK::EntropySource entropy_source1 = KeysManager_as_EntropySource(&keys1);
619639
LDK::SignerProvider signer_provider1 = KeysManager_as_SignerProvider(&keys1);
620640

621-
LDK::ChannelManager cm1 = ChannelManager_new(fee_est, mon1, broadcast, panic_router, logger1, KeysManager_as_EntropySource(&keys1), KeysManager_as_NodeSigner(&keys1), KeysManager_as_SignerProvider(&keys1), UserConfig_default(), ChainParameters_new(network, BestBlock_new(chain_tip, 0)), 1689638400);
641+
LDKLockableScore zero_scorer = {
642+
.this_arg = NULL,
643+
.read_lock = fetch_zero_scorer,
644+
.write_lock = NULL, // This scorer should never be updated
645+
.free = NULL,
646+
};
647+
LDK::DefaultRouter default_router_1 = DefaultRouter_new(&net_graph1, logger1, KeysManager_as_EntropySource(&keys1), zero_scorer, ProbabilisticScoringFeeParameters_default());
648+
649+
LDK::ChannelManager cm1 = ChannelManager_new(fee_est, mon1, broadcast, DefaultRouter_as_Router(&default_router_1), panic_msg_router, logger1, KeysManager_as_EntropySource(&keys1), KeysManager_as_NodeSigner(&keys1), KeysManager_as_SignerProvider(&keys1), UserConfig_default(), ChainParameters_new(network, BestBlock_new(chain_tip, 0)), 1689638400);
622650

623651
LDK::IgnoringMessageHandler ignoring_handler1 = IgnoringMessageHandler_new();
624652
LDK::CustomMessageHandler custom_msg_handler1 = IgnoringMessageHandler_as_CustomMessageHandler(&ignoring_handler1);
625653
LDK::CustomOnionMessageHandler custom_onion_msg_handler1 = IgnoringMessageHandler_as_CustomOnionMessageHandler(&ignoring_handler1);
626654
LDK::AsyncPaymentsMessageHandler async_msg_handler1 = IgnoringMessageHandler_as_AsyncPaymentsMessageHandler(&ignoring_handler1);
627655
LDK::DefaultMessageRouter mr1 = DefaultMessageRouter_new(&net_graph1, KeysManager_as_EntropySource(&keys1));
628-
LDK::OnionMessenger om1 = OnionMessenger_new(KeysManager_as_EntropySource(&keys1), KeysManager_as_NodeSigner(&keys1), logger1, ChannelManager_as_NodeIdLookUp(&cm1), DefaultMessageRouter_as_MessageRouter(&mr1), IgnoringMessageHandler_as_OffersMessageHandler(&ignoring_handler1), std::move(async_msg_handler1), std::move(custom_onion_msg_handler1));
656+
LDK::OnionMessenger om1 = OnionMessenger_new(KeysManager_as_EntropySource(&keys1), KeysManager_as_NodeSigner(&keys1), logger1, ChannelManager_as_NodeIdLookUp(&cm1), DefaultMessageRouter_as_MessageRouter(&mr1), IgnoringMessageHandler_as_OffersMessageHandler(&ignoring_handler1), std::move(async_msg_handler1), ChannelManager_as_DNSResolverMessageHandler(&cm1), std::move(custom_onion_msg_handler1));
629657

630658
LDK::CVec_ChannelDetailsZ channels = ChannelManager_list_channels(&cm1);
631659
assert(channels->datalen == 0);
@@ -655,21 +683,21 @@ int main() {
655683
LDK::UserConfig config2 = UserConfig_default();
656684
UserConfig_set_channel_handshake_config(&config2, std::move(handshake_config2));
657685

658-
LDK::ChannelManager cm2 = ChannelManager_new(fee_est, mon2, broadcast, panic_router, logger2, KeysManager_as_EntropySource(&keys2), KeysManager_as_NodeSigner(&keys2), KeysManager_as_SignerProvider(&keys2), std::move(config2), ChainParameters_new(network, BestBlock_new(chain_tip, 0)), 1689638400);
686+
LDK::ChannelManager cm2 = ChannelManager_new(fee_est, mon2, broadcast, panic_router, panic_msg_router, logger2, KeysManager_as_EntropySource(&keys2), KeysManager_as_NodeSigner(&keys2), KeysManager_as_SignerProvider(&keys2), std::move(config2), ChainParameters_new(network, BestBlock_new(chain_tip, 0)), 1689638400);
659687

660688
LDK::IgnoringMessageHandler ignoring_handler2 = IgnoringMessageHandler_new();
661689
LDK::CustomMessageHandler custom_msg_handler2 = IgnoringMessageHandler_as_CustomMessageHandler(&ignoring_handler2);
662690
LDK::CustomOnionMessageHandler custom_onion_msg_handler2 = IgnoringMessageHandler_as_CustomOnionMessageHandler(&ignoring_handler2);
663691
LDK::DefaultMessageRouter mr2 = DefaultMessageRouter_new(&net_graph2, KeysManager_as_EntropySource(&keys2));
664-
LDK::OnionMessenger om2 = OnionMessenger_new(KeysManager_as_EntropySource(&keys2), KeysManager_as_NodeSigner(&keys2), logger2, ChannelManager_as_NodeIdLookUp(&cm2), DefaultMessageRouter_as_MessageRouter(&mr2), IgnoringMessageHandler_as_OffersMessageHandler(&ignoring_handler2), IgnoringMessageHandler_as_AsyncPaymentsMessageHandler(&ignoring_handler2), std::move(custom_onion_msg_handler2));
692+
LDK::OnionMessenger om2 = OnionMessenger_new(KeysManager_as_EntropySource(&keys2), KeysManager_as_NodeSigner(&keys2), logger2, ChannelManager_as_NodeIdLookUp(&cm2), DefaultMessageRouter_as_MessageRouter(&mr2), IgnoringMessageHandler_as_OffersMessageHandler(&ignoring_handler2), IgnoringMessageHandler_as_AsyncPaymentsMessageHandler(&ignoring_handler2), ChannelManager_as_DNSResolverMessageHandler(&cm2), std::move(custom_onion_msg_handler2));
665693

666694
LDK::CVec_ChannelDetailsZ channels2 = ChannelManager_list_channels(&cm2);
667695
assert(channels2->datalen == 0);
668696

669697
LDK::RoutingMessageHandler net_msgs2 = P2PGossipSync_as_RoutingMessageHandler(&graph_msg_handler2);
670698
LDK::CResult_ChannelAnnouncementDecodeErrorZ chan_ann = ChannelAnnouncement_read(LDKu8slice { .data = valid_node_announcement, .datalen = sizeof(valid_node_announcement) });
671699
assert(chan_ann->result_ok);
672-
LDK::CResult_boolLightningErrorZ ann_res = net_msgs2->handle_channel_announcement(net_msgs2->this_arg, chan_ann->contents.result);
700+
LDK::CResult_boolLightningErrorZ ann_res = net_msgs2->handle_channel_announcement(net_msgs2->this_arg, ChannelManager_get_our_node_id(&cm1), chan_ann->contents.result);
673701
assert(ann_res->result_ok);
674702

675703
LDK::MessageHandler msg_handler2 = MessageHandler_new(ChannelManager_as_ChannelMessageHandler(&cm2), std::move(net_msgs2), OnionMessenger_as_OnionMessageHandler(&om1), std::move(custom_msg_handler2));
@@ -863,8 +891,7 @@ int main() {
863891
.some = 5000,
864892
};
865893
LDK::CResult_Bolt11InvoiceSignOrCreationErrorZ invoice = create_invoice_from_channelmanager(&cm2,
866-
KeysManager_as_NodeSigner(&keys2), logger2,
867-
LDKCurrency_Bitcoin, min_value,
894+
min_value,
868895
LDKStr {
869896
.chars = (const uint8_t *)"Invoice Description",
870897
.len = strlen("Invoice Description"),
@@ -887,24 +914,12 @@ int main() {
887914
PaymentParameters_new(std::move(payee), COption_u64Z_none(), 0xffffffff, 1, 20, 2,
888915
LDKCVec_u64Z { .data = NULL, .datalen = 0 }, LDKCVec_u64Z { .data = NULL, .datalen = 0 }),
889916
5000);
890-
random_bytes = entropy_source1.get_secure_random_bytes();
891-
LDK::ProbabilisticScoringFeeParameters params = ProbabilisticScoringFeeParameters_default();
892-
893-
LDK::CResult_RouteLightningErrorZ route_res = find_route(ChannelManager_get_our_node_id(&cm1), &route_params, &net_graph2, &outbound_channels, logger1, &chan_scorer, &params, &random_bytes.data);
894-
895-
assert(route_res->result_ok);
896-
LDK::CVec_PathZ paths = Route_get_paths(route_res->contents.result);
897-
assert(paths->datalen == 1);
898-
LDK::CVec_RouteHopZ hops = Path_get_hops(&paths->data[0]);
899-
assert(hops->datalen == 1);
900-
assert(!memcmp(RouteHop_get_pubkey(&hops->data[0]).compressed_form,
901-
ChannelManager_get_our_node_id(&cm2).compressed_form, 33));
902-
assert(RouteHop_get_short_channel_id(&hops->data[0]) == channel_scid);
917+
903918
LDKThirtyTwoBytes payment_secret;
904919
memcpy(payment_secret.data, Bolt11Invoice_payment_secret(invoice->contents.result), 32);
905-
LDK::Route route(Route_clone(route_res->contents.result));
906-
LDK::CResult_NonePaymentSendFailureZ send_res = ChannelManager_send_payment_with_route(&cm1,
907-
std::move(route), payment_hash, RecipientOnionFields_secret_only(payment_secret), payment_hash);
920+
LDK::CResult_NoneRetryableSendFailureZ send_res = ChannelManager_send_payment(&cm1,
921+
payment_hash, RecipientOnionFields_secret_only(payment_secret), payment_hash,
922+
std::move(route_params), Retry_attempts(0));
908923
assert(send_res->result_ok);
909924
}
910925

@@ -1009,8 +1024,9 @@ int main() {
10091024
.find_route_with_id = custom_find_route,
10101025
.free = NULL,
10111026
};
1027+
LDK::DefaultMessageRouter mr1 = DefaultMessageRouter_new(&net_graph1, KeysManager_as_EntropySource(&keys1));
10121028

1013-
LDK::ChannelManagerReadArgs cm1_args = ChannelManagerReadArgs_new(KeysManager_as_EntropySource(&keys1), KeysManager_as_NodeSigner(&keys1), KeysManager_as_SignerProvider(&keys1), fee_est, mon1, broadcast, router1, logger1, UserConfig_default(), std::move(mons_list1));
1029+
LDK::ChannelManagerReadArgs cm1_args = ChannelManagerReadArgs_new(KeysManager_as_EntropySource(&keys1), KeysManager_as_NodeSigner(&keys1), KeysManager_as_SignerProvider(&keys1), fee_est, mon1, broadcast, router1, DefaultMessageRouter_as_MessageRouter(&mr1), logger1, UserConfig_default(), std::move(mons_list1));
10141030
LDK::CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ cm1_read =
10151031
C2Tuple_ThirtyTwoBytesChannelManagerZ_read(LDKu8slice { .data = cm1_ser->data, .datalen = cm1_ser -> datalen}, std::move(cm1_args));
10161032
assert(cm1_read->result_ok);
@@ -1023,9 +1039,8 @@ int main() {
10231039
.release_pending_custom_messages = release_no_messages,
10241040
.free = NULL,
10251041
};
1026-
LDK::DefaultMessageRouter mr1 = DefaultMessageRouter_new(&net_graph1, KeysManager_as_EntropySource(&keys1));
10271042
LDK::IgnoringMessageHandler ignorer_1 = IgnoringMessageHandler_new();
1028-
LDK::OnionMessenger om1 = OnionMessenger_new(KeysManager_as_EntropySource(&keys1), KeysManager_as_NodeSigner(&keys1), logger1, ChannelManager_as_NodeIdLookUp(&cm1), DefaultMessageRouter_as_MessageRouter(&mr1), IgnoringMessageHandler_as_OffersMessageHandler(&ignorer_1), IgnoringMessageHandler_as_AsyncPaymentsMessageHandler(&ignorer_1), std::move(custom_onion_msg_handler1));
1043+
LDK::OnionMessenger om1 = OnionMessenger_new(KeysManager_as_EntropySource(&keys1), KeysManager_as_NodeSigner(&keys1), logger1, ChannelManager_as_NodeIdLookUp(&cm1), DefaultMessageRouter_as_MessageRouter(&mr1), IgnoringMessageHandler_as_OffersMessageHandler(&ignorer_1), IgnoringMessageHandler_as_AsyncPaymentsMessageHandler(&ignorer_1), ChannelManager_as_DNSResolverMessageHandler(&cm1), std::move(custom_onion_msg_handler1));
10291044

10301045
LDK::CVec_ChannelMonitorZ mons_list2 = LDKCVec_ChannelMonitorZ { .data = (LDKChannelMonitor*)malloc(sizeof(LDKChannelMonitor)), .datalen = 1 };
10311046
assert(mons2.mons.size() == 1);
@@ -1036,13 +1051,24 @@ int main() {
10361051
LDK::NodeSigner node_signer2 = KeysManager_as_NodeSigner(&keys2);
10371052
LDK::EntropySource entropy_source2 = KeysManager_as_EntropySource(&keys2);
10381053
LDK::SignerProvider signer_provider2 = KeysManager_as_SignerProvider(&keys2);
1054+
LDK::DefaultMessageRouter mr2 = DefaultMessageRouter_new(&net_graph2, KeysManager_as_EntropySource(&keys2));
10391055

1040-
LDK::ChannelManagerReadArgs cm2_args = ChannelManagerReadArgs_new(KeysManager_as_EntropySource(&keys2), KeysManager_as_NodeSigner(&keys2), KeysManager_as_SignerProvider(&keys2), fee_est, mon2, broadcast, panic_router, logger2, UserConfig_default(), std::move(mons_list2));
1056+
LDK::ChannelManagerReadArgs cm2_args = ChannelManagerReadArgs_new(KeysManager_as_EntropySource(&keys2), KeysManager_as_NodeSigner(&keys2), KeysManager_as_SignerProvider(&keys2), fee_est, mon2, broadcast, panic_router, DefaultMessageRouter_as_MessageRouter(&mr2), logger2, UserConfig_default(), std::move(mons_list2));
10411057
LDK::CResult_C2Tuple_ThirtyTwoBytesChannelManagerZDecodeErrorZ cm2_read =
10421058
C2Tuple_ThirtyTwoBytesChannelManagerZ_read(LDKu8slice { .data = cm2_ser->data, .datalen = cm2_ser -> datalen}, std::move(cm2_args));
10431059
assert(cm2_read->result_ok);
10441060
LDK::ChannelManager cm2(std::move(cm2_read->contents.result->b));
10451061

1062+
// On startup, we'll get a PaymentClaimed replay
1063+
{
1064+
EventQueue queue2;
1065+
LDKEventHandler handler2 = { .this_arg = &queue2, .handle_event = handle_event, .free = NULL };
1066+
LDK::EventsProvider ev2 = ChannelManager_as_EventsProvider(&cm2);
1067+
ev2.process_pending_events(handler2);
1068+
assert(queue2.events.size() == 1);
1069+
assert(queue2.events[0]->tag == LDKEvent_PaymentClaimed);
1070+
}
1071+
10461072
CustomOnionMsgQueue peer_2_custom_onion_messages;
10471073
LDKCustomOnionMessageHandler custom_onion_msg_handler2 = {
10481074
.this_arg = &peer_2_custom_onion_messages,
@@ -1051,9 +1077,8 @@ int main() {
10511077
.release_pending_custom_messages = release_no_messages,
10521078
.free = NULL,
10531079
};
1054-
LDK::DefaultMessageRouter mr2 = DefaultMessageRouter_new(&net_graph2, KeysManager_as_EntropySource(&keys2));
10551080
LDK::IgnoringMessageHandler ignorer_2 = IgnoringMessageHandler_new();
1056-
LDK::OnionMessenger om2 = OnionMessenger_new(KeysManager_as_EntropySource(&keys2), KeysManager_as_NodeSigner(&keys2), logger2, ChannelManager_as_NodeIdLookUp(&cm2), DefaultMessageRouter_as_MessageRouter(&mr2), IgnoringMessageHandler_as_OffersMessageHandler(&ignorer_2), IgnoringMessageHandler_as_AsyncPaymentsMessageHandler(&ignorer_2), custom_onion_msg_handler2);
1081+
LDK::OnionMessenger om2 = OnionMessenger_new(KeysManager_as_EntropySource(&keys2), KeysManager_as_NodeSigner(&keys2), logger2, ChannelManager_as_NodeIdLookUp(&cm2), DefaultMessageRouter_as_MessageRouter(&mr2), IgnoringMessageHandler_as_OffersMessageHandler(&ignorer_2), IgnoringMessageHandler_as_AsyncPaymentsMessageHandler(&ignorer_2), ChannelManager_as_DNSResolverMessageHandler(&cm2), custom_onion_msg_handler2);
10571082

10581083
// Attempt to close the channel...
10591084
LDKThirtyTwoBytes chan_id_bytes;
@@ -1118,8 +1143,7 @@ int main() {
11181143

11191144
// Send another payment, this time via the retires path
11201145
LDK::CResult_Bolt11InvoiceSignOrCreationErrorZ invoice_res2 = create_invoice_from_channelmanager(&cm2,
1121-
KeysManager_as_NodeSigner(&keys2), logger1,
1122-
LDKCurrency_Bitcoin, COption_u64Z_some(10000),
1146+
COption_u64Z_some(10000),
11231147
LDKStr {
11241148
.chars = (const uint8_t *)"Invoice 2 Description",
11251149
.len = strlen("Invoice 2 Description"),

0 commit comments

Comments
 (0)