@@ -19,6 +19,7 @@ def set_test_params(self):
19
19
"-con_connect_genesis_outputs=1" ,
20
20
"-initialfreecoins=2100000000000000" ,
21
21
"-txindex=1" ,
22
+ "-blindedaddresses=1" ,
22
23
"-minrelaytxfee=0.00000100" ,
23
24
"-blockmintxfee=0.00000100" ,
24
25
"-fallbackfee=0.00000100" ,
@@ -184,6 +185,62 @@ def run_test(self):
184
185
tx = node0 .getrawtransaction (txid , True )
185
186
assert_equal (tx ['vsize' ], 2575 )
186
187
188
+ # check transaction package
189
+ self .log .info ("Create discounted package" )
190
+ addr = node1 .getnewaddress ()
191
+ addr2 = node1 .getnewaddress ()
192
+ utxo = node1 .listunspent ()[0 ]
193
+ fee = Decimal ('0.00000035' )
194
+ inputs = [{"txid" : utxo ["txid" ], "vout" : utxo ["vout" ]}]
195
+ change = Decimal ('0.00001000' )
196
+ amount = utxo ["amount" ] - change - fee
197
+ outputs = [
198
+ {addr : amount },
199
+ {addr2 : change },
200
+ {"fee" : fee }
201
+ ]
202
+ raw = node1 .createrawtransaction (inputs , outputs )
203
+ blind = node1 .blindrawtransaction (raw , False )
204
+ signed = node1 .signrawtransactionwithwallet (blind )
205
+ assert_equal (signed ["complete" ], True )
206
+ test = node1 .testmempoolaccept ([signed ['hex' ]])
207
+ assert_equal (test [0 ]["allowed" ], True )
208
+ txid = node1 .sendrawtransaction (signed ['hex' ])
209
+ tx = node1 .gettransaction (txid , True , True )
210
+ assert_equal (tx ['decoded' ]['discountvsize' ], 341 )
211
+
212
+ for i in range (24 ):
213
+ self .log .info (f"Add package descendant { i + 1 } " )
214
+ addr = node1 .getnewaddress ()
215
+ addr2 = node1 .getnewaddress ()
216
+ fee = Decimal ('0.00000035' )
217
+ change = Decimal ('0.00001000' )
218
+ inputs = [{"txid" : txid , "vout" : 0 }]
219
+ amount -= change + fee
220
+ outputs = [
221
+ {addr : amount },
222
+ {addr2 : change },
223
+ {"fee" : fee }
224
+ ]
225
+ raw = node1 .createrawtransaction (inputs , outputs )
226
+ blind = node1 .blindrawtransaction (raw , False )
227
+ signed = node1 .signrawtransactionwithwallet (blind )
228
+ assert_equal (signed ["complete" ], True )
229
+ hex = signed ["hex" ]
230
+ test = node1 .testmempoolaccept ([hex ])
231
+ assert_equal (test [0 ]["allowed" ], True )
232
+ txid = node1 .sendrawtransaction (hex )
233
+ tx = node1 .gettransaction (txid , True , True )
234
+ assert_equal (tx ['decoded' ]['discountvsize' ], 341 )
235
+ assert_equal (len (node1 .getrawmempool ()), i + 2 )
236
+
237
+ assert_equal (len (node1 .getrawmempool ()), 25 )
238
+ self .log .info ("Mine the package" )
239
+ self .generate (node1 , 1 , sync_fun = self .sync_blocks )
240
+ assert_equal (len (node1 .getrawmempool ()), 0 )
241
+ tx = node1 .gettransaction (txid , True , True )
242
+ assert_equal (tx ["confirmations" ], 1 )
243
+ self .log .info ("Success" )
187
244
188
245
if __name__ == '__main__' :
189
246
CTTest ().main ()
0 commit comments