Script started on 2026-07-30 00:05:50+00:00 [TERM="xterm" TTY="/dev/pts/3" COLUMNS="189" LINES="49"] python3 anchor_run.py artifact.txt origem registada: b242efd1-7cb1-45cd-b6c2-550986703f33 sha256:aad94933346aadcaed1b6b5e3e926d9fa0b815fa448cfe3d6168bc0ea81d630a prova pendente: artifact.txt.ots (689 bytes, SHA-256 67ac338c1cacea38a3c0593200177ec39cc1cf3c31221617fffadf7b7ac5000b) estado gravado em state.json — correr upgrade.py até 'anchored' (inclusão + k>=6 demora horas) geek@airig:~/interop$ pgrep -af 8332 2159 ssh -N -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -L 8332:10.21.21.8:8332 umbrel@192.168.1.87 geek@airig:~/interop$ geek@airig:~/interop$ geek@airig:~/interop$ geek@airig:~/interop$ geek@airig:~/interop$ geek@airig:~/interop$ geek@airig:~/interop$ python3 -c " import ots_wire p = ots_wire.parse(open('artifact.txt.ots','rb').read()) print('msg:', p.msg.hex()) python3 -c " import ots_wire p = ots_wire.parse(open('artifact.txt.ots','rb').read()) print('msg:', p.msg.hex()) for ops, att in p.branches: print(f'{att!r} — {len(ops)} ops')" msg: aad94933346aadcaed1b6b5e3e926d9fa0b815fa448cfe3d6168bc0ea81d630a PendingAttestation(https://bob.btc.calendar.opentimestamps.org) — 14 ops PendingAttestation(https://alice.btc.calendar.opentimestamps.org) — 16 ops PendingAttestation(https://finney.calendar.eternitywall.com) — 10 ops cp artifact.txt artifact.txt.ots ~/ watch -n 1800 python3 upgrade.py state.json geek@airig:~/interop$ grep -niE 'rpcpassword|rpcuser|umbrel:|Basic |authorization' anchoring-session.log grep -niE 'rpcpassword|rpcuser|umbrel:|Basic |authorization' anchoring-session.log sync && grep -niE 'rpcpassword|rpcuser|umbrel:|Basic |authorization' anchoring-session.log watch -n 1800 python3 upgrade.py state.json geek@airig:~/interop$ exit exit Script done on 2026-07-30 00:34:45+00:00 [COMMAND_EXIT_CODE="0"] Script started on 2026-07-30 10:39:37+00:00 [TERM="xterm" TTY="/dev/pts/0" COLUMNS="189" LINES="49"] python3 upgrade.py state.json b242efd1-7cb1-45cd-b6c2-550986703f33: anchored @ altura 960175 (k=72) geek@airig:~/interop$ python3 - << 'EOF' import json, hashlib state = json.load(open('state.json')) rec = list(state['core_ots_proofs'].values())[0] assert rec['status'] == 'anchored', rec['status'] raw = bytes.fromhex(rec['ots_proof']) open('artifact.txt.ots','wb').write(raw) print("prova ancorada:", len(raw), "bytes | SHA-256", hashlib.sha256(raw).hexdigest()) print("altura:", rec['bitcoin_block_height']) geek@airig:~/interop$ python3 - << 'EOF' import json, hashlib state = json.load(open('state.json')) rec = list(state['core_ots_proofs'].values())[0] assert rec['status'] == 'anchored', rec['status'] raw = bytes.fromhex(rec['ots_proof']) open('artifact.txt.ots','wb').write(raw) print("prova ancorada:", len(raw), "bytes | SHA-256", hashlib.sha256(raw).hexdigest()) print("altura:", rec['bitcoin_block_height']) EOF prova ancorada: 2588 bytes | SHA-256 d37e6075fcb3ac74bb05bbe598a837f7a4567b918bd0225ae86a0cf8c33553e3 altura: 960175 geek@airig:~/interop$ python3 verify_run.py artifact.txt artifact.txt.ots python3 verify_run.py artifact.txt artifact.txt.ots resultado: valid block-height binding (normativo): 960175 RWCP block.time(H) (informativa): 2026-07-30T00:16:15Z confirmações: 72 geek@airig:~/interop$ ots verify -f artifact.txt artifact.txt.ots ots verify -f artifact.txt artifact.txt.ots Success! Bitcoin block 960175 attests existence as of 2026-07-30 UTC geek@airig:~/interop$ exit exit Script done on 2026-07-30 10:40:55+00:00 [COMMAND_EXIT_CODE="0"]