aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-08-01 21:24:10 -0700
committerAdam Soltys <[email protected]>2026-08-01 21:24:10 -0700
commit6eee5fbb91920901120d7597c55f7b2108b565c6 (patch)
tree234d3b710d05c4fa3b1843ec92d30eef759b0749
parent4fd722c4690f8d2a8a18a0713a64784a848098ab (diff)
downloadcoinosv3-6eee5fbb91920901120d7597c55f7b2108b565c6.tar.gz
coinosv3-6eee5fbb91920901120d7597c55f7b2108b565c6.zip
Fresh-seed restore: connect after parking a synced ark snapshot
A seed imported on a new device (or a new origin — v3.coinos.io) has no local ark state and no live connection, so the anti-poisoning guard can't prove the incoming snapshot's owner and parks it in the hold. Nothing then triggered the connect that would adopt it — ark is lazy on fresh wallets — so the balance never appeared. Parking with no local identity now kicks the init; connecting learns the server pubkey and the held state is adopted iff it matches. Co-Authored-By: Claude Fable 5 <[email protected]>
-rw-r--r--src/features/ark.js6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/features/ark.js b/src/features/ark.js
index 5ffd121..8229ead 100644
--- a/src/features/ark.js
+++ b/src/features/ark.js
@@ -230,6 +230,12 @@ export function arkFeature(ctx) {
localStorage.setItem(wallet._arkHoldKey(owner),
JSON.stringify({ ...d.arkState, serverPubkey: owner }));
} catch {}
+ // `mine` is null on a FRESH restore (no local state, not yet
+ // connected), so even our own snapshot lands in the hold. Connecting
+ // is what resolves it: the manager learns the server's pubkey and
+ // adopts the held state if it matches — a seed imported on a new
+ // device would otherwise show no ark balance until some manual poke.
+ if (!mine) setTimeout(() => initArk(), 0);
return;
}
const local = wallet.loadArkState(cfg.ark);