diff options
| author | Adam Soltys <[email protected]> | 2026-06-25 16:01:39 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-06-25 16:01:39 -0700 |
| commit | 124fee3c15556d62d6efd8714fd4501e95273ebd (patch) | |
| tree | e8302cf0a2e913f11fc8a9bb883d3b99dbc427d2 /src/api.js | |
| parent | 5ed8b673bb0d6981a834d3b4d677c6678f0bd1dd (diff) | |
| download | coinosv3-124fee3c15556d62d6efd8714fd4501e95273ebd.tar.gz coinosv3-124fee3c15556d62d6efd8714fd4501e95273ebd.zip | |
Gift claim: detect already-claimed (even unconfirmed) and block the race
Opening a gift link now checks whether its funding coin is already spent — via
the Esplora outspend endpoint, which reports a spend even by an unconfirmed
claim. The Claim button is gated until that check passes; if the coin is spent,
show an 'Already claimed' screen with a link to the claim tx instead of a
claimable amount. doClaim also re-checks on broadcast failure (the race window),
and refuses to run while unchecked/taken — so a second opener can't attempt a
doomed double-spend.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Diffstat (limited to 'src/api.js')
| -rw-r--r-- | src/api.js | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -209,6 +209,12 @@ export class Api { return this.#get(`/address/${address}/utxo`); } + // Spend status of one output: { spent, txid (spender), vin, status }. Reports + // a spend even by an unconfirmed tx — used to tell if a gift was already claimed. + outspend(txid, vout) { + return this.#get(`/tx/${txid}/outspend/${vout}`); + } + addressTxs(address) { return this.#get(`/address/${address}/txs`); } |
