@@ -4567,63 +4567,63 @@ fn test_onion_failure() {
4567
4567
#[ test]
4568
4568
#[ should_panic]
4569
4569
fn bolt2_open_channel_sending_node_checks_part1 ( ) { //This test needs to be on its own as we are catching a panic
4570
- let nodes = create_network ( 2 ) ;
4571
- //Force duplicate channel ids
4572
- for node in nodes. iter ( ) {
4573
- * node. keys_manager . override_channel_id_priv . lock ( ) . unwrap ( ) = Some ( [ 0 ; 32 ] ) ;
4574
- }
4575
-
4576
- // BOLT #2 spec: Sending node must ensure temporary_channel_id is unique from any other channel ID with the same peer.
4577
- let channel_value_satoshis=10000 ;
4578
- let push_msat=10001 ;
4579
- nodes[ 0 ] . node . create_channel ( nodes[ 1 ] . node . get_our_node_id ( ) , channel_value_satoshis, push_msat, 42 ) . unwrap ( ) ;
4580
- let node0_to_1_send_open_channel = get_event_msg ! ( nodes[ 0 ] , MessageSendEvent :: SendOpenChannel , nodes[ 1 ] . node. get_our_node_id( ) ) ;
4581
- nodes[ 1 ] . node . handle_open_channel ( & nodes[ 0 ] . node . get_our_node_id ( ) , & node0_to_1_send_open_channel) . unwrap ( ) ;
4582
-
4583
- //Create a second channel with a channel_id collision
4584
- assert ! ( nodes[ 0 ] . node. create_channel( nodes[ 0 ] . node. get_our_node_id( ) , channel_value_satoshis, push_msat, 42 ) . is_err( ) ) ;
4570
+ let nodes = create_network ( 2 ) ;
4571
+ //Force duplicate channel ids
4572
+ for node in nodes. iter ( ) {
4573
+ * node. keys_manager . override_channel_id_priv . lock ( ) . unwrap ( ) = Some ( [ 0 ; 32 ] ) ;
4574
+ }
4575
+
4576
+ // BOLT #2 spec: Sending node must ensure temporary_channel_id is unique from any other channel ID with the same peer.
4577
+ let channel_value_satoshis=10000 ;
4578
+ let push_msat=10001 ;
4579
+ nodes[ 0 ] . node . create_channel ( nodes[ 1 ] . node . get_our_node_id ( ) , channel_value_satoshis, push_msat, 42 ) . unwrap ( ) ;
4580
+ let node0_to_1_send_open_channel = get_event_msg ! ( nodes[ 0 ] , MessageSendEvent :: SendOpenChannel , nodes[ 1 ] . node. get_our_node_id( ) ) ;
4581
+ nodes[ 1 ] . node . handle_open_channel ( & nodes[ 0 ] . node . get_our_node_id ( ) , & node0_to_1_send_open_channel) . unwrap ( ) ;
4582
+
4583
+ //Create a second channel with a channel_id collision
4584
+ assert ! ( nodes[ 0 ] . node. create_channel( nodes[ 0 ] . node. get_our_node_id( ) , channel_value_satoshis, push_msat, 42 ) . is_err( ) ) ;
4585
4585
}
4586
4586
4587
4587
#[ test]
4588
4588
fn bolt2_open_channel_sending_node_checks_part2 ( ) {
4589
- let nodes = create_network ( 2 ) ;
4590
-
4591
- // BOLT #2 spec: Sending node must set funding_satoshis to less than 2^24 satoshis
4592
- let channel_value_satoshis=2 ^24 ;
4593
- let push_msat=10001 ;
4594
- assert ! ( nodes[ 0 ] . node. create_channel( nodes[ 1 ] . node. get_our_node_id( ) , channel_value_satoshis, push_msat, 42 ) . is_err( ) ) ;
4595
-
4596
- // BOLT #2 spec: Sending node must set push_msat to equal or less than 1000 * funding_satoshis
4597
- let channel_value_satoshis=10000 ;
4598
- // Test when push_msat is equal to 1000 * funding_satoshis.
4599
- let push_msat=1000 * channel_value_satoshis+1 ;
4600
- assert ! ( nodes[ 0 ] . node. create_channel( nodes[ 1 ] . node. get_our_node_id( ) , channel_value_satoshis, push_msat, 42 ) . is_err( ) ) ;
4601
-
4602
- // BOLT #2 spec: Sending node must set set channel_reserve_satoshis greater than or equal to dust_limit_satoshis
4603
- let channel_value_satoshis=10000 ;
4604
- let push_msat=10001 ;
4605
- assert ! ( nodes[ 0 ] . node. create_channel( nodes[ 1 ] . node. get_our_node_id( ) , channel_value_satoshis, push_msat, 42 ) . is_ok( ) ) ; //Create a valid channel
4606
- let node0_to_1_send_open_channel = get_event_msg ! ( nodes[ 0 ] , MessageSendEvent :: SendOpenChannel , nodes[ 1 ] . node. get_our_node_id( ) ) ;
4607
- assert ! ( node0_to_1_send_open_channel. channel_reserve_satoshis>=node0_to_1_send_open_channel. dust_limit_satoshis) ;
4608
-
4609
- // BOLT #2 spec: Sending node must set undefined bits in channel_flags to 0
4610
- // Only the least-significant bit of channel_flags is currently defined resulting in channel_flags only having one of two possible states 0 or 1
4611
- assert ! ( node0_to_1_send_open_channel. channel_flags<=1 ) ;
4612
-
4613
- // BOLT #2 spec: Sending node should set to_self_delay sufficient to ensure the sender can irreversibly spend a commitment transaction output, in case of misbehaviour by the receiver.
4614
- assert ! ( BREAKDOWN_TIMEOUT >0 ) ;
4615
- assert ! ( node0_to_1_send_open_channel. to_self_delay==BREAKDOWN_TIMEOUT ) ;
4616
-
4617
- // BOLT #2 spec: Sending node must ensure the chain_hash value identifies the chain it wishes to open the channel within.
4618
- let chain_hash=genesis_block ( Network :: Testnet ) . header . bitcoin_hash ( ) ;
4619
- assert_eq ! ( node0_to_1_send_open_channel. chain_hash, chain_hash) ;
4620
-
4621
- // BOLT #2 spec: Sending node must set funding_pubkey, revocation_basepoint, htlc_basepoint, payment_basepoint, and delayed_payment_basepoint to valid DER-encoded, compressed, secp256k1 pubkeys.
4622
- assert ! ( PublicKey :: from_slice( & node0_to_1_send_open_channel. funding_pubkey. serialize( ) ) . is_ok( ) ) ;
4623
- assert ! ( PublicKey :: from_slice( & node0_to_1_send_open_channel. revocation_basepoint. serialize( ) ) . is_ok( ) ) ;
4624
- assert ! ( PublicKey :: from_slice( & node0_to_1_send_open_channel. htlc_basepoint. serialize( ) ) . is_ok( ) ) ;
4625
- assert ! ( PublicKey :: from_slice( & node0_to_1_send_open_channel. payment_basepoint. serialize( ) ) . is_ok( ) ) ;
4626
- assert ! ( PublicKey :: from_slice( & node0_to_1_send_open_channel. delayed_payment_basepoint. serialize( ) ) . is_ok( ) ) ;
4589
+ let nodes = create_network ( 2 ) ;
4590
+
4591
+ // BOLT #2 spec: Sending node must set funding_satoshis to less than 2^24 satoshis
4592
+ let channel_value_satoshis=2 ^24 ;
4593
+ let push_msat=10001 ;
4594
+ assert ! ( nodes[ 0 ] . node. create_channel( nodes[ 1 ] . node. get_our_node_id( ) , channel_value_satoshis, push_msat, 42 ) . is_err( ) ) ;
4595
+
4596
+ // BOLT #2 spec: Sending node must set push_msat to equal or less than 1000 * funding_satoshis
4597
+ let channel_value_satoshis=10000 ;
4598
+ // Test when push_msat is equal to 1000 * funding_satoshis.
4599
+ let push_msat=1000 * channel_value_satoshis+1 ;
4600
+ assert ! ( nodes[ 0 ] . node. create_channel( nodes[ 1 ] . node. get_our_node_id( ) , channel_value_satoshis, push_msat, 42 ) . is_err( ) ) ;
4601
+
4602
+ // BOLT #2 spec: Sending node must set set channel_reserve_satoshis greater than or equal to dust_limit_satoshis
4603
+ let channel_value_satoshis=10000 ;
4604
+ let push_msat=10001 ;
4605
+ assert ! ( nodes[ 0 ] . node. create_channel( nodes[ 1 ] . node. get_our_node_id( ) , channel_value_satoshis, push_msat, 42 ) . is_ok( ) ) ; //Create a valid channel
4606
+ let node0_to_1_send_open_channel = get_event_msg ! ( nodes[ 0 ] , MessageSendEvent :: SendOpenChannel , nodes[ 1 ] . node. get_our_node_id( ) ) ;
4607
+ assert ! ( node0_to_1_send_open_channel. channel_reserve_satoshis>=node0_to_1_send_open_channel. dust_limit_satoshis) ;
4608
+
4609
+ // BOLT #2 spec: Sending node must set undefined bits in channel_flags to 0
4610
+ // Only the least-significant bit of channel_flags is currently defined resulting in channel_flags only having one of two possible states 0 or 1
4611
+ assert ! ( node0_to_1_send_open_channel. channel_flags<=1 ) ;
4612
+
4613
+ // BOLT #2 spec: Sending node should set to_self_delay sufficient to ensure the sender can irreversibly spend a commitment transaction output, in case of misbehaviour by the receiver.
4614
+ assert ! ( BREAKDOWN_TIMEOUT >0 ) ;
4615
+ assert ! ( node0_to_1_send_open_channel. to_self_delay==BREAKDOWN_TIMEOUT ) ;
4616
+
4617
+ // BOLT #2 spec: Sending node must ensure the chain_hash value identifies the chain it wishes to open the channel within.
4618
+ let chain_hash=genesis_block ( Network :: Testnet ) . header . bitcoin_hash ( ) ;
4619
+ assert_eq ! ( node0_to_1_send_open_channel. chain_hash, chain_hash) ;
4620
+
4621
+ // BOLT #2 spec: Sending node must set funding_pubkey, revocation_basepoint, htlc_basepoint, payment_basepoint, and delayed_payment_basepoint to valid DER-encoded, compressed, secp256k1 pubkeys.
4622
+ assert ! ( PublicKey :: from_slice( & node0_to_1_send_open_channel. funding_pubkey. serialize( ) ) . is_ok( ) ) ;
4623
+ assert ! ( PublicKey :: from_slice( & node0_to_1_send_open_channel. revocation_basepoint. serialize( ) ) . is_ok( ) ) ;
4624
+ assert ! ( PublicKey :: from_slice( & node0_to_1_send_open_channel. htlc_basepoint. serialize( ) ) . is_ok( ) ) ;
4625
+ assert ! ( PublicKey :: from_slice( & node0_to_1_send_open_channel. payment_basepoint. serialize( ) ) . is_ok( ) ) ;
4626
+ assert ! ( PublicKey :: from_slice( & node0_to_1_send_open_channel. delayed_payment_basepoint. serialize( ) ) . is_ok( ) ) ;
4627
4627
}
4628
4628
4629
4629
// BOLT 2 Requirements for the Sender when constructing and sending an update_add_htlc message.
0 commit comments