@xona-labs/xpay 0.2.26 → 0.2.28
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 +52 -0
- package/dist/cli/balance.js +1 -1
- package/dist/cli/balance.js.map +1 -1
- package/dist/mpp/challenge.d.ts +63 -0
- package/dist/mpp/challenge.d.ts.map +1 -0
- package/dist/mpp/challenge.js +257 -0
- package/dist/mpp/challenge.js.map +1 -0
- package/dist/mpp/credential.d.ts +45 -0
- package/dist/mpp/credential.d.ts.map +1 -0
- package/dist/mpp/credential.js +58 -0
- package/dist/mpp/credential.js.map +1 -0
- package/dist/mpp/evm-charge.d.ts +37 -0
- package/dist/mpp/evm-charge.d.ts.map +1 -0
- package/dist/mpp/evm-charge.js +96 -0
- package/dist/mpp/evm-charge.js.map +1 -0
- package/dist/mpp/tempo-charge.d.ts +34 -0
- package/dist/mpp/tempo-charge.d.ts.map +1 -0
- package/dist/mpp/tempo-charge.js +94 -0
- package/dist/mpp/tempo-charge.js.map +1 -0
- package/dist/profile/index.d.ts.map +1 -1
- package/dist/profile/index.js +10 -1
- package/dist/profile/index.js.map +1 -1
- package/dist/signers/raw-evm.d.ts.map +1 -1
- package/dist/signers/raw-evm.js +10 -0
- package/dist/signers/raw-evm.js.map +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/use/index.d.ts.map +1 -1
- package/dist/use/index.js +104 -3
- package/dist/use/index.js.map +1 -1
- package/dist/wallet/index.d.ts.map +1 -1
- package/dist/wallet/index.js +4 -0
- package/dist/wallet/index.js.map +1 -1
- package/dist/x402/evm-payment.d.ts.map +1 -1
- package/dist/x402/evm-payment.js +1 -0
- package/dist/x402/evm-payment.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MPP evm/charge credential payload: a signed EIP-3009
|
|
3
|
+
* `TransferWithAuthorization` - the same gasless primitive our x402 v2 EVM
|
|
4
|
+
* path uses, with two MPP-specific twists (mirroring mppx's evm client):
|
|
5
|
+
*
|
|
6
|
+
* nonce = keccak256(utf8(challenge.id + challenge.realm))
|
|
7
|
+
* - binds the signature to this exact challenge, and makes
|
|
8
|
+
* replays collide on-chain (EIP-3009 nonces are single-use)
|
|
9
|
+
* validBefore = challenge.expires (epoch secs), falling back to now+300
|
|
10
|
+
*
|
|
11
|
+
* The EIP-712 domain name/version are NOT in the challenge - MPP assumes the
|
|
12
|
+
* client knows its tokens. We resolve them from a registry of known EIP-3009
|
|
13
|
+
* stablecoins on the chains xpay ships signers for.
|
|
14
|
+
*/
|
|
15
|
+
import { getAddress, keccak256, toUtf8Bytes } from "ethers";
|
|
16
|
+
/** EIP-712 types for EIP-3009 transferWithAuthorization. */
|
|
17
|
+
const AUTHORIZATION_TYPES = {
|
|
18
|
+
TransferWithAuthorization: [
|
|
19
|
+
{ name: "from", type: "address" },
|
|
20
|
+
{ name: "to", type: "address" },
|
|
21
|
+
{ name: "value", type: "uint256" },
|
|
22
|
+
{ name: "validAfter", type: "uint256" },
|
|
23
|
+
{ name: "validBefore", type: "uint256" },
|
|
24
|
+
{ name: "nonce", type: "bytes32" },
|
|
25
|
+
],
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Known EIP-3009 token domains, keyed `<chainId>:<lowercase contract>`.
|
|
29
|
+
* USDC's domain name differs between mainnets ("USD Coin") and Base Sepolia
|
|
30
|
+
* ("USDC") - values match Circle's deployed contracts and mppx's registry.
|
|
31
|
+
*/
|
|
32
|
+
const EIP3009_DOMAINS = {
|
|
33
|
+
"8453:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913": { name: "USD Coin", version: "2" }, // USDC Base
|
|
34
|
+
"1:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48": { name: "USD Coin", version: "2" }, // USDC Ethereum
|
|
35
|
+
"42161:0xaf88d065e77c8cc2239327c5edb3a432268e5831": { name: "USD Coin", version: "2" }, // USDC Arbitrum
|
|
36
|
+
"10:0x0b2c639c533813f4aa9d7837caf62653d097ff85": { name: "USD Coin", version: "2" }, // USDC Optimism
|
|
37
|
+
"84532:0x036cbd53842c5426634e7929541ec2318f3dcf7e": { name: "USDC", version: "2" }, // USDC Base Sepolia
|
|
38
|
+
};
|
|
39
|
+
export async function buildMppEvmAuthorization(args) {
|
|
40
|
+
const ch = args.challenge;
|
|
41
|
+
const r = ch.request;
|
|
42
|
+
const chainId = r.methodDetails?.chainId;
|
|
43
|
+
if (!chainId)
|
|
44
|
+
throw new Error("mpp evm-charge: challenge request is missing methodDetails.chainId");
|
|
45
|
+
const currency = getAddress(r.currency);
|
|
46
|
+
const domainParams = resolveDomain(chainId, currency, r.methodDetails);
|
|
47
|
+
const from = getAddress(args.address);
|
|
48
|
+
const to = getAddress(r.recipient);
|
|
49
|
+
const value = r.amount ?? "0";
|
|
50
|
+
const nonce = keccak256(toUtf8Bytes(`${ch.id}${ch.realm}`));
|
|
51
|
+
const validBefore = ch.expires
|
|
52
|
+
? String(Math.floor(Date.parse(ch.expires) / 1000))
|
|
53
|
+
: String(Math.floor(Date.now() / 1000) + 300);
|
|
54
|
+
const signature = await args.signTypedData({
|
|
55
|
+
domain: {
|
|
56
|
+
name: domainParams.name,
|
|
57
|
+
version: domainParams.version,
|
|
58
|
+
chainId,
|
|
59
|
+
verifyingContract: currency,
|
|
60
|
+
},
|
|
61
|
+
types: AUTHORIZATION_TYPES,
|
|
62
|
+
message: {
|
|
63
|
+
from,
|
|
64
|
+
to,
|
|
65
|
+
value: BigInt(value),
|
|
66
|
+
validAfter: 0n,
|
|
67
|
+
validBefore: BigInt(validBefore),
|
|
68
|
+
nonce,
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
return {
|
|
72
|
+
payload: {
|
|
73
|
+
type: "authorization",
|
|
74
|
+
from,
|
|
75
|
+
to,
|
|
76
|
+
value,
|
|
77
|
+
validAfter: "0",
|
|
78
|
+
validBefore,
|
|
79
|
+
nonce,
|
|
80
|
+
signature,
|
|
81
|
+
},
|
|
82
|
+
source: `did:pkh:eip155:${chainId}:${from}`,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function resolveDomain(chainId, currency, details) {
|
|
86
|
+
// Some servers volunteer the domain params in methodDetails - trust them.
|
|
87
|
+
const inline = details?.authorization;
|
|
88
|
+
if (inline?.name && inline?.version)
|
|
89
|
+
return { name: inline.name, version: inline.version };
|
|
90
|
+
const known = EIP3009_DOMAINS[`${chainId}:${currency.toLowerCase()}`];
|
|
91
|
+
if (known)
|
|
92
|
+
return known;
|
|
93
|
+
throw new Error(`mpp evm-charge: unknown EIP-3009 domain for token ${currency} on eip155:${chainId} - ` +
|
|
94
|
+
`cannot sign transferWithAuthorization without the token's EIP-712 name/version`);
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=evm-charge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evm-charge.js","sourceRoot":"","sources":["../../src/mpp/evm-charge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG5D,4DAA4D;AAC5D,MAAM,mBAAmB,GAAG;IAC1B,yBAAyB,EAAE;QACzB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;QACjC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;QAC/B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;QAClC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;QACvC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;QACxC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;KACnC;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,eAAe,GAAsD;IACzE,iDAAiD,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,YAAY;IACnG,8CAA8C,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,gBAAgB;IACpG,kDAAkD,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,gBAAgB;IACxG,+CAA+C,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,gBAAgB;IACrG,kDAAkD,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,oBAAoB;CACzG,CAAC;AAqBF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAAkC;IAElC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,GAAG,EAAE,CAAC,OAKZ,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC;IACzC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IAEpG,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC;IAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO;QAC5B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC;QACzC,MAAM,EAAE;YACN,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,OAAO;YACP,iBAAiB,EAAE,QAAQ;SAC5B;QACD,KAAK,EAAE,mBAAmB;QAC1B,OAAO,EAAE;YACP,IAAI;YACJ,EAAE;YACF,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;YACpB,UAAU,EAAE,EAAE;YACd,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;YAChC,KAAK;SACN;KACF,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE;YACP,IAAI,EAAE,eAAe;YACrB,IAAI;YACJ,EAAE;YACF,KAAK;YACL,UAAU,EAAE,GAAG;YACf,WAAW;YACX,KAAK;YACL,SAAS;SACV;QACD,MAAM,EAAE,kBAAkB,OAAO,IAAI,IAAI,EAAE;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,OAAe,EACf,QAAgB,EAChB,OAA4E;IAE5E,0EAA0E;IAC1E,MAAM,MAAM,GAAG,OAAO,EAAE,aAAa,CAAC;IACtC,IAAI,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IAE3F,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACtE,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,MAAM,IAAI,KAAK,CACb,qDAAqD,QAAQ,cAAc,OAAO,KAAK;QACrF,gFAAgF,CACnF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MPP tempo/charge credential: a signed (not broadcast) Tempo transaction
|
|
3
|
+
* carrying a TIP-20 `transferWithMemo` to the recipient - the MPP "pull"
|
|
4
|
+
* mode. The server broadcasts it, and when the challenge advertises
|
|
5
|
+
* `methodDetails.feePayer: true` it also sponsors the network fee, so the
|
|
6
|
+
* payer wallet needs only the stablecoin itself.
|
|
7
|
+
*
|
|
8
|
+
* Tempo transactions are not plain EVM type-2 txs - they use expiring
|
|
9
|
+
* nonces (`nonceKey: "expiring"` + `validBefore`) and optional fee-payer
|
|
10
|
+
* sponsorship - so this module signs with viem's tempo extensions rather
|
|
11
|
+
* than ethers. Flow mirrors mppx's tempo client, verified end-to-end
|
|
12
|
+
* against mpp.dev's paid ping endpoint on Moderato.
|
|
13
|
+
*
|
|
14
|
+
* The transfer memo is the MPP attribution encoding (32 bytes:
|
|
15
|
+
* tag|version|serverId|clientId|nonce) whose trailing 7 bytes are
|
|
16
|
+
* keccak256(challengeId) - binding the on-chain transfer to the challenge
|
|
17
|
+
* so a settlement tx can't be replayed against a different challenge.
|
|
18
|
+
*/
|
|
19
|
+
import type { MppChallenge } from "./challenge.js";
|
|
20
|
+
/** Tempo mainnet chain id - the one the "tempo" network slug settles on. */
|
|
21
|
+
export declare const TEMPO_MAINNET_CHAIN_ID: 4217;
|
|
22
|
+
export interface BuildMppTempoChargeArgs {
|
|
23
|
+
/** 0x-prefixed EVM private key (Tempo uses secp256k1 accounts). */
|
|
24
|
+
privateKey: string;
|
|
25
|
+
challenge: MppChallenge;
|
|
26
|
+
}
|
|
27
|
+
export interface MppTempoCharge {
|
|
28
|
+
/** Credential `payload` - the signed pull-mode transaction. */
|
|
29
|
+
payload: Record<string, unknown>;
|
|
30
|
+
/** Credential `source` - payer identity in did:pkh form. */
|
|
31
|
+
source: string;
|
|
32
|
+
}
|
|
33
|
+
export declare function buildMppTempoCharge(args: BuildMppTempoChargeArgs): Promise<MppTempoCharge>;
|
|
34
|
+
//# sourceMappingURL=tempo-charge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tempo-charge.d.ts","sourceRoot":"","sources":["../../src/mpp/tempo-charge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAOnD,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB,MAAW,CAAC;AAE/C,MAAM,WAAW,uBAAuB;IACtC,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,cAAc,CAAC,CA4DhG"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MPP tempo/charge credential: a signed (not broadcast) Tempo transaction
|
|
3
|
+
* carrying a TIP-20 `transferWithMemo` to the recipient - the MPP "pull"
|
|
4
|
+
* mode. The server broadcasts it, and when the challenge advertises
|
|
5
|
+
* `methodDetails.feePayer: true` it also sponsors the network fee, so the
|
|
6
|
+
* payer wallet needs only the stablecoin itself.
|
|
7
|
+
*
|
|
8
|
+
* Tempo transactions are not plain EVM type-2 txs - they use expiring
|
|
9
|
+
* nonces (`nonceKey: "expiring"` + `validBefore`) and optional fee-payer
|
|
10
|
+
* sponsorship - so this module signs with viem's tempo extensions rather
|
|
11
|
+
* than ethers. Flow mirrors mppx's tempo client, verified end-to-end
|
|
12
|
+
* against mpp.dev's paid ping endpoint on Moderato.
|
|
13
|
+
*
|
|
14
|
+
* The transfer memo is the MPP attribution encoding (32 bytes:
|
|
15
|
+
* tag|version|serverId|clientId|nonce) whose trailing 7 bytes are
|
|
16
|
+
* keccak256(challengeId) - binding the on-chain transfer to the challenge
|
|
17
|
+
* so a settlement tx can't be replayed against a different challenge.
|
|
18
|
+
*/
|
|
19
|
+
import { createClient, http, keccak256, toBytes } from "viem";
|
|
20
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
21
|
+
import { prepareTransactionRequest, signTransaction } from "viem/actions";
|
|
22
|
+
import { Actions } from "viem/tempo";
|
|
23
|
+
import { tempo, tempoModerato, tempoTestnet, tempoDevnet } from "viem/tempo/chains";
|
|
24
|
+
/** Tempo chains by id - mainnet plus testnets (Moderato is what mpp.dev uses). */
|
|
25
|
+
const TEMPO_CHAINS = Object.fromEntries([tempo, tempoModerato, tempoTestnet, tempoDevnet].map((c) => [c.id, c]));
|
|
26
|
+
/** Tempo mainnet chain id - the one the "tempo" network slug settles on. */
|
|
27
|
+
export const TEMPO_MAINNET_CHAIN_ID = tempo.id;
|
|
28
|
+
export async function buildMppTempoCharge(args) {
|
|
29
|
+
const ch = args.challenge;
|
|
30
|
+
const r = ch.request;
|
|
31
|
+
const chainId = r.methodDetails?.chainId ?? TEMPO_MAINNET_CHAIN_ID;
|
|
32
|
+
const chain = TEMPO_CHAINS[chainId];
|
|
33
|
+
if (!chain) {
|
|
34
|
+
throw new Error(`mpp tempo-charge: unknown Tempo chain id ${chainId}`);
|
|
35
|
+
}
|
|
36
|
+
const modes = r.methodDetails?.supportedModes;
|
|
37
|
+
if (Array.isArray(modes) && !modes.includes("pull")) {
|
|
38
|
+
throw new Error(`mpp tempo-charge: challenge only supports [${modes.join(", ")}] - xpay signs pull-mode credentials`);
|
|
39
|
+
}
|
|
40
|
+
const account = privateKeyToAccount(args.privateKey);
|
|
41
|
+
const client = createClient({ account, chain, transport: http() });
|
|
42
|
+
const memo = r.methodDetails?.memo ?? attributionMemo(ch.id, ch.realm);
|
|
43
|
+
const transferCall = Actions.token.transfer.call(client, {
|
|
44
|
+
amount: BigInt(r.amount ?? "0"),
|
|
45
|
+
memo,
|
|
46
|
+
to: r.recipient,
|
|
47
|
+
token: r.currency,
|
|
48
|
+
});
|
|
49
|
+
// Sign against the earlier of the challenge expiry and a short local
|
|
50
|
+
// window - the server settles immediately, so a tight validBefore just
|
|
51
|
+
// limits how long a leaked credential stays broadcastable.
|
|
52
|
+
const now = Math.floor(Date.now() / 1000);
|
|
53
|
+
const validBefore = ch.expires
|
|
54
|
+
? Math.min(now + 25, Math.floor(Date.parse(ch.expires) / 1000))
|
|
55
|
+
: now + 25;
|
|
56
|
+
const prepared = (await prepareTransactionRequest(client, {
|
|
57
|
+
account,
|
|
58
|
+
calls: [transferCall],
|
|
59
|
+
nonceKey: "expiring",
|
|
60
|
+
validBefore,
|
|
61
|
+
}));
|
|
62
|
+
// Headroom for sender-signature + access-key verification costs the
|
|
63
|
+
// estimate misses (same pad as mppx's client).
|
|
64
|
+
prepared.gas = (prepared.gas ?? 0n) + 5000n;
|
|
65
|
+
if (r.methodDetails?.feePayer) {
|
|
66
|
+
delete prepared.feePayerSignature;
|
|
67
|
+
delete prepared.feeToken;
|
|
68
|
+
prepared.feePayer = true;
|
|
69
|
+
}
|
|
70
|
+
const signature = await signTransaction(client, prepared);
|
|
71
|
+
return {
|
|
72
|
+
payload: { signature, type: "transaction" },
|
|
73
|
+
source: `did:pkh:eip155:${chainId}:${account.address}`,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* MPP attribution memo (32 bytes) for TIP-20 transferWithMemo:
|
|
78
|
+
*
|
|
79
|
+
* 0..3 keccak256("mpp")[0..3] tag
|
|
80
|
+
* 4 0x01 version
|
|
81
|
+
* 5..14 keccak256(realm)[0..9] serverId
|
|
82
|
+
* 15..24 zero bytes clientId (anonymous)
|
|
83
|
+
* 25..31 keccak256(challengeId)[0..6] challenge-binding nonce
|
|
84
|
+
*/
|
|
85
|
+
function attributionMemo(challengeId, realm) {
|
|
86
|
+
const buf = new Uint8Array(32);
|
|
87
|
+
const fp = (s, n) => toBytes(keccak256(toBytes(s))).slice(0, n);
|
|
88
|
+
buf.set(fp("mpp", 4), 0);
|
|
89
|
+
buf[4] = 0x01;
|
|
90
|
+
buf.set(fp(realm, 10), 5);
|
|
91
|
+
buf.set(fp(challengeId, 7), 25);
|
|
92
|
+
return `0x${Buffer.from(buf).toString("hex")}`;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=tempo-charge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tempo-charge.js","sourceRoot":"","sources":["../../src/mpp/tempo-charge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAwB,MAAM,MAAM,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGpF,kFAAkF;AAClF,MAAM,YAAY,GAA0B,MAAM,CAAC,WAAW,CAC5D,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CACxE,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC,EAAE,CAAC;AAe/C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA6B;IACrE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,GAAG,EAAE,CAAC,OAKZ,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,CAAC,aAAa,EAAE,OAAO,IAAI,sBAAsB,CAAC;IACnE,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,4CAA4C,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,CAAC,aAAa,EAAE,cAAc,CAAC;IAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,8CAA8C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sCAAsC,CACrG,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAiB,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAEnE,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,IAAI,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;QACvD,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC;QAC/B,IAAI;QACJ,EAAE,EAAE,CAAC,CAAC,SAAS;QACf,KAAK,EAAE,CAAC,CAAC,QAAQ;KAClB,CAAC,CAAC;IAEH,qEAAqE;IACrE,uEAAuE;IACvE,2DAA2D;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO;QAC5B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/D,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;IAEb,MAAM,QAAQ,GAAG,CAAC,MAAM,yBAAyB,CAAC,MAAM,EAAE;QACxD,OAAO;QACP,KAAK,EAAE,CAAC,YAAY,CAAC;QACrB,QAAQ,EAAE,UAAU;QACpB,WAAW;KACH,CAAC,CAA4B,CAAC;IACxC,oEAAoE;IACpE,+CAA+C;IAC/C,QAAQ,CAAC,GAAG,GAAG,CAAE,QAAQ,CAAC,GAA0B,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;IACpE,IAAI,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC,iBAAiB,CAAC;QAClC,OAAO,QAAQ,CAAC,QAAQ,CAAC;QACzB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,QAAiB,CAAC,CAAC;IAEnE,OAAO;QACL,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE;QAC3C,MAAM,EAAE,kBAAkB,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;KACvD,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,eAAe,CAAC,WAAmB,EAAE,KAAa;IACzD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACd,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAS,CAAC;AACxD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAeH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAMxE,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IACnC,uHAAuH;IACvH,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,WAAW,CAAC,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmB3F;AAMD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC9B;AAED,wBAAsB,WAAW,CAAC,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,aAAa,CAAC,CAYvF;AAMD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"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"}
|
package/dist/profile/index.js
CHANGED
|
@@ -71,7 +71,7 @@ export function signersFromProfile(profile) {
|
|
|
71
71
|
rpcUrl: profile.config.rpcs?.solana,
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
|
-
else if (["base", "ethereum", "arbitrum", "optimism", "robinhood", "stable"].includes(network)) {
|
|
74
|
+
else if (["base", "ethereum", "arbitrum", "optimism", "robinhood", "stable", "tempo"].includes(network)) {
|
|
75
75
|
out[network] = rawEvmSigner({
|
|
76
76
|
privateKey: keys.evm.privateKey,
|
|
77
77
|
network,
|
|
@@ -98,6 +98,15 @@ export function signersFromProfile(profile) {
|
|
|
98
98
|
network: "stable",
|
|
99
99
|
rpcUrl: profile.config.rpcs?.stable,
|
|
100
100
|
});
|
|
101
|
+
// Same for Tempo (chain 4217, Stripe/Paradigm payments L1): registering it
|
|
102
|
+
// unconditionally lets any profile read its USDC.e balance and settle MPP
|
|
103
|
+
// tempo/charge 402s without re-running `xpay init`. Routing only picks it
|
|
104
|
+
// when a challenge actually quotes a Tempo chain.
|
|
105
|
+
out.tempo ??= rawEvmSigner({
|
|
106
|
+
privateKey: keys.evm.privateKey,
|
|
107
|
+
network: "tempo",
|
|
108
|
+
rpcUrl: profile.config.rpcs?.tempo,
|
|
109
|
+
});
|
|
101
110
|
return out;
|
|
102
111
|
}
|
|
103
112
|
// -----------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raw-evm.d.ts","sourceRoot":"","sources":["../../src/signers/raw-evm.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAsB,MAAM,EAAgB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"raw-evm.d.ts","sourceRoot":"","sources":["../../src/signers/raw-evm.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAsB,MAAM,EAAgB,MAAM,aAAa,CAAC;AAyFrF,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAwF9D"}
|
package/dist/signers/raw-evm.js
CHANGED
|
@@ -13,6 +13,8 @@ const NATIVE_TOKEN = {
|
|
|
13
13
|
// is a different token with 6 decimals. Distinct symbols keep them apart in
|
|
14
14
|
// the balance view.
|
|
15
15
|
stable: { symbol: "USDT", name: "Tether USD (gas)" },
|
|
16
|
+
// Tempo (Stripe/Paradigm payments L1, chain 4217) has no native gas token -
|
|
17
|
+
// fees are paid in TIP-20 stablecoins - so no NATIVE_TOKEN entry either.
|
|
16
18
|
};
|
|
17
19
|
const KNOWN_ERC20S = {
|
|
18
20
|
base: [
|
|
@@ -49,6 +51,12 @@ const KNOWN_ERC20S = {
|
|
|
49
51
|
stable: [
|
|
50
52
|
{ symbol: "USDT0", name: "USDT0", contract: "0x779Ded0c9e1022225f8E0630b35a9b54bE713736", decimals: 6 },
|
|
51
53
|
],
|
|
54
|
+
// Tempo (chain 4217). USDC.e is the bridged Circle USDC as a TIP-20 - it
|
|
55
|
+
// answers the standard ERC-20 read surface (symbol/decimals/balanceOf
|
|
56
|
+
// verified on-chain), so balances work over plain JSON-RPC.
|
|
57
|
+
tempo: [
|
|
58
|
+
{ symbol: "USDC.e", name: "USD Coin (Tempo)", contract: "0x20C000000000000000000000b9537d11c60E8b50", decimals: 6 },
|
|
59
|
+
],
|
|
52
60
|
};
|
|
53
61
|
/**
|
|
54
62
|
* The stablecoin x402 settles in on each network - what `balance()` reports and
|
|
@@ -61,6 +69,7 @@ const SETTLEMENT_STABLECOIN = {
|
|
|
61
69
|
arbitrum: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
|
|
62
70
|
optimism: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
|
|
63
71
|
stable: "0x779Ded0c9e1022225f8E0630b35a9b54bE713736",
|
|
72
|
+
tempo: "0x20C000000000000000000000b9537d11c60E8b50",
|
|
64
73
|
};
|
|
65
74
|
const DEFAULT_RPCS = {
|
|
66
75
|
base: "https://base-mainnet.g.alchemy.com/v2/Ug5mqBVIbSHoa8ZHgTUSJ",
|
|
@@ -69,6 +78,7 @@ const DEFAULT_RPCS = {
|
|
|
69
78
|
optimism: "https://opt-mainnet.g.alchemy.com/v2/Ug5mqBVIbSHoa8ZHgTUSJ",
|
|
70
79
|
robinhood: "https://rpc.mainnet.chain.robinhood.com",
|
|
71
80
|
stable: "https://rpc.stable.xyz",
|
|
81
|
+
tempo: "https://rpc.tempo.xyz",
|
|
72
82
|
};
|
|
73
83
|
const ERC20_ABI = [
|
|
74
84
|
"function transfer(address to, uint256 amount) returns (bool)",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raw-evm.js","sourceRoot":"","sources":["../../src/signers/raw-evm.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGlF,MAAM,YAAY,GAAqD;IACrE,IAAI,EAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;IAC1C,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;IAC1C,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;IAC1C,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;IAC1C,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;IAC3C,4EAA4E;IAC5E,4EAA4E;IAC5E,oBAAoB;IACpB,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE;
|
|
1
|
+
{"version":3,"file":"raw-evm.js","sourceRoot":"","sources":["../../src/signers/raw-evm.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -11,7 +11,9 @@ export type Network = "solana" | "base" | "ethereum" | "arbitrum" | "optimism"
|
|
|
11
11
|
/** Robinhood Chain (Arbitrum Orbit L2, eip155:4663) - ETH-native. */
|
|
12
12
|
| "robinhood"
|
|
13
13
|
/** Stable (eip155:988) - Tether/Bitfinex payments L1, settles USDT0. */
|
|
14
|
-
| "stable"
|
|
14
|
+
| "stable"
|
|
15
|
+
/** Tempo (eip155:4217) - Stripe/Paradigm payments L1, settles USDC.e (TIP-20). */
|
|
16
|
+
| "tempo" | (string & {});
|
|
15
17
|
/**
|
|
16
18
|
* One payment option attached to a {@link Resource}.
|
|
17
19
|
*
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8FAA8F;AAC9F,MAAM,MAAM,OAAO,GACf,QAAQ,GACR,MAAM,GACN,UAAU,GACV,UAAU,GACV,UAAU;AACZ,qEAAqE;GACnE,WAAW;AACb,wEAAwE;GACtE,QAAQ,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,qDAAqD;IACrD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,yBAAyB;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,sEAAsE;IACtE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,wCAAwC;IACxC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,mFAAmF;IACnF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,iDAAiD;IACjD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,wEAAwE;IACxE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAGH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,sDAAsD;IACtD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,6DAA6D;IAC7D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,6BAA6B;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACjC,6CAA6C;IAC7C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,oCAAoC;IACpC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC7C,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC1D,CAAC,CAAC"}
|
package/dist/use/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/use/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/use/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AASvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,gFAAgF;IAChF,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAuB3D;AAsBD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAcrE;AA2TD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgElF"}
|
package/dist/use/index.js
CHANGED
|
@@ -14,6 +14,10 @@
|
|
|
14
14
|
import { extractRequirements, extractSettleEnvelope } from "../x402/extract.js";
|
|
15
15
|
import { buildSvmPaymentHeader, isSvmNetwork } from "../x402/svm-payment.js";
|
|
16
16
|
import { buildEvmPaymentHeader, hasEvmDomainParams, isEvmNetwork } from "../x402/evm-payment.js";
|
|
17
|
+
import { parseMppChallenges, settleableMppOptions } from "../mpp/challenge.js";
|
|
18
|
+
import { buildMppAuthorizationHeader, extractMppReceipt } from "../mpp/credential.js";
|
|
19
|
+
import { buildMppEvmAuthorization } from "../mpp/evm-charge.js";
|
|
20
|
+
import { buildMppTempoCharge } from "../mpp/tempo-charge.js";
|
|
17
21
|
import { isAgencResource } from "../agenc/api.js";
|
|
18
22
|
export async function use(args) {
|
|
19
23
|
// AgenC listings are not HTTP resources - payment is an on-chain escrow
|
|
@@ -91,9 +95,28 @@ async function useWithLiveChallenge(args) {
|
|
|
91
95
|
// resource later becomes free or for sanity checks.)
|
|
92
96
|
return finalize(probe, "unknown", "0");
|
|
93
97
|
}
|
|
94
|
-
// Step
|
|
98
|
+
// Step 2a: MPP servers announce options via `WWW-Authenticate: Payment ...`
|
|
99
|
+
// (Stripe + Tempo's 402 standard). Try the native MPP flow first; hybrid
|
|
100
|
+
// servers also emit x402 challenges, so anything we can't settle as MPP
|
|
101
|
+
// (e.g. tempo-only endpoints) falls through to the x402 path below.
|
|
102
|
+
// Opt-in via XPAY_MPP=1 while the ecosystem is young: agents were eagerly
|
|
103
|
+
// picking tempo/charge challenges from wallets holding no Tempo funds,
|
|
104
|
+
// failing endpoints that previously settled fine as x402.
|
|
105
|
+
const mppChallenges = process.env.XPAY_MPP === "1" ? parseMppChallenges(probe.res.headers) : [];
|
|
106
|
+
const mppOptions = settleableMppOptions(mppChallenges);
|
|
107
|
+
if (mppOptions.length > 0) {
|
|
108
|
+
const picked = await pickMppOption(args, mppOptions);
|
|
109
|
+
if (picked)
|
|
110
|
+
return useWithMppOption(args, picked);
|
|
111
|
+
}
|
|
112
|
+
// Step 2b: parse the x402 challenge - may live in the body OR a response header.
|
|
95
113
|
const { accepts: reqs } = extractRequirements(probe.res.headers, probe.data);
|
|
96
114
|
if (reqs.length === 0) {
|
|
115
|
+
if (mppChallenges.length > 0) {
|
|
116
|
+
throw new Error(`xpay.use: ${args.resource.resource} offers MPP methods [${mppChallenges
|
|
117
|
+
.map((c) => `${c.method}/${c.intent}`)
|
|
118
|
+
.join(", ")}] that this wallet cannot settle yet, and no x402 fallback`);
|
|
119
|
+
}
|
|
97
120
|
throw new Error(`xpay.use: ${args.resource.resource} returned 402 but no parseable accepts[] in body or headers`);
|
|
98
121
|
}
|
|
99
122
|
const req = await args.wallet.pickRequirementByBalance(reqs);
|
|
@@ -112,6 +135,76 @@ async function useWithLiveChallenge(args) {
|
|
|
112
135
|
result.platformFee = await chargePlatformFee(args.wallet);
|
|
113
136
|
return result;
|
|
114
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Pick the MPP option this wallet can fund, balance-aware. Returns undefined
|
|
140
|
+
* when no settleable option has a matching signer (caller falls back to
|
|
141
|
+
* x402); throws when we could sign for one but every funded network is short
|
|
142
|
+
* (an accurate "top up" beats a misleading protocol error downstream).
|
|
143
|
+
*/
|
|
144
|
+
async function pickMppOption(args, options) {
|
|
145
|
+
const reqs = options.map((o) => o.requirement);
|
|
146
|
+
const req = await args.wallet.pickRequirementByBalance(reqs);
|
|
147
|
+
if (req)
|
|
148
|
+
return options.find((o) => o.requirement === req);
|
|
149
|
+
if (args.wallet.pickRequirement(reqs)) {
|
|
150
|
+
throw await insufficientBalanceError(reqs, args.wallet);
|
|
151
|
+
}
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Settle an MPP charge: sign the method-specific proof bound to the
|
|
156
|
+
* challenge (EIP-3009 authorization for `evm`, pull-mode Tempo transaction
|
|
157
|
+
* for `tempo`), retry with `Authorization: Payment ...`, and read the
|
|
158
|
+
* settlement tx hash from the `Payment-Receipt` header. Nothing is
|
|
159
|
+
* broadcast client-side - the server submits the transfer, and on Tempo
|
|
160
|
+
* fee-sponsored challenges it covers gas too.
|
|
161
|
+
*/
|
|
162
|
+
async function useWithMppOption(args, opt) {
|
|
163
|
+
const req = opt.requirement;
|
|
164
|
+
// Guardrail runs *before* signing - same security boundary as x402.
|
|
165
|
+
await args.guardrail.check({ resource: args.resource, requirement: req });
|
|
166
|
+
const network = normalizeNetwork(req.network);
|
|
167
|
+
const signer = args.wallet.signer(network);
|
|
168
|
+
let payload;
|
|
169
|
+
let source;
|
|
170
|
+
if (opt.challenge.method === "tempo") {
|
|
171
|
+
// Tempo txs (expiring nonces, fee sponsorship) need the raw key for
|
|
172
|
+
// viem's tempo signer - available from key-holding EVM signers.
|
|
173
|
+
const evmWallet = signer.getEvmWallet?.();
|
|
174
|
+
if (!evmWallet?.privateKey) {
|
|
175
|
+
throw new Error(`xpay.use: MPP tempo/charge on ${req.network} requires a key-holding EVM signer (getEvmWallet)`);
|
|
176
|
+
}
|
|
177
|
+
({ payload, source } = await buildMppTempoCharge({
|
|
178
|
+
privateKey: evmWallet.privateKey,
|
|
179
|
+
challenge: opt.challenge,
|
|
180
|
+
}));
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
if (typeof signer.signEvmTypedData !== "function") {
|
|
184
|
+
throw new Error(`xpay.use: MPP evm/charge on ${req.network} requires an EIP-712 typed-data signer`);
|
|
185
|
+
}
|
|
186
|
+
({ payload, source } = await buildMppEvmAuthorization({
|
|
187
|
+
address: signer.address,
|
|
188
|
+
signTypedData: signer.signEvmTypedData.bind(signer),
|
|
189
|
+
challenge: opt.challenge,
|
|
190
|
+
}));
|
|
191
|
+
}
|
|
192
|
+
const header = buildMppAuthorizationHeader({ challenge: opt.challenge, payload, source });
|
|
193
|
+
const res = await callResource(args, header, "mpp");
|
|
194
|
+
const result = finalize(res, network, req.amount ?? "0");
|
|
195
|
+
const receipt = extractMppReceipt(res.res.headers);
|
|
196
|
+
if (receipt) {
|
|
197
|
+
result.txSig = receipt.reference;
|
|
198
|
+
result.settlement = {
|
|
199
|
+
transaction: receipt.reference,
|
|
200
|
+
network: req.network,
|
|
201
|
+
amount: req.amount,
|
|
202
|
+
success: receipt.status === "success",
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
result.platformFee = await chargePlatformFee(args.wallet);
|
|
206
|
+
return result;
|
|
207
|
+
}
|
|
115
208
|
/**
|
|
116
209
|
* Sign/settle a payment per the requirement and return the X-Payment header
|
|
117
210
|
* value plus accounting fields. Picks the right encoding by network:
|
|
@@ -161,12 +254,16 @@ async function settle(args, req, x402Version) {
|
|
|
161
254
|
const txSig = await signer.pay(req);
|
|
162
255
|
return { header: paymentHeader(req, txSig, x402Version), network, txSig };
|
|
163
256
|
}
|
|
164
|
-
async function callResource(args, paymentHeader) {
|
|
257
|
+
async function callResource(args, paymentHeader, protocol = "x402") {
|
|
165
258
|
const headers = {
|
|
166
259
|
accept: "application/json",
|
|
167
260
|
...args.headers,
|
|
168
261
|
};
|
|
169
|
-
if (paymentHeader) {
|
|
262
|
+
if (paymentHeader && protocol === "mpp") {
|
|
263
|
+
// MPP credentials ride the standard auth header (`Authorization: Payment ...`).
|
|
264
|
+
headers["authorization"] = paymentHeader;
|
|
265
|
+
}
|
|
266
|
+
else if (paymentHeader) {
|
|
170
267
|
// Most x402 servers read `X-PAYMENT`; some (e.g. Nansen) read
|
|
171
268
|
// `Payment-Signature`. The payload is identical, so send both - servers
|
|
172
269
|
// ignore the header name they don't recognise.
|
|
@@ -324,6 +421,10 @@ function normalizeNetwork(raw) {
|
|
|
324
421
|
return "robinhood";
|
|
325
422
|
if (raw === "eip155:988")
|
|
326
423
|
return "stable";
|
|
424
|
+
// Tempo mainnet + Moderato testnet share the slug: the MPP tempo builder
|
|
425
|
+
// picks the actual chain from the challenge's chainId, not the signer RPC.
|
|
426
|
+
if (raw === "eip155:4217" || raw === "eip155:42431")
|
|
427
|
+
return "tempo";
|
|
327
428
|
// Solana CAIP - any `solana:<genesis>` form collapses to our "solana" slug.
|
|
328
429
|
if (raw === "solana" || raw.startsWith("solana:") || raw.startsWith("solana-"))
|
|
329
430
|
return "solana";
|