@meantjs/profile 0.4.0 → 0.6.0
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 +31 -0
- package/README.md +11 -4
- package/data/packs/permit2.profile.json +85 -1
- package/data/packs/usdc-base-sepolia.profile.json +301 -0
- package/data/packs/usdc-domain-usdc.profile.json +437 -0
- package/data/packs/usdc.profile.json +421 -0
- package/data/packs/x402-exact-permit2.profile.json +251 -0
- package/data/packs/x402-upto-permit2.profile.json +254 -0
- package/data/profile-v0.schema.json +35 -2
- package/data/profile-v0.validate.mjs +3 -3
- package/package.json +1 -1
- package/src/analyze.mjs +55 -13
- package/src/browser.mjs +2 -1
- package/src/checks.mjs +22 -0
- package/src/resolve.mjs +3 -1
- package/src/served.mjs +6 -6
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
{
|
|
2
|
+
"format": "candid-profile",
|
|
3
|
+
"format_version": 0,
|
|
4
|
+
"kind": "contract",
|
|
5
|
+
"name": "usdc",
|
|
6
|
+
"origin": "third_party",
|
|
7
|
+
"language": "en",
|
|
8
|
+
"description": "USDC's EIP-3009 messages and its EIP-2612 permit where USDC signs as `USD Coin`: Ethereum, Polygon, Base, Arbitrum and Avalanche, and the test networks Avalanche Fuji and Arbitrum Sepolia (spec section 15.9, experimental). TransferWithAuthorization and ReceiveWithAuthorization pay `to` once, by a signature that someone else submits (only the payee, for ReceiveWithAuthorization), and CancelAuthorization cancels one that is unused (EIP-3009; Circle stablecoin-evm, FiatTokenV2.sol). Permit sets an allowance (EIP-2612), which never ends once it is submitted; x402's payments through Permit2 may come with one for Permit2 (coinbase/x402, specs/extensions/eip2612_gas_sponsoring.md). x402's `exact` scheme pays by TransferWithAuthorization by default (coinbase/x402, specs/schemes/exact/scheme_exact_evm.md). Only the messages are described: USDC's ABI names transferWithAuthorization, receiveWithAuthorization, cancelAuthorization and permit twice each, which the resolver refuses (O1). Bound to USDC's domain (`USD Coin`, version `2`) and to its contracts, each read on chain (DOMAIN_SEPARATOR, decimals 6, the four type hashes; chains 1, 8453 and 42161 on 2026-10-30, the others on 2026-11-01), so a look-alike token gets none of these words. Where USDC signs as `USDC`, the usdc-domain-usdc profile has the same words.",
|
|
9
|
+
"binds": {
|
|
10
|
+
"eip712": {
|
|
11
|
+
"domain": {
|
|
12
|
+
"name": "USD Coin",
|
|
13
|
+
"version": "2"
|
|
14
|
+
},
|
|
15
|
+
"types": {
|
|
16
|
+
"CancelAuthorization": [
|
|
17
|
+
{
|
|
18
|
+
"name": "authorizer",
|
|
19
|
+
"type": "address"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "nonce",
|
|
23
|
+
"type": "bytes32"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"Permit": [
|
|
27
|
+
{
|
|
28
|
+
"name": "owner",
|
|
29
|
+
"type": "address"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "spender",
|
|
33
|
+
"type": "address"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "value",
|
|
37
|
+
"type": "uint256"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"name": "nonce",
|
|
41
|
+
"type": "uint256"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "deadline",
|
|
45
|
+
"type": "uint256"
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"ReceiveWithAuthorization": [
|
|
49
|
+
{
|
|
50
|
+
"name": "from",
|
|
51
|
+
"type": "address"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "to",
|
|
55
|
+
"type": "address"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "value",
|
|
59
|
+
"type": "uint256"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"name": "validAfter",
|
|
63
|
+
"type": "uint256"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"name": "validBefore",
|
|
67
|
+
"type": "uint256"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "nonce",
|
|
71
|
+
"type": "bytes32"
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"TransferWithAuthorization": [
|
|
75
|
+
{
|
|
76
|
+
"name": "from",
|
|
77
|
+
"type": "address"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "to",
|
|
81
|
+
"type": "address"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"name": "value",
|
|
85
|
+
"type": "uint256"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"name": "validAfter",
|
|
89
|
+
"type": "uint256"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"name": "validBefore",
|
|
93
|
+
"type": "uint256"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"name": "nonce",
|
|
97
|
+
"type": "bytes32"
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
"deployments": [
|
|
103
|
+
{
|
|
104
|
+
"chain_id": 1,
|
|
105
|
+
"address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"chain_id": 137,
|
|
109
|
+
"address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"chain_id": 8453,
|
|
113
|
+
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"chain_id": 42161,
|
|
117
|
+
"address": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"chain_id": 43113,
|
|
121
|
+
"address": "0x5425890298aed601595a70AB815c96711a31Bc65"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"chain_id": 43114,
|
|
125
|
+
"address": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"chain_id": 421614,
|
|
129
|
+
"address": "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d"
|
|
130
|
+
}
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
"annotations": [
|
|
134
|
+
{
|
|
135
|
+
"at": "TransferWithAuthorization",
|
|
136
|
+
"tag": "intent",
|
|
137
|
+
"args": {
|
|
138
|
+
"title": "Pay USDC by signature",
|
|
139
|
+
"template": "Send {value} from {from} to {to}, once. Valid after {validAfter}. Expires: {validBefore}."
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"at": "TransferWithAuthorization",
|
|
144
|
+
"tag": "effect",
|
|
145
|
+
"args": {
|
|
146
|
+
"kind": "transfer",
|
|
147
|
+
"irreversible": true,
|
|
148
|
+
"grant": {
|
|
149
|
+
"to": "to",
|
|
150
|
+
"amount": "value",
|
|
151
|
+
"ends": [
|
|
152
|
+
"validBefore"
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"at": "TransferWithAuthorization(0).from",
|
|
159
|
+
"tag": "describe",
|
|
160
|
+
"args": {
|
|
161
|
+
"label": "From"
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"at": "TransferWithAuthorization(0).to",
|
|
166
|
+
"tag": "describe",
|
|
167
|
+
"args": {
|
|
168
|
+
"label": "To"
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"at": "TransferWithAuthorization(0).value",
|
|
173
|
+
"tag": "amount",
|
|
174
|
+
"args": {
|
|
175
|
+
"decimals": 6,
|
|
176
|
+
"symbol": "USDC"
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"at": "TransferWithAuthorization(0).value",
|
|
181
|
+
"tag": "describe",
|
|
182
|
+
"args": {
|
|
183
|
+
"label": "Amount"
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"at": "TransferWithAuthorization(0).validAfter",
|
|
188
|
+
"tag": "timestamp",
|
|
189
|
+
"args": {
|
|
190
|
+
"unit": "s",
|
|
191
|
+
"epoch": "unix"
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"at": "TransferWithAuthorization(0).validAfter",
|
|
196
|
+
"tag": "describe",
|
|
197
|
+
"args": {
|
|
198
|
+
"label": "Valid after"
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"at": "TransferWithAuthorization(0).validBefore",
|
|
203
|
+
"tag": "timestamp",
|
|
204
|
+
"args": {
|
|
205
|
+
"unit": "s",
|
|
206
|
+
"epoch": "unix",
|
|
207
|
+
"threshold": "115792089237316195423570985008687907853269984665640564039457584007913129639935",
|
|
208
|
+
"message": "Never"
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"at": "TransferWithAuthorization(0).validBefore",
|
|
213
|
+
"tag": "describe",
|
|
214
|
+
"args": {
|
|
215
|
+
"label": "Expires"
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"at": "TransferWithAuthorization(0).nonce",
|
|
220
|
+
"tag": "describe",
|
|
221
|
+
"args": {
|
|
222
|
+
"label": "Nonce"
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"at": "ReceiveWithAuthorization",
|
|
227
|
+
"tag": "intent",
|
|
228
|
+
"args": {
|
|
229
|
+
"title": "Pay USDC by signature, collected by the payee",
|
|
230
|
+
"template": "Send {value} from {from} to {to}, once; only {to} can submit it. Valid after {validAfter}. Expires: {validBefore}."
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"at": "ReceiveWithAuthorization",
|
|
235
|
+
"tag": "effect",
|
|
236
|
+
"args": {
|
|
237
|
+
"kind": "transfer",
|
|
238
|
+
"irreversible": true,
|
|
239
|
+
"grant": {
|
|
240
|
+
"to": "to",
|
|
241
|
+
"amount": "value",
|
|
242
|
+
"ends": [
|
|
243
|
+
"validBefore"
|
|
244
|
+
]
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"at": "ReceiveWithAuthorization(0).from",
|
|
250
|
+
"tag": "describe",
|
|
251
|
+
"args": {
|
|
252
|
+
"label": "From"
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"at": "ReceiveWithAuthorization(0).to",
|
|
257
|
+
"tag": "describe",
|
|
258
|
+
"args": {
|
|
259
|
+
"label": "To"
|
|
260
|
+
}
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"at": "ReceiveWithAuthorization(0).value",
|
|
264
|
+
"tag": "amount",
|
|
265
|
+
"args": {
|
|
266
|
+
"decimals": 6,
|
|
267
|
+
"symbol": "USDC"
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"at": "ReceiveWithAuthorization(0).value",
|
|
272
|
+
"tag": "describe",
|
|
273
|
+
"args": {
|
|
274
|
+
"label": "Amount"
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"at": "ReceiveWithAuthorization(0).validAfter",
|
|
279
|
+
"tag": "timestamp",
|
|
280
|
+
"args": {
|
|
281
|
+
"unit": "s",
|
|
282
|
+
"epoch": "unix"
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"at": "ReceiveWithAuthorization(0).validAfter",
|
|
287
|
+
"tag": "describe",
|
|
288
|
+
"args": {
|
|
289
|
+
"label": "Valid after"
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"at": "ReceiveWithAuthorization(0).validBefore",
|
|
294
|
+
"tag": "timestamp",
|
|
295
|
+
"args": {
|
|
296
|
+
"unit": "s",
|
|
297
|
+
"epoch": "unix",
|
|
298
|
+
"threshold": "115792089237316195423570985008687907853269984665640564039457584007913129639935",
|
|
299
|
+
"message": "Never"
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"at": "ReceiveWithAuthorization(0).validBefore",
|
|
304
|
+
"tag": "describe",
|
|
305
|
+
"args": {
|
|
306
|
+
"label": "Expires"
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"at": "ReceiveWithAuthorization(0).nonce",
|
|
311
|
+
"tag": "describe",
|
|
312
|
+
"args": {
|
|
313
|
+
"label": "Nonce"
|
|
314
|
+
}
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"at": "CancelAuthorization",
|
|
318
|
+
"tag": "intent",
|
|
319
|
+
"args": {
|
|
320
|
+
"title": "Cancel a USDC payment signature",
|
|
321
|
+
"template": "Cancel the unused USDC payment signature of {authorizer} with nonce {nonce}."
|
|
322
|
+
}
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"at": "CancelAuthorization",
|
|
326
|
+
"tag": "effect",
|
|
327
|
+
"args": {
|
|
328
|
+
"kind": "write",
|
|
329
|
+
"irreversible": true
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"at": "CancelAuthorization(0).authorizer",
|
|
334
|
+
"tag": "describe",
|
|
335
|
+
"args": {
|
|
336
|
+
"label": "Signer of the payment"
|
|
337
|
+
}
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"at": "CancelAuthorization(0).nonce",
|
|
341
|
+
"tag": "describe",
|
|
342
|
+
"args": {
|
|
343
|
+
"label": "Nonce"
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"at": "Permit",
|
|
348
|
+
"tag": "intent",
|
|
349
|
+
"args": {
|
|
350
|
+
"title": "Permit USDC spending",
|
|
351
|
+
"template": "Allow {spender} to spend up to {value} from {owner}. Signature expires: {deadline}."
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
"at": "Permit",
|
|
356
|
+
"tag": "effect",
|
|
357
|
+
"args": {
|
|
358
|
+
"kind": "approve",
|
|
359
|
+
"irreversible": false,
|
|
360
|
+
"grant": {
|
|
361
|
+
"spender": "spender",
|
|
362
|
+
"amount": "value"
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
"at": "Permit(0).owner",
|
|
368
|
+
"tag": "describe",
|
|
369
|
+
"args": {
|
|
370
|
+
"label": "Owner"
|
|
371
|
+
}
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"at": "Permit(0).spender",
|
|
375
|
+
"tag": "describe",
|
|
376
|
+
"args": {
|
|
377
|
+
"label": "Spender"
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
"at": "Permit(0).value",
|
|
382
|
+
"tag": "amount",
|
|
383
|
+
"args": {
|
|
384
|
+
"decimals": 6,
|
|
385
|
+
"symbol": "USDC",
|
|
386
|
+
"threshold": "115792089237316195423570985008687907853269984665640564039457584007913129639935"
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
"at": "Permit(0).value",
|
|
391
|
+
"tag": "describe",
|
|
392
|
+
"args": {
|
|
393
|
+
"label": "Amount"
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
"at": "Permit(0).nonce",
|
|
398
|
+
"tag": "describe",
|
|
399
|
+
"args": {
|
|
400
|
+
"label": "Nonce"
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"at": "Permit(0).deadline",
|
|
405
|
+
"tag": "timestamp",
|
|
406
|
+
"args": {
|
|
407
|
+
"unit": "s",
|
|
408
|
+
"epoch": "unix",
|
|
409
|
+
"threshold": "115792089237316195423570985008687907853269984665640564039457584007913129639935",
|
|
410
|
+
"message": "Never"
|
|
411
|
+
}
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
"at": "Permit(0).deadline",
|
|
415
|
+
"tag": "describe",
|
|
416
|
+
"args": {
|
|
417
|
+
"label": "Signature expires"
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
]
|
|
421
|
+
}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
{
|
|
2
|
+
"format": "candid-profile",
|
|
3
|
+
"format_version": 0,
|
|
4
|
+
"kind": "contract",
|
|
5
|
+
"name": "x402-exact-permit2",
|
|
6
|
+
"origin": "third_party",
|
|
7
|
+
"language": "en",
|
|
8
|
+
"description": "x402's `exact` payment through Permit2 (spec section 15.9, experimental): Permit2's PermitWitnessTransferFrom with x402's witness, Witness(address to,uint256 validAfter), which x402 uses for tokens without EIP-3009 (coinbase/x402, specs/schemes/exact/scheme_exact_evm.md). Permit2 lets the spender choose where the tokens go and never reads the witness, so the witness's `to` is the payee only when the spender is x402's proxy, 0x402085c248EeA27D92E8b30b2C58ed07f9E20001, whose `settle` sends exactly `permitted.amount` to `witness.to`, not before `validAfter` (contracts/evm/src/x402BasePermit2Proxy.sol). The spender is therefore fixed to the proxy, and a request with any other spender gets no text (E_FIXED). Bound to Permit2's domain and to its deployments on the networks x402 names where the proxy has the same code (read on chain: chains 1, 8453, 42161 and 84532 on 2026-10-30, the others on 2026-11-01). x402's `upto` payment signs another witness, described by the x402-upto-permit2 profile. Amounts are in the token the message names: a consumer supplies that token's decimals() and symbol(), and shows its address beside the symbol.",
|
|
9
|
+
"binds": {
|
|
10
|
+
"eip712": {
|
|
11
|
+
"domain": {
|
|
12
|
+
"name": "Permit2"
|
|
13
|
+
},
|
|
14
|
+
"types": {
|
|
15
|
+
"PermitWitnessTransferFrom": [
|
|
16
|
+
{
|
|
17
|
+
"name": "permitted",
|
|
18
|
+
"type": "TokenPermissions"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "spender",
|
|
22
|
+
"type": "address"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "nonce",
|
|
26
|
+
"type": "uint256"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"name": "deadline",
|
|
30
|
+
"type": "uint256"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name": "witness",
|
|
34
|
+
"type": "Witness"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"TokenPermissions": [
|
|
38
|
+
{
|
|
39
|
+
"name": "token",
|
|
40
|
+
"type": "address"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"name": "amount",
|
|
44
|
+
"type": "uint256"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"Witness": [
|
|
48
|
+
{
|
|
49
|
+
"name": "to",
|
|
50
|
+
"type": "address"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "validAfter",
|
|
54
|
+
"type": "uint256"
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"deployments": [
|
|
60
|
+
{
|
|
61
|
+
"chain_id": 1,
|
|
62
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"chain_id": 50,
|
|
66
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"chain_id": 51,
|
|
70
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"chain_id": 137,
|
|
74
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"chain_id": 143,
|
|
78
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"chain_id": 1328,
|
|
82
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"chain_id": 1329,
|
|
86
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"chain_id": 4326,
|
|
90
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"chain_id": 8453,
|
|
94
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"chain_id": 10143,
|
|
98
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"chain_id": 31612,
|
|
102
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"chain_id": 42161,
|
|
106
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"chain_id": 42220,
|
|
110
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"chain_id": 43113,
|
|
114
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"chain_id": 43114,
|
|
118
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"chain_id": 80002,
|
|
122
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"chain_id": 84532,
|
|
126
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"chain_id": 421614,
|
|
130
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"chain_id": 5042002,
|
|
134
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"chain_id": 11142220,
|
|
138
|
+
"address": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
|
|
139
|
+
}
|
|
140
|
+
]
|
|
141
|
+
},
|
|
142
|
+
"annotations": [
|
|
143
|
+
{
|
|
144
|
+
"at": "PermitWitnessTransferFrom",
|
|
145
|
+
"tag": "intent",
|
|
146
|
+
"args": {
|
|
147
|
+
"title": "Pay by x402 through Permit2",
|
|
148
|
+
"template": "Send {permitted.amount} to {witness.to}, once, through x402's payment contract. Usable from {witness.validAfter}. Signature expires: {deadline}."
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"at": "PermitWitnessTransferFrom",
|
|
153
|
+
"tag": "effect",
|
|
154
|
+
"args": {
|
|
155
|
+
"kind": "transfer",
|
|
156
|
+
"irreversible": true,
|
|
157
|
+
"grant": {
|
|
158
|
+
"to": "witness.to",
|
|
159
|
+
"amount": "permitted.amount",
|
|
160
|
+
"ends": [
|
|
161
|
+
"deadline"
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"at": "PermitWitnessTransferFrom(0).permitted.token",
|
|
168
|
+
"tag": "describe",
|
|
169
|
+
"args": {
|
|
170
|
+
"label": "Token"
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"at": "PermitWitnessTransferFrom(0).permitted.amount",
|
|
175
|
+
"tag": "amount",
|
|
176
|
+
"args": {
|
|
177
|
+
"token": "permitted.token"
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"at": "PermitWitnessTransferFrom(0).permitted.amount",
|
|
182
|
+
"tag": "describe",
|
|
183
|
+
"args": {
|
|
184
|
+
"label": "Amount"
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"at": "PermitWitnessTransferFrom(0).spender",
|
|
189
|
+
"tag": "fixed",
|
|
190
|
+
"args": {
|
|
191
|
+
"value": "0x402085c248EeA27D92E8b30b2C58ed07f9E20001"
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"at": "PermitWitnessTransferFrom(0).spender",
|
|
196
|
+
"tag": "describe",
|
|
197
|
+
"args": {
|
|
198
|
+
"label": "x402's payment contract"
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"at": "PermitWitnessTransferFrom(0).nonce",
|
|
203
|
+
"tag": "describe",
|
|
204
|
+
"args": {
|
|
205
|
+
"label": "Nonce"
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"at": "PermitWitnessTransferFrom(0).deadline",
|
|
210
|
+
"tag": "timestamp",
|
|
211
|
+
"args": {
|
|
212
|
+
"unit": "s",
|
|
213
|
+
"epoch": "unix",
|
|
214
|
+
"threshold": "115792089237316195423570985008687907853269984665640564039457584007913129639935",
|
|
215
|
+
"message": "Never"
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"at": "PermitWitnessTransferFrom(0).deadline",
|
|
220
|
+
"tag": "describe",
|
|
221
|
+
"args": {
|
|
222
|
+
"label": "Signature expires"
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"at": "PermitWitnessTransferFrom(0).witness.to",
|
|
227
|
+
"tag": "describe",
|
|
228
|
+
"args": {
|
|
229
|
+
"label": "To"
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"at": "PermitWitnessTransferFrom(0).witness.validAfter",
|
|
234
|
+
"tag": "timestamp",
|
|
235
|
+
"args": {
|
|
236
|
+
"unit": "s",
|
|
237
|
+
"epoch": "unix",
|
|
238
|
+
"labels": {
|
|
239
|
+
"0": "now"
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"at": "PermitWitnessTransferFrom(0).witness.validAfter",
|
|
245
|
+
"tag": "describe",
|
|
246
|
+
"args": {
|
|
247
|
+
"label": "Usable from"
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
]
|
|
251
|
+
}
|