(self, comment, pattern, privmap, treefn, keys_pay, keys_change)
| 280 | assert(self.rpc_online.gettransaction(res)["confirmations"] > 0) |
| 281 | |
| 282 | def do_test_psbt(self, comment, pattern, privmap, treefn, keys_pay, keys_change): |
| 283 | self.log.info("Testing %s through PSBT" % comment) |
| 284 | desc_pay = self.make_desc(pattern, privmap, keys_pay, False) |
| 285 | desc_change = self.make_desc(pattern, privmap, keys_change, False) |
| 286 | desc_pay_pub = self.make_desc(pattern, privmap, keys_pay, True) |
| 287 | desc_change_pub = self.make_desc(pattern, privmap, keys_change, True) |
| 288 | assert_equal(self.nodes[0].getdescriptorinfo(desc_pay)['descriptor'], desc_pay_pub) |
| 289 | assert_equal(self.nodes[0].getdescriptorinfo(desc_change)['descriptor'], desc_change_pub) |
| 290 | result = self.psbt_online.importdescriptors([{"desc": desc_pay_pub, "active": True, "timestamp": "now"}]) |
| 291 | assert(result[0]['success']) |
| 292 | result = self.psbt_online.importdescriptors([{"desc": desc_change_pub, "active": True, "timestamp": "now", "internal": True}]) |
| 293 | assert(result[0]['success']) |
| 294 | result = self.psbt_offline.importdescriptors([{"desc": desc_pay, "active": True, "timestamp": "now"}]) |
| 295 | assert(result[0]['success']) |
| 296 | result = self.psbt_offline.importdescriptors([{"desc": desc_change, "active": True, "timestamp": "now", "internal": True}]) |
| 297 | assert(result[0]['success']) |
| 298 | for i in range(4): |
| 299 | addr_g = self.psbt_online.getnewaddress(address_type='bech32m') |
| 300 | if treefn is not None: |
| 301 | addr_r = self.make_addr(treefn, keys_pay, i) |
| 302 | assert_equal(addr_g, addr_r) |
| 303 | boring_balance = int(self.boring.getbalance()['bitcoin'] * 100000000) |
| 304 | to_amnt = random.randrange(1000000, boring_balance) |
| 305 | self.boring.sendtoaddress(address=addr_g, amount=Decimal(to_amnt) / 100000000, subtractfeefromamount=True) |
| 306 | self.generatetoaddress(self.nodes[0], 1, self.boring.getnewaddress(), sync_fun=self.no_op) |
| 307 | test_balance = int(self.psbt_online.getbalance()['bitcoin'] * 100000000) |
| 308 | ret_amnt = random.randrange(100000, test_balance) |
| 309 | psbt = self.psbt_online.walletcreatefundedpsbt([], [{self.boring.getnewaddress(): Decimal(ret_amnt) / 100000000}], None, {"subtractFeeFromOutputs":[0]})['psbt'] |
| 310 | res = self.psbt_offline.walletprocesspsbt(psbt) |
| 311 | assert(res['complete']) |
| 312 | rawtx = self.nodes[0].finalizepsbt(res['psbt'])['hex'] |
| 313 | txid = self.nodes[0].sendrawtransaction(rawtx) |
| 314 | self.generatetoaddress(self.nodes[0], 1, self.boring.getnewaddress(), sync_fun=self.no_op) |
| 315 | assert(self.psbt_online.gettransaction(txid)['confirmations'] > 0) |
| 316 | |
| 317 | def do_test(self, comment, pattern, privmap, treefn, nkeys): |
| 318 | keys = self.rand_keys(nkeys * 4) |
no test coverage detected