diff options
| author | Adam Soltys <[email protected]> | 2026-08-01 21:24:10 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-08-01 21:24:10 -0700 |
| commit | 6eee5fbb91920901120d7597c55f7b2108b565c6 (patch) | |
| tree | 234d3b710d05c4fa3b1843ec92d30eef759b0749 | |
| parent | 4fd722c4690f8d2a8a18a0713a64784a848098ab (diff) | |
| download | coinosv3-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.js | 6 |
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); |
