402-mcp 4.2.0 → 4.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -8
- package/build/config.d.ts +6 -1
- package/build/config.js +12 -2
- package/build/config.js.map +1 -1
- package/build/fetch/resilient-fetch.d.ts +7 -2
- package/build/fetch/resilient-fetch.js +17 -6
- package/build/fetch/resilient-fetch.js.map +1 -1
- package/build/fetch/socks-proxy.d.ts +25 -0
- package/build/fetch/socks-proxy.js +41 -0
- package/build/fetch/socks-proxy.js.map +1 -0
- package/build/fetch/ssrf-guard.d.ts +10 -0
- package/build/fetch/ssrf-guard.js +17 -1
- package/build/fetch/ssrf-guard.js.map +1 -1
- package/build/index.js +3 -2
- package/build/index.js.map +1 -1
- package/build/l402/bolt11.js +3 -2
- package/build/l402/bolt11.js.map +1 -1
- package/build/store/lnurlcash-notes.d.ts +37 -0
- package/build/store/lnurlcash-notes.js +25 -0
- package/build/store/lnurlcash-notes.js.map +1 -1
- package/build/tools/fetch-preview.js +9 -3
- package/build/tools/fetch-preview.js.map +1 -1
- package/build/tools/fetch.js +26 -0
- package/build/tools/fetch.js.map +1 -1
- package/build/wallet/lnurlcash-ops.d.ts +13 -2
- package/build/wallet/lnurlcash-ops.js +63 -2
- package/build/wallet/lnurlcash-ops.js.map +1 -1
- package/build/wallet/lnurlcash.js +43 -6
- package/build/wallet/lnurlcash.js.map +1 -1
- package/build/wallet/types.d.ts +6 -0
- package/llms-full.txt +2 -1
- package/llms.txt +4 -3
- package/package.json +5 -4
- package/src/widgets/dist/payment-confirmation.html +28 -28
- package/src/widgets/dist/service-directory.html +28 -28
- package/src/widgets/dist/wallet-dashboard.html +28 -28
|
@@ -78,6 +78,31 @@ export class LnurlcashNoteStore {
|
|
|
78
78
|
if (this.data.notes.length !== before)
|
|
79
79
|
this.save();
|
|
80
80
|
}
|
|
81
|
+
/** Melts whose preimage was recovered, newest last. */
|
|
82
|
+
settledMelts() {
|
|
83
|
+
return [...(this.data.settledMelts ?? [])];
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Records a recovered preimage. Idempotent on payment hash: reconcile can
|
|
87
|
+
* run many times over the same late melt, and a duplicate here would look
|
|
88
|
+
* like a second payment.
|
|
89
|
+
*/
|
|
90
|
+
recordSettledMelt(melt) {
|
|
91
|
+
const existing = this.data.settledMelts ?? [];
|
|
92
|
+
if (existing.some(m => m.paymentHashHex === melt.paymentHashHex))
|
|
93
|
+
return;
|
|
94
|
+
this.data.settledMelts = [...existing, melt];
|
|
95
|
+
this.save();
|
|
96
|
+
}
|
|
97
|
+
/** Attaches the proof a late melt can be recovered with, before polling starts. */
|
|
98
|
+
setMeltProof(secret, verifyUrl, paymentHashHex) {
|
|
99
|
+
const note = this.find(secret);
|
|
100
|
+
if (!note)
|
|
101
|
+
return;
|
|
102
|
+
note.verifyUrl = verifyUrl;
|
|
103
|
+
note.paymentHashHex = paymentHashHex;
|
|
104
|
+
this.save();
|
|
105
|
+
}
|
|
81
106
|
removeMany(secrets) {
|
|
82
107
|
if (secrets.length === 0)
|
|
83
108
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lnurlcash-notes.js","sourceRoot":"","sources":["../../src/store/lnurlcash-notes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"lnurlcash-notes.js","sourceRoot":"","sources":["../../src/store/lnurlcash-notes.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,6 +50,10 @@ export async function handleFetchPreview(args, deps) {
|
|
|
50
50
|
if (deps.isIETFPayment(response.headers)) {
|
|
51
51
|
const ietf = deps.parseIETFPayment(wwwAuth);
|
|
52
52
|
if (ietf?.invoice && ietf.amountSats && ietf.paymentHash) {
|
|
53
|
+
// Preview what the invoice charges, not what the server says it does.
|
|
54
|
+
const invoice = deps.decodeBolt11(ietf.invoice);
|
|
55
|
+
const matches = invoice.costSats === ietf.amountSats
|
|
56
|
+
&& invoice.paymentHash === ietf.paymentHash.toLowerCase();
|
|
53
57
|
const expiresAt = ietf.expires
|
|
54
58
|
? new Date(ietf.expires).getTime()
|
|
55
59
|
: Date.now() + 3600_000;
|
|
@@ -57,14 +61,16 @@ export async function handleFetchPreview(args, deps) {
|
|
|
57
61
|
status: 'preview',
|
|
58
62
|
endpoint: url,
|
|
59
63
|
protocol: 'ietf-payment',
|
|
60
|
-
costSats:
|
|
64
|
+
costSats: invoice.costSats,
|
|
61
65
|
paymentMethod: deps.walletMethod() ?? 'none',
|
|
62
|
-
paymentHash:
|
|
66
|
+
paymentHash: invoice.paymentHash,
|
|
63
67
|
expiresAt,
|
|
64
68
|
realm: ietf.realm,
|
|
65
69
|
intent: ietf.intent,
|
|
66
70
|
widgetHint: 'payment-confirmation',
|
|
67
|
-
message:
|
|
71
|
+
message: matches
|
|
72
|
+
? `Payment of ${invoice.costSats} sats required to access ${new URL(url).hostname}. Confirm to proceed.`
|
|
73
|
+
: `The server states ${ietf.amountSats} sats but its invoice ${invoice.costSats === null ? 'has no readable amount' : `charges ${invoice.costSats} sats`}. l402-fetch will refuse to pay it.`,
|
|
68
74
|
};
|
|
69
75
|
}
|
|
70
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-preview.js","sourceRoot":"","sources":["../../src/tools/fetch-preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AASvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAuBlD,6DAA6D;AAC7D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,MAAM,EAAE,mBAAmB,EAAE,YAAY,EAAE,SAAS;IACpD,qBAAqB,EAAE,IAAI,EAAE,SAAS;CACvC,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAA0G,EAC1G,IAAsB;IAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEvD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACvD,MAAM,UAAU,GAA2B,EAAE,CAAA;YAC7C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAClD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;wBAC1C,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;oBACnB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBACvC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;gBAC5B,OAAO,EAAE,UAAU;aACpB,CAAC,CAAA;YAEF,2CAA2C;YAC3C,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,OAAO;oBACL,MAAM,EAAE,MAAe;oBACvB,QAAQ,EAAE,GAAG;oBACb,UAAU,EAAE,QAAQ,CAAC,MAAM;oBAC3B,OAAO,EAAE,sBAAsB;iBAChC,CAAA;YACH,CAAC;YAED,+CAA+C;YAC/C,IAAI,aAAa,GAA4B,EAAE,CAAA;YAC/C,IAAI,CAAC;gBAAC,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA6B,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,uBAAuB,CAAC,CAAC;YAE1G,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAA;YAE9D,4DAA4D;YAC5D,6CAA6C;YAE7C,0CAA0C;YAC1C,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;gBAC3C,IAAI,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACzD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO;wBAC5B,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;wBAClC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAA;oBAEzB,OAAO;wBACL,MAAM,EAAE,SAAkB;wBAC1B,QAAQ,EAAE,GAAG;wBACb,QAAQ,EAAE,cAAc;wBACxB,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"fetch-preview.js","sourceRoot":"","sources":["../../src/tools/fetch-preview.ts"],"names":[],"mappings":"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"}
|
package/build/tools/fetch.js
CHANGED
|
@@ -191,6 +191,32 @@ export async function handleFetch(args, deps) {
|
|
|
191
191
|
if (deps.isIETFPayment(response.headers)) {
|
|
192
192
|
const ietfChallenge = deps.parseIETFPayment(wwwAuth);
|
|
193
193
|
if (ietfChallenge?.invoice && ietfChallenge.amountSats) {
|
|
194
|
+
// The request's `amount` is only the server's claim; the invoice is
|
|
195
|
+
// what gets paid. Price every check on the invoice itself, and refuse
|
|
196
|
+
// a challenge whose claim and invoice disagree rather than pick one.
|
|
197
|
+
const ietfInvoice = deps.decodeBolt11(ietfChallenge.invoice);
|
|
198
|
+
const claimedHash = ietfChallenge.paymentHash?.toLowerCase();
|
|
199
|
+
if (ietfInvoice.costSats === null ||
|
|
200
|
+
ietfInvoice.costSats !== ietfChallenge.amountSats ||
|
|
201
|
+
(claimedHash !== undefined && claimedHash !== ietfInvoice.paymentHash)) {
|
|
202
|
+
return {
|
|
203
|
+
content: [{
|
|
204
|
+
type: 'text',
|
|
205
|
+
text: JSON.stringify({
|
|
206
|
+
status: 402,
|
|
207
|
+
protocol: 'ietf-payment',
|
|
208
|
+
error: 'Challenge does not match its invoice — refusing to pay',
|
|
209
|
+
claimedSats: ietfChallenge.amountSats,
|
|
210
|
+
invoiceSats: ietfInvoice.costSats,
|
|
211
|
+
message: ietfInvoice.costSats === null
|
|
212
|
+
? 'The invoice has no amount or could not be decoded.'
|
|
213
|
+
: 'The amount or payment hash the server states differs from the invoice it asks you to pay.',
|
|
214
|
+
}, null, 2),
|
|
215
|
+
}],
|
|
216
|
+
isError: true,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
ietfChallenge.paymentHash = ietfInvoice.paymentHash ?? undefined;
|
|
194
220
|
const ietfAutoPay = args.autoPay ?? false;
|
|
195
221
|
if (ietfAutoPay && ietfChallenge.amountSats <= deps.maxAutoPaySats) {
|
|
196
222
|
const ietfWithinLimit = deps.spendTracker.tryRecord(ietfChallenge.amountSats, deps.maxSpendPerMinuteSats);
|
package/build/tools/fetch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/tools/fetch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/tools/fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import type { LnurlcashNoteStore, StoredNote } from '../store/lnurlcash-notes.js';
|
|
1
|
+
import type { LnurlcashNoteStore, StoredNote, SettledMelt } from '../store/lnurlcash-notes.js';
|
|
2
|
+
/** What a reconcile pass turned up that a caller may want to act on. */
|
|
3
|
+
export interface ReconcileReport {
|
|
4
|
+
/**
|
|
5
|
+
* Melts that had already settled by the time we asked again, with the
|
|
6
|
+
* preimage recovered. Empty on a quiet pass. Each one is also written to
|
|
7
|
+
* the store, so nothing depends on the caller reading this.
|
|
8
|
+
*/
|
|
9
|
+
recovered: SettledMelt[];
|
|
10
|
+
}
|
|
2
11
|
/**
|
|
3
12
|
* Note operations shared by the wallet provider (which melts a note to pay a
|
|
4
13
|
* BOLT-11 invoice) and the lnurlcash HTTP rail (which hands a note straight to
|
|
@@ -44,6 +53,8 @@ export interface NoteOpsOptions {
|
|
|
44
53
|
/** Per-request HTTP timeout. */
|
|
45
54
|
httpTimeoutMs?: number;
|
|
46
55
|
fetchImpl?: typeof fetch;
|
|
56
|
+
/** SSRF guard, matching farrier-kit's verifyLud21 hook. */
|
|
57
|
+
urlGuard?: (url: URL) => void | Promise<void>;
|
|
47
58
|
}
|
|
48
59
|
export interface ResolvedNote {
|
|
49
60
|
amountMsat: number;
|
|
@@ -66,7 +77,7 @@ export type NoteProbe = {
|
|
|
66
77
|
export interface NoteOps {
|
|
67
78
|
probeNote(mint: string, secret: string): Promise<NoteProbe>;
|
|
68
79
|
resolveNote(mint: string, secret: string): Promise<ResolvedNote | null>;
|
|
69
|
-
reconcile(): Promise<
|
|
80
|
+
reconcile(): Promise<ReconcileReport>;
|
|
70
81
|
split(parent: StoredNote, amountMsat: number): Promise<StoredNote>;
|
|
71
82
|
}
|
|
72
83
|
/** Appends params to a callback URL that may already carry some. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { generatePreimage, computePaymentHash, fetchJson } from 'farrier-kit';
|
|
1
|
+
import { generatePreimage, computePaymentHash, fetchJson, verifyLud21 } from 'farrier-kit';
|
|
2
2
|
export function isError(res) {
|
|
3
3
|
return typeof res === 'object' && res !== null && res.status === 'ERROR';
|
|
4
4
|
}
|
|
@@ -69,7 +69,8 @@ export function createNoteOps(store, options = {}) {
|
|
|
69
69
|
* the mint still honours means the spend failed and the mint restored it.
|
|
70
70
|
*/
|
|
71
71
|
async function reconcile() {
|
|
72
|
-
|
|
72
|
+
const recovered = [];
|
|
73
|
+
for (const note of store.byState('provisional')) {
|
|
73
74
|
const resolved = await resolveNote(note.mint, note.secret);
|
|
74
75
|
if (resolved) {
|
|
75
76
|
store.confirm(note.secret, resolved.amountMsat);
|
|
@@ -81,6 +82,66 @@ export function createNoteOps(store, options = {}) {
|
|
|
81
82
|
store.remove(note.secret);
|
|
82
83
|
}
|
|
83
84
|
}
|
|
85
|
+
// A melting note is asked about in a different order, and the order is
|
|
86
|
+
// the whole fix. Previously the mint was asked whether it still had the
|
|
87
|
+
// note, and a "no" meant remove: but "no" is exactly what a SETTLED melt
|
|
88
|
+
// looks like, because settling burns the note. The preimage the payment
|
|
89
|
+
// bought went in the bin with it.
|
|
90
|
+
//
|
|
91
|
+
// So the verify URL is consulted FIRST, while the note is still on disk.
|
|
92
|
+
// Only once settlement has been ruled out is the note's own fate asked
|
|
93
|
+
// about, and even then an unrecognised note with an unsettled verify URL
|
|
94
|
+
// is left alone rather than dropped: that is a melt still in flight.
|
|
95
|
+
for (const note of store.byState('melting')) {
|
|
96
|
+
if (note.verifyUrl && note.paymentHashHex) {
|
|
97
|
+
let result;
|
|
98
|
+
try {
|
|
99
|
+
result = await verifyLud21({
|
|
100
|
+
verifyUrl: note.verifyUrl,
|
|
101
|
+
paymentHashHex: note.paymentHashHex,
|
|
102
|
+
fetchImpl: options.fetchImpl,
|
|
103
|
+
timeoutMs: httpTimeoutMs,
|
|
104
|
+
...(options.urlGuard ? { urlGuard: options.urlGuard } : {}),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
// The mint said nothing. Nothing said is not a verdict, and this
|
|
109
|
+
// note is holding a payment that may have landed.
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (result?.settled) {
|
|
113
|
+
if (result.verified && result.preimage) {
|
|
114
|
+
const melt = {
|
|
115
|
+
paymentHashHex: note.paymentHashHex,
|
|
116
|
+
preimage: result.preimage,
|
|
117
|
+
amountMsat: note.amountMsat,
|
|
118
|
+
mint: note.mint,
|
|
119
|
+
settledAt: new Date().toISOString(),
|
|
120
|
+
};
|
|
121
|
+
store.recordSettledMelt(melt);
|
|
122
|
+
recovered.push(melt);
|
|
123
|
+
}
|
|
124
|
+
// Settled either way, so the note is spent and must not come back.
|
|
125
|
+
store.remove(note.secret);
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
// Not settled. If the mint still has the note the melt failed and it
|
|
129
|
+
// is spendable again; if it does not, the payment is still in flight
|
|
130
|
+
// and this note stays put with its URL for the next pass.
|
|
131
|
+
const resolved = await resolveNote(note.mint, note.secret);
|
|
132
|
+
if (resolved)
|
|
133
|
+
store.confirm(note.secret, resolved.amountMsat);
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
// No proof to consult - an older record, or a mint that offered no
|
|
137
|
+
// verify URL. Nothing better than the previous behaviour is available.
|
|
138
|
+
const resolved = await resolveNote(note.mint, note.secret);
|
|
139
|
+
if (resolved)
|
|
140
|
+
store.confirm(note.secret, resolved.amountMsat);
|
|
141
|
+
else
|
|
142
|
+
store.remove(note.secret);
|
|
143
|
+
}
|
|
144
|
+
return { recovered };
|
|
84
145
|
}
|
|
85
146
|
/**
|
|
86
147
|
* Splits `parent` into a note worth exactly `amountMsat` plus change, and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lnurlcash-ops.js","sourceRoot":"","sources":["../../src/wallet/lnurlcash-ops.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"lnurlcash-ops.js","sourceRoot":"","sources":["../../src/wallet/lnurlcash-ops.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAgC1F,MAAM,UAAU,OAAO,CAAC,GAAY;IAClC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAK,GAAkB,CAAC,MAAM,KAAK,OAAO,CAAA;AAC1F,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;CAAG;AAEzC;;;;;GAKG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;CAAG;AAiCtC,MAAM,uBAAuB,GAAG,KAAK,CAAA;AAErC,oEAAoE;AACpE,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,MAA8B;IACtE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;IACzB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACvE,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;AACvB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,IAAwD;IAC9E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACvC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IACvD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAyB,EAAE,UAA0B,EAAE;IACnF,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,uBAAuB,CAAA;IAEtE,MAAM,GAAG,GAAG,KAAK,EAAK,GAAW,EAAc,EAAE,CAC/C,SAAS,CAAI,GAAG,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IAE/E,yEAAyE;IACzE,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,MAAc;QACnD,IAAI,GAAiC,CAAA;QACrC,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,GAAG,CAA+B,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAC5G,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;QAC7C,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,eAAe,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAChG,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;QACzC,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAA;IACxF,CAAC;IAED;;;OAGG;IACH,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,MAAc;QACrD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC3C,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IACrC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,UAAU,SAAS;QACtB,MAAM,SAAS,GAAkB,EAAE,CAAA;QAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YAC1D,IAAI,QAAQ,EAAE,CAAC;gBACb,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;gBAC/C,kEAAkE;gBAClE,IAAI,IAAI,CAAC,MAAM;oBAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC5C,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,wEAAwE;QACxE,yEAAyE;QACzE,wEAAwE;QACxE,kCAAkC;QAClC,EAAE;QACF,yEAAyE;QACzE,uEAAuE;QACvE,yEAAyE;QACzE,qEAAqE;QACrE,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC1C,IAAI,MAAM,CAAA;gBACV,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,WAAW,CAAC;wBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,cAAc,EAAE,IAAI,CAAC,cAAc;wBACnC,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,SAAS,EAAE,aAAa;wBACxB,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC5D,CAAC,CAAA;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,iEAAiE;oBACjE,kDAAkD;oBAClD,SAAQ;gBACV,CAAC;gBAED,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;oBACpB,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;wBACvC,MAAM,IAAI,GAAgB;4BACxB,cAAc,EAAE,IAAI,CAAC,cAAc;4BACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;4BACzB,UAAU,EAAE,IAAI,CAAC,UAAU;4BAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;yBACpC,CAAA;wBACD,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;wBAC7B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACtB,CAAC;oBACD,mEAAmE;oBACnE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBACzB,SAAQ;gBACV,CAAC;gBAED,qEAAqE;gBACrE,qEAAqE;gBACrE,0DAA0D;gBAC1D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC1D,IAAI,QAAQ;oBAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;gBAC7D,SAAQ;YACV,CAAC;YAED,mEAAmE;YACnE,uEAAuE;YACvE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YAC1D,IAAI,QAAQ;gBAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;;gBACxD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAChC,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,CAAA;IACtB,CAAC;IAED;;;;;OAKG;IACH,KAAK,UAAU,KAAK,CAAC,MAAkB,EAAE,UAAkB;QACzD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC3B,MAAM,IAAI,QAAQ,CAAC,iCAAiC,CAAC,CAAA;QACvD,CAAC;QAED,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAA;QACpC,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAA;QACvC,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAExC,0EAA0E;QAC1E,2EAA2E;QAC3E,yEAAyE;QACzE,KAAK,CAAC,OAAO,CAAC;YACZ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;YAC1G,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;SACjH,CAAC,CAAA;QAEF,IAAI,GAA4B,CAAA;QAChC,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,GAAG,CAA0B,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBACtE,EAAE,EAAE,MAAM,CAAC,MAAM;gBACjB,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC;gBAC1B,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC;gBAChC,EAAE,EAAE,kBAAkB,CAAC,YAAY,CAAC;aACrC,CAAC,CAAC,CAAA;QACL,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;YACxE,sDAAsD;YACtD,MAAM,IAAI,WAAW,CAAC,kEAAkE,CAAC,CAAA;QAC3F,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,wEAAwE;YACxE,KAAK,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAA;YAC3C,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,IAAI,wBAAwB,CAAC,CAAA;QAC/D,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC3B,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QAEpC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QAC3D,IAAI,MAAM;YAAE,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;;YACrD,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAE/B,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAE,CAAA;IAC/B,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AACrD,CAAC"}
|
|
@@ -11,7 +11,12 @@ function sleep(ms) {
|
|
|
11
11
|
}
|
|
12
12
|
export function createLnurlcashWallet(store, options = {}, lock) {
|
|
13
13
|
const cfg = { ...DEFAULTS, ...options };
|
|
14
|
-
const ops = createNoteOps(store, {
|
|
14
|
+
const ops = createNoteOps(store, {
|
|
15
|
+
httpTimeoutMs: cfg.httpTimeoutMs,
|
|
16
|
+
fetchImpl: cfg.fetchImpl,
|
|
17
|
+
// reconcile polls verify URLs of its own now, so the guard has to reach it
|
|
18
|
+
...(cfg.urlGuard ? { urlGuard: cfg.urlGuard } : {}),
|
|
19
|
+
});
|
|
15
20
|
let internalLock = Promise.resolve();
|
|
16
21
|
const defaultLock = (fn) => {
|
|
17
22
|
const result = internalLock.catch(() => { }).then(() => fn());
|
|
@@ -60,6 +65,12 @@ export function createLnurlcashWallet(store, options = {}, lock) {
|
|
|
60
65
|
reason: 'Mint accepted the melt but offers no LUD-21 verify URL, so settlement cannot be proven.',
|
|
61
66
|
};
|
|
62
67
|
}
|
|
68
|
+
// Persisted before the first poll, not after the last one. A melt that
|
|
69
|
+
// settles late still spends the note, and the verify URL is the only
|
|
70
|
+
// route back to the preimage it bought. Keeping it in a local variable
|
|
71
|
+
// meant a timeout - or a crash, or the process being killed - threw the
|
|
72
|
+
// credential away while the sats were already gone.
|
|
73
|
+
store.setMeltProof(note.secret, res.verify, paymentHashHex);
|
|
63
74
|
const deadline = Date.now() + cfg.meltTimeoutMs;
|
|
64
75
|
for (;;) {
|
|
65
76
|
let result;
|
|
@@ -76,10 +87,20 @@ export function createLnurlcashWallet(store, options = {}, lock) {
|
|
|
76
87
|
result = undefined;
|
|
77
88
|
}
|
|
78
89
|
if (result?.settled) {
|
|
79
|
-
store.remove(note.secret);
|
|
80
90
|
if (result.verified && result.preimage) {
|
|
91
|
+
// Recorded before the note goes, so a crash between the two lines
|
|
92
|
+
// cannot lose what the payment bought.
|
|
93
|
+
store.recordSettledMelt({
|
|
94
|
+
paymentHashHex,
|
|
95
|
+
preimage: result.preimage,
|
|
96
|
+
amountMsat: note.amountMsat,
|
|
97
|
+
mint: note.mint,
|
|
98
|
+
settledAt: new Date().toISOString(),
|
|
99
|
+
});
|
|
100
|
+
store.remove(note.secret);
|
|
81
101
|
return { paid: true, preimage: result.preimage, method: METHOD };
|
|
82
102
|
}
|
|
103
|
+
store.remove(note.secret);
|
|
83
104
|
// Settled per the mint, but unproven. Same stance as the NWC provider:
|
|
84
105
|
// the note is spent either way, so it must not go back in the store.
|
|
85
106
|
return {
|
|
@@ -94,7 +115,8 @@ export function createLnurlcashWallet(store, options = {}, lock) {
|
|
|
94
115
|
paid: false,
|
|
95
116
|
method: METHOD,
|
|
96
117
|
outcome: 'unknown',
|
|
97
|
-
|
|
118
|
+
verifyUrl: res.verify,
|
|
119
|
+
reason: 'Melt did not settle before the timeout. The note is held with its verify URL, so a later reconcile can still recover the preimage if the payment lands.',
|
|
98
120
|
};
|
|
99
121
|
}
|
|
100
122
|
await sleep(cfg.meltPollMs);
|
|
@@ -111,8 +133,20 @@ export function createLnurlcashWallet(store, options = {}, lock) {
|
|
|
111
133
|
if (needMsat === null) {
|
|
112
134
|
return { paid: false, method: METHOD, reason: 'Amountless BOLT-11 invoices require an explicit amount and are refused' };
|
|
113
135
|
}
|
|
136
|
+
// A reconcile can turn up a payment that landed after an earlier attempt
|
|
137
|
+
// gave up on it. That preimage is a credential somebody paid for, so it
|
|
138
|
+
// is said out loud here rather than only filed: the caller is a wallet
|
|
139
|
+
// asking to spend, and "by the way, that payment you wrote off did go
|
|
140
|
+
// through" changes what they do next.
|
|
141
|
+
let recoveredNote = '';
|
|
114
142
|
try {
|
|
115
|
-
await ops.reconcile();
|
|
143
|
+
const report = await ops.reconcile();
|
|
144
|
+
if (report.recovered.length > 0) {
|
|
145
|
+
const each = report.recovered
|
|
146
|
+
.map(m => `${m.paymentHashHex.slice(0, 12)}… preimage ${m.preimage}`)
|
|
147
|
+
.join('; ');
|
|
148
|
+
recoveredNote = ` Also recovered ${report.recovered.length} earlier melt(s) that settled after being written off: ${each}.`;
|
|
149
|
+
}
|
|
116
150
|
}
|
|
117
151
|
catch { /* best effort; selection below simply sees fewer notes */ }
|
|
118
152
|
const live = store.live();
|
|
@@ -131,7 +165,10 @@ export function createLnurlcashWallet(store, options = {}, lock) {
|
|
|
131
165
|
const exact = candidate.amountMsat === needMsat
|
|
132
166
|
? candidate
|
|
133
167
|
: await ops.split(candidate, needMsat);
|
|
134
|
-
|
|
168
|
+
const result = await melt(exact, invoice, decoded.paymentHashHex);
|
|
169
|
+
return recoveredNote
|
|
170
|
+
? { ...result, reason: `${result.reason ?? 'Paid.'}${recoveredNote}` }
|
|
171
|
+
: result;
|
|
135
172
|
}
|
|
136
173
|
catch (error) {
|
|
137
174
|
if (error instanceof NoteGone) {
|
|
@@ -150,7 +187,7 @@ export function createLnurlcashWallet(store, options = {}, lock) {
|
|
|
150
187
|
return {
|
|
151
188
|
paid: false,
|
|
152
189
|
method: METHOD,
|
|
153
|
-
reason: `No note large enough: need ${needMsat} msat, largest available is ${best} msat${staleNote}`,
|
|
190
|
+
reason: `No note large enough: need ${needMsat} msat, largest available is ${best} msat${staleNote}${recoveredNote}`,
|
|
154
191
|
};
|
|
155
192
|
}
|
|
156
193
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lnurlcash.js","sourceRoot":"","sources":["../../src/wallet/lnurlcash.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,SAAS,GACV,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,aAAa,EACb,WAAW,EACX,OAAO,EACP,WAAW,EACX,QAAQ,GAGT,MAAM,oBAAoB,CAAA;AAE3B,MAAM,MAAM,GAAG,WAAoB,CAAA;AAcnC,MAAM,QAAQ,GAAG;IACf,aAAa,EAAE,MAAM;IACrB,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;CACrB,CAAA;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAyB,EACzB,UAAkC,EAAE,EACpC,IAA8C;IAE9C,MAAM,GAAG,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAA;IACvC,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"lnurlcash.js","sourceRoot":"","sources":["../../src/wallet/lnurlcash.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,SAAS,GACV,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,aAAa,EACb,WAAW,EACX,OAAO,EACP,WAAW,EACX,QAAQ,GAGT,MAAM,oBAAoB,CAAA;AAE3B,MAAM,MAAM,GAAG,WAAoB,CAAA;AAcnC,MAAM,QAAQ,GAAG;IACf,aAAa,EAAE,MAAM;IACrB,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;CACrB,CAAA;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAyB,EACzB,UAAkC,EAAE,EACpC,IAA8C;IAE9C,MAAM,GAAG,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAA;IACvC,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,EAAE;QAC/B,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,2EAA2E;QAC3E,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,CAAC,CAAA;IAEF,IAAI,YAAY,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAA;IACtD,MAAM,WAAW,GAAG,CAAI,EAAoB,EAAc,EAAE;QAC1D,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QAC5D,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACrC,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IACD,MAAM,QAAQ,GAAG,IAAI,IAAI,WAAW,CAAA;IAEpC,MAAM,GAAG,GAAG,KAAK,EAAK,GAAW,EAAc,EAAE,CAC/C,SAAS,CAAI,GAAG,EAAE;QAChB,SAAS,EAAE,GAAG,CAAC,aAAa;QAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC,CAAA;IAEJ,mFAAmF;IACnF,KAAK,UAAU,IAAI,CAAC,IAAgB,EAAE,OAAe,EAAE,cAAsB;QAC3E,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACzB,MAAM,IAAI,QAAQ,CAAC,iCAAiC,CAAC,CAAA;QACvD,CAAC;QAED,wEAAwE;QACxE,8DAA8D;QAC9D,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAEtC,IAAI,GAA4B,CAAA;QAChC,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,GAAG,CAA0B,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;QAC5G,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,SAAS;gBAClB,MAAM,EAAE,mGAAmG;aAC5G,CAAA;QACH,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,gEAAgE;YAChE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YACnC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,uBAAuB,EAAE,CAAA;QACvF,CAAC;QAED,4EAA4E;QAC5E,uEAAuE;QACvE,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,SAAS;gBAClB,MAAM,EAAE,yFAAyF;aAClG,CAAA;QACH,CAAC;QAED,uEAAuE;QACvE,qEAAqE;QACrE,uEAAuE;QACvE,wEAAwE;QACxE,oDAAoD;QACpD,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;QAE3D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,aAAa,CAAA;QAC/C,SAAS,CAAC;YACR,IAAI,MAAM,CAAA;YACV,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,WAAW,CAAC;oBACzB,SAAS,EAAE,GAAG,CAAC,MAAM;oBACrB,cAAc;oBACd,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,SAAS,EAAE,GAAG,CAAC,aAAa;oBAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;iBACvB,CAAC,CAAA;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,GAAG,SAAS,CAAA;YACpB,CAAC;YAED,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpB,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACvC,kEAAkE;oBAClE,uCAAuC;oBACvC,KAAK,CAAC,iBAAiB,CAAC;wBACtB,cAAc;wBACd,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBACpC,CAAC,CAAA;oBACF,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBACzB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;gBAClE,CAAC;gBACD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBACzB,uEAAuE;gBACvE,qEAAqE;gBACrE,OAAO;oBACL,IAAI,EAAE,KAAK;oBACX,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,SAAS;oBAClB,MAAM,EAAE,qEAAqE;iBAC9E,CAAA;YACH,CAAC;YAED,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC3B,OAAO;oBACL,IAAI,EAAE,KAAK;oBACX,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,SAAS;oBAClB,SAAS,EAAE,GAAG,CAAC,MAAM;oBACrB,MAAM,EACJ,yJAAyJ;iBAC5J,CAAA;YACH,CAAC;YACD,MAAM,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,QAA4B;QACvE,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAA;QAC3E,CAAC;QACD,2EAA2E;QAC3E,uEAAuE;QACvE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAA;QAC3C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,wEAAwE,EAAE,CAAA;QAC1H,CAAC;QAED,yEAAyE;QACzE,wEAAwE;QACxE,uEAAuE;QACvE,sEAAsE;QACtE,sCAAsC;QACtC,IAAI,aAAa,GAAG,EAAE,CAAA;QACtB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,EAAE,CAAA;YACpC,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS;qBAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;qBACpE,IAAI,CAAC,IAAI,CAAC,CAAA;gBACb,aAAa,GAAG,mBAAmB,MAAM,CAAC,SAAS,CAAC,MAAM,0DAA0D,IAAI,GAAG,CAAA;YAC7H,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,0DAA0D,CAAC,CAAC;QAEtE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QAEzB,4EAA4E;QAC5E,0EAA0E;QAC1E,2EAA2E;QAC3E,yEAAyE;QACzE,+DAA+D;QAC/D,MAAM,UAAU,GAAG;YACjB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC;YAC9C,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;SACzF,CAAA;QAED,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,KAAK,QAAQ;oBAC7C,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;gBACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;gBACjE,OAAO,aAAa;oBAClB,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,GAAG,aAAa,EAAE,EAAE;oBACtE,CAAC,CAAC,MAAM,CAAA;YACZ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;oBAAC,IAAI,EAAE,CAAC;oBAAC,SAAQ;gBAAC,CAAC;gBACnD,OAAO;oBACL,IAAI,EAAE,KAAK;oBACX,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,8CAA8C;iBACtG,CAAA;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;QAC5E,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,oEAAoE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC/G,OAAO;YACL,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,8BAA8B,QAAQ,+BAA+B,IAAI,QAAQ,SAAS,GAAG,aAAa,EAAE;SACrH,CAAA;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,MAAM;QACd,IAAI,SAAS;YACX,OAAO,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;QACrC,CAAC;QACD,UAAU,CAAC,OAAe,EAAE,OAA2B;YACrD,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;QACvD,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/build/wallet/types.d.ts
CHANGED
|
@@ -9,6 +9,12 @@ export interface PaymentResult {
|
|
|
9
9
|
reason?: string;
|
|
10
10
|
/** The request may have executed but settlement could not be proven. */
|
|
11
11
|
outcome?: 'unknown';
|
|
12
|
+
/**
|
|
13
|
+
* Where settlement can still be proven later, for an `unknown` outcome
|
|
14
|
+
* that has one. A caller holding this can ask again rather than treating
|
|
15
|
+
* the payment as lost; reconcile also polls it on its own.
|
|
16
|
+
*/
|
|
17
|
+
verifyUrl?: string;
|
|
12
18
|
}
|
|
13
19
|
export interface WalletProvider {
|
|
14
20
|
method: WalletMethod;
|
package/llms-full.txt
CHANGED
|
@@ -386,7 +386,8 @@ HTTP transport includes:
|
|
|
386
386
|
| `SSRF_ALLOW_PRIVATE` | false | Allow requests to private IP ranges. Local development only. |
|
|
387
387
|
| `NODE_TLS_REJECT_UNAUTHORIZED` | — | Warning emitted if set to "0" (disables TLS validation). |
|
|
388
388
|
| `TRANSPORT_PREFERENCE` | `onion,hns,https,http` | Preferred transport order for multi-URL services. |
|
|
389
|
-
| `TOR_PROXY` | — | SOCKS5 proxy for .onion
|
|
389
|
+
| `TOR_PROXY` | — | SOCKS5 proxy for .onion requests only (e.g. `socks5h://127.0.0.1:9050`). |
|
|
390
|
+
| `SOCKS_PROXY` | — | SOCKS5 proxy for every paid-API request, names resolved by the proxy. Set this or `TOR_PROXY`, not both. Wallet and relay traffic is not proxied. |
|
|
390
391
|
| `HNS_GATEWAY_URL` | `https://query.hdns.io/` | DNS-over-HTTPS gateway for Handshake (HNS) name resolution. |
|
|
391
392
|
|
|
392
393
|
## Multi-Transport Endpoints
|
package/llms.txt
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
402-mcp is protocol-loyal: it works with any L402-compliant server (toll-booth, Aperture, or any conforming implementation), not just a specific vendor's stack. Bonus features activate automatically when talking to a toll-booth server. Three payer methods are supported — NWC (Nostr Wallet Connect), Cashu ecash, and human-in-the-loop — tried in that priority order so the agent picks the most autonomous option available.
|
|
6
6
|
|
|
7
|
-
Agents can also discover paid APIs without knowing URLs upfront. The `l402-search` tool queries Nostr relays for kind 31402 service announcements — a decentralised registry of L402-enabled services. Discovered services may advertise multiple transport endpoints (clearnet HTTPS, Tor .onion, Handshake HNS domains). The agent automatically selects the best available transport and falls back through alternatives on connection failure —
|
|
7
|
+
Agents can also discover paid APIs without knowing URLs upfront. The `l402-search` tool queries Nostr relays for kind 31402 service announcements — a decentralised registry of L402-enabled services. Discovered services may advertise multiple transport endpoints (clearnet HTTPS, Tor .onion, Handshake HNS domains). The agent automatically selects the best available transport and falls back through alternatives on connection failure — .onion endpoints need `TOR_PROXY` or `SOCKS_PROXY`; clearnet and HNS need no configuration.
|
|
8
8
|
|
|
9
9
|
## Getting Started
|
|
10
10
|
|
|
@@ -51,7 +51,8 @@ Add to your MCP configuration:
|
|
|
51
51
|
| `TRANSPORT` | `stdio` | Transport mode: `stdio` or `http` |
|
|
52
52
|
| `PORT` | 3402 | HTTP server port (when `TRANSPORT=http`) |
|
|
53
53
|
| `TRANSPORT_PREFERENCE` | `onion,hns,https,http` | Preferred transport order for multi-URL services |
|
|
54
|
-
| `TOR_PROXY` | — | SOCKS5 proxy for .onion
|
|
54
|
+
| `TOR_PROXY` | — | SOCKS5 proxy for .onion requests only (e.g. `socks5h://127.0.0.1:9050`) |
|
|
55
|
+
| `SOCKS_PROXY` | — | SOCKS5 proxy for every paid-API request, names resolved by the proxy. Set this or `TOR_PROXY`, not both |
|
|
55
56
|
| `HNS_GATEWAY_URL` | `https://query.hdns.io/` | DNS-over-HTTPS gateway for Handshake name resolution |
|
|
56
57
|
|
|
57
58
|
## Key Concepts
|
|
@@ -139,7 +140,7 @@ The human stays in control of three things: the safety caps, which payment metho
|
|
|
139
140
|
|
|
140
141
|
## Security
|
|
141
142
|
|
|
142
|
-
- **SSRF protection** — all outbound requests pass through an SSRF guard that blocks private/internal IP ranges by default. Handshake names are resolved via DNS-over-HTTPS with the resolved IP validated against blocked ranges. .onion addresses bypass DNS and route through the configured SOCKS proxy. Set `SSRF_ALLOW_PRIVATE=true` only for local development.
|
|
143
|
+
- **SSRF protection** — all outbound requests pass through an SSRF guard that blocks private/internal IP ranges by default. Handshake names are resolved via DNS-over-HTTPS with the resolved IP validated against blocked ranges. .onion addresses bypass DNS and route through the configured SOCKS proxy. With `SOCKS_PROXY`, no host name is resolved locally; IP literals and local names are still refused. Wallet and relay traffic is not proxied. Set `SSRF_ALLOW_PRIVATE=true` only for local development.
|
|
143
144
|
- **Credential encryption** — stored credentials are encrypted with AES-256-GCM. The encryption key is stored in the OS keychain when available, falling back to a file-based key with a warning.
|
|
144
145
|
- **Settlement proof** — NWC responses are authenticated with NIP-44 v2 and signed events, then the returned preimage is verified against the challenged BOLT-11 payment hash before storage.
|
|
145
146
|
- **Spend tracking** — atomic `tryRecord()` prevents TOCTOU race conditions in concurrent spend checks.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "402-mcp",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.2",
|
|
4
4
|
"mcpName": "dev.forgesworn/402-mcp",
|
|
5
5
|
"description": "L402 + x402 client MCP - AI agents discover, pay for, and consume any payment-gated API",
|
|
6
6
|
"type": "module",
|
|
@@ -37,15 +37,16 @@
|
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@cashu/cashu-ts": "^3.6.1",
|
|
40
|
-
"@forgesworn/nwc-kit": "0.1.
|
|
40
|
+
"@forgesworn/nwc-kit": "0.1.7",
|
|
41
41
|
"@modelcontextprotocol/ext-apps": "^1.3.1",
|
|
42
42
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
43
43
|
"@scure/base": "^2.0.0",
|
|
44
44
|
"cors": "^2.8.5",
|
|
45
45
|
"express": "^5.2.1",
|
|
46
|
-
"farrier-kit": "1.1.
|
|
46
|
+
"farrier-kit": "1.1.3",
|
|
47
47
|
"nostr-tools": "^2.12.0",
|
|
48
48
|
"qrcode": "^1.5.4",
|
|
49
|
+
"undici": "^7.29.1",
|
|
49
50
|
"zod": "^4.3.6"
|
|
50
51
|
},
|
|
51
52
|
"optionalDependencies": {
|
|
@@ -53,7 +54,7 @@
|
|
|
53
54
|
},
|
|
54
55
|
"devDependencies": {
|
|
55
56
|
"@eslint/js": "^10.0.1",
|
|
56
|
-
"@forgesworn/toll-booth": "6.
|
|
57
|
+
"@forgesworn/toll-booth": "6.2.3",
|
|
57
58
|
"@types/cors": "^2.8.17",
|
|
58
59
|
"@types/express": "^5.0.0",
|
|
59
60
|
"@types/node": "^24.12.0",
|