mppx 0.6.11 → 0.6.12
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/CHANGELOG.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Charge.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Charge.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,KAAK,IAAI,MAAM,sCAAsC,CAAA;AACjE,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AAEtC,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAIjD,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAA;AAGpD,OAAO,KAAK,KAAK,KAAK,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AAGxC;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,KAAK,CAAC,UAAU,SAAS,MAAM,CAAC,UAAU,EAC/D,UAAU,GAAE,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAGpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Charge.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Charge.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,KAAK,IAAI,MAAM,sCAAsC,CAAA;AACjE,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AAEtC,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAIjD,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAA;AAGpD,OAAO,KAAK,KAAK,KAAK,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AAGxC;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,KAAK,CAAC,UAAU,SAAS,MAAM,CAAC,UAAU,EAC/D,UAAU,GAAE,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAGpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAiXF;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,YAAY,GAAG;QAAE,CAAC,GAAG,EAAE,eAAe,MAAM,EAAE,GAAG,MAAM,CAAA;KAAE,CAAA;IAE9D,KAAK,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC,CAAA;IAElG,KAAK,UAAU,GAAG;QAChB,6EAA6E;QAC7E,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACxC;;;;;;;WAOG;QACH,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;QAC3C,oBAAoB;QACpB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QAC7B;;;;;;;;;;;;;WAaG;QACH,KAAK,CAAC,EAAE,KAAK,CAAC,WAAW,GAAG,SAAS,CAAA;QACrC;;;;;;;;;;WAUG;QACH,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KAC1C,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,GAC/B,OAAO,CAAC,OAAO,CAAC,UAAU,GAC1B,QAAQ,CAAA;IAEV,KAAK,cAAc,CAAC,UAAU,SAAS,UAAU,IAAI,KAAK,CAAC,cAAc,CACvE,UAAU,EACV,QAAQ,CACT,GAAG;QACF,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IAED,KAAK,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;CAC/C"}
|
|
@@ -233,7 +233,16 @@ export function charge(parameters = {}) {
|
|
|
233
233
|
const calls = (transaction.calls ?? []);
|
|
234
234
|
const transfers = getExpectedTransfers({ amount, memo, methodDetails, recipient });
|
|
235
235
|
const isFeePayerTx = !!(feePayer || feePayerUrl) && methodDetails?.feePayer !== false;
|
|
236
|
-
assertTransferCalls(calls, {
|
|
236
|
+
const matchedCalls = assertTransferCalls(calls, {
|
|
237
|
+
currency,
|
|
238
|
+
exactCount: isFeePayerTx,
|
|
239
|
+
transfers,
|
|
240
|
+
});
|
|
241
|
+
if (!memo)
|
|
242
|
+
assertChallengeBoundCallMemo(matchedCalls, {
|
|
243
|
+
challengeId: challenge.id,
|
|
244
|
+
realm: challenge.realm,
|
|
245
|
+
});
|
|
237
246
|
if (isFeePayerTx)
|
|
238
247
|
FeePayer.validateCalls(transaction.calls, { amount, currency, recipient });
|
|
239
248
|
const expectedFeeToken = defaults.currency[chainId];
|
|
@@ -266,11 +275,16 @@ export function charge(parameters = {}) {
|
|
|
266
275
|
const receipt = await sendRawTransactionSync(client, {
|
|
267
276
|
serializedTransaction: serializedTransaction_final,
|
|
268
277
|
});
|
|
269
|
-
assertTransferLogs(receipt, {
|
|
278
|
+
const matchedLogs = assertTransferLogs(receipt, {
|
|
270
279
|
currency,
|
|
271
280
|
sender: transaction.from,
|
|
272
281
|
transfers,
|
|
273
282
|
});
|
|
283
|
+
if (!memo)
|
|
284
|
+
assertChallengeBoundMemo(matchedLogs, {
|
|
285
|
+
challengeId: challenge.id,
|
|
286
|
+
realm: challenge.realm,
|
|
287
|
+
});
|
|
274
288
|
// Post-broadcast dedup: catch malleable input variants
|
|
275
289
|
// (different serialized bytes, same underlying tx) that
|
|
276
290
|
// bypass the pre-broadcast check. Skip if the broadcast
|
|
@@ -343,7 +357,6 @@ function assertTransferCalls(calls, parameters) {
|
|
|
343
357
|
expectedCalls: String(parameters.transfers.length),
|
|
344
358
|
actualCalls: String(transferCalls.length),
|
|
345
359
|
});
|
|
346
|
-
const used = new Set();
|
|
347
360
|
// Match memo-specific transfers before wildcards to avoid greedy
|
|
348
361
|
// consumption of memo-bearing calls by allowAnyMemo entries.
|
|
349
362
|
const sorted = [...parameters.transfers].sort((a, b) => {
|
|
@@ -353,6 +366,8 @@ function assertTransferCalls(calls, parameters) {
|
|
|
353
366
|
return 1;
|
|
354
367
|
return 0;
|
|
355
368
|
});
|
|
369
|
+
const used = new Set();
|
|
370
|
+
const matched = [];
|
|
356
371
|
for (const expected of sorted) {
|
|
357
372
|
const matchIndex = transferCalls.findIndex((call, index) => {
|
|
358
373
|
if (used.has(index))
|
|
@@ -379,7 +394,9 @@ function assertTransferCalls(calls, parameters) {
|
|
|
379
394
|
});
|
|
380
395
|
}
|
|
381
396
|
used.add(matchIndex);
|
|
397
|
+
matched.push(decodeTransferCall(transferCalls[matchIndex], parameters.currency));
|
|
382
398
|
}
|
|
399
|
+
return matched;
|
|
383
400
|
}
|
|
384
401
|
function getTransferCalls(calls) {
|
|
385
402
|
const selectors = calls.map((call) => call.data?.slice(0, 10));
|
|
@@ -583,6 +600,18 @@ function assertChallengeBoundMemo(matchedLogs, parameters) {
|
|
|
583
600
|
if (!bound)
|
|
584
601
|
throw new MismatchError('Payment verification failed: memo is not bound to this challenge.', {});
|
|
585
602
|
}
|
|
603
|
+
function assertChallengeBoundCallMemo(matchedCalls, parameters) {
|
|
604
|
+
const bound = matchedCalls.some((call) => {
|
|
605
|
+
if (!call.memo)
|
|
606
|
+
return false;
|
|
607
|
+
const memo = call.memo;
|
|
608
|
+
if (!Attribution.verifyServer(memo, parameters.realm))
|
|
609
|
+
return false;
|
|
610
|
+
return Attribution.verifyChallengeBinding(memo, parameters.challengeId);
|
|
611
|
+
});
|
|
612
|
+
if (!bound)
|
|
613
|
+
throw new MismatchError('Payment verification failed: memo is not bound to this challenge.', {});
|
|
614
|
+
}
|
|
586
615
|
/** @internal */
|
|
587
616
|
class MismatchError extends PaymentError {
|
|
588
617
|
name = 'MismatchError';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Charge.js","sourceRoot":"","sources":["../../../src/tempo/server/Charge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Charge.js","sourceRoot":"","sources":["../../../src/tempo/server/Charge.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -890,6 +890,7 @@ describe('tempo', () => {
|
|
|
890
890
|
const splits = challenge.request.methodDetails?.splits ?? []
|
|
891
891
|
const primaryAmount =
|
|
892
892
|
BigInt(challenge.request.amount) - BigInt(splits[0]!.amount) - BigInt(splits[1]!.amount)
|
|
893
|
+
const memo = Attribution.encode({ challengeId: challenge.id, serverId: challenge.realm })
|
|
893
894
|
|
|
894
895
|
const prepared = await prepareTransactionRequest(client, {
|
|
895
896
|
account: accounts[1]!,
|
|
@@ -901,6 +902,7 @@ describe('tempo', () => {
|
|
|
901
902
|
}),
|
|
902
903
|
Actions.token.transfer.call({
|
|
903
904
|
amount: primaryAmount,
|
|
905
|
+
memo: memo as Hex.Hex,
|
|
904
906
|
to: challenge.request.recipient as Hex.Hex,
|
|
905
907
|
token: challenge.request.currency as Hex.Hex,
|
|
906
908
|
}),
|
|
@@ -2139,6 +2141,7 @@ describe('tempo', () => {
|
|
|
2139
2141
|
const splits = challenge.request.methodDetails?.splits ?? []
|
|
2140
2142
|
const primaryAmount =
|
|
2141
2143
|
BigInt(challenge.request.amount) - BigInt(splits[0]!.amount) - BigInt(splits[1]!.amount)
|
|
2144
|
+
const memo = Attribution.encode({ challengeId: challenge.id, serverId: challenge.realm })
|
|
2142
2145
|
|
|
2143
2146
|
const prepared = await prepareTransactionRequest(client, {
|
|
2144
2147
|
account: accounts[1]!,
|
|
@@ -2150,6 +2153,7 @@ describe('tempo', () => {
|
|
|
2150
2153
|
}),
|
|
2151
2154
|
Actions.token.transfer.call({
|
|
2152
2155
|
amount: primaryAmount,
|
|
2156
|
+
memo: memo as Hex.Hex,
|
|
2153
2157
|
to: challenge.request.recipient as Hex.Hex,
|
|
2154
2158
|
token: challenge.request.currency as Hex.Hex,
|
|
2155
2159
|
}),
|
|
@@ -3640,6 +3644,147 @@ describe('tempo', () => {
|
|
|
3640
3644
|
httpServer.close()
|
|
3641
3645
|
})
|
|
3642
3646
|
|
|
3647
|
+
test('server rejects transaction with wrong challenge nonce (stolen signed tx)', async () => {
|
|
3648
|
+
const chargeServer = Mppx_server.create({
|
|
3649
|
+
methods: [
|
|
3650
|
+
tempo_server.charge({
|
|
3651
|
+
getClient() {
|
|
3652
|
+
return client
|
|
3653
|
+
},
|
|
3654
|
+
currency: asset,
|
|
3655
|
+
account: accounts[0],
|
|
3656
|
+
store: Store.memory(),
|
|
3657
|
+
}),
|
|
3658
|
+
],
|
|
3659
|
+
realm,
|
|
3660
|
+
secretKey,
|
|
3661
|
+
})
|
|
3662
|
+
|
|
3663
|
+
const mppx = Mppx_client.create({
|
|
3664
|
+
polyfill: false,
|
|
3665
|
+
methods: [
|
|
3666
|
+
tempo_client({
|
|
3667
|
+
account: accounts[1],
|
|
3668
|
+
mode: 'pull',
|
|
3669
|
+
getClient() {
|
|
3670
|
+
return client
|
|
3671
|
+
},
|
|
3672
|
+
}),
|
|
3673
|
+
],
|
|
3674
|
+
})
|
|
3675
|
+
|
|
3676
|
+
const httpServer = await Http.createServer(async (req, res) => {
|
|
3677
|
+
const result = await Mppx_server.toNodeListener(
|
|
3678
|
+
chargeServer.charge({ amount: '1', currency: asset, recipient: accounts[0].address }),
|
|
3679
|
+
)(req, res)
|
|
3680
|
+
if (result.status === 402) return
|
|
3681
|
+
res.end('OK')
|
|
3682
|
+
})
|
|
3683
|
+
|
|
3684
|
+
const [challengeResponse1, challengeResponse2] = await Promise.all([
|
|
3685
|
+
fetch(httpServer.url),
|
|
3686
|
+
fetch(httpServer.url),
|
|
3687
|
+
])
|
|
3688
|
+
expect(challengeResponse1.status).toBe(402)
|
|
3689
|
+
expect(challengeResponse2.status).toBe(402)
|
|
3690
|
+
|
|
3691
|
+
const credential1 = await mppx.createCredential(challengeResponse1)
|
|
3692
|
+
const decoded1 = Credential.deserialize<{
|
|
3693
|
+
signature: string
|
|
3694
|
+
type: 'transaction'
|
|
3695
|
+
}>(credential1)
|
|
3696
|
+
const challenge2 = Challenge.fromResponse(challengeResponse2, {
|
|
3697
|
+
methods: [tempo_client.charge()],
|
|
3698
|
+
})
|
|
3699
|
+
|
|
3700
|
+
const replayCredential = Credential.serialize(
|
|
3701
|
+
Credential.from({
|
|
3702
|
+
challenge: challenge2,
|
|
3703
|
+
payload: decoded1.payload,
|
|
3704
|
+
}),
|
|
3705
|
+
)
|
|
3706
|
+
|
|
3707
|
+
const replayResponse = await fetch(httpServer.url, {
|
|
3708
|
+
headers: { Authorization: replayCredential },
|
|
3709
|
+
})
|
|
3710
|
+
expect(replayResponse.status).toBe(402)
|
|
3711
|
+
const body = (await replayResponse.json()) as { detail: string }
|
|
3712
|
+
expect(body.detail).toContain('memo is not bound to this challenge')
|
|
3713
|
+
|
|
3714
|
+
httpServer.close()
|
|
3715
|
+
})
|
|
3716
|
+
|
|
3717
|
+
test('server rejects optimistic transaction with wrong challenge nonce', async () => {
|
|
3718
|
+
const chargeServer = Mppx_server.create({
|
|
3719
|
+
methods: [
|
|
3720
|
+
tempo_server.charge({
|
|
3721
|
+
getClient() {
|
|
3722
|
+
return client
|
|
3723
|
+
},
|
|
3724
|
+
currency: asset,
|
|
3725
|
+
account: accounts[0],
|
|
3726
|
+
store: Store.memory(),
|
|
3727
|
+
waitForConfirmation: false,
|
|
3728
|
+
}),
|
|
3729
|
+
],
|
|
3730
|
+
realm,
|
|
3731
|
+
secretKey,
|
|
3732
|
+
})
|
|
3733
|
+
|
|
3734
|
+
const mppx = Mppx_client.create({
|
|
3735
|
+
polyfill: false,
|
|
3736
|
+
methods: [
|
|
3737
|
+
tempo_client({
|
|
3738
|
+
account: accounts[1],
|
|
3739
|
+
mode: 'pull',
|
|
3740
|
+
getClient() {
|
|
3741
|
+
return client
|
|
3742
|
+
},
|
|
3743
|
+
}),
|
|
3744
|
+
],
|
|
3745
|
+
})
|
|
3746
|
+
|
|
3747
|
+
const httpServer = await Http.createServer(async (req, res) => {
|
|
3748
|
+
const result = await Mppx_server.toNodeListener(
|
|
3749
|
+
chargeServer.charge({ amount: '1', currency: asset, recipient: accounts[0].address }),
|
|
3750
|
+
)(req, res)
|
|
3751
|
+
if (result.status === 402) return
|
|
3752
|
+
res.end('OK')
|
|
3753
|
+
})
|
|
3754
|
+
|
|
3755
|
+
const [challengeResponse1, challengeResponse2] = await Promise.all([
|
|
3756
|
+
fetch(httpServer.url),
|
|
3757
|
+
fetch(httpServer.url),
|
|
3758
|
+
])
|
|
3759
|
+
expect(challengeResponse1.status).toBe(402)
|
|
3760
|
+
expect(challengeResponse2.status).toBe(402)
|
|
3761
|
+
|
|
3762
|
+
const credential1 = await mppx.createCredential(challengeResponse1)
|
|
3763
|
+
const decoded1 = Credential.deserialize<{
|
|
3764
|
+
signature: string
|
|
3765
|
+
type: 'transaction'
|
|
3766
|
+
}>(credential1)
|
|
3767
|
+
const challenge2 = Challenge.fromResponse(challengeResponse2, {
|
|
3768
|
+
methods: [tempo_client.charge()],
|
|
3769
|
+
})
|
|
3770
|
+
|
|
3771
|
+
const replayCredential = Credential.serialize(
|
|
3772
|
+
Credential.from({
|
|
3773
|
+
challenge: challenge2,
|
|
3774
|
+
payload: decoded1.payload,
|
|
3775
|
+
}),
|
|
3776
|
+
)
|
|
3777
|
+
|
|
3778
|
+
const replayResponse = await fetch(httpServer.url, {
|
|
3779
|
+
headers: { Authorization: replayCredential },
|
|
3780
|
+
})
|
|
3781
|
+
expect(replayResponse.status).toBe(402)
|
|
3782
|
+
const body = (await replayResponse.json()) as { detail: string }
|
|
3783
|
+
expect(body.detail).toContain('memo is not bound to this challenge')
|
|
3784
|
+
|
|
3785
|
+
httpServer.close()
|
|
3786
|
+
})
|
|
3787
|
+
|
|
3643
3788
|
test('server rejects plain transfer without challenge-bound memo', async () => {
|
|
3644
3789
|
const httpServer = await Http.createServer(async (req, res) => {
|
|
3645
3790
|
const result = await Mppx_server.toNodeListener(
|
|
@@ -310,7 +310,16 @@ export function charge<const parameters extends charge.Parameters>(
|
|
|
310
310
|
}[]
|
|
311
311
|
const transfers = getExpectedTransfers({ amount, memo, methodDetails, recipient })
|
|
312
312
|
const isFeePayerTx = !!(feePayer || feePayerUrl) && methodDetails?.feePayer !== false
|
|
313
|
-
assertTransferCalls(calls, {
|
|
313
|
+
const matchedCalls = assertTransferCalls(calls, {
|
|
314
|
+
currency,
|
|
315
|
+
exactCount: isFeePayerTx,
|
|
316
|
+
transfers,
|
|
317
|
+
})
|
|
318
|
+
if (!memo)
|
|
319
|
+
assertChallengeBoundCallMemo(matchedCalls, {
|
|
320
|
+
challengeId: challenge.id,
|
|
321
|
+
realm: challenge.realm,
|
|
322
|
+
})
|
|
314
323
|
|
|
315
324
|
if (isFeePayerTx)
|
|
316
325
|
FeePayer.validateCalls(transaction.calls, { amount, currency, recipient })
|
|
@@ -347,11 +356,16 @@ export function charge<const parameters extends charge.Parameters>(
|
|
|
347
356
|
const receipt = await sendRawTransactionSync(client, {
|
|
348
357
|
serializedTransaction: serializedTransaction_final,
|
|
349
358
|
})
|
|
350
|
-
assertTransferLogs(receipt, {
|
|
359
|
+
const matchedLogs = assertTransferLogs(receipt, {
|
|
351
360
|
currency,
|
|
352
361
|
sender: transaction.from! as `0x${string}`,
|
|
353
362
|
transfers,
|
|
354
363
|
})
|
|
364
|
+
if (!memo)
|
|
365
|
+
assertChallengeBoundMemo(matchedLogs, {
|
|
366
|
+
challengeId: challenge.id,
|
|
367
|
+
realm: challenge.realm,
|
|
368
|
+
})
|
|
355
369
|
// Post-broadcast dedup: catch malleable input variants
|
|
356
370
|
// (different serialized bytes, same underlying tx) that
|
|
357
371
|
// bypass the pre-broadcast check. Skip if the broadcast
|
|
@@ -511,8 +525,6 @@ function assertTransferCalls(
|
|
|
511
525
|
actualCalls: String(transferCalls.length),
|
|
512
526
|
})
|
|
513
527
|
|
|
514
|
-
const used = new Set<number>()
|
|
515
|
-
|
|
516
528
|
// Match memo-specific transfers before wildcards to avoid greedy
|
|
517
529
|
// consumption of memo-bearing calls by allowAnyMemo entries.
|
|
518
530
|
const sorted = [...parameters.transfers].sort((a, b) => {
|
|
@@ -521,6 +533,8 @@ function assertTransferCalls(
|
|
|
521
533
|
return 0
|
|
522
534
|
})
|
|
523
535
|
|
|
536
|
+
const used = new Set<number>()
|
|
537
|
+
const matched: Charge_internal.Transfer[] = []
|
|
524
538
|
for (const expected of sorted) {
|
|
525
539
|
const matchIndex = transferCalls.findIndex((call, index) => {
|
|
526
540
|
if (used.has(index)) return false
|
|
@@ -545,7 +559,10 @@ function assertTransferCalls(
|
|
|
545
559
|
}
|
|
546
560
|
|
|
547
561
|
used.add(matchIndex)
|
|
562
|
+
matched.push(decodeTransferCall(transferCalls[matchIndex]!, parameters.currency)!)
|
|
548
563
|
}
|
|
564
|
+
|
|
565
|
+
return matched
|
|
549
566
|
}
|
|
550
567
|
|
|
551
568
|
function getTransferCalls(
|
|
@@ -814,6 +831,21 @@ function assertChallengeBoundMemo(
|
|
|
814
831
|
throw new MismatchError('Payment verification failed: memo is not bound to this challenge.', {})
|
|
815
832
|
}
|
|
816
833
|
|
|
834
|
+
function assertChallengeBoundCallMemo(
|
|
835
|
+
matchedCalls: readonly Charge_internal.Transfer[],
|
|
836
|
+
parameters: { challengeId: string; realm: string },
|
|
837
|
+
) {
|
|
838
|
+
const bound = matchedCalls.some((call) => {
|
|
839
|
+
if (!call.memo) return false
|
|
840
|
+
const memo = call.memo as `0x${string}`
|
|
841
|
+
if (!Attribution.verifyServer(memo, parameters.realm)) return false
|
|
842
|
+
return Attribution.verifyChallengeBinding(memo, parameters.challengeId)
|
|
843
|
+
})
|
|
844
|
+
|
|
845
|
+
if (!bound)
|
|
846
|
+
throw new MismatchError('Payment verification failed: memo is not bound to this challenge.', {})
|
|
847
|
+
}
|
|
848
|
+
|
|
817
849
|
/** @internal */
|
|
818
850
|
class MismatchError extends PaymentError {
|
|
819
851
|
override readonly name = 'MismatchError'
|