From d3ee2bbc3baa33140f18a95c3e4b78a797330ad0 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 12 Mar 2026 17:09:01 -0700 Subject: ark fixes --- lib/ark.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'lib/ark.ts') diff --git a/lib/ark.ts b/lib/ark.ts index 65f43e16..3fc33ef6 100644 --- a/lib/ark.ts +++ b/lib/ark.ts @@ -28,7 +28,13 @@ const getWallet = async () => { let refreshing = false; let lastRefresh = 0; const REFRESH_COOLDOWN = 30_000; -const failedBoardingOutpoints = new Set(); +let failedBoardingOutpoints = new Set(); +const FAILED_BOARDING_KEY = "ark:failedBoardingOutpoints"; +const loadFailedOutpoints = async () => { + const members = await db.sMembers(FAILED_BOARDING_KEY); + failedBoardingOutpoints = new Set(members); +}; +loadFailedOutpoints(); let recoveryFailures = 0; let renewalFailures = 0; @@ -147,10 +153,14 @@ export const refreshArkWallet = async (force = false) => { l("ark onboarded boarding utxo:", utxo.value, "sats, txid:", txid); await logArkOp("onboard", { txid, amount: utxo.value, boardingTxid: utxo.txid, vout: utxo.vout }); failedBoardingOutpoints.clear(); + await db.del(FAILED_BOARDING_KEY); break; } catch (e: any) { const retriable = /not enough intent confirmations|timed out|signing_session/i.test(e.message); - if (!retriable) failedBoardingOutpoints.add(outpointKey(utxo)); + if (!retriable) { + failedBoardingOutpoints.add(outpointKey(utxo)); + await db.sAdd(FAILED_BOARDING_KEY, outpointKey(utxo)); + } warn("ark onboard failed:", utxo.value, "sats:", e.message); } } -- cgit v1.2.3