@@ -755,7 +755,7 @@ impl PackageTemplate {
755
755
} ) . is_some ( )
756
756
}
757
757
758
- pub ( crate ) fn build_package ( txid : Txid , vout : u32 , input_solving_data : PackageSolvingData , soonest_conf_deadline : u32 , aggregable : bool , height_original : u32 ) -> Self {
758
+ pub ( crate ) fn build_package ( txid : Txid , vout : u32 , input_solving_data : PackageSolvingData , soonest_conf_deadline : u32 , height_original : u32 ) -> Self {
759
759
let ( malleability, aggregable) = Self :: map_output_type_flags ( & input_solving_data) ;
760
760
let mut inputs = Vec :: with_capacity ( 1 ) ;
761
761
inputs. push ( ( BitcoinOutPoint { txid, vout } , input_solving_data) ) ;
@@ -932,11 +932,11 @@ mod tests {
932
932
use bitcoin:: secp256k1:: Secp256k1 ;
933
933
934
934
macro_rules! dumb_revk_output {
935
- ( $secp_ctx: expr) => {
935
+ ( $secp_ctx: expr, $opt_anchors : expr , $is_counterparty_balance : expr ) => {
936
936
{
937
937
let dumb_scalar = SecretKey :: from_slice( & hex:: decode( "0101010101010101010101010101010101010101010101010101010101010101" ) . unwrap( ) [ ..] ) . unwrap( ) ;
938
938
let dumb_point = PublicKey :: from_secret_key( & $secp_ctx, & dumb_scalar) ;
939
- PackageSolvingData :: RevokedOutput ( RevokedOutput :: build( dumb_point, dumb_point, dumb_point, dumb_scalar, 0 , 0 , false , false ) )
939
+ PackageSolvingData :: RevokedOutput ( RevokedOutput :: build( dumb_point, dumb_point, dumb_point, dumb_scalar, 0 , 0 , $opt_anchors , $is_counterparty_balance ) )
940
940
}
941
941
}
942
942
}
@@ -980,10 +980,10 @@ mod tests {
980
980
fn test_package_differing_heights ( ) {
981
981
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
982
982
let secp_ctx = Secp256k1 :: new ( ) ;
983
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
983
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
984
984
985
- let mut package_one_hundred = PackageTemplate :: build_package ( txid, 0 , revk_outp. clone ( ) , 1000 , true , 100 ) ;
986
- let package_two_hundred = PackageTemplate :: build_package ( txid, 1 , revk_outp. clone ( ) , 1000 , true , 200 ) ;
985
+ let mut package_one_hundred = PackageTemplate :: build_package ( txid, 0 , revk_outp. clone ( ) , 1000 , 100 ) ;
986
+ let package_two_hundred = PackageTemplate :: build_package ( txid, 1 , revk_outp. clone ( ) , 1000 , 200 ) ;
987
987
package_one_hundred. merge_package ( package_two_hundred) ;
988
988
}
989
989
@@ -992,11 +992,11 @@ mod tests {
992
992
fn test_package_untractable_merge_to ( ) {
993
993
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
994
994
let secp_ctx = Secp256k1 :: new ( ) ;
995
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
995
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
996
996
let htlc_outp = dumb_htlc_output ! ( ) ;
997
997
998
- let mut untractable_package = PackageTemplate :: build_package ( txid, 0 , revk_outp. clone ( ) , 1000 , true , 100 ) ;
999
- let malleable_package = PackageTemplate :: build_package ( txid, 1 , htlc_outp. clone ( ) , 1000 , true , 100 ) ;
998
+ let mut untractable_package = PackageTemplate :: build_package ( txid, 0 , revk_outp. clone ( ) , 1000 , 100 ) ;
999
+ let malleable_package = PackageTemplate :: build_package ( txid, 1 , htlc_outp. clone ( ) , 1000 , 100 ) ;
1000
1000
untractable_package. merge_package ( malleable_package) ;
1001
1001
}
1002
1002
@@ -1006,10 +1006,10 @@ mod tests {
1006
1006
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1007
1007
let secp_ctx = Secp256k1 :: new ( ) ;
1008
1008
let htlc_outp = dumb_htlc_output ! ( ) ;
1009
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
1009
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
1010
1010
1011
- let mut malleable_package = PackageTemplate :: build_package ( txid, 0 , htlc_outp. clone ( ) , 1000 , true , 100 ) ;
1012
- let untractable_package = PackageTemplate :: build_package ( txid, 1 , revk_outp. clone ( ) , 1000 , true , 100 ) ;
1011
+ let mut malleable_package = PackageTemplate :: build_package ( txid, 0 , htlc_outp. clone ( ) , 1000 , 100 ) ;
1012
+ let untractable_package = PackageTemplate :: build_package ( txid, 1 , revk_outp. clone ( ) , 1000 , 100 ) ;
1013
1013
malleable_package. merge_package ( untractable_package) ;
1014
1014
}
1015
1015
@@ -1018,10 +1018,11 @@ mod tests {
1018
1018
fn test_package_noaggregation_to ( ) {
1019
1019
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1020
1020
let secp_ctx = Secp256k1 :: new ( ) ;
1021
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
1021
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
1022
+ let revk_outp_counterparty_balance = dumb_revk_output ! ( secp_ctx, true , true ) ;
1022
1023
1023
- let mut noaggregation_package = PackageTemplate :: build_package ( txid, 0 , revk_outp . clone ( ) , 1000 , false , 100 ) ;
1024
- let aggregation_package = PackageTemplate :: build_package ( txid, 1 , revk_outp. clone ( ) , 1000 , true , 100 ) ;
1024
+ let mut noaggregation_package = PackageTemplate :: build_package ( txid, 0 , revk_outp_counterparty_balance . clone ( ) , 1000 , 100 ) ;
1025
+ let aggregation_package = PackageTemplate :: build_package ( txid, 1 , revk_outp. clone ( ) , 1000 , 100 ) ;
1025
1026
noaggregation_package. merge_package ( aggregation_package) ;
1026
1027
}
1027
1028
@@ -1030,10 +1031,11 @@ mod tests {
1030
1031
fn test_package_noaggregation_from ( ) {
1031
1032
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1032
1033
let secp_ctx = Secp256k1 :: new ( ) ;
1033
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
1034
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
1035
+ let revk_outp_counterparty_balance = dumb_revk_output ! ( secp_ctx, true , true ) ;
1034
1036
1035
- let mut aggregation_package = PackageTemplate :: build_package ( txid, 0 , revk_outp. clone ( ) , 1000 , true , 100 ) ;
1036
- let noaggregation_package = PackageTemplate :: build_package ( txid, 1 , revk_outp . clone ( ) , 1000 , false , 100 ) ;
1037
+ let mut aggregation_package = PackageTemplate :: build_package ( txid, 0 , revk_outp. clone ( ) , 1000 , 100 ) ;
1038
+ let noaggregation_package = PackageTemplate :: build_package ( txid, 1 , revk_outp_counterparty_balance . clone ( ) , 1000 , 100 ) ;
1037
1039
aggregation_package. merge_package ( noaggregation_package) ;
1038
1040
}
1039
1041
@@ -1042,11 +1044,11 @@ mod tests {
1042
1044
fn test_package_empty ( ) {
1043
1045
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1044
1046
let secp_ctx = Secp256k1 :: new ( ) ;
1045
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
1047
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
1046
1048
1047
- let mut empty_package = PackageTemplate :: build_package ( txid, 0 , revk_outp. clone ( ) , 1000 , true , 100 ) ;
1049
+ let mut empty_package = PackageTemplate :: build_package ( txid, 0 , revk_outp. clone ( ) , 1000 , 100 ) ;
1048
1050
empty_package. inputs = vec ! [ ] ;
1049
- let package = PackageTemplate :: build_package ( txid, 1 , revk_outp. clone ( ) , 1000 , true , 100 ) ;
1051
+ let package = PackageTemplate :: build_package ( txid, 1 , revk_outp. clone ( ) , 1000 , 100 ) ;
1050
1052
empty_package. merge_package ( package) ;
1051
1053
}
1052
1054
@@ -1055,25 +1057,25 @@ mod tests {
1055
1057
fn test_package_differing_categories ( ) {
1056
1058
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1057
1059
let secp_ctx = Secp256k1 :: new ( ) ;
1058
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
1060
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
1059
1061
let counterparty_outp = dumb_counterparty_output ! ( secp_ctx, 0 , false ) ;
1060
1062
1061
- let mut revoked_package = PackageTemplate :: build_package ( txid, 0 , revk_outp, 1000 , true , 100 ) ;
1062
- let counterparty_package = PackageTemplate :: build_package ( txid, 1 , counterparty_outp, 1000 , true , 100 ) ;
1063
+ let mut revoked_package = PackageTemplate :: build_package ( txid, 0 , revk_outp, 1000 , 100 ) ;
1064
+ let counterparty_package = PackageTemplate :: build_package ( txid, 1 , counterparty_outp, 1000 , 100 ) ;
1063
1065
revoked_package. merge_package ( counterparty_package) ;
1064
1066
}
1065
1067
1066
1068
#[ test]
1067
1069
fn test_package_split_malleable ( ) {
1068
1070
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1069
1071
let secp_ctx = Secp256k1 :: new ( ) ;
1070
- let revk_outp_one = dumb_revk_output ! ( secp_ctx) ;
1071
- let revk_outp_two = dumb_revk_output ! ( secp_ctx) ;
1072
- let revk_outp_three = dumb_revk_output ! ( secp_ctx) ;
1072
+ let revk_outp_one = dumb_revk_output ! ( secp_ctx, false , false ) ;
1073
+ let revk_outp_two = dumb_revk_output ! ( secp_ctx, false , false ) ;
1074
+ let revk_outp_three = dumb_revk_output ! ( secp_ctx, false , false ) ;
1073
1075
1074
- let mut package_one = PackageTemplate :: build_package ( txid, 0 , revk_outp_one, 1000 , true , 100 ) ;
1075
- let package_two = PackageTemplate :: build_package ( txid, 1 , revk_outp_two, 1000 , true , 100 ) ;
1076
- let package_three = PackageTemplate :: build_package ( txid, 2 , revk_outp_three, 1000 , true , 100 ) ;
1076
+ let mut package_one = PackageTemplate :: build_package ( txid, 0 , revk_outp_one, 1000 , 100 ) ;
1077
+ let package_two = PackageTemplate :: build_package ( txid, 1 , revk_outp_two, 1000 , 100 ) ;
1078
+ let package_three = PackageTemplate :: build_package ( txid, 2 , revk_outp_three, 1000 , 100 ) ;
1077
1079
1078
1080
package_one. merge_package ( package_two) ;
1079
1081
package_one. merge_package ( package_three) ;
@@ -1096,7 +1098,7 @@ mod tests {
1096
1098
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1097
1099
let htlc_outp_one = dumb_htlc_output ! ( ) ;
1098
1100
1099
- let mut package_one = PackageTemplate :: build_package ( txid, 0 , htlc_outp_one, 1000 , true , 100 ) ;
1101
+ let mut package_one = PackageTemplate :: build_package ( txid, 0 , htlc_outp_one, 1000 , 100 ) ;
1100
1102
let ret_split = package_one. split_package ( & BitcoinOutPoint { txid, vout : 0 } ) ;
1101
1103
assert ! ( ret_split. is_none( ) ) ;
1102
1104
}
@@ -1105,9 +1107,9 @@ mod tests {
1105
1107
fn test_package_timer ( ) {
1106
1108
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1107
1109
let secp_ctx = Secp256k1 :: new ( ) ;
1108
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
1110
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
1109
1111
1110
- let mut package = PackageTemplate :: build_package ( txid, 0 , revk_outp, 1000 , true , 100 ) ;
1112
+ let mut package = PackageTemplate :: build_package ( txid, 0 , revk_outp, 1000 , 100 ) ;
1111
1113
let timer_none = package. timer ( ) ;
1112
1114
assert ! ( timer_none. is_none( ) ) ;
1113
1115
package. set_timer ( Some ( 100 ) ) ;
@@ -1122,7 +1124,7 @@ mod tests {
1122
1124
let secp_ctx = Secp256k1 :: new ( ) ;
1123
1125
let counterparty_outp = dumb_counterparty_output ! ( secp_ctx, 1_000_000 , false ) ;
1124
1126
1125
- let package = PackageTemplate :: build_package ( txid, 0 , counterparty_outp, 1000 , true , 100 ) ;
1127
+ let package = PackageTemplate :: build_package ( txid, 0 , counterparty_outp, 1000 , 100 ) ;
1126
1128
assert_eq ! ( package. package_amount( ) , 1000 ) ;
1127
1129
}
1128
1130
@@ -1135,23 +1137,23 @@ mod tests {
1135
1137
let weight_sans_output = ( 4 + 4 + 1 + 36 + 4 + 1 + 1 + 8 + 1 ) * WITNESS_SCALE_FACTOR + 2 ;
1136
1138
1137
1139
{
1138
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
1139
- let package = PackageTemplate :: build_package ( txid, 0 , revk_outp, 0 , true , 100 ) ;
1140
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
1141
+ let package = PackageTemplate :: build_package ( txid, 0 , revk_outp, 0 , 100 ) ;
1140
1142
assert_eq ! ( package. package_weight( & Script :: new( ) ) , weight_sans_output + WEIGHT_REVOKED_OUTPUT as usize ) ;
1141
1143
}
1142
1144
1143
1145
{
1144
1146
for & opt_anchors in [ false , true ] . iter ( ) {
1145
1147
let counterparty_outp = dumb_counterparty_output ! ( secp_ctx, 1_000_000 , opt_anchors) ;
1146
- let package = PackageTemplate :: build_package ( txid, 0 , counterparty_outp, 1000 , true , 100 ) ;
1148
+ let package = PackageTemplate :: build_package ( txid, 0 , counterparty_outp, 1000 , 100 ) ;
1147
1149
assert_eq ! ( package. package_weight( & Script :: new( ) ) , weight_sans_output + weight_received_htlc( opt_anchors) as usize ) ;
1148
1150
}
1149
1151
}
1150
1152
1151
1153
{
1152
1154
for & opt_anchors in [ false , true ] . iter ( ) {
1153
1155
let counterparty_outp = dumb_counterparty_offered_output ! ( secp_ctx, 1_000_000 , opt_anchors) ;
1154
- let package = PackageTemplate :: build_package ( txid, 0 , counterparty_outp, 1000 , true , 100 ) ;
1156
+ let package = PackageTemplate :: build_package ( txid, 0 , counterparty_outp, 1000 , 100 ) ;
1155
1157
assert_eq ! ( package. package_weight( & Script :: new( ) ) , weight_sans_output + weight_offered_htlc( opt_anchors) as usize ) ;
1156
1158
}
1157
1159
}
0 commit comments