Poisoned-peer canary: idempotent on a box already running the binary; a 45-minute sync wait for a fresh datadir (IBD of 128,000 blocks takes about 12 minutes)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
igneum-labs 2026-10-06 21:03:29 +00:00
parent 3049b309a8
commit ee2391c9a4

View file

@ -17,9 +17,11 @@ def hubsplit(): return hub.run("echo total=$(grep -c 'wrong block version' /root
print(st(), "hub before:", hubsplit(), flush=True)
for box, l, peers in ((A, "p2-4090-3", "--addpeer=213.173.107.74:16516 --addpeer=188.245.5.161:26611 --addpeer=213.173.98.36:18451"), (B, "p2-3090-2", "--addpeer=213.173.107.74:16516 --addpeer=188.245.5.161:26611")):
path=box.install_payload(NODE, SHA); box.put([MINER], "/root/fleet/in/igneum-miner-new"); iid,r=Registry.find(l)
rc,out,err=box.run(f"cd /root/fleet && {KILL}; [ -d node ] && mv node node.pre-$(date -u +%H%M); mkdir -p node; mv node.log node.pre-$(date -u +%H%M).log 2>/dev/null; cp in/igneum-miner-new /opt/igneum/pkg/bin/igneum-miner.new && chmod +x /opt/igneum/pkg/bin/igneum-miner.new && mv /opt/igneum/pkg/bin/igneum-miner.new /opt/igneum/pkg/bin/igneum-miner; echo {path} > standing.node; IGNEUM_PROOF_VERIFIER=/opt/igneum-floor/bin/igneum-prove-host setsid nohup {path} --devnet --appdir=/root/fleet/node --rpclisten=0.0.0.0:26610 --evm-rpclisten=127.0.0.1:26790 --listen=0.0.0.0:26611 {peers} --override-params-file=/root/fleet/override.json --nodnsseed --disable-upnp --nologfiles --yes </dev/null >> node.log 2>&1 & echo started T0=$(date -u +%T)", 90)
already = box.run(f"pgrep -f '^{path} --devnet --appdir=' >/dev/null && echo yes", 20)[1].strip() == "yes" # the node already runs this binary (a relaunch): keep its datadir and sync
if already: print(st(), l, "already on the binary, keeping its sync", flush=True)
rc,out,err=(0,"kept","") if already else box.run(f"cd /root/fleet && {KILL}; [ -d node ] && mv node node.pre-$(date -u +%H%M); mkdir -p node; mv node.log node.pre-$(date -u +%H%M).log 2>/dev/null; cp in/igneum-miner-new /opt/igneum/pkg/bin/igneum-miner.new && chmod +x /opt/igneum/pkg/bin/igneum-miner.new && mv /opt/igneum/pkg/bin/igneum-miner.new /opt/igneum/pkg/bin/igneum-miner; echo {path} > standing.node; IGNEUM_PROOF_VERIFIER=/opt/igneum-floor/bin/igneum-prove-host setsid nohup {path} --devnet --appdir=/root/fleet/node --rpclisten=0.0.0.0:26610 --evm-rpclisten=127.0.0.1:26790 --listen=0.0.0.0:26611 {peers} --override-params-file=/root/fleet/override.json --nodnsseed --disable-upnp --nologfiles --yes </dev/null >> node.log 2>&1 & echo started T0=$(date -u +%T)", 90)
print(st(), l, out.replace("\n"," "), flush=True)
for i in range(40):
for i in range(90):
time.sleep(30); rc,out,err=box.run(WATCH, 30)
if "synced=true" in out and "blocks=0 " not in out: break
rc,out,err=box.run(f"cd /root/fleet && echo synced_after={(i+1)*30}s {WATCH} vline=$(grep -oE 'igneumd/2\\.1\\.0-[0-9a-f]+' node.log | tail -1) digest=$(grep -o 'digest: [0-9a-f]*' node.log | tail -1 | awk '{{print substr($2,1,8)}}'); cd mine 2>/dev/null || mkdir -p /root/fleet/mine/packs && cd /root/fleet/mine; rm -rf packs/devnet; /opt/igneum/pkg/bin/igneum-miner export-pack grpc://127.0.0.1:26610 packs/devnet >/dev/null 2>&1; setsid nohup /opt/igneum/pkg/bin/igneum-miner mine grpc://127.0.0.1:26610 1 100000000 {l} --worker /opt/igneum/pkg/bin/igneum-worker-cuda --worker-args '--device 0 --pack packs/devnet' --prepare-packs packs/prepare --exit-on-seed-change --evm-address {r.get('wallet')} --payout-label {l} --status-secs 60 </dev/null >> /root/fleet/out/miner-0.log 2>&1 & echo miner started; /opt/igneum/pkg/bin/igneum-miner key-hash {l} 2>/dev/null | grep -oE '[0-9a-f]{{64}}' | head -1", 120)