88import org .ldk .enums .*;
99import org .ldk .enums .Currency ;
1010import org .ldk .structs .*;
11+ import org .ldk .util .UInt128 ;
1112import org .ldk .util .UInt5 ;
1213
1314import java .io .IOException ;
@@ -52,9 +53,12 @@ KeysInterface manual_keysif(KeysInterface underlying_if) {
5253 @ Override public byte [] get_destination_script () { return underlying_if .get_destination_script (); }
5354 @ Override public ShutdownScript get_shutdown_scriptpubkey () { return underlying_if .get_shutdown_scriptpubkey (); }
5455
56+ @ Override public byte [] generate_channel_keys_id (boolean inbound , long channel_value_satoshis , UInt128 user_channel_id ) {
57+ return underlying_if .generate_channel_keys_id (inbound , channel_value_satoshis , user_channel_id );
58+ }
5559 @ Override
56- public Sign get_channel_signer ( boolean inbound , long channel_value_satoshis ) {
57- Sign underlying_ck = underlying_if .get_channel_signer ( inbound , channel_value_satoshis );
60+ public Sign derive_channel_signer ( long channel_value_satoshis , byte [] channel_keys_id ) {
61+ Sign underlying_ck = underlying_if .derive_channel_signer ( channel_value_satoshis , channel_keys_id );
5862 BaseSign underlying_base = underlying_ck .get_base_sign ();
5963 BaseSign .BaseSignInterface bsi = new BaseSign .BaseSignInterface () {
6064 @ Override public byte [] get_per_commitment_point (long idx ) {
@@ -67,7 +71,7 @@ public Sign get_channel_signer(boolean inbound, long channel_value_satoshis) {
6771 return underlying_base .validate_holder_commitment (holder_tx , preimages );
6872 }
6973 @ Override public byte [] channel_keys_id () {
70- return new byte [ 32 ] ;
74+ return channel_keys_id ;
7175 }
7276 @ Override public Result_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment (CommitmentTransaction commitment_tx , byte [][] preimages ) {
7377 return underlying_base .sign_counterparty_commitment (commitment_tx , preimages );
@@ -96,8 +100,9 @@ public Sign get_channel_signer(boolean inbound, long channel_value_satoshis) {
96100 @ Override public Result_C2Tuple_SignatureSignatureZNoneZ sign_channel_announcement (UnsignedChannelAnnouncement msg ) {
97101 return underlying_base .sign_channel_announcement (msg );
98102 }
99- @ Override public void ready_channel (ChannelTransactionParameters params ) {
100- underlying_base .ready_channel (params );
103+
104+ @ Override public void provide_channel_parameters (ChannelTransactionParameters channel_parameters ) {
105+ underlying_base .provide_channel_parameters (channel_parameters );
101106 }
102107 };
103108 Sign .SignInterface si = new Sign .SignInterface () {
@@ -415,7 +420,12 @@ private void setup_route_handler() {
415420 @ Override public void notify_payment_probe_failed (RouteHop [] path , long short_channel_id ) {}
416421
417422 @ Override
418- public Result_RouteLightningErrorZ find_route (byte [] payer , RouteParameters params , byte [] payment_hash , ChannelDetails [] first_hops , InFlightHtlcs inflight_htlcs ) {
423+ public Result_RouteLightningErrorZ find_route_with_id (byte [] payer , RouteParameters route_params , ChannelDetails [] first_hops , InFlightHtlcs inflight_htlcs , byte [] _payment_hash , byte [] _payment_id ) {
424+ return find_route (payer , route_params , first_hops , inflight_htlcs );
425+ }
426+
427+ @ Override
428+ public Result_RouteLightningErrorZ find_route (byte [] payer , RouteParameters params , ChannelDetails [] first_hops , InFlightHtlcs inflight_htlcs ) {
419429 while (true ) {
420430 try (ReadOnlyNetworkGraph graph = router .read_only ()) {
421431 assert graph .channel (424242 ) == null ;
@@ -560,7 +570,12 @@ public Result_RouteLightningErrorZ find_route(byte[] payer, RouteParameters para
560570 @ Override public void notify_payment_probe_failed (RouteHop [] path , long short_channel_id ) {}
561571
562572 @ Override
563- public Result_RouteLightningErrorZ find_route (byte [] payer , RouteParameters route_params , byte [] payment_hash , ChannelDetails [] first_hops , InFlightHtlcs inflight_htlcs ) {
573+ public Result_RouteLightningErrorZ find_route_with_id (byte [] payer , RouteParameters route_params , ChannelDetails [] first_hops , InFlightHtlcs inflight_htlcs , byte [] _payment_hash , byte [] _payment_id ) {
574+ return find_route (payer , route_params , first_hops , inflight_htlcs );
575+ }
576+
577+ @ Override
578+ public Result_RouteLightningErrorZ find_route (byte [] payer , RouteParameters route_params , ChannelDetails [] first_hops , InFlightHtlcs inflight_htlcs ) {
564579 return UtilMethods .find_route (payer , route_params , router , first_hops , logger , Score .new_impl (new Score .ScoreInterface () {
565580 @ Override public long channel_penalty_msat (long short_channel_id , NodeId source , NodeId target , ChannelUsage usage ) { return 0 ; }
566581 @ Override public void payment_path_failed (RouteHop [] path , long scid ) {}
@@ -813,7 +828,9 @@ TestState do_test_message_handler() throws InterruptedException {
813828
814829 connect_peers (peer1 , peer2 );
815830
816- Result__u832APIErrorZ cc_res = peer1 .chan_manager .create_channel (peer2 .node_id , 100000 , 1000 , 42 , null );
831+ UInt128 user_id = new UInt128 (new byte [] {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 });
832+
833+ Result__u832APIErrorZ cc_res = peer1 .chan_manager .create_channel (peer2 .node_id , 100000 , 1000 , user_id , null );
817834 assert cc_res instanceof Result__u832APIErrorZ .Result__u832APIErrorZ_OK ;
818835
819836 // Previously, this was a SEGFAULT instead of get_funding_txo() returning null.
@@ -823,7 +840,7 @@ TestState do_test_message_handler() throws InterruptedException {
823840 Event [] events = peer1 .get_manager_events (1 , peer1 , peer2 );
824841 assert events [0 ] instanceof Event .FundingGenerationReady ;
825842 assert ((Event .FundingGenerationReady ) events [0 ]).channel_value_satoshis == 100000 ;
826- assert ((Event .FundingGenerationReady ) events [0 ]).user_channel_id == 42 ;
843+ assert ((Event .FundingGenerationReady ) events [0 ]).user_channel_id . equals ( user_id ) ;
827844 byte [] funding_spk = ((Event .FundingGenerationReady ) events [0 ]).output_script ;
828845 assert funding_spk .length == 34 && funding_spk [0 ] == 0 && funding_spk [1 ] == 32 ; // P2WSH
829846 byte [] chan_id = ((Event .FundingGenerationReady ) events [0 ]).temporary_channel_id ;
@@ -862,9 +879,14 @@ TestState do_test_message_handler() throws InterruptedException {
862879 }
863880
864881 maybe_exchange_peer_messages (peer1 , peer2 );
865- while (peer1 .chan_manager .list_usable_channels ().length != 1 || peer2 .chan_manager .list_usable_channels ().length != 1 )
882+ while (peer1 .chan_manager .list_usable_channels ().length != 1 || peer2 .chan_manager .list_usable_channels ().length != 1 ) ;
883+
884+ events = peer1 .get_manager_events (1 , peer1 , peer2 );
885+ assert events [0 ] instanceof Event .ChannelReady ;
886+
887+ events = peer2 .get_manager_events (1 , peer1 , peer2 );
888+ assert events [0 ] instanceof Event .ChannelReady ;
866889
867- peer1 .chan_manager .list_channels ();
868890 ChannelDetails [] peer1_chans = peer1 .chan_manager .list_usable_channels ();
869891 ChannelDetails [] peer2_chans = peer2 .chan_manager .list_usable_channels ();
870892 assert peer1_chans .length == 1 ;
@@ -910,8 +932,9 @@ TestState do_test_message_handler() throws InterruptedException {
910932 assert route .get_paths ()[0 ].length == 1 ;
911933 assert route .get_paths ()[0 ][0 ].get_fee_msat () == 10000000 ;
912934
913- Result_PaymentIdPaymentSendFailureZ payment_res = peer1 .chan_manager .send_payment (route , payment_hash , payment_secret );
914- assert payment_res instanceof Result_PaymentIdPaymentSendFailureZ .Result_PaymentIdPaymentSendFailureZ_OK ;
935+ byte [] payment_id = new byte [] { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 };
936+ Result_NonePaymentSendFailureZ payment_res = peer1 .chan_manager .send_payment (route , payment_hash , payment_secret , payment_id );
937+ assert payment_res instanceof Result_NonePaymentSendFailureZ .Result_NonePaymentSendFailureZ_OK ;
915938
916939 RouteHop [][] hops = new RouteHop [1 ][1 ];
917940 byte [] hop_pubkey = new byte [33 ];
@@ -921,8 +944,8 @@ TestState do_test_message_handler() throws InterruptedException {
921944 ChannelFeatures channel_features = ChannelFeatures .empty ();
922945 hops [0 ][0 ] = RouteHop .of (hop_pubkey , node_features , 42 , channel_features , 100 , 0 );
923946 Route r2 = Route .of (hops , payee );
924- payment_res = peer1 .chan_manager .send_payment (r2 , payment_hash , payment_secret );
925- assert payment_res instanceof Result_PaymentIdPaymentSendFailureZ . Result_PaymentIdPaymentSendFailureZ_Err ;
947+ payment_res = peer1 .chan_manager .send_payment (r2 , payment_hash , payment_secret , payment_id );
948+ assert payment_res instanceof Result_NonePaymentSendFailureZ . Result_NonePaymentSendFailureZ_Err ;
926949 } else {
927950 Result_PaymentIdPaymentErrorZ send_res = peer1 .payer .pay_invoice (((Result_InvoiceParseOrSemanticErrorZ .Result_InvoiceParseOrSemanticErrorZ_OK ) parsed_invoice ).res );
928951 assert send_res instanceof Result_PaymentIdPaymentErrorZ .Result_PaymentIdPaymentErrorZ_OK ;
@@ -975,9 +998,9 @@ void do_test_message_handler_b(TestState state) throws InterruptedException {
975998 state .peer2 .chan_manager .process_pending_htlc_forwards ();
976999
9771000 events = state .peer2 .get_manager_events (1 , state .peer1 , state .peer2 );
978- assert events [0 ] instanceof Event .PaymentReceived ;
979- assert ((Event .PaymentReceived )events [0 ]).purpose instanceof PaymentPurpose .InvoicePayment ;
980- byte [] payment_preimage = ((PaymentPurpose .InvoicePayment )((Event .PaymentReceived )events [0 ]).purpose ).payment_preimage ;
1001+ assert events [0 ] instanceof Event .PaymentClaimable ;
1002+ assert ((Event .PaymentClaimable )events [0 ]).purpose instanceof PaymentPurpose .InvoicePayment ;
1003+ byte [] payment_preimage = ((PaymentPurpose .InvoicePayment )((Event .PaymentClaimable )events [0 ]).purpose ).payment_preimage ;
9811004 assert !Arrays .equals (payment_preimage , new byte [32 ]);
9821005 state .peer2 .chan_manager .claim_funds (payment_preimage );
9831006
0 commit comments