import subprocess, json, os, time V='27.0'; SDATA=os.path.expanduser('~/cksim/signet-data') CLI=os.path.expanduser('~/bitcoin-%s/bin/bitcoin-cli'%V) def bc(*a, wallet=None): base=[CLI,'-datadir=%s'%SDATA,'-rpcport=38999','-rpcuser=ck','-rpcpassword=ckms'] if wallet: base.append('-rpcwallet=%s'%wallet) r=subprocess.run(base+list(a),capture_output=True,text=True) if r.returncode: raise SystemExit('%s FAIL %s'%(a,r.stderr.strip()[:160])) return r.stdout.strip() for _ in range(40): try: bc('getblockchaininfo'); break except SystemExit: time.sleep(2) TPUB={'00000001':'tpubREPLACE_WITH_YOUR_SIGNER_1_XPUB', '00000002':'tpubREPLACE_WITH_YOUR_SIGNER_2_XPUB', '00000003':'tpubREPLACE_WITH_YOUR_SIGNER_3_XPUB'} def desc(b): keys=','.join('[%s/48h/1h/0h/2h]%s/%d/*'%(x,p,b) for x,p in TPUB.items()) return 'wsh(sortedmulti(2,%s))'%keys def ck(d): return json.loads(bc('getdescriptorinfo',d))['descriptor'] rcv,chg=ck(desc(0)),ck(desc(1)) wl=json.loads(bc('listwallets')) if 'ckms23-signet' not in wl: try: bc('createwallet','ckms23-signet','true','true','','false','true') except SystemExit: bc('loadwallet','ckms23-signet') bc('importdescriptors', json.dumps([{'desc':rcv,'active':True,'internal':False,'timestamp':'now','range':[0,30]}, {'desc':chg,'active':True,'internal':True,'timestamp':'now','range':[0,30]}]), wallet='ckms23-signet') addr=bc('getnewaddress','','bech32',wallet='ckms23-signet') open(os.path.expanduser('~/cksim/signet_addr.txt'),'w').write(addr+'\n') print('SIGNET_RECEIVE_ADDRESS', addr) bci=json.loads(bc('getblockchaininfo')) print('SYNC blocks=%s headers=%s progress=%.4f'%(bci['blocks'],bci['headers'],bci['verificationprogress']))