From ab47682bf20e79931bdb3a4b65196c41c1c81275 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 17 Mar 2026 01:34:24 -0700 Subject: handle ark dust --- bun.lock | 4 ++-- lib/ark.ts | 5 +++-- package.json | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/bun.lock b/bun.lock index 689faf3d..84f5036f 100644 --- a/bun.lock +++ b/bun.lock @@ -5,7 +5,7 @@ "": { "name": "coinos", "dependencies": { - "@arkade-os/sdk": "0.4.6", + "@arkade-os/sdk": "0.4.7", "@asoltys/clightning-client": "^0.2.0", "@aws-sdk/client-ses": "^3.997.0", "@cashu/cashu-ts": "^2.9.0", @@ -81,7 +81,7 @@ "@apimatic/schema": ["@apimatic/schema@0.7.21", "", { "dependencies": { "tslib": "^2.8.1" } }, "sha512-RCke4toXjA7fBRxQVa1GR+Lj9utVOEJ3voDI26dhk+bZuAac4UXPzkTEaIO3AIe/o8pcKCOkpNIzhzm57Cv2Qg=="], - "@arkade-os/sdk": ["@arkade-os/sdk@0.4.6", "", { "dependencies": { "@kukks/bitcoin-descriptors": "3.1.0", "@marcbachmann/cel-js": "7.3.1", "@noble/curves": "2.0.0", "@noble/secp256k1": "3.0.0", "@scure/base": "2.0.0", "@scure/bip32": "2.0.0", "@scure/bip39": "2.0.1", "@scure/btc-signer": "2.0.1", "bip68": "1.0.4" }, "peerDependencies": { "@react-native-async-storage/async-storage": ">=1.0.0", "expo": ">=54.0.0", "expo-background-task": "~1.0.10", "expo-sqlite": "~16.0.10", "expo-task-manager": "~14.0.9" }, "optionalPeers": ["@react-native-async-storage/async-storage", "expo", "expo-background-task", "expo-sqlite", "expo-task-manager"] }, "sha512-bbkuZpD9aPZkwde+F9VFidIm3MLBFdrjWpweew4M+S9CACVoaa6BqSl6aj9A0YVxG6y1oZ6LVitDS4W3veVG4A=="], + "@arkade-os/sdk": ["@arkade-os/sdk@0.4.7", "", { "dependencies": { "@kukks/bitcoin-descriptors": "3.1.0", "@marcbachmann/cel-js": "7.3.1", "@noble/curves": "2.0.0", "@noble/secp256k1": "3.0.0", "@scure/base": "2.0.0", "@scure/bip32": "2.0.0", "@scure/bip39": "2.0.1", "@scure/btc-signer": "2.0.1", "bip68": "1.0.4" }, "peerDependencies": { "@react-native-async-storage/async-storage": ">=1.0.0", "expo": ">=54.0.0", "expo-background-task": "~1.0.10", "expo-sqlite": "~16.0.10", "expo-task-manager": "~14.0.9" }, "optionalPeers": ["@react-native-async-storage/async-storage", "expo", "expo-background-task", "expo-sqlite", "expo-task-manager"] }, "sha512-T4C2wr6Tm43hT7I7gAFC5MC+FMeTXo0u31bbC17Km/OCb1qsLyCiO6c+NBFcJxFiKysxMEdGCoBNb+r8iWgV8Q=="], "@asoltys/clightning-client": ["@asoltys/clightning-client@0.2.0", "", { "dependencies": { "debug": "^4.1.1" } }, "sha512-CYbkyGoS0X1ha/YcFk3sTiI7aRHpPMnib/26WODucfJNrTbWl/9FJ4bpod9a6t9Jbv5OXCa0dYspcPK3kZ71pg=="], diff --git a/lib/ark.ts b/lib/ark.ts index 03f02412..ef6713ef 100644 --- a/lib/ark.ts +++ b/lib/ark.ts @@ -67,7 +67,7 @@ export const refreshArkWallet = async (force = false) => { const w = await getWallet(); const balance = await w.getBalance(); cachedArkBalance = balance; - const manager = new VtxoManager(w); + const manager = new VtxoManager(w, undefined, false); const provider = new RestArkProvider(config.ark.arkServerUrl); const info = await provider.getInfo(); const dust = Number(info.dust); @@ -114,7 +114,8 @@ export const refreshArkWallet = async (force = false) => { try { const allExpiring = await manager.getExpiringVtxos(RENEWAL_THRESHOLD_MS); const expiring = allExpiring.filter((v: any) => v.value > Number(info.dust)); - if (expiring.length > 0) { + const allTotal = allExpiring.reduce((s: number, v: any) => s + v.value, 0); + if (expiring.length > 0 && allTotal > dust) { const expiringTotal = expiring.reduce((s: number, v: any) => s + v.value, 0); l("ark renewing", expiring.length, "expiring vtxos, total:", expiringTotal, "sats (skipped", allExpiring.length - expiring.length, "dust)"); const txid = await withTimeout(manager.renewVtxos(), 60_000, "ark renewal"); diff --git a/package.json b/package.json index 790dbb18..adad0760 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "format": "oxfmt ." }, "dependencies": { - "@arkade-os/sdk": "0.4.6", + "@arkade-os/sdk": "0.4.7", "@asoltys/clightning-client": "^0.2.0", "@aws-sdk/client-ses": "^3.997.0", "@cashu/cashu-ts": "^2.9.0", -- cgit v1.2.3