aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-08-17 23:44:31 -0700
committerAdam Soltys <[email protected]>2026-08-17 23:44:31 -0700
commitabf96d89ceb6070bb490cbce2cf374bcc21a9daf (patch)
tree2971a2033650e1822a143d6fce9413507aed1ecb
parent1d37b6ef3b633e04c2b27d01ec3ceb47a9a79fa9 (diff)
downloadcoinosv3-abf96d89ceb6070bb490cbce2cf374bcc21a9daf.tar.gz
coinosv3-abf96d89ceb6070bb490cbce2cf374bcc21a9daf.zip
Staging LNURL declines what it cannot deliver: only the recipient wallet mints for @staging names — our mainnet node will not take real sats it can only strand
Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
-rw-r--r--names/server.js5
1 files changed, 5 insertions, 0 deletions
diff --git a/names/server.js b/names/server.js
index c6b092b..df823f9 100644
--- a/names/server.js
+++ b/names/server.js
@@ -816,6 +816,11 @@ Bun.serve({
const pr = await requestInvoiceFromWallet(rec.offerPk, { amountSat: sat, description: comment, zap });
if (pr) { log(`lnurl ${key}: recipient minted ${sat} sat`); return json({ pr, routes: [] }); }
}
+ // Staging names are mutinynet wallets: only their own wallet can mint a
+ // right-network invoice. Minting on our mainnet node would take real
+ // sats for play money and strand them (the forwarder can't deliver to
+ // a testnet ark address).
+ if (domain === 'staging.coinos.io') return json({ status: 'ERROR', reason: 'recipient is offline' }, 503);
// 2. our node, forwarded on settle
if (!ln || !fwd) return json({ status: 'ERROR', reason: 'recipient is offline' }, 503);
try {