@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.
- package/dist/advanced/index.d.ts +14 -0
- package/dist/advanced/index.d.ts.map +1 -0
- package/dist/advanced/index.js +14 -0
- package/dist/advanced/index.js.map +1 -0
- package/dist/index.d.ts +25 -42
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -77
- package/dist/index.js.map +1 -1
- package/dist/lemma-config.d.ts +41 -0
- package/dist/lemma-config.d.ts.map +1 -0
- package/dist/lemma-config.js +12 -0
- package/dist/lemma-config.js.map +1 -0
- package/dist/lemma-discovery.d.ts +37 -0
- package/dist/lemma-discovery.d.ts.map +1 -0
- package/dist/lemma-discovery.js +104 -0
- package/dist/lemma-discovery.js.map +1 -0
- package/dist/lemma-server.d.ts +30 -0
- package/dist/lemma-server.d.ts.map +1 -0
- package/dist/lemma-server.js +169 -0
- package/dist/lemma-server.js.map +1 -0
- package/dist/lemma-submission.d.ts +44 -0
- package/dist/lemma-submission.d.ts.map +1 -0
- package/dist/lemma-submission.js +81 -0
- package/dist/lemma-submission.js.map +1 -0
- package/package.json +14 -14
- package/broadcast/DeployPaymentVerifier.s.sol/10143/run-1775996174982.json +0 -34
- package/broadcast/DeployPaymentVerifier.s.sol/10143/run-1775996423983.json +0 -51
- package/broadcast/DeployPaymentVerifier.s.sol/10143/run-1775996907850.json +0 -51
- package/broadcast/DeployPaymentVerifier.s.sol/10143/run-latest.json +0 -51
- package/cache/DeployPaymentVerifier.s.sol/10143/run-1775996174982.json +0 -7
- package/cache/DeployPaymentVerifier.s.sol/10143/run-1775996423983.json +0 -7
- package/cache/DeployPaymentVerifier.s.sol/10143/run-1775996907850.json +0 -7
- package/cache/DeployPaymentVerifier.s.sol/10143/run-latest.json +0 -7
- package/cache/solidity-files-cache.json +0 -1
- package/circuits/README.md +0 -78
- package/circuits/payment-comprehensive.test.mjs +0 -272
- package/circuits/payment.circom +0 -89
- package/circuits/payment.test.mjs +0 -173
- package/dist/proof-generator.d.ts +0 -26
- package/dist/proof-generator.d.ts.map +0 -1
- package/dist/proof-generator.js +0 -154
- package/dist/proof-generator.js.map +0 -1
- package/dist/proof-generator.test.d.ts +0 -7
- package/dist/proof-generator.test.d.ts.map +0 -1
- package/dist/proof-generator.test.js +0 -121
- package/dist/proof-generator.test.js.map +0 -1
- package/dist/transaction-watcher.d.ts +0 -42
- package/dist/transaction-watcher.d.ts.map +0 -1
- package/dist/transaction-watcher.js +0 -88
- package/dist/transaction-watcher.js.map +0 -1
- package/dist/transaction-watcher.test.d.ts +0 -7
- package/dist/transaction-watcher.test.d.ts.map +0 -1
- package/dist/transaction-watcher.test.js +0 -111
- package/dist/transaction-watcher.test.js.map +0 -1
- package/dist/types.d.ts +0 -76
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/foundry.lock +0 -11
- package/foundry.toml +0 -16
- package/lib/forge-std/.gitattributes +0 -1
- package/lib/forge-std/.github/CODEOWNERS +0 -1
- package/lib/forge-std/.github/dependabot.yml +0 -6
- package/lib/forge-std/.github/workflows/ci.yml +0 -161
- package/lib/forge-std/.github/workflows/sync.yml +0 -36
- package/lib/forge-std/CONTRIBUTING.md +0 -193
- package/lib/forge-std/LICENSE-APACHE +0 -203
- package/lib/forge-std/LICENSE-MIT +0 -25
- package/lib/forge-std/README.md +0 -314
- package/lib/forge-std/RELEASE_CHECKLIST.md +0 -12
- package/lib/forge-std/foundry.toml +0 -18
- package/lib/forge-std/package.json +0 -16
- package/lib/forge-std/scripts/vm.py +0 -636
- package/lib/forge-std/src/Base.sol +0 -48
- package/lib/forge-std/src/Config.sol +0 -60
- package/lib/forge-std/src/LibVariable.sol +0 -477
- package/lib/forge-std/src/Script.sol +0 -28
- package/lib/forge-std/src/StdAssertions.sol +0 -1300
- package/lib/forge-std/src/StdChains.sol +0 -303
- package/lib/forge-std/src/StdCheats.sol +0 -825
- package/lib/forge-std/src/StdConfig.sol +0 -632
- package/lib/forge-std/src/StdConstants.sol +0 -30
- package/lib/forge-std/src/StdError.sol +0 -15
- package/lib/forge-std/src/StdInvariant.sol +0 -161
- package/lib/forge-std/src/StdJson.sol +0 -275
- package/lib/forge-std/src/StdMath.sol +0 -47
- package/lib/forge-std/src/StdStorage.sol +0 -476
- package/lib/forge-std/src/StdStyle.sol +0 -333
- package/lib/forge-std/src/StdToml.sol +0 -275
- package/lib/forge-std/src/StdUtils.sol +0 -200
- package/lib/forge-std/src/Test.sol +0 -32
- package/lib/forge-std/src/Vm.sol +0 -2533
- package/lib/forge-std/src/console.sol +0 -1551
- package/lib/forge-std/src/console2.sol +0 -4
- package/lib/forge-std/src/interfaces/IERC1155.sol +0 -105
- package/lib/forge-std/src/interfaces/IERC165.sol +0 -12
- package/lib/forge-std/src/interfaces/IERC20.sol +0 -43
- package/lib/forge-std/src/interfaces/IERC4626.sol +0 -190
- package/lib/forge-std/src/interfaces/IERC6909.sol +0 -72
- package/lib/forge-std/src/interfaces/IERC721.sol +0 -164
- package/lib/forge-std/src/interfaces/IERC7540.sol +0 -145
- package/lib/forge-std/src/interfaces/IERC7575.sol +0 -241
- package/lib/forge-std/src/interfaces/IMulticall3.sol +0 -68
- package/lib/forge-std/src/safeconsole.sol +0 -13248
- package/lib/forge-std/test/CommonBase.t.sol +0 -44
- package/lib/forge-std/test/Config.t.sol +0 -381
- package/lib/forge-std/test/LibVariable.t.sol +0 -452
- package/lib/forge-std/test/StdAssertions.t.sol +0 -141
- package/lib/forge-std/test/StdChains.t.sol +0 -227
- package/lib/forge-std/test/StdCheats.t.sol +0 -638
- package/lib/forge-std/test/StdConstants.t.sol +0 -38
- package/lib/forge-std/test/StdError.t.sol +0 -119
- package/lib/forge-std/test/StdJson.t.sol +0 -49
- package/lib/forge-std/test/StdMath.t.sol +0 -202
- package/lib/forge-std/test/StdStorage.t.sol +0 -532
- package/lib/forge-std/test/StdStyle.t.sol +0 -110
- package/lib/forge-std/test/StdToml.t.sol +0 -49
- package/lib/forge-std/test/StdUtils.t.sol +0 -342
- package/lib/forge-std/test/Vm.t.sol +0 -18
- package/lib/forge-std/test/compilation/CompilationScript.sol +0 -8
- package/lib/forge-std/test/compilation/CompilationScriptBase.sol +0 -8
- package/lib/forge-std/test/compilation/CompilationTest.sol +0 -8
- package/lib/forge-std/test/compilation/CompilationTestBase.sol +0 -8
- package/lib/forge-std/test/fixtures/broadcast.log.json +0 -187
- package/lib/forge-std/test/fixtures/config.toml +0 -81
- package/lib/forge-std/test/fixtures/test.json +0 -8
- package/lib/forge-std/test/fixtures/test.toml +0 -6
- package/package.json.backup +0 -55
- package/scripts/DeployPaymentVerifier.s.sol +0 -18
- package/scripts/build.sh +0 -61
- package/scripts/deploy.sh +0 -65
- package/scripts/fix-verifier.mjs +0 -64
- package/scripts/register-circuit.ts +0 -213
- package/scripts/test-with-circuit.mjs +0 -88
- package/src/index.ts +0 -115
- package/src/proof-generator.test.ts +0 -139
- package/src/proof-generator.ts +0 -220
- package/src/transaction-watcher.test.ts +0 -153
- package/src/transaction-watcher.ts +0 -154
- package/src/types.ts +0 -110
- package/tsconfig.json +0 -14
- package/tsconfig.tsbuildinfo +0 -1
- package/vitest.config.ts +0 -18
- package/workers/x402-facilitator/src/index.ts +0 -582
- package/workers/x402-facilitator/src/x402-env.d.ts +0 -25
- 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":"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"}
|
|
@@ -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.
|
|
4
|
-
"description": "
|
|
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": "
|
|
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
|
-
"
|
|
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
|
-
}
|