aboutsummaryrefslogtreecommitdiffstats
path: root/routes/ecash.ts
Commit message (Collapse)AuthorAgeFilesLines
* ecash: drop anonymous token storage in favour of a stateless status lookupAdam Soltys2026-09-271-6/+8
| | | | | | | | | POST /cash stored any submitted string under a fresh id with no auth, no validation and no expiry. Replace it with POST /ecash/status, which checks a token the client already holds and returns its total, spent amount and mint. GET /cash/:id/:version stays so previously shared ids keep resolving. Co-Authored-By: Claude Fable 5.1 <[email protected]>
* ecash: redeem tokens by melting to the user's own invoiceAdam Soltys2026-09-161-123/+20
| | | | | | | | | | | Redeeming ecash is now a plain NUT-05 melt into a Lightning invoice owned by the redeeming user, credited by the regular lightning listener. Drop the house proof pool and its lock, the /mint and /melt routes, and the special-casing of a mint account in NWC and payment routing. Tokens are decoded against the mint's keyset list so short v1 ids resolve, and an empty keyset list is never cached. Co-Authored-By: Claude Fable 5.1 <[email protected]>
* security: drop the admin endpoint surface and land pending hardeningAdam Soltys2026-09-131-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Removes the admin-gated endpoints and the account flags they set, plus a batch of hardening that had accumulated uncommitted in the tree. These were deployed and verified together, so they land as one change. admin surface: - drop POST /hidepay, POST /unlimit and GET /users, their handlers, and the now-unused admin preValidation export - `unlimited` was only ever written, never read; `hidepay` only appeared in output projections. Both flags go, along with their whitelist, public-fields and type entries. request log: - redactBody now recurses. It only masked top-level keys, so a body that nests credentials one level down wrote them to the log in plaintext, and pin fields were not on the list at all. payments: - sendOnchain/build gate `aid` through requireAccount, so a caller can only spend from an account it owns - sendOnchain signs only a tx we composed, matched against a short-lived per-account build receipt - raise xpay retry_for to 60s; route-finding preferred a drained zero-fee hop and burned the whole budget on it. check()'s reversal window keeps its 2x margin. ecash / invoices / webhooks: - resolve a token's mint through the IP-pinning fetcher instead of plain fetch, closing an unauthenticated SSRF path into the internal network - reject non-positive amounts before the balance write - /sign requires the caller to own the address, rather than signing under any address the hot wallet controls - webhook delivery no longer disables TLS verification; the body carries the merchant's shared secret registration: - refuse a username the v3 registrar holds unless the caller's own nostr key is the holder (lib/names.ts) liquid: - honour the deposit kill switch at invoice generation and at credit elements image: - pin 23.3.4 and verify the release tarball checksum Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_0112TGi9GGNWqji1XQ5jZRzc
* remove logsAdam Soltys2026-03-171-1/+0
|
* disable mintingAdam Soltys2025-07-161-0/+1
|
* debit signatureAdam Soltys2025-05-121-0/+2
|
* use getInvoice helperAdam Soltys2025-03-051-2/+2
|
* payment typesAdam Soltys2025-02-261-3/+5
|
* payload is bodyAdam Soltys2024-11-271-2/+2
|
* ecash receiveAdam Soltys2024-11-221-0/+23
|
* return pidcashreqAdam Soltys2024-11-211-4/+5
|
* migrate to new cashu-tsAdam Soltys2024-11-211-16/+6
|
* ecash requestsAdam Soltys2024-11-211-36/+6
|
* wipAdam Soltys2024-11-211-12/+50
|
* save ecash idAdam Soltys2024-10-241-31/+30
|
* rm rpcAdam Soltys2024-09-091-1/+1
|
* refactor rpc helper, accounts endpointsAdam Soltys2024-09-081-1/+1
|
* support multiple token versionsAdam Soltys2024-09-031-4/+5
|
* fix some ts issuesAdam Soltys2024-08-261-9/+26
|
* typescriptAdam Soltys2024-08-261-0/+127