MCPcopy Create free account
hub / github.com/ElementsProject/elements / do_test_psbt

Method do_test_psbt

test/functional/wallet_taproot.py:282–315  ·  view source on GitHub ↗
(self, comment, pattern, privmap, treefn, keys_pay, keys_change)

Source from the content-addressed store, hash-verified

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)

Callers 1

do_testMethod · 0.95

Calls 7

make_descMethod · 0.95
make_addrMethod · 0.95
assert_equalFunction · 0.90
infoMethod · 0.80
randrangeMethod · 0.80
sendrawtransactionMethod · 0.80
generatetoaddressMethod · 0.45

Tested by

no test coverage detected