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