@@ -790,7 +790,7 @@ impl PackageTemplate {
790
790
} ) . is_some ( )
791
791
}
792
792
793
- pub ( crate ) fn build_package ( txid : Txid , vout : u32 , input_solving_data : PackageSolvingData , soonest_conf_deadline : u32 , aggregable : bool , height_original : u32 ) -> Self {
793
+ pub ( crate ) fn build_package ( txid : Txid , vout : u32 , input_solving_data : PackageSolvingData , soonest_conf_deadline : u32 , height_original : u32 ) -> Self {
794
794
let ( malleability, aggregable) = Self :: map_output_type_flags ( & input_solving_data) ;
795
795
let mut inputs = Vec :: with_capacity ( 1 ) ;
796
796
inputs. push ( ( BitcoinOutPoint { txid, vout } , input_solving_data) ) ;
@@ -967,11 +967,11 @@ mod tests {
967
967
use bitcoin:: secp256k1:: Secp256k1 ;
968
968
969
969
macro_rules! dumb_revk_output {
970
- ( $secp_ctx: expr) => {
970
+ ( $secp_ctx: expr, $opt_anchors : expr , $is_counterparty_balance : expr ) => {
971
971
{
972
972
let dumb_scalar = SecretKey :: from_slice( & hex:: decode( "0101010101010101010101010101010101010101010101010101010101010101" ) . unwrap( ) [ ..] ) . unwrap( ) ;
973
973
let dumb_point = PublicKey :: from_secret_key( & $secp_ctx, & dumb_scalar) ;
974
- PackageSolvingData :: RevokedOutput ( RevokedOutput :: build( dumb_point, dumb_point, dumb_point, dumb_scalar, 0 , 0 , false , false ) )
974
+ PackageSolvingData :: RevokedOutput ( RevokedOutput :: build( dumb_point, dumb_point, dumb_point, dumb_scalar, 0 , 0 , $opt_anchors , $is_counterparty_balance ) )
975
975
}
976
976
}
977
977
}
@@ -1015,10 +1015,10 @@ mod tests {
1015
1015
fn test_package_differing_heights ( ) {
1016
1016
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1017
1017
let secp_ctx = Secp256k1 :: new ( ) ;
1018
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
1018
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
1019
1019
1020
- let mut package_one_hundred = PackageTemplate :: build_package ( txid, 0 , revk_outp. clone ( ) , 1000 , true , 100 ) ;
1021
- let package_two_hundred = PackageTemplate :: build_package ( txid, 1 , revk_outp. clone ( ) , 1000 , true , 200 ) ;
1020
+ let mut package_one_hundred = PackageTemplate :: build_package ( txid, 0 , revk_outp. clone ( ) , 1000 , 100 ) ;
1021
+ let package_two_hundred = PackageTemplate :: build_package ( txid, 1 , revk_outp. clone ( ) , 1000 , 200 ) ;
1022
1022
package_one_hundred. merge_package ( package_two_hundred) ;
1023
1023
}
1024
1024
@@ -1027,11 +1027,11 @@ mod tests {
1027
1027
fn test_package_untractable_merge_to ( ) {
1028
1028
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1029
1029
let secp_ctx = Secp256k1 :: new ( ) ;
1030
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
1030
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
1031
1031
let htlc_outp = dumb_htlc_output ! ( ) ;
1032
1032
1033
- let mut untractable_package = PackageTemplate :: build_package ( txid, 0 , revk_outp. clone ( ) , 1000 , true , 100 ) ;
1034
- let malleable_package = PackageTemplate :: build_package ( txid, 1 , htlc_outp. clone ( ) , 1000 , true , 100 ) ;
1033
+ let mut untractable_package = PackageTemplate :: build_package ( txid, 0 , revk_outp. clone ( ) , 1000 , 100 ) ;
1034
+ let malleable_package = PackageTemplate :: build_package ( txid, 1 , htlc_outp. clone ( ) , 1000 , 100 ) ;
1035
1035
untractable_package. merge_package ( malleable_package) ;
1036
1036
}
1037
1037
@@ -1041,10 +1041,10 @@ mod tests {
1041
1041
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1042
1042
let secp_ctx = Secp256k1 :: new ( ) ;
1043
1043
let htlc_outp = dumb_htlc_output ! ( ) ;
1044
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
1044
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
1045
1045
1046
- let mut malleable_package = PackageTemplate :: build_package ( txid, 0 , htlc_outp. clone ( ) , 1000 , true , 100 ) ;
1047
- let untractable_package = PackageTemplate :: build_package ( txid, 1 , revk_outp. clone ( ) , 1000 , true , 100 ) ;
1046
+ let mut malleable_package = PackageTemplate :: build_package ( txid, 0 , htlc_outp. clone ( ) , 1000 , 100 ) ;
1047
+ let untractable_package = PackageTemplate :: build_package ( txid, 1 , revk_outp. clone ( ) , 1000 , 100 ) ;
1048
1048
malleable_package. merge_package ( untractable_package) ;
1049
1049
}
1050
1050
@@ -1053,10 +1053,11 @@ mod tests {
1053
1053
fn test_package_noaggregation_to ( ) {
1054
1054
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1055
1055
let secp_ctx = Secp256k1 :: new ( ) ;
1056
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
1056
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
1057
+ let revk_outp_counterparty_balance = dumb_revk_output ! ( secp_ctx, true , true ) ;
1057
1058
1058
- let mut noaggregation_package = PackageTemplate :: build_package ( txid, 0 , revk_outp . clone ( ) , 1000 , false , 100 ) ;
1059
- let aggregation_package = PackageTemplate :: build_package ( txid, 1 , revk_outp. clone ( ) , 1000 , true , 100 ) ;
1059
+ let mut noaggregation_package = PackageTemplate :: build_package ( txid, 0 , revk_outp_counterparty_balance . clone ( ) , 1000 , 100 ) ;
1060
+ let aggregation_package = PackageTemplate :: build_package ( txid, 1 , revk_outp. clone ( ) , 1000 , 100 ) ;
1060
1061
noaggregation_package. merge_package ( aggregation_package) ;
1061
1062
}
1062
1063
@@ -1065,10 +1066,11 @@ mod tests {
1065
1066
fn test_package_noaggregation_from ( ) {
1066
1067
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1067
1068
let secp_ctx = Secp256k1 :: new ( ) ;
1068
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
1069
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
1070
+ let revk_outp_counterparty_balance = dumb_revk_output ! ( secp_ctx, true , true ) ;
1069
1071
1070
- let mut aggregation_package = PackageTemplate :: build_package ( txid, 0 , revk_outp. clone ( ) , 1000 , true , 100 ) ;
1071
- let noaggregation_package = PackageTemplate :: build_package ( txid, 1 , revk_outp . clone ( ) , 1000 , false , 100 ) ;
1072
+ let mut aggregation_package = PackageTemplate :: build_package ( txid, 0 , revk_outp. clone ( ) , 1000 , 100 ) ;
1073
+ let noaggregation_package = PackageTemplate :: build_package ( txid, 1 , revk_outp_counterparty_balance . clone ( ) , 1000 , 100 ) ;
1072
1074
aggregation_package. merge_package ( noaggregation_package) ;
1073
1075
}
1074
1076
@@ -1077,11 +1079,11 @@ mod tests {
1077
1079
fn test_package_empty ( ) {
1078
1080
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1079
1081
let secp_ctx = Secp256k1 :: new ( ) ;
1080
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
1082
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
1081
1083
1082
- let mut empty_package = PackageTemplate :: build_package ( txid, 0 , revk_outp. clone ( ) , 1000 , true , 100 ) ;
1084
+ let mut empty_package = PackageTemplate :: build_package ( txid, 0 , revk_outp. clone ( ) , 1000 , 100 ) ;
1083
1085
empty_package. inputs = vec ! [ ] ;
1084
- let package = PackageTemplate :: build_package ( txid, 1 , revk_outp. clone ( ) , 1000 , true , 100 ) ;
1086
+ let package = PackageTemplate :: build_package ( txid, 1 , revk_outp. clone ( ) , 1000 , 100 ) ;
1085
1087
empty_package. merge_package ( package) ;
1086
1088
}
1087
1089
@@ -1090,25 +1092,25 @@ mod tests {
1090
1092
fn test_package_differing_categories ( ) {
1091
1093
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1092
1094
let secp_ctx = Secp256k1 :: new ( ) ;
1093
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
1095
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
1094
1096
let counterparty_outp = dumb_counterparty_output ! ( secp_ctx, 0 , false ) ;
1095
1097
1096
- let mut revoked_package = PackageTemplate :: build_package ( txid, 0 , revk_outp, 1000 , true , 100 ) ;
1097
- let counterparty_package = PackageTemplate :: build_package ( txid, 1 , counterparty_outp, 1000 , true , 100 ) ;
1098
+ let mut revoked_package = PackageTemplate :: build_package ( txid, 0 , revk_outp, 1000 , 100 ) ;
1099
+ let counterparty_package = PackageTemplate :: build_package ( txid, 1 , counterparty_outp, 1000 , 100 ) ;
1098
1100
revoked_package. merge_package ( counterparty_package) ;
1099
1101
}
1100
1102
1101
1103
#[ test]
1102
1104
fn test_package_split_malleable ( ) {
1103
1105
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1104
1106
let secp_ctx = Secp256k1 :: new ( ) ;
1105
- let revk_outp_one = dumb_revk_output ! ( secp_ctx) ;
1106
- let revk_outp_two = dumb_revk_output ! ( secp_ctx) ;
1107
- let revk_outp_three = dumb_revk_output ! ( secp_ctx) ;
1107
+ let revk_outp_one = dumb_revk_output ! ( secp_ctx, false , false ) ;
1108
+ let revk_outp_two = dumb_revk_output ! ( secp_ctx, false , false ) ;
1109
+ let revk_outp_three = dumb_revk_output ! ( secp_ctx, false , false ) ;
1108
1110
1109
- let mut package_one = PackageTemplate :: build_package ( txid, 0 , revk_outp_one, 1000 , true , 100 ) ;
1110
- let package_two = PackageTemplate :: build_package ( txid, 1 , revk_outp_two, 1000 , true , 100 ) ;
1111
- let package_three = PackageTemplate :: build_package ( txid, 2 , revk_outp_three, 1000 , true , 100 ) ;
1111
+ let mut package_one = PackageTemplate :: build_package ( txid, 0 , revk_outp_one, 1000 , 100 ) ;
1112
+ let package_two = PackageTemplate :: build_package ( txid, 1 , revk_outp_two, 1000 , 100 ) ;
1113
+ let package_three = PackageTemplate :: build_package ( txid, 2 , revk_outp_three, 1000 , 100 ) ;
1112
1114
1113
1115
package_one. merge_package ( package_two) ;
1114
1116
package_one. merge_package ( package_three) ;
@@ -1131,7 +1133,7 @@ mod tests {
1131
1133
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1132
1134
let htlc_outp_one = dumb_htlc_output ! ( ) ;
1133
1135
1134
- let mut package_one = PackageTemplate :: build_package ( txid, 0 , htlc_outp_one, 1000 , true , 100 ) ;
1136
+ let mut package_one = PackageTemplate :: build_package ( txid, 0 , htlc_outp_one, 1000 , 100 ) ;
1135
1137
let ret_split = package_one. split_package ( & BitcoinOutPoint { txid, vout : 0 } ) ;
1136
1138
assert ! ( ret_split. is_none( ) ) ;
1137
1139
}
@@ -1140,9 +1142,9 @@ mod tests {
1140
1142
fn test_package_timer ( ) {
1141
1143
let txid = Txid :: from_hex ( "c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e" ) . unwrap ( ) ;
1142
1144
let secp_ctx = Secp256k1 :: new ( ) ;
1143
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
1145
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
1144
1146
1145
- let mut package = PackageTemplate :: build_package ( txid, 0 , revk_outp, 1000 , true , 100 ) ;
1147
+ let mut package = PackageTemplate :: build_package ( txid, 0 , revk_outp, 1000 , 100 ) ;
1146
1148
let timer_none = package. timer ( ) ;
1147
1149
assert ! ( timer_none. is_none( ) ) ;
1148
1150
package. set_timer ( Some ( 100 ) ) ;
@@ -1157,7 +1159,7 @@ mod tests {
1157
1159
let secp_ctx = Secp256k1 :: new ( ) ;
1158
1160
let counterparty_outp = dumb_counterparty_output ! ( secp_ctx, 1_000_000 , false ) ;
1159
1161
1160
- let package = PackageTemplate :: build_package ( txid, 0 , counterparty_outp, 1000 , true , 100 ) ;
1162
+ let package = PackageTemplate :: build_package ( txid, 0 , counterparty_outp, 1000 , 100 ) ;
1161
1163
assert_eq ! ( package. package_amount( ) , 1000 ) ;
1162
1164
}
1163
1165
@@ -1170,23 +1172,23 @@ mod tests {
1170
1172
let weight_sans_output = ( 4 + 4 + 1 + 36 + 4 + 1 + 1 + 8 + 1 ) * WITNESS_SCALE_FACTOR + 2 ;
1171
1173
1172
1174
{
1173
- let revk_outp = dumb_revk_output ! ( secp_ctx) ;
1174
- let package = PackageTemplate :: build_package ( txid, 0 , revk_outp, 0 , true , 100 ) ;
1175
+ let revk_outp = dumb_revk_output ! ( secp_ctx, false , false ) ;
1176
+ let package = PackageTemplate :: build_package ( txid, 0 , revk_outp, 0 , 100 ) ;
1175
1177
assert_eq ! ( package. package_weight( & Script :: new( ) ) , weight_sans_output + WEIGHT_REVOKED_OUTPUT as usize ) ;
1176
1178
}
1177
1179
1178
1180
{
1179
1181
for & opt_anchors in [ false , true ] . iter ( ) {
1180
1182
let counterparty_outp = dumb_counterparty_output ! ( secp_ctx, 1_000_000 , opt_anchors) ;
1181
- let package = PackageTemplate :: build_package ( txid, 0 , counterparty_outp, 1000 , true , 100 ) ;
1183
+ let package = PackageTemplate :: build_package ( txid, 0 , counterparty_outp, 1000 , 100 ) ;
1182
1184
assert_eq ! ( package. package_weight( & Script :: new( ) ) , weight_sans_output + weight_received_htlc( opt_anchors) as usize ) ;
1183
1185
}
1184
1186
}
1185
1187
1186
1188
{
1187
1189
for & opt_anchors in [ false , true ] . iter ( ) {
1188
1190
let counterparty_outp = dumb_counterparty_offered_output ! ( secp_ctx, 1_000_000 , opt_anchors) ;
1189
- let package = PackageTemplate :: build_package ( txid, 0 , counterparty_outp, 1000 , true , 100 ) ;
1191
+ let package = PackageTemplate :: build_package ( txid, 0 , counterparty_outp, 1000 , 100 ) ;
1190
1192
assert_eq ! ( package. package_weight( & Script :: new( ) ) , weight_sans_output + weight_offered_htlc( opt_anchors) as usize ) ;
1191
1193
}
1192
1194
}
0 commit comments