@lemmaoracle/x402 0.1.1 → 0.1.3

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.
Files changed (146) hide show
  1. package/dist/advanced/index.d.ts +14 -0
  2. package/dist/advanced/index.d.ts.map +1 -0
  3. package/dist/advanced/index.js +14 -0
  4. package/dist/advanced/index.js.map +1 -0
  5. package/dist/index.d.ts +25 -42
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +25 -77
  8. package/dist/index.js.map +1 -1
  9. package/dist/lemma-config.d.ts +41 -0
  10. package/dist/lemma-config.d.ts.map +1 -0
  11. package/dist/lemma-config.js +12 -0
  12. package/dist/lemma-config.js.map +1 -0
  13. package/dist/lemma-discovery.d.ts +37 -0
  14. package/dist/lemma-discovery.d.ts.map +1 -0
  15. package/dist/lemma-discovery.js +104 -0
  16. package/dist/lemma-discovery.js.map +1 -0
  17. package/dist/lemma-server.d.ts +30 -0
  18. package/dist/lemma-server.d.ts.map +1 -0
  19. package/dist/lemma-server.js +169 -0
  20. package/dist/lemma-server.js.map +1 -0
  21. package/dist/lemma-submission.d.ts +44 -0
  22. package/dist/lemma-submission.d.ts.map +1 -0
  23. package/dist/lemma-submission.js +81 -0
  24. package/dist/lemma-submission.js.map +1 -0
  25. package/package.json +14 -14
  26. package/broadcast/DeployPaymentVerifier.s.sol/10143/run-1775996174982.json +0 -34
  27. package/broadcast/DeployPaymentVerifier.s.sol/10143/run-1775996423983.json +0 -51
  28. package/broadcast/DeployPaymentVerifier.s.sol/10143/run-1775996907850.json +0 -51
  29. package/broadcast/DeployPaymentVerifier.s.sol/10143/run-latest.json +0 -51
  30. package/cache/DeployPaymentVerifier.s.sol/10143/run-1775996174982.json +0 -7
  31. package/cache/DeployPaymentVerifier.s.sol/10143/run-1775996423983.json +0 -7
  32. package/cache/DeployPaymentVerifier.s.sol/10143/run-1775996907850.json +0 -7
  33. package/cache/DeployPaymentVerifier.s.sol/10143/run-latest.json +0 -7
  34. package/cache/solidity-files-cache.json +0 -1
  35. package/circuits/README.md +0 -78
  36. package/circuits/payment-comprehensive.test.mjs +0 -272
  37. package/circuits/payment.circom +0 -89
  38. package/circuits/payment.test.mjs +0 -173
  39. package/dist/proof-generator.d.ts +0 -26
  40. package/dist/proof-generator.d.ts.map +0 -1
  41. package/dist/proof-generator.js +0 -154
  42. package/dist/proof-generator.js.map +0 -1
  43. package/dist/proof-generator.test.d.ts +0 -7
  44. package/dist/proof-generator.test.d.ts.map +0 -1
  45. package/dist/proof-generator.test.js +0 -121
  46. package/dist/proof-generator.test.js.map +0 -1
  47. package/dist/transaction-watcher.d.ts +0 -42
  48. package/dist/transaction-watcher.d.ts.map +0 -1
  49. package/dist/transaction-watcher.js +0 -88
  50. package/dist/transaction-watcher.js.map +0 -1
  51. package/dist/transaction-watcher.test.d.ts +0 -7
  52. package/dist/transaction-watcher.test.d.ts.map +0 -1
  53. package/dist/transaction-watcher.test.js +0 -111
  54. package/dist/transaction-watcher.test.js.map +0 -1
  55. package/dist/types.d.ts +0 -76
  56. package/dist/types.d.ts.map +0 -1
  57. package/dist/types.js +0 -2
  58. package/dist/types.js.map +0 -1
  59. package/foundry.lock +0 -11
  60. package/foundry.toml +0 -16
  61. package/lib/forge-std/.gitattributes +0 -1
  62. package/lib/forge-std/.github/CODEOWNERS +0 -1
  63. package/lib/forge-std/.github/dependabot.yml +0 -6
  64. package/lib/forge-std/.github/workflows/ci.yml +0 -161
  65. package/lib/forge-std/.github/workflows/sync.yml +0 -36
  66. package/lib/forge-std/CONTRIBUTING.md +0 -193
  67. package/lib/forge-std/LICENSE-APACHE +0 -203
  68. package/lib/forge-std/LICENSE-MIT +0 -25
  69. package/lib/forge-std/README.md +0 -314
  70. package/lib/forge-std/RELEASE_CHECKLIST.md +0 -12
  71. package/lib/forge-std/foundry.toml +0 -18
  72. package/lib/forge-std/package.json +0 -16
  73. package/lib/forge-std/scripts/vm.py +0 -636
  74. package/lib/forge-std/src/Base.sol +0 -48
  75. package/lib/forge-std/src/Config.sol +0 -60
  76. package/lib/forge-std/src/LibVariable.sol +0 -477
  77. package/lib/forge-std/src/Script.sol +0 -28
  78. package/lib/forge-std/src/StdAssertions.sol +0 -1300
  79. package/lib/forge-std/src/StdChains.sol +0 -303
  80. package/lib/forge-std/src/StdCheats.sol +0 -825
  81. package/lib/forge-std/src/StdConfig.sol +0 -632
  82. package/lib/forge-std/src/StdConstants.sol +0 -30
  83. package/lib/forge-std/src/StdError.sol +0 -15
  84. package/lib/forge-std/src/StdInvariant.sol +0 -161
  85. package/lib/forge-std/src/StdJson.sol +0 -275
  86. package/lib/forge-std/src/StdMath.sol +0 -47
  87. package/lib/forge-std/src/StdStorage.sol +0 -476
  88. package/lib/forge-std/src/StdStyle.sol +0 -333
  89. package/lib/forge-std/src/StdToml.sol +0 -275
  90. package/lib/forge-std/src/StdUtils.sol +0 -200
  91. package/lib/forge-std/src/Test.sol +0 -32
  92. package/lib/forge-std/src/Vm.sol +0 -2533
  93. package/lib/forge-std/src/console.sol +0 -1551
  94. package/lib/forge-std/src/console2.sol +0 -4
  95. package/lib/forge-std/src/interfaces/IERC1155.sol +0 -105
  96. package/lib/forge-std/src/interfaces/IERC165.sol +0 -12
  97. package/lib/forge-std/src/interfaces/IERC20.sol +0 -43
  98. package/lib/forge-std/src/interfaces/IERC4626.sol +0 -190
  99. package/lib/forge-std/src/interfaces/IERC6909.sol +0 -72
  100. package/lib/forge-std/src/interfaces/IERC721.sol +0 -164
  101. package/lib/forge-std/src/interfaces/IERC7540.sol +0 -145
  102. package/lib/forge-std/src/interfaces/IERC7575.sol +0 -241
  103. package/lib/forge-std/src/interfaces/IMulticall3.sol +0 -68
  104. package/lib/forge-std/src/safeconsole.sol +0 -13248
  105. package/lib/forge-std/test/CommonBase.t.sol +0 -44
  106. package/lib/forge-std/test/Config.t.sol +0 -381
  107. package/lib/forge-std/test/LibVariable.t.sol +0 -452
  108. package/lib/forge-std/test/StdAssertions.t.sol +0 -141
  109. package/lib/forge-std/test/StdChains.t.sol +0 -227
  110. package/lib/forge-std/test/StdCheats.t.sol +0 -638
  111. package/lib/forge-std/test/StdConstants.t.sol +0 -38
  112. package/lib/forge-std/test/StdError.t.sol +0 -119
  113. package/lib/forge-std/test/StdJson.t.sol +0 -49
  114. package/lib/forge-std/test/StdMath.t.sol +0 -202
  115. package/lib/forge-std/test/StdStorage.t.sol +0 -532
  116. package/lib/forge-std/test/StdStyle.t.sol +0 -110
  117. package/lib/forge-std/test/StdToml.t.sol +0 -49
  118. package/lib/forge-std/test/StdUtils.t.sol +0 -342
  119. package/lib/forge-std/test/Vm.t.sol +0 -18
  120. package/lib/forge-std/test/compilation/CompilationScript.sol +0 -8
  121. package/lib/forge-std/test/compilation/CompilationScriptBase.sol +0 -8
  122. package/lib/forge-std/test/compilation/CompilationTest.sol +0 -8
  123. package/lib/forge-std/test/compilation/CompilationTestBase.sol +0 -8
  124. package/lib/forge-std/test/fixtures/broadcast.log.json +0 -187
  125. package/lib/forge-std/test/fixtures/config.toml +0 -81
  126. package/lib/forge-std/test/fixtures/test.json +0 -8
  127. package/lib/forge-std/test/fixtures/test.toml +0 -6
  128. package/package.json.backup +0 -55
  129. package/scripts/DeployPaymentVerifier.s.sol +0 -18
  130. package/scripts/build.sh +0 -61
  131. package/scripts/deploy.sh +0 -65
  132. package/scripts/fix-verifier.mjs +0 -64
  133. package/scripts/register-circuit.ts +0 -213
  134. package/scripts/test-with-circuit.mjs +0 -88
  135. package/src/index.ts +0 -115
  136. package/src/proof-generator.test.ts +0 -139
  137. package/src/proof-generator.ts +0 -220
  138. package/src/transaction-watcher.test.ts +0 -153
  139. package/src/transaction-watcher.ts +0 -154
  140. package/src/types.ts +0 -110
  141. package/tsconfig.json +0 -14
  142. package/tsconfig.tsbuildinfo +0 -1
  143. package/vitest.config.ts +0 -18
  144. package/workers/x402-facilitator/src/index.ts +0 -582
  145. package/workers/x402-facilitator/src/x402-env.d.ts +0 -25
  146. package/workers/x402-facilitator/wrangler.toml +0 -19
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Augmented x402ResourceServer -- subclass of the original with automatic
3
+ * Lemma hook wiring.
4
+ *
5
+ * Re-exported from root as x402ResourceServer. Users instantiate it identically
6
+ * to the original: new x402ResourceServer(facilitatorClient). The Lemma
7
+ * onAfterSettle hook is auto-attached in the constructor.
8
+ *
9
+ * Config is resolved from:
10
+ * 1. Explicit LemmaConfig passed as second constructor argument
11
+ * 2. LEMMA_CONFIG env var (JSON string)
12
+ * 3. Individual env vars: LEMMA_API_BASE, LEMMA_API_KEY, LEMMA_CIRCUIT_ID, LEMMA_RELAY_URL
13
+ */
14
+ import { x402ResourceServer as BaseResourceServer, } from "@x402/core/server";
15
+ import { createLemmaSubmissionHandler } from "./lemma-submission.js";
16
+ import { poseidon6 } from "poseidon-lite";
17
+ /**
18
+ * Resolve LemmaConfig from available sources.
19
+ *
20
+ * Priority: explicit config -> LEMMA_CONFIG env JSON -> individual env vars.
21
+ */
22
+ const resolveLemmaConfig = (explicit) => {
23
+ const fromExplicit = explicit;
24
+ const fromEnv = resolveFromEnv();
25
+ return fromExplicit ?? fromEnv;
26
+ };
27
+ /** Read LEMMA_CONFIG env var as JSON and parse it. */
28
+ const resolveFromEnv = () => {
29
+ const raw = typeof process !== "undefined"
30
+ ? process.env.LEMMA_CONFIG
31
+ : undefined;
32
+ const jsonStr = raw;
33
+ return !jsonStr
34
+ ? resolveFromIndividualEnvVars()
35
+ : (() => {
36
+ try {
37
+ const parsed = JSON.parse(jsonStr);
38
+ const apiBase = parsed.apiBase;
39
+ return apiBase
40
+ ? ({
41
+ apiBase,
42
+ apiKey: parsed.apiKey,
43
+ circuitId: parsed.circuitId ?? "x402-payment-v1",
44
+ relayUrl: parsed.relayUrl,
45
+ discovery: parsed.discovery,
46
+ })
47
+ : resolveFromIndividualEnvVars();
48
+ }
49
+ catch {
50
+ return resolveFromIndividualEnvVars();
51
+ }
52
+ })();
53
+ };
54
+ /** Fallback to individual env vars. */
55
+ const resolveFromIndividualEnvVars = () => {
56
+ const env = typeof process !== "undefined" ? process.env : {};
57
+ const apiBase = env.LEMMA_API_BASE;
58
+ return apiBase
59
+ ? {
60
+ apiBase,
61
+ apiKey: env.LEMMA_API_KEY,
62
+ circuitId: env.LEMMA_CIRCUIT_ID ?? "x402-payment-v1",
63
+ relayUrl: env.LEMMA_RELAY_URL,
64
+ }
65
+ : undefined;
66
+ };
67
+ /**
68
+ * Augmented version of x402ResourceServer.
69
+ *
70
+ * Subclasses the original to auto-attach Lemma hooks. The subclass does NOT
71
+ * change the public API -- it only adds internal wiring in the constructor.
72
+ *
73
+ * @param facilitatorClient - x402 facilitator client(s)
74
+ * @param lemmaConfig - Optional explicit Lemma configuration
75
+ */
76
+ class LemmaResourceServer extends BaseResourceServer {
77
+ constructor(facilitatorClient, lemmaConfig) {
78
+ super(facilitatorClient);
79
+ const config = resolveLemmaConfig(lemmaConfig);
80
+ // No Lemma config available -- skip wiring (fallback: delegate to base class only)
81
+ if (!config)
82
+ return;
83
+ const submissionHandler = createLemmaSubmissionHandler(config);
84
+ // Register Lemma extension to enrich settlement response with proof data.
85
+ // enrichSettlementResponse runs BEFORE createSettlementHeaders, so
86
+ // extensions.lemma is included in the PAYMENT-RESPONSE header.
87
+ this.registerExtension({
88
+ key: "lemma",
89
+ enrichSettlementResponse: async (_declaration, context) => {
90
+ try {
91
+ const settlementResult = context.result;
92
+ // Build submission context from settlement data
93
+ const docHash = context.requirements.extra?.docHash ??
94
+ settlementResult.transaction ??
95
+ "unknown";
96
+ const schema = context.requirements.extra?.schema ??
97
+ "default";
98
+ // Extract payment details for proof witness
99
+ // The circuit expects specific inputs matching X402Payment circuit
100
+ const txHash = (settlementResult.transaction ?? "").replace(/^0x/, "");
101
+ const bn128Prime = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617");
102
+ // Split 256-bit tx hash into 2 field elements (128-bit each)
103
+ const txHashLow = txHash.length >= 32
104
+ ? (BigInt(`0x${txHash.slice(-32)}`) % bn128Prime).toString()
105
+ : "0";
106
+ const txHashHigh = txHash.length >= 64
107
+ ? (BigInt(`0x${txHash.slice(0, -32)}`) % bn128Prime).toString()
108
+ : (BigInt(`0x${txHash}`) % bn128Prime).toString();
109
+ // Recipient address (payTo) - split into low/high
110
+ const payTo = (context.requirements.payTo ?? "").replace(/^0x/, "").padStart(40, "0");
111
+ const recipientLow = (BigInt(`0x${payTo.slice(-16)}`) % bn128Prime).toString();
112
+ const recipientHigh = (BigInt(`0x${payTo.slice(0, -16) || "0"}`) % bn128Prime).toString();
113
+ // Amount (USDC has 6 decimals, x402 uses smallest unit)
114
+ const amount = context.requirements.amount ?? "1000";
115
+ // Timestamp - use current time for freshness
116
+ const timestamp = Math.floor(Date.now() / 1000).toString();
117
+ const timestampMax = (parseInt(timestamp) + 3600).toString();
118
+ // Min amount
119
+ const minAmount = amount;
120
+ // Commitment = Poseidon6(txHashPacked[0], txHashPacked[1], recipientLow, amount, timestamp, minAmount)
121
+ const commitment = poseidon6([
122
+ BigInt(txHashLow),
123
+ BigInt(txHashHigh),
124
+ BigInt(recipientLow),
125
+ BigInt(amount),
126
+ BigInt(timestamp),
127
+ BigInt(minAmount),
128
+ ]).toString();
129
+ const witness = {
130
+ txHashPacked: [txHashLow, txHashHigh],
131
+ recipientLow,
132
+ recipientHigh,
133
+ amount,
134
+ timestamp,
135
+ minAmount,
136
+ commitment,
137
+ minAmountPublic: minAmount,
138
+ timestampMax,
139
+ };
140
+ const proofOutput = await submissionHandler({
141
+ docHash: txHash,
142
+ schema: String(schema),
143
+ issuerId: "lemma-x402",
144
+ witness,
145
+ metadata: {
146
+ payer: settlementResult.payer,
147
+ transaction: settlementResult.transaction,
148
+ network: settlementResult.network,
149
+ },
150
+ });
151
+ const extData = {
152
+ proof: proofOutput.proof,
153
+ inputs: proofOutput.inputs,
154
+ circuitId: config.circuitId,
155
+ generatedAt: Date.now(),
156
+ };
157
+ return extData;
158
+ }
159
+ catch (err) {
160
+ // Non-fatal -- settlement succeeded even if proof submission fails.
161
+ console.error("[Lemma] enrichSettlementResponse error:", err);
162
+ return undefined;
163
+ }
164
+ },
165
+ });
166
+ }
167
+ }
168
+ export { LemmaResourceServer as x402ResourceServer };
169
+ //# sourceMappingURL=lemma-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lemma-server.js","sourceRoot":"","sources":["../src/lemma-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,kBAAkB,IAAI,kBAAkB,GACzC,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,CACzB,QAAsB,EACG,EAAE;IAC3B,MAAM,YAAY,GAAG,QAAQ,CAAC;IAC9B,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,OAAO,YAAY,IAAI,OAAO,CAAC;AACjC,CAAC,CAAC;AAEF,sDAAsD;AACtD,MAAM,cAAc,GAAG,GAA4B,EAAE;IACnD,MAAM,GAAG,GACP,OAAO,OAAO,KAAK,WAAW;QAC5B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY;QAC1B,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,OAAO,GAAG,GAAG,CAAC;IAEpB,OAAO,CAAC,OAAO;QACb,CAAC,CAAC,4BAA4B,EAAE;QAChC,CAAC,CAAC,CAAC,GAAG,EAAE;YACJ,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;gBAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,OAA6B,CAAC;gBACrD,OAAO,OAAO;oBACZ,CAAC,CAAC,CAAC;wBACC,OAAO;wBACP,MAAM,EAAE,MAAM,CAAC,MAA4B;wBAC3C,SAAS,EACN,MAAM,CAAC,SAAoB,IAAI,iBAAiB;wBACnD,QAAQ,EAAE,MAAM,CAAC,QAA8B;wBAC/C,SAAS,EACP,MAAM,CAAC,SAAiD;qBAC3D,CAAC;oBACJ,CAAC,CAAC,4BAA4B,EAAE,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,4BAA4B,EAAE,CAAC;YACxC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;AACX,CAAC,CAAC;AAEF,uCAAuC;AACvC,MAAM,4BAA4B,GAAG,GAA4B,EAAE;IACjE,MAAM,GAAG,GAAG,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC;IACnC,OAAO,OAAO;QACZ,CAAC,CAAC;YACE,OAAO;YACP,MAAM,EAAE,GAAG,CAAC,aAAa;YACzB,SAAS,EAAE,GAAG,CAAC,gBAAgB,IAAI,iBAAiB;YACpD,QAAQ,EAAE,GAAG,CAAC,eAAe;SAC9B;QACH,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,mBAAoB,SAAQ,kBAAkB;IAClD,YACE,iBAA2D,EAC3D,WAAyB;QAEzB,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEzB,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC/C,mFAAmF;QACnF,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;QAE/D,0EAA0E;QAC1E,mEAAmE;QACnE,+DAA+D;QAC/D,IAAI,CAAC,iBAAiB,CAAC;YACrB,GAAG,EAAE,OAAO;YACZ,wBAAwB,EAAE,KAAK,EAC7B,YAAqB,EACrB,OAA4B,EACV,EAAE;gBACpB,IAAI,CAAC;oBACH,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;oBAExC,gDAAgD;oBAChD,MAAM,OAAO,GACV,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,OAAkB;wBAC/C,gBAAgB,CAAC,WAAW;wBAC5B,SAAS,CAAC;oBAEZ,MAAM,MAAM,GACT,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,MAAiB;wBAC9C,SAAS,CAAC;oBAEZ,4CAA4C;oBAC5C,mEAAmE;oBACnE,MAAM,MAAM,GAAG,CAAC,gBAAgB,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACvE,MAAM,UAAU,GAAG,MAAM,CAAC,+EAA+E,CAAC,CAAC;oBAE3G,6DAA6D;oBAC7D,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE;wBACnC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE;wBAC5D,CAAC,CAAC,GAAG,CAAC;oBACR,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE;wBACpC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE;wBAC/D,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAEpD,kDAAkD;oBAClD,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBACtF,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAC/E,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAE1F,wDAAwD;oBACxD,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,IAAI,MAAM,CAAC;oBAErD,6CAA6C;oBAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAC3D,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAE7D,aAAa;oBACb,MAAM,SAAS,GAAG,MAAM,CAAC;oBAEzB,uGAAuG;oBACvG,MAAM,UAAU,GAAG,SAAS,CAAC;wBAC3B,MAAM,CAAC,SAAS,CAAC;wBACjB,MAAM,CAAC,UAAU,CAAC;wBAClB,MAAM,CAAC,YAAY,CAAC;wBACpB,MAAM,CAAC,MAAM,CAAC;wBACd,MAAM,CAAC,SAAS,CAAC;wBACjB,MAAM,CAAC,SAAS,CAAC;qBAClB,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAEd,MAAM,OAAO,GAAG;wBACd,YAAY,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;wBACrC,YAAY;wBACZ,aAAa;wBACb,MAAM;wBACN,SAAS;wBACT,SAAS;wBACT,UAAU;wBACV,eAAe,EAAE,SAAS;wBAC1B,YAAY;qBACb,CAAC;oBAEF,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC;wBAC1C,OAAO,EAAE,MAAM;wBACf,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;wBACtB,QAAQ,EAAE,YAAY;wBACtB,OAAO;wBACP,QAAQ,EAAE;4BACR,KAAK,EAAE,gBAAgB,CAAC,KAAK;4BAC7B,WAAW,EAAE,gBAAgB,CAAC,WAAW;4BACzC,OAAO,EAAE,gBAAgB,CAAC,OAAO;yBAClC;qBACF,CAAC,CAAC;oBAEH,MAAM,OAAO,GAAG;wBACd,KAAK,EAAE,WAAW,CAAC,KAAK;wBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;wBAC1B,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;qBACxB,CAAC;oBACF,OAAO,OAAO,CAAC;gBACjB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,oEAAoE;oBACpE,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;oBAC9D,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF;AAED,OAAO,EAAE,mBAAmB,IAAI,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Lemma submission orchestration -- internal handler invoked by the
3
+ * augmented x402ResourceServer onAfterSettle hook.
4
+ *
5
+ * Composes the Lemma proof flow:
6
+ * documents.register (via @lemmaoracle/sdk/documents -- pure HTTP, Workers-safe)
7
+ * -> prover.prove (via Relay -- requires Node.js for snarkjs/ffjavascript)
8
+ * -> proofs.submit (via @lemmaoracle/sdk/proofs -- pure HTTP, Workers-safe)
9
+ *
10
+ * Not exported from root. Exported from ./advanced for customisation.
11
+ */
12
+ import type { LemmaClient } from "@lemmaoracle/sdk";
13
+ import type { LemmaConfig } from "./lemma-config.js";
14
+ /** Context passed to the submission handler from onAfterSettle. */
15
+ type SubmissionContext = Readonly<{
16
+ /** Doc hash (e.g. content SHA-256) */
17
+ docHash: string;
18
+ /** Schema identifier */
19
+ schema: string;
20
+ /** Issuer identifier */
21
+ issuerId: string;
22
+ /** Content CID (IPFS or other storage identifier) */
23
+ cid?: string;
24
+ /** Attributes to register with the document */
25
+ attributes?: Readonly<Record<string, unknown>>;
26
+ /** Witness data for ZK proof generation */
27
+ witness?: Readonly<Record<string, unknown>>;
28
+ /** Additional metadata from the settlement */
29
+ metadata?: Readonly<Record<string, unknown>>;
30
+ }>;
31
+ /**
32
+ * Create a Lemma submission handler.
33
+ *
34
+ * Uses @lemmaoracle/sdk/documents and @lemmaoracle/sdk/proofs sub-path imports
35
+ * to avoid pulling snarkjs/ffjavascript into the Workers bundle.
36
+ * prover.prove is delegated to the Relay (Node.js server).
37
+ */
38
+ declare const createLemmaSubmissionHandler: (config: LemmaConfig, lemmaClientOverride?: LemmaClient) => ((ctx: SubmissionContext) => Promise<{
39
+ proof: string;
40
+ inputs: ReadonlyArray<string>;
41
+ }>);
42
+ export type { SubmissionContext };
43
+ export { createLemmaSubmissionHandler };
44
+ //# sourceMappingURL=lemma-submission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lemma-submission.d.ts","sourceRoot":"","sources":["../src/lemma-submission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,mEAAmE;AACnE,KAAK,iBAAiB,GAAG,QAAQ,CAAC;IAChC,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,2CAA2C;IAC3C,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5C,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC9C,CAAC,CAAC;AA6BH;;;;;;GAMG;AACH,QAAA,MAAM,4BAA4B,GAChC,QAAQ,WAAW,EACnB,sBAAsB,WAAW,KAChC,CAAC,CAAC,GAAG,EAAE,iBAAiB,KAAK,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,CAiDxF,CAAC;AAEF,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAClC,OAAO,EAAE,4BAA4B,EAAE,CAAC"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Lemma submission orchestration -- internal handler invoked by the
3
+ * augmented x402ResourceServer onAfterSettle hook.
4
+ *
5
+ * Composes the Lemma proof flow:
6
+ * documents.register (via @lemmaoracle/sdk/documents -- pure HTTP, Workers-safe)
7
+ * -> prover.prove (via Relay -- requires Node.js for snarkjs/ffjavascript)
8
+ * -> proofs.submit (via @lemmaoracle/sdk/proofs -- pure HTTP, Workers-safe)
9
+ *
10
+ * Not exported from root. Exported from ./advanced for customisation.
11
+ */
12
+ import { register } from "@lemmaoracle/sdk/documents";
13
+ import { submit } from "@lemmaoracle/sdk/proofs";
14
+ import { create as createLemmaClient } from "@lemmaoracle/sdk/client";
15
+ /** Call the Relay /prover/prove endpoint. */
16
+ const proveViaRelay = (relayUrl, apiBase, apiKey, circuitId, witness) => {
17
+ const url = `${relayUrl.replace(/\/$/, "")}/prover/prove`;
18
+ return fetch(url, {
19
+ method: "POST",
20
+ headers: { "Content-Type": "application/json" },
21
+ body: JSON.stringify({
22
+ apiBase,
23
+ apiKey,
24
+ input: { circuitId, witness },
25
+ }),
26
+ }).then(async (res) => {
27
+ if (!res.ok) {
28
+ const errBody = await res.text();
29
+ throw new Error(`Relay /prover/prove failed: ${String(res.status)} ${errBody}`);
30
+ }
31
+ const json = (await res.json());
32
+ return json;
33
+ });
34
+ };
35
+ /**
36
+ * Create a Lemma submission handler.
37
+ *
38
+ * Uses @lemmaoracle/sdk/documents and @lemmaoracle/sdk/proofs sub-path imports
39
+ * to avoid pulling snarkjs/ffjavascript into the Workers bundle.
40
+ * prover.prove is delegated to the Relay (Node.js server).
41
+ */
42
+ const createLemmaSubmissionHandler = (config, lemmaClientOverride) => {
43
+ const client = lemmaClientOverride ??
44
+ createLemmaClient({
45
+ apiBase: config.apiBase,
46
+ apiKey: config.apiKey,
47
+ });
48
+ const relayUrl = config.relayUrl ?? "https://p01--lemma-relay-api--svxwx5jzx.code.run/";
49
+ return async (ctx) => {
50
+ // Step 1: Register document (pure HTTP — Workers-safe via sub-path import)
51
+ const _docResult = await register(client, {
52
+ schema: ctx.schema,
53
+ docHash: ctx.docHash,
54
+ cid: ctx.cid ?? ctx.docHash,
55
+ issuerId: ctx.issuerId ?? "lemma-x402",
56
+ subjectId: ctx.metadata?.payer ?? "anonymous",
57
+ attributes: ctx.attributes ?? {},
58
+ commitments: {
59
+ scheme: "poseidon",
60
+ root: ctx.docHash,
61
+ leaves: [],
62
+ randomness: ctx.docHash,
63
+ },
64
+ revocation: {
65
+ root: ctx.docHash,
66
+ },
67
+ });
68
+ // Step 2: Generate ZK proof via Relay
69
+ const proofOutput = await proveViaRelay(relayUrl, config.apiBase, config.apiKey, config.circuitId, ctx.witness ?? { docHash: ctx.docHash });
70
+ // Step 3: Submit proof (pure HTTP — Workers-safe via sub-path import)
71
+ const _submitResult = await submit(client, {
72
+ docHash: ctx.docHash,
73
+ circuitId: config.circuitId,
74
+ proof: proofOutput.proof,
75
+ inputs: proofOutput.inputs,
76
+ });
77
+ return proofOutput;
78
+ };
79
+ };
80
+ export { createLemmaSubmissionHandler };
81
+ //# sourceMappingURL=lemma-submission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lemma-submission.js","sourceRoot":"","sources":["../src/lemma-submission.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,15 +1,22 @@
1
1
  {
2
2
  "name": "@lemmaoracle/x402",
3
- "version": "0.1.1",
4
- "description": "ZK-enabled x402 payment proofs for Lemma's disclosure.condition API",
3
+ "version": "0.1.3",
4
+ "description": "Drop-in replacement for @x402/* with automatic Lemma discovery and proof submission",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
8
8
  "types": "dist/index.d.ts",
9
+ "files": [
10
+ "dist"
11
+ ],
9
12
  "exports": {
10
13
  ".": {
11
14
  "types": "./dist/index.d.ts",
12
15
  "import": "./dist/index.js"
16
+ },
17
+ "./advanced": {
18
+ "types": "./dist/advanced/index.d.ts",
19
+ "import": "./dist/advanced/index.js"
13
20
  }
14
21
  },
15
22
  "scripts": {
@@ -17,39 +24,32 @@
17
24
  "build:circuit": "bash scripts/build.sh",
18
25
  "dev": "tsc --watch",
19
26
  "type-check": "tsc --noEmit",
20
- "test": "vitest run && bash -c 'if [ ! -f \"build/payment_js/payment.wasm\" ]; then echo \"🔧 Circuit not built. Building circuit first...\" && npm run build:circuit; fi && node circuits/payment.test.mjs'",
27
+ "test": "bash -c 'if [ ! -f \"build/payment_js/payment.wasm\" ]; then echo \"🔧 Circuit not built. Building circuit first...\" && npm run build:circuit; fi && node circuits/payment.test.mjs'",
21
28
  "test:vitest": "vitest run",
22
29
  "test:watch": "vitest",
23
30
  "test:circuit": "node circuits/payment.test.mjs",
24
31
  "test:circuit:comprehensive": "node circuits/payment-comprehensive.test.mjs",
25
- "deploy:worker": "wrangler deploy --config wrangler.toml",
26
- "deploy": "dotenv -e ../../.env -- forge script ${SCRIPT:-scripts/DeployPaymentVerifier.s.sol} --broadcast",
27
- "deploy:monadTestnet": "dotenv -e ../../.env -- forge script ${SCRIPT:-scripts/DeployPaymentVerifier.s.sol} --rpc-url monad_testnet --broadcast --verify",
28
- "deploy:baseSepolia": "dotenv -e ../../.env -- forge script ${SCRIPT:-scripts/DeployPaymentVerifier.s.sol} --rpc-url base_sepolia --broadcast --verify",
29
32
  "register": "tsx scripts/register-circuit.ts"
30
33
  },
31
34
  "dependencies": {
32
- "@lemmaoracle/sdk": "^0.0.17",
33
- "@lemmaoracle/spec": "workspace:*",
34
35
  "@x402/core": "^2.9.0",
35
36
  "@x402/evm": "^2.9.0",
36
37
  "@x402/hono": "^2.9.0",
37
38
  "hono": "^4.6.14",
38
- "ramda": "^0.30.0",
39
- "viem": "^2.21.0"
39
+ "poseidon-lite": "^0.3.0"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@cloudflare/workers-types": "^4.20241230.0",
43
- "@types/ramda": "^0.30.0",
44
43
  "circom2": "^0.2.22",
45
44
  "circomlib": "^2.0.5",
46
45
  "dotenv": "^16.4.7",
47
- "dotenv-cli": "^11.0.0",
48
- "poseidon-lite": "^0.3.0",
49
46
  "snarkjs": "^0.7.5",
50
47
  "tsx": "^4.19.0",
51
48
  "typescript": "^5.7.3",
52
49
  "vitest": "^2.0.0",
53
50
  "wrangler": "^3.101.0"
51
+ },
52
+ "peerDependencies": {
53
+ "@lemmaoracle/sdk": "^0.0.19"
54
54
  }
55
55
  }
@@ -1,34 +0,0 @@
1
- {
2
- "transactions": [
3
- {
4
- "hash": null,
5
- "transactionType": "CREATE",
6
- "contractName": "Groth16Verifier",
7
- "contractAddress": "0x95b52da4586b4d18f102881398ee4dd6f6c5180e",
8
- "function": null,
9
- "arguments": null,
10
- "transaction": {
11
- "from": "0x12e053712117e1f4718aea734f16affef899899b",
12
- "gas": "0x7bbaa",
13
- "value": "0x0",
14
- "input": "0x6080604052348015600e575f5ffd5b506106028061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c806311479fea1461002d575b5f5ffd5b61004061003b36600461056a565b610054565b604051901515815260200160405180910390f35b5f61050c565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110610089575f5f5260205ff35b50565b5f60405183815284602082015285604082015260408160608360076107d05a03fa9150816100bc575f5f5260205ff35b825160408201526020830151606082015260408360808360066107d05a03fa915050806100eb575f5f5260205ff35b5050505050565b7f2bb813830379698fa5b225f1c6fb0204e6bf5e06fc3c4758439f09f42e8761da85527f102355293c5a9f04deaa5bb5328a5b63b6723d1ce49092d87099f1a9721a951f60208601525f608086018661018e87357f1f0ae8c62117987693367401edef1c2dd4bf3e4df2e4e0f009d969b3b41962fe7f09dbd752f93dbe8ebd564ed96ee036648ceea95c44ec10b5e2a557a34c8dc46d8461008c565b6101de60208801357f19abf6704eec4091d939dde3f2bbe5cccb94280dfd153f0cd8f043113519a2857f1800f9c5682654ce844ca5d769ea06c4016f21c67ca640e675ef683b43ef33de8461008c565b61022e60408801357f083a8138e5f89d7f520b5e30d698eef417b84f988d4e1e8e9bdefd1f9ec9473a7f2cfe39eac01d93e3cd277cab1633d07510efc3cb0f6c4f97d5b9696a6a44bb138461008c565b50823581527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760208401357f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4703066020820152833560408201526020840135606082015260408401356080820152606084013560a08201527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e260c08201527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d192660e08201527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101008201527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101208201527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101408201527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101608201525f87015161018082015260205f018701516101a08201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26101c08201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6101e08201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102008201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa610220820152843561024082015260208501356102608201527f1b854895f1ddccba397095e16f55a648af11f51c1366a5ab5c8628aee1a0a90f6102808201527f2f74c80fa4a140eb97ddbc9c1d76a54a19fdc4ec02e9569ade3db864a70b66e26102a08201527f106c014fe392bad0cb67358f1671120a13345a33b1e3d5c2c91aeaeed5dbeefa6102c08201527f14977a40edd4b00062c50e45ccd4a8605dbffa06ed28915b1a16ad86e08e887a6102e08201526020816103008360086107d05a03fa9051169695505050505050565b60405161038081016040526105235f84013561005a565b610530602084013561005a565b61053d604084013561005a565b61054a818486888a6100f2565b9050805f5260205ff35b8060408101831015610564575f5ffd5b92915050565b5f5f5f5f610160858703121561057e575f5ffd5b6105888686610554565b935060c085018681111561059a575f5ffd5b6040860193506105aa8782610554565b92505085610160860111156105bd575f5ffd5b5091949093509091610100019056fea26469706673582212203fd86d2b71873425cc598723dafea2488fcd613ebddf6d50317ef269341092f064736f6c634300081c0033",
15
- "nonce": "0x154",
16
- "chainId": "0x279f"
17
- },
18
- "additionalContracts": [],
19
- "isFixedGasLimit": false
20
- }
21
- ],
22
- "receipts": [],
23
- "libraries": [],
24
- "pending": [],
25
- "returns": {
26
- "0": {
27
- "internal_type": "contract Groth16Verifier",
28
- "value": "0x95B52dA4586b4D18f102881398Ee4dd6f6c5180E"
29
- }
30
- },
31
- "timestamp": 1775996174982,
32
- "chain": 10143,
33
- "commit": "82d8eba"
34
- }
@@ -1,51 +0,0 @@
1
- {
2
- "transactions": [
3
- {
4
- "hash": "0x1bd2a111fd976b60030becbcfa6b8ceace5b920369a2507d97c02adc0c83e59d",
5
- "transactionType": "CREATE",
6
- "contractName": "Groth16Verifier",
7
- "contractAddress": "0xf0e97a43bb10a7bf6f32eaea338ccaa4aca2db66",
8
- "function": null,
9
- "arguments": null,
10
- "transaction": {
11
- "from": "0x4d03fd23d12d167afe73411421a7b61ca061b9bd",
12
- "gas": "0x7bbaa",
13
- "value": "0x0",
14
- "input": "0x6080604052348015600e575f5ffd5b506106028061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c806311479fea1461002d575b5f5ffd5b61004061003b36600461056a565b610054565b604051901515815260200160405180910390f35b5f61050c565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110610089575f5f5260205ff35b50565b5f60405183815284602082015285604082015260408160608360076107d05a03fa9150816100bc575f5f5260205ff35b825160408201526020830151606082015260408360808360066107d05a03fa915050806100eb575f5f5260205ff35b5050505050565b7f2bb813830379698fa5b225f1c6fb0204e6bf5e06fc3c4758439f09f42e8761da85527f102355293c5a9f04deaa5bb5328a5b63b6723d1ce49092d87099f1a9721a951f60208601525f608086018661018e87357f1f0ae8c62117987693367401edef1c2dd4bf3e4df2e4e0f009d969b3b41962fe7f09dbd752f93dbe8ebd564ed96ee036648ceea95c44ec10b5e2a557a34c8dc46d8461008c565b6101de60208801357f19abf6704eec4091d939dde3f2bbe5cccb94280dfd153f0cd8f043113519a2857f1800f9c5682654ce844ca5d769ea06c4016f21c67ca640e675ef683b43ef33de8461008c565b61022e60408801357f083a8138e5f89d7f520b5e30d698eef417b84f988d4e1e8e9bdefd1f9ec9473a7f2cfe39eac01d93e3cd277cab1633d07510efc3cb0f6c4f97d5b9696a6a44bb138461008c565b50823581527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760208401357f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4703066020820152833560408201526020840135606082015260408401356080820152606084013560a08201527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e260c08201527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d192660e08201527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101008201527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101208201527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101408201527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101608201525f87015161018082015260205f018701516101a08201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26101c08201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6101e08201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102008201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa610220820152843561024082015260208501356102608201527f1b854895f1ddccba397095e16f55a648af11f51c1366a5ab5c8628aee1a0a90f6102808201527f2f74c80fa4a140eb97ddbc9c1d76a54a19fdc4ec02e9569ade3db864a70b66e26102a08201527f106c014fe392bad0cb67358f1671120a13345a33b1e3d5c2c91aeaeed5dbeefa6102c08201527f14977a40edd4b00062c50e45ccd4a8605dbffa06ed28915b1a16ad86e08e887a6102e08201526020816103008360086107d05a03fa9051169695505050505050565b60405161038081016040526105235f84013561005a565b610530602084013561005a565b61053d604084013561005a565b61054a818486888a6100f2565b9050805f5260205ff35b8060408101831015610564575f5ffd5b92915050565b5f5f5f5f610160858703121561057e575f5ffd5b6105888686610554565b935060c085018681111561059a575f5ffd5b6040860193506105aa8782610554565b92505085610160860111156105bd575f5ffd5b5091949093509091610100019056fea26469706673582212203fd86d2b71873425cc598723dafea2488fcd613ebddf6d50317ef269341092f064736f6c634300081c0033",
15
- "nonce": "0xf",
16
- "chainId": "0x279f"
17
- },
18
- "additionalContracts": [],
19
- "isFixedGasLimit": false
20
- }
21
- ],
22
- "receipts": [
23
- {
24
- "status": "0x1",
25
- "cumulativeGasUsed": "0xb2bc0",
26
- "logs": [],
27
- "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
28
- "type": "0x2",
29
- "transactionHash": "0x1bd2a111fd976b60030becbcfa6b8ceace5b920369a2507d97c02adc0c83e59d",
30
- "transactionIndex": "0x2",
31
- "blockHash": "0xbe013b2746687da997392328c6fcd7eeb932847b58d861b2949f6204f7d439fc",
32
- "blockNumber": "0x17cf251",
33
- "gasUsed": "0x7bbaa",
34
- "effectiveGasPrice": "0x17fb474601",
35
- "from": "0x4d03fd23d12d167afe73411421a7b61ca061b9bd",
36
- "to": null,
37
- "contractAddress": "0xf0e97a43bb10a7bf6f32eaea338ccaa4aca2db66"
38
- }
39
- ],
40
- "libraries": [],
41
- "pending": [],
42
- "returns": {
43
- "0": {
44
- "internal_type": "contract Groth16Verifier",
45
- "value": "0xF0e97A43BB10a7bF6f32eaEa338cCaA4AcA2DB66"
46
- }
47
- },
48
- "timestamp": 1775996423983,
49
- "chain": 10143,
50
- "commit": "82d8eba"
51
- }
@@ -1,51 +0,0 @@
1
- {
2
- "transactions": [
3
- {
4
- "hash": "0x365504aa2131a5e3f046dbbd3f929ebae17d3f78a21cea9d52742252bd9b33c2",
5
- "transactionType": "CREATE",
6
- "contractName": "Groth16Verifier",
7
- "contractAddress": "0x851b33e46fc1ded8f752d1f2f26a9c58afde8815",
8
- "function": null,
9
- "arguments": null,
10
- "transaction": {
11
- "from": "0x4d03fd23d12d167afe73411421a7b61ca061b9bd",
12
- "gas": "0x7bbba",
13
- "value": "0x0",
14
- "input": "0x6080604052348015600e575f5ffd5b506106028061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c806311479fea1461002d575b5f5ffd5b61004061003b36600461056a565b610054565b604051901515815260200160405180910390f35b5f61050c565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110610089575f5f5260205ff35b50565b5f60405183815284602082015285604082015260408160608360076107d05a03fa9150816100bc575f5f5260205ff35b825160408201526020830151606082015260408360808360066107d05a03fa915050806100eb575f5f5260205ff35b5050505050565b7f2bb813830379698fa5b225f1c6fb0204e6bf5e06fc3c4758439f09f42e8761da85527f102355293c5a9f04deaa5bb5328a5b63b6723d1ce49092d87099f1a9721a951f60208601525f608086018661018e87357f1f0ae8c62117987693367401edef1c2dd4bf3e4df2e4e0f009d969b3b41962fe7f09dbd752f93dbe8ebd564ed96ee036648ceea95c44ec10b5e2a557a34c8dc46d8461008c565b6101de60208801357f19abf6704eec4091d939dde3f2bbe5cccb94280dfd153f0cd8f043113519a2857f1800f9c5682654ce844ca5d769ea06c4016f21c67ca640e675ef683b43ef33de8461008c565b61022e60408801357f083a8138e5f89d7f520b5e30d698eef417b84f988d4e1e8e9bdefd1f9ec9473a7f2cfe39eac01d93e3cd277cab1633d07510efc3cb0f6c4f97d5b9696a6a44bb138461008c565b50823581527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760208401357f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4703066020820152833560408201526020840135606082015260408401356080820152606084013560a08201527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e260c08201527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d192660e08201527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101008201527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101208201527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101408201527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101608201525f87015161018082015260205f018701516101a08201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26101c08201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6101e08201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102008201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa610220820152843561024082015260208501356102608201527f1d5256fcf34f8c3c517af9b4bfe952964a4d6f4083949536633af20530b6c3946102808201527f0ecea12a3e4f1ef43f17f98d681b1d015e57f5cbaea7d9b399e46aa2f2b416456102a08201527f2bae74cbae29b35aed943a5171deab74cb9f3b431926fe7d875b32e3f5cac73d6102c08201527f060763489fc94b371286fc1e3d37b055183671714bd6d30c099257cb60e140976102e08201526020816103008360086107d05a03fa9051169695505050505050565b60405161038081016040526105235f84013561005a565b610530602084013561005a565b61053d604084013561005a565b61054a818486888a6100f2565b9050805f5260205ff35b8060408101831015610564575f5ffd5b92915050565b5f5f5f5f610160858703121561057e575f5ffd5b6105888686610554565b935060c085018681111561059a575f5ffd5b6040860193506105aa8782610554565b92505085610160860111156105bd575f5ffd5b5091949093509091610100019056fea2646970667358221220c5557ac8473db9027229cab514f83bce481146c9e36e478e420225d92e0ad02964736f6c634300081c0033",
15
- "nonce": "0x10",
16
- "chainId": "0x279f"
17
- },
18
- "additionalContracts": [],
19
- "isFixedGasLimit": false
20
- }
21
- ],
22
- "receipts": [
23
- {
24
- "status": "0x1",
25
- "cumulativeGasUsed": "0x2e6334",
26
- "logs": [],
27
- "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
28
- "type": "0x2",
29
- "transactionHash": "0x365504aa2131a5e3f046dbbd3f929ebae17d3f78a21cea9d52742252bd9b33c2",
30
- "transactionIndex": "0x8",
31
- "blockHash": "0x3ba96fc86524123de2026d35fc970bd67674335326b66b1405f0af71cda0c0b2",
32
- "blockNumber": "0x17cf6e9",
33
- "gasUsed": "0x7bbba",
34
- "effectiveGasPrice": "0x17fb474601",
35
- "from": "0x4d03fd23d12d167afe73411421a7b61ca061b9bd",
36
- "to": null,
37
- "contractAddress": "0x851b33e46fc1ded8f752d1f2f26a9c58afde8815"
38
- }
39
- ],
40
- "libraries": [],
41
- "pending": [],
42
- "returns": {
43
- "0": {
44
- "internal_type": "contract Groth16Verifier",
45
- "value": "0x851B33e46fC1dEd8f752d1f2F26A9c58aFde8815"
46
- }
47
- },
48
- "timestamp": 1775996907850,
49
- "chain": 10143,
50
- "commit": "82d8eba"
51
- }
@@ -1,51 +0,0 @@
1
- {
2
- "transactions": [
3
- {
4
- "hash": "0x365504aa2131a5e3f046dbbd3f929ebae17d3f78a21cea9d52742252bd9b33c2",
5
- "transactionType": "CREATE",
6
- "contractName": "Groth16Verifier",
7
- "contractAddress": "0x851b33e46fc1ded8f752d1f2f26a9c58afde8815",
8
- "function": null,
9
- "arguments": null,
10
- "transaction": {
11
- "from": "0x4d03fd23d12d167afe73411421a7b61ca061b9bd",
12
- "gas": "0x7bbba",
13
- "value": "0x0",
14
- "input": "0x6080604052348015600e575f5ffd5b506106028061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c806311479fea1461002d575b5f5ffd5b61004061003b36600461056a565b610054565b604051901515815260200160405180910390f35b5f61050c565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110610089575f5f5260205ff35b50565b5f60405183815284602082015285604082015260408160608360076107d05a03fa9150816100bc575f5f5260205ff35b825160408201526020830151606082015260408360808360066107d05a03fa915050806100eb575f5f5260205ff35b5050505050565b7f2bb813830379698fa5b225f1c6fb0204e6bf5e06fc3c4758439f09f42e8761da85527f102355293c5a9f04deaa5bb5328a5b63b6723d1ce49092d87099f1a9721a951f60208601525f608086018661018e87357f1f0ae8c62117987693367401edef1c2dd4bf3e4df2e4e0f009d969b3b41962fe7f09dbd752f93dbe8ebd564ed96ee036648ceea95c44ec10b5e2a557a34c8dc46d8461008c565b6101de60208801357f19abf6704eec4091d939dde3f2bbe5cccb94280dfd153f0cd8f043113519a2857f1800f9c5682654ce844ca5d769ea06c4016f21c67ca640e675ef683b43ef33de8461008c565b61022e60408801357f083a8138e5f89d7f520b5e30d698eef417b84f988d4e1e8e9bdefd1f9ec9473a7f2cfe39eac01d93e3cd277cab1633d07510efc3cb0f6c4f97d5b9696a6a44bb138461008c565b50823581527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760208401357f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4703066020820152833560408201526020840135606082015260408401356080820152606084013560a08201527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e260c08201527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d192660e08201527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101008201527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101208201527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101408201527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101608201525f87015161018082015260205f018701516101a08201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26101c08201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6101e08201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102008201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa610220820152843561024082015260208501356102608201527f1d5256fcf34f8c3c517af9b4bfe952964a4d6f4083949536633af20530b6c3946102808201527f0ecea12a3e4f1ef43f17f98d681b1d015e57f5cbaea7d9b399e46aa2f2b416456102a08201527f2bae74cbae29b35aed943a5171deab74cb9f3b431926fe7d875b32e3f5cac73d6102c08201527f060763489fc94b371286fc1e3d37b055183671714bd6d30c099257cb60e140976102e08201526020816103008360086107d05a03fa9051169695505050505050565b60405161038081016040526105235f84013561005a565b610530602084013561005a565b61053d604084013561005a565b61054a818486888a6100f2565b9050805f5260205ff35b8060408101831015610564575f5ffd5b92915050565b5f5f5f5f610160858703121561057e575f5ffd5b6105888686610554565b935060c085018681111561059a575f5ffd5b6040860193506105aa8782610554565b92505085610160860111156105bd575f5ffd5b5091949093509091610100019056fea2646970667358221220c5557ac8473db9027229cab514f83bce481146c9e36e478e420225d92e0ad02964736f6c634300081c0033",
15
- "nonce": "0x10",
16
- "chainId": "0x279f"
17
- },
18
- "additionalContracts": [],
19
- "isFixedGasLimit": false
20
- }
21
- ],
22
- "receipts": [
23
- {
24
- "status": "0x1",
25
- "cumulativeGasUsed": "0x2e6334",
26
- "logs": [],
27
- "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
28
- "type": "0x2",
29
- "transactionHash": "0x365504aa2131a5e3f046dbbd3f929ebae17d3f78a21cea9d52742252bd9b33c2",
30
- "transactionIndex": "0x8",
31
- "blockHash": "0x3ba96fc86524123de2026d35fc970bd67674335326b66b1405f0af71cda0c0b2",
32
- "blockNumber": "0x17cf6e9",
33
- "gasUsed": "0x7bbba",
34
- "effectiveGasPrice": "0x17fb474601",
35
- "from": "0x4d03fd23d12d167afe73411421a7b61ca061b9bd",
36
- "to": null,
37
- "contractAddress": "0x851b33e46fc1ded8f752d1f2f26a9c58afde8815"
38
- }
39
- ],
40
- "libraries": [],
41
- "pending": [],
42
- "returns": {
43
- "0": {
44
- "internal_type": "contract Groth16Verifier",
45
- "value": "0x851B33e46fC1dEd8f752d1f2F26A9c58aFde8815"
46
- }
47
- },
48
- "timestamp": 1775996907850,
49
- "chain": 10143,
50
- "commit": "82d8eba"
51
- }
@@ -1,7 +0,0 @@
1
- {
2
- "transactions": [
3
- {
4
- "rpc": "https://testnet-rpc.monad.xyz"
5
- }
6
- ]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "transactions": [
3
- {
4
- "rpc": "https://testnet-rpc.monad.xyz"
5
- }
6
- ]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "transactions": [
3
- {
4
- "rpc": "https://testnet-rpc.monad.xyz"
5
- }
6
- ]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "transactions": [
3
- {
4
- "rpc": "https://testnet-rpc.monad.xyz"
5
- }
6
- ]
7
- }