@@ -1488,16 +1488,15 @@ impl_writeable_msg!(TxSignatures, {
1488
1488
1489
1489
impl Writeable for Vec < Witness > {
1490
1490
fn write < W : Writer > ( & self , w : & mut W ) -> Result < ( ) , io:: Error > {
1491
- ( self . len ( ) as u16 ) . write ( w) ?;
1491
+ ( self . len ( ) as u16 ) . write ( w) ?;
1492
1492
for witness in self {
1493
1493
( witness. len ( ) as u16 ) . write ( w) ?;
1494
1494
for element in witness. iter ( ) {
1495
- ( element. len ( ) as u16 ) . write ( w) ?;
1496
1495
element. to_vec ( ) . write ( w) ?;
1497
1496
}
1498
1497
}
1499
1498
Ok ( ( ) )
1500
- }
1499
+ }
1501
1500
}
1502
1501
1503
1502
impl Readable for Vec < Witness > {
@@ -1506,15 +1505,8 @@ impl Readable for Vec<Witness> {
1506
1505
let mut witnesses = Vec :: with_capacity ( num_witnesses as usize ) ;
1507
1506
for _ in 0 ..num_witnesses {
1508
1507
let num_elements: u16 = Readable :: read ( r) ?;
1509
- let mut witness_stack: Vec < Vec < u8 > > = Vec :: with_capacity ( num_elements as usize ) ;
1510
- for _ in 0 ..num_elements {
1511
- let element_len: u16 = Readable :: read ( r) ?;
1512
- let mut element_bytes: Vec < u8 > = Vec :: with_capacity ( element_len as usize ) ;
1513
- for _ in 0 ..element_len {
1514
- element_bytes. push ( Readable :: read ( r) ?) ;
1515
- }
1516
- witness_stack. push ( element_bytes) ;
1517
- }
1508
+ let mut witness_stack = Vec :: with_capacity ( num_elements as usize ) ;
1509
+ for _ in 0 ..num_elements { witness_stack. push ( Readable :: read ( r) ?) }
1518
1510
witnesses. push ( Witness :: from_vec ( witness_stack) ) ;
1519
1511
}
1520
1512
Ok ( witnesses)
@@ -2965,7 +2957,35 @@ mod tests {
2965
2957
2966
2958
#[ test]
2967
2959
fn encoding_tx_signatures ( ) {
2968
- // TODO
2960
+ let tx_signatures = msgs:: TxSignatures {
2961
+ channel_id : [ 2 ; 32 ] ,
2962
+ tx_hash : Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ,
2963
+ witnesses : vec ! [
2964
+ Witness :: from_vec( vec![
2965
+ hex:: decode( "304402206af85b7dd67450ad12c979302fac49dfacbc6a8620f49c5da2b5721cf9565ca502207002b32fed9ce1bf095f57aeb10c36928ac60b12e723d97d2964a54640ceefa701" ) . unwrap( ) ,
2966
+ hex:: decode( "0301ab7dc16488303549bfcdd80f6ae5ee4c20bf97ab5410bbd6b1bfa85dcd6944" ) . unwrap( ) ] ) ,
2967
+ Witness :: from_vec( vec![
2968
+ hex:: decode( "3045022100ee00dbf4a862463e837d7c08509de814d620e4d9830fa84818713e0fa358f145022021c3c7060c4d53fe84fd165d60208451108a778c13b92ca4c6bad439236126cc01" ) . unwrap( ) ,
2969
+ hex:: decode( "028fbbf0b16f5ba5bcb5dd37cd4047ce6f726a21c06682f9ec2f52b057de1dbdb5" ) . unwrap( ) ] ) ,
2970
+ ] ,
2971
+ } ;
2972
+ let encoded_value = tx_signatures. encode ( ) ;
2973
+ let mut target_value = hex:: decode ( "0202020202020202020202020202020202020202020202020202020202020202" ) . unwrap ( ) ; // channel_id
2974
+ target_value. append ( & mut hex:: decode ( "6e96fe9f8b0ddcd729ba03cfafa5a27b050b39d354dd980814268dfa9a44d4c2" ) . unwrap ( ) ) ; // tx_hash (sha256) (big endian byte order)
2975
+ target_value. append ( & mut hex:: decode ( "0002" ) . unwrap ( ) ) ; // num_witnesses (u16)
2976
+ // Witness 1
2977
+ target_value. append ( & mut hex:: decode ( "0002" ) . unwrap ( ) ) ; // num_witness_elements (u16)
2978
+ target_value. append ( & mut hex:: decode ( "0047" ) . unwrap ( ) ) ; // len of witness_element data (u16)
2979
+ target_value. append ( & mut hex:: decode ( "304402206af85b7dd67450ad12c979302fac49dfacbc6a8620f49c5da2b5721cf9565ca502207002b32fed9ce1bf095f57aeb10c36928ac60b12e723d97d2964a54640ceefa701" ) . unwrap ( ) ) ;
2980
+ target_value. append ( & mut hex:: decode ( "0021" ) . unwrap ( ) ) ; // len of witness_element data (u16)
2981
+ target_value. append ( & mut hex:: decode ( "0301ab7dc16488303549bfcdd80f6ae5ee4c20bf97ab5410bbd6b1bfa85dcd6944" ) . unwrap ( ) ) ;
2982
+ // Witness 2
2983
+ target_value. append ( & mut hex:: decode ( "0002" ) . unwrap ( ) ) ; // num_witness_elements (u16)
2984
+ target_value. append ( & mut hex:: decode ( "0048" ) . unwrap ( ) ) ; // len of witness_element data (u16)
2985
+ target_value. append ( & mut hex:: decode ( "3045022100ee00dbf4a862463e837d7c08509de814d620e4d9830fa84818713e0fa358f145022021c3c7060c4d53fe84fd165d60208451108a778c13b92ca4c6bad439236126cc01" ) . unwrap ( ) ) ;
2986
+ target_value. append ( & mut hex:: decode ( "0021" ) . unwrap ( ) ) ; // len of witness_element data (u16)
2987
+ target_value. append ( & mut hex:: decode ( "028fbbf0b16f5ba5bcb5dd37cd4047ce6f726a21c06682f9ec2f52b057de1dbdb5" ) . unwrap ( ) ) ;
2988
+ assert_eq ! ( encoded_value, target_value) ;
2969
2989
}
2970
2990
2971
2991
fn do_encoding_tx_init_rbf ( contribution : bool ) {
0 commit comments