import subprocess, json, os V='27.0'; DATA=os.path.expanduser('~/cksim/regtest-data') CLI=os.path.expanduser(f'~/bitcoin-{V}/bin/bitcoin-cli') def bc(*a, wallet=None): base=[CLI,f'-datadir={DATA}','-rpcport=18999','-rpcuser=ck','-rpcpassword=ckms'] if wallet: base.append(f'-rpcwallet={wallet}') r=subprocess.run(base+list(a),capture_output=True,text=True) if r.returncode: raise SystemExit(f'{a} FAIL {r.stderr.strip()}') return r.stdout.strip() s1=open(os.path.expanduser('~/cksim/signed1.psbt')).read().strip() s2=open(os.path.expanduser('~/cksim/signed2.psbt')).read().strip() comb=bc('combinepsbt', json.dumps([s1,s2])) fin=json.loads(bc('finalizepsbt', comb)) print('PSBT_COMPLETE:', fin['complete']) txid=bc('sendrawtransaction', fin['hex']) print('BROADCAST_TXID:', txid) mineaddr=bc('getnewaddress', wallet='miner') bc('generatetoaddress','1',mineaddr, wallet='miner') tx=json.loads(bc('gettransaction', txid, wallet='ckms23-watch')) print('CONFIRMATIONS:', tx.get('confirmations')) print('WATCH_BALANCE_AFTER:', bc('getbalance', wallet='ckms23-watch'))