@reclaimprotocol/attestor-core 5.0.1-beta.2 → 5.0.1-beta.22

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 (145) hide show
  1. package/browser/resources/attestor-browser.min.mjs +4512 -0
  2. package/lib/avs/abis/avsDirectoryABI.js +338 -341
  3. package/lib/avs/abis/delegationABI.js +1 -4
  4. package/lib/avs/abis/registryABI.js +719 -722
  5. package/lib/avs/client/create-claim-on-avs.js +129 -157
  6. package/lib/avs/config.js +18 -24
  7. package/lib/avs/contracts/ReclaimServiceManager.js +1 -0
  8. package/lib/avs/contracts/common.js +1 -0
  9. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +1139 -1156
  10. package/lib/avs/contracts/factories/index.js +4 -4
  11. package/lib/avs/contracts/index.js +2 -6
  12. package/lib/avs/types/index.js +1 -0
  13. package/lib/avs/utils/contracts.js +30 -50
  14. package/lib/avs/utils/register.js +75 -70
  15. package/lib/avs/utils/tasks.js +38 -45
  16. package/lib/client/create-claim.js +402 -431
  17. package/lib/client/tunnels/make-rpc-tcp-tunnel.js +46 -48
  18. package/lib/client/tunnels/make-rpc-tls-tunnel.js +125 -121
  19. package/lib/client/utils/attestor-pool.js +23 -22
  20. package/lib/client/utils/client-socket.js +86 -109
  21. package/lib/client/utils/message-handler.js +79 -89
  22. package/lib/config/index.js +40 -58
  23. package/lib/external-rpc/benchmark.js +61 -74
  24. package/lib/external-rpc/event-bus.js +12 -15
  25. package/lib/external-rpc/handle-incoming-msg.js +216 -225
  26. package/lib/external-rpc/jsc-polyfills/1.js +70 -68
  27. package/lib/external-rpc/jsc-polyfills/2.js +17 -12
  28. package/lib/external-rpc/jsc-polyfills/event.js +10 -15
  29. package/lib/external-rpc/jsc-polyfills/index.js +2 -2
  30. package/lib/external-rpc/jsc-polyfills/ws.js +77 -79
  31. package/lib/external-rpc/setup-browser.js +28 -28
  32. package/lib/external-rpc/setup-jsc.js +17 -17
  33. package/lib/external-rpc/types.js +1 -0
  34. package/lib/external-rpc/utils.js +89 -89
  35. package/lib/external-rpc/zk.js +55 -50
  36. package/lib/index.js +2 -6
  37. package/lib/mechain/abis/governanceABI.js +457 -460
  38. package/lib/mechain/abis/taskABI.js +502 -505
  39. package/lib/mechain/client/create-claim-on-mechain.js +24 -29
  40. package/lib/mechain/constants/index.js +3 -8
  41. package/lib/mechain/types/index.js +1 -0
  42. package/lib/proto/api.js +4200 -4087
  43. package/lib/proto/tee-bundle.js +1261 -1241
  44. package/lib/providers/http/index.js +616 -603
  45. package/lib/providers/http/patch-parse5-tree.js +27 -29
  46. package/lib/providers/http/utils.js +289 -248
  47. package/lib/providers/index.js +3 -6
  48. package/lib/server/create-server.js +89 -91
  49. package/lib/server/handlers/claimTeeBundle.js +231 -211
  50. package/lib/server/handlers/claimTunnel.js +66 -73
  51. package/lib/server/handlers/completeClaimOnChain.js +20 -25
  52. package/lib/server/handlers/createClaimOnChain.js +21 -27
  53. package/lib/server/handlers/createTaskOnMechain.js +40 -50
  54. package/lib/server/handlers/createTunnel.js +85 -90
  55. package/lib/server/handlers/disconnectTunnel.js +4 -7
  56. package/lib/server/handlers/fetchCertificateBytes.js +37 -53
  57. package/lib/server/handlers/index.js +21 -24
  58. package/lib/server/handlers/init.js +27 -28
  59. package/lib/server/handlers/toprf.js +13 -16
  60. package/lib/server/socket.js +97 -100
  61. package/lib/server/tunnels/make-tcp-tunnel.js +161 -186
  62. package/lib/server/utils/apm.js +32 -25
  63. package/lib/server/utils/assert-valid-claim-request.js +305 -334
  64. package/lib/server/utils/config-env.js +2 -2
  65. package/lib/server/utils/dns.js +12 -18
  66. package/lib/server/utils/gcp-attestation.js +233 -181
  67. package/lib/server/utils/generics.d.ts +1 -1
  68. package/lib/server/utils/generics.js +43 -37
  69. package/lib/server/utils/iso.js +253 -256
  70. package/lib/server/utils/keep-alive.js +36 -36
  71. package/lib/server/utils/nitro-attestation.js +295 -220
  72. package/lib/server/utils/oprf-raw.js +48 -55
  73. package/lib/server/utils/process-handshake.js +200 -218
  74. package/lib/server/utils/proxy-session.js +5 -5
  75. package/lib/server/utils/tee-oprf-mpc-verification.js +82 -78
  76. package/lib/server/utils/tee-oprf-verification.js +165 -142
  77. package/lib/server/utils/tee-transcript-reconstruction.js +176 -129
  78. package/lib/server/utils/tee-verification.js +397 -334
  79. package/lib/server/utils/validation.js +30 -37
  80. package/lib/types/bgp.js +1 -0
  81. package/lib/types/claims.js +1 -0
  82. package/lib/types/client.js +1 -0
  83. package/lib/types/general.js +1 -0
  84. package/lib/types/handlers.js +1 -0
  85. package/lib/types/providers.d.ts +3 -2
  86. package/lib/types/providers.gen.js +9 -15
  87. package/lib/types/providers.js +1 -0
  88. package/lib/types/rpc.js +1 -0
  89. package/lib/types/signatures.d.ts +1 -2
  90. package/lib/types/signatures.js +1 -0
  91. package/lib/types/tunnel.js +1 -0
  92. package/lib/types/zk.js +1 -0
  93. package/lib/utils/auth.js +54 -66
  94. package/lib/utils/b64-json.js +15 -15
  95. package/lib/utils/bgp-listener.js +107 -111
  96. package/lib/utils/claims.js +89 -80
  97. package/lib/utils/env.js +13 -17
  98. package/lib/utils/error.js +43 -47
  99. package/lib/utils/generics.js +284 -235
  100. package/lib/utils/http-parser.js +232 -187
  101. package/lib/utils/logger.js +80 -71
  102. package/lib/utils/prepare-packets.js +69 -67
  103. package/lib/utils/redactions.js +163 -121
  104. package/lib/utils/retries.js +22 -24
  105. package/lib/utils/signatures/eth.js +29 -28
  106. package/lib/utils/signatures/index.js +5 -10
  107. package/lib/utils/socket-base.js +84 -88
  108. package/lib/utils/tls.js +28 -28
  109. package/lib/utils/ws.js +19 -19
  110. package/lib/utils/zk.js +542 -582
  111. package/package.json +12 -5
  112. package/lib/external-rpc/global.d.js +0 -0
  113. package/lib/scripts/build-browser.d.ts +0 -1
  114. package/lib/scripts/build-jsc.d.ts +0 -1
  115. package/lib/scripts/build-lib.d.ts +0 -1
  116. package/lib/scripts/check-avs-registration.d.ts +0 -1
  117. package/lib/scripts/check-avs-registration.js +0 -28
  118. package/lib/scripts/fallbacks/crypto.d.ts +0 -1
  119. package/lib/scripts/fallbacks/crypto.js +0 -4
  120. package/lib/scripts/fallbacks/empty.d.ts +0 -3
  121. package/lib/scripts/fallbacks/empty.js +0 -4
  122. package/lib/scripts/fallbacks/re2.d.ts +0 -1
  123. package/lib/scripts/fallbacks/re2.js +0 -7
  124. package/lib/scripts/fallbacks/snarkjs.d.ts +0 -1
  125. package/lib/scripts/fallbacks/snarkjs.js +0 -10
  126. package/lib/scripts/fallbacks/stwo.d.ts +0 -6
  127. package/lib/scripts/fallbacks/stwo.js +0 -159
  128. package/lib/scripts/generate-provider-types.d.ts +0 -5
  129. package/lib/scripts/generate-provider-types.js +0 -101
  130. package/lib/scripts/generate-receipt.d.ts +0 -9
  131. package/lib/scripts/generate-receipt.js +0 -101
  132. package/lib/scripts/generate-toprf-keys.d.ts +0 -1
  133. package/lib/scripts/generate-toprf-keys.js +0 -24
  134. package/lib/scripts/jsc-cli-rpc.d.ts +0 -1
  135. package/lib/scripts/jsc-cli-rpc.js +0 -35
  136. package/lib/scripts/register-avs-operator.d.ts +0 -1
  137. package/lib/scripts/register-avs-operator.js +0 -3
  138. package/lib/scripts/start-server.d.ts +0 -1
  139. package/lib/scripts/start-server.js +0 -11
  140. package/lib/scripts/update-avs-metadata.d.ts +0 -1
  141. package/lib/scripts/update-avs-metadata.js +0 -20
  142. package/lib/scripts/utils.d.ts +0 -1
  143. package/lib/scripts/utils.js +0 -10
  144. package/lib/scripts/whitelist-operator.d.ts +0 -1
  145. package/lib/scripts/whitelist-operator.js +0 -16
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@reclaimprotocol/attestor-core",
3
- "version": "5.0.1-beta.2",
3
+ "version": "5.0.1-beta.22",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "imports": {
7
- "#src/*.ts": "./src/*.ts"
7
+ "#src/*.ts": "./src/*.ts",
8
+ "#src/*.js": "./lib/*.js"
8
9
  },
9
10
  "exports": {
10
11
  ".": {
@@ -14,10 +15,13 @@
14
15
  "./external-rpc": {
15
16
  "types": "./lib/external-rpc/index.d.ts",
16
17
  "default": "./lib/external-rpc/index.js"
18
+ },
19
+ "./browser": {
20
+ "default": "./browser/resources/attestor-browser.min.mjs"
17
21
  }
18
22
  },
19
23
  "scripts": {
20
- "build": "npm run run:tsc -- src/scripts/build-lib.ts && tsc -p tsconfig.build.json",
24
+ "build": "rm -rf lib && tspc -p tsconfig.build.json",
21
25
  "build:browser": "sh ./src/scripts/build-browser.sh",
22
26
  "run:tsc": "node --experimental-strip-types",
23
27
  "start": "npm run run:tsc -- src/scripts/start-server.ts",
@@ -47,7 +51,8 @@
47
51
  "publish:pkg": "npm publish --access public"
48
52
  },
49
53
  "files": [
50
- "lib/*"
54
+ "lib/*",
55
+ "browser/resources/attestor-browser.min.mjs"
51
56
  ],
52
57
  "keywords": [
53
58
  "reclaim-protocol",
@@ -122,11 +127,13 @@
122
127
  "eslint": "^9.39.4",
123
128
  "eslint-plugin-no-relative-import-paths": "^1.6.1",
124
129
  "event-target-shim": "^6.0.2",
125
- "json-schema-to-typescript": "^15.0.4",
130
+ "json-schema-to-typescript": "^15.0.4",
126
131
  "ts-jest": "^29.4.6",
132
+ "ts-patch": "^3.3.0",
127
133
  "ts-proto": "^2.11.6",
128
134
  "typechain": "^8.3.2",
129
135
  "typescript": "^5.9.3",
136
+ "typescript-transform-paths": "^3.5.6",
130
137
  "whatwg-url": "^14.2.0",
131
138
  "yaml": "^2.8.3"
132
139
  },
File without changes
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- import 'src/server/utils/config-env';
@@ -1,28 +0,0 @@
1
- import "src/server/utils/config-env";
2
- import { getContracts } from "../avs/utils/contracts.js";
3
- async function main() {
4
- const { wallet, contract } = getContracts();
5
- const meta = await contract.taskCreationMetadata();
6
- console.log(
7
- "Metadata parameters:",
8
- `maxTaskCreationDelayS: ${meta.maxTaskCreationDelayS}`,
9
- `minSignaturesPerTask: ${meta.minSignaturesPerTask}`,
10
- `maxTaskLifetimeS: ${meta.maxTaskLifetimeS}`
11
- );
12
- console.log(`Checking registration for operator ${wallet.address}`);
13
- const operatorAddr = wallet.address;
14
- const metadata = await contract.getMetadataForOperator(operatorAddr).catch((err) => {
15
- if (err.message.includes("Operator not found")) {
16
- return;
17
- }
18
- throw err;
19
- });
20
- if (!metadata) {
21
- console.log("Operator not registered");
22
- const isWhitelisted = await contract.isOperatorWhitelisted(operatorAddr);
23
- console.log(`Is whitelisted: ${isWhitelisted}`);
24
- return;
25
- }
26
- console.log("Operator registered, URL:", metadata.url);
27
- }
28
- void main();
@@ -1 +0,0 @@
1
- export declare const webcrypto: Crypto;
@@ -1,4 +0,0 @@
1
- const webcrypto = globalThis.crypto;
2
- export {
3
- webcrypto
4
- };
@@ -1,3 +0,0 @@
1
- declare const _default: {};
2
- export default _default;
3
- export {};
@@ -1,4 +0,0 @@
1
- var empty_default = {};
2
- export {
3
- empty_default as default
4
- };
@@ -1 +0,0 @@
1
- export default function regularRegex(pattern: string, flags?: string): RegExp;
@@ -1,7 +0,0 @@
1
- function regularRegex(pattern, flags) {
2
- flags = flags?.replace("u", "");
3
- return new RegExp(pattern, flags);
4
- }
5
- export {
6
- regularRegex as default
7
- };
@@ -1 +0,0 @@
1
- export declare const wtns: any, groth16: any, zkey: any;
@@ -1,10 +0,0 @@
1
- const {
2
- wtns,
3
- groth16,
4
- zkey
5
- } = window["snarkjs"] || {};
6
- export {
7
- groth16,
8
- wtns,
9
- zkey
10
- };
@@ -1,6 +0,0 @@
1
- /**
2
- * Browser fallback for stwo - loads from window.s2circuits
3
- * The s2circuits.js script must be loaded before this runs
4
- */
5
- import type { MakeZKOperatorOpts, ZKOperator } from '@reclaimprotocol/zk-symmetric-crypto';
6
- export declare function makeStwoZkOperator({ algorithm, fetcher, }: MakeZKOperatorOpts<object>): ZKOperator;
@@ -1,159 +0,0 @@
1
- const Base64 = {
2
- fromUint8Array(arr) {
3
- let binary = "";
4
- for (const element of arr) {
5
- binary += String.fromCharCode(element);
6
- }
7
- return btoa(binary);
8
- },
9
- toUint8Array(str) {
10
- const binary = atob(str);
11
- const arr = new Uint8Array(binary.length);
12
- for (let i = 0; i < binary.length; i++) {
13
- arr[i] = binary.charCodeAt(i);
14
- }
15
- return arr;
16
- }
17
- };
18
- function getS2Circuits() {
19
- const s2 = window["s2circuits"];
20
- if (!s2) {
21
- throw new Error("s2circuits not loaded. Make sure s2circuits.js is loaded before using stwo.");
22
- }
23
- return s2;
24
- }
25
- function assertU32Counter(counter) {
26
- if (!Number.isInteger(counter) || counter < 0 || counter > 4294967295) {
27
- throw new RangeError("counter must be a uint32 integer (0 to 4294967295)");
28
- }
29
- }
30
- let wasmInitialized = false;
31
- let initPromise;
32
- async function ensureWasmInitialized(fetcher, logger) {
33
- if (wasmInitialized) {
34
- return;
35
- }
36
- if (initPromise) {
37
- return initPromise;
38
- }
39
- initPromise = (async () => {
40
- try {
41
- const s2 = getS2Circuits();
42
- const wasmBytes = await fetcher.fetch("stwo", "s2circuits_bg.wasm", logger);
43
- s2.initSync({ module: wasmBytes });
44
- wasmInitialized = true;
45
- } catch (err) {
46
- initPromise = void 0;
47
- throw err;
48
- }
49
- })();
50
- return initPromise;
51
- }
52
- function serializeWitness(algorithm, input) {
53
- if (!input.noncesAndCounters?.length) {
54
- throw new Error("noncesAndCounters must be a non-empty array");
55
- }
56
- const { noncesAndCounters: [{ nonce, counter }] } = input;
57
- assertU32Counter(counter);
58
- const data = {
59
- algorithm,
60
- key: Base64.fromUint8Array(input.key),
61
- nonce: Base64.fromUint8Array(nonce),
62
- counter,
63
- plaintext: Base64.fromUint8Array(input.out),
64
- // out = decrypted plaintext
65
- ciphertext: Base64.fromUint8Array(input.in)
66
- // in = encrypted ciphertext
67
- };
68
- return new TextEncoder().encode(JSON.stringify(data));
69
- }
70
- function deserializeWitness(witness) {
71
- const json = new TextDecoder().decode(witness);
72
- return JSON.parse(json);
73
- }
74
- function makeStwoZkOperator({
75
- algorithm,
76
- fetcher
77
- }) {
78
- return {
79
- generateWitness(input) {
80
- return serializeWitness(algorithm, input);
81
- },
82
- async groth16Prove(witness, logger) {
83
- await ensureWasmInitialized(fetcher, logger);
84
- const s2 = getS2Circuits();
85
- const data = deserializeWitness(witness);
86
- const key = Base64.toUint8Array(data.key);
87
- const nonce = Base64.toUint8Array(data.nonce);
88
- const plaintext = Base64.toUint8Array(data.plaintext);
89
- const ciphertext = Base64.toUint8Array(data.ciphertext);
90
- let resultJson;
91
- switch (data.algorithm) {
92
- case "chacha20":
93
- resultJson = s2.generate_chacha20_proof(key, nonce, data.counter, plaintext, ciphertext);
94
- break;
95
- case "aes-128-ctr":
96
- resultJson = s2.generate_aes128_ctr_proof(key, nonce, data.counter, plaintext, ciphertext);
97
- break;
98
- case "aes-256-ctr":
99
- resultJson = s2.generate_aes256_ctr_proof(key, nonce, data.counter, plaintext, ciphertext);
100
- break;
101
- default:
102
- throw new Error(`Unsupported algorithm: ${data.algorithm}`);
103
- }
104
- const result = JSON.parse(resultJson);
105
- if (result.error) {
106
- throw new Error(`Stwo proof generation failed: ${result.error}`);
107
- }
108
- if (!result.proof) {
109
- throw new Error("Stwo proof generation failed: no proof returned");
110
- }
111
- return { proof: result.proof };
112
- },
113
- async groth16Verify(publicSignals, proof, logger) {
114
- await ensureWasmInitialized(fetcher, logger);
115
- const s2 = getS2Circuits();
116
- const expectedNonce = publicSignals.noncesAndCounters[0]?.nonce;
117
- const expectedCounter = publicSignals.noncesAndCounters[0]?.counter;
118
- const expectedCiphertext = publicSignals.in;
119
- const expectedPlaintext = publicSignals.out;
120
- if (!expectedNonce || expectedCounter === void 0) {
121
- logger?.warn("Invalid publicSignals: missing nonce or counter");
122
- return false;
123
- }
124
- assertU32Counter(expectedCounter);
125
- const proofStr = typeof proof === "string" ? proof : new TextDecoder().decode(proof);
126
- let resultJson;
127
- if (algorithm === "chacha20") {
128
- resultJson = s2.verify_chacha20_proof(
129
- proofStr,
130
- expectedNonce,
131
- expectedCounter,
132
- expectedPlaintext,
133
- expectedCiphertext
134
- );
135
- } else {
136
- resultJson = s2.verify_aes_ctr_proof(
137
- proofStr,
138
- expectedNonce,
139
- expectedCounter,
140
- expectedPlaintext,
141
- expectedCiphertext
142
- );
143
- }
144
- const result = JSON.parse(resultJson);
145
- if (result.error) {
146
- logger?.warn({ error: result.error }, "Stwo STARK verification failed");
147
- return false;
148
- }
149
- return result.valid === true;
150
- },
151
- release() {
152
- wasmInitialized = false;
153
- initPromise = void 0;
154
- }
155
- };
156
- }
157
- export {
158
- makeStwoZkOperator
159
- };
@@ -1,5 +0,0 @@
1
- export declare function generateTsFromYamlSchema(name: string, type: 'parameters' | 'secret-parameters'): Promise<{
2
- ts: string;
3
- schemaTitle: any;
4
- jsonTitle: string;
5
- }>;
@@ -1,101 +0,0 @@
1
- import { readdir, readFile, writeFile } from "fs/promises";
2
- import { compile } from "json-schema-to-typescript";
3
- import { parse } from "yaml";
4
- const PROVIDER_SCHEMAS_PATH = "./provider-schemas";
5
- const GEN_TS_FILENAME = "./src/types/providers.gen.ts";
6
- const BinaryDataType = "BinaryData";
7
- async function main() {
8
- const folders = await findAllProviderFolders();
9
- console.log(`Generating for ${folders.length} provider folders`);
10
- let ts = "/* eslint-disable */\n/* Generated file. Do not edit */";
11
- ts += `
12
-
13
- type ${BinaryDataType} = Uint8Array | string
14
- `;
15
- let providerTypeMap = "\nexport interface ProvidersConfig {\n";
16
- let providerSchemaMap = "\nexport const PROVIDER_SCHEMAS = {\n";
17
- for (const folder of folders) {
18
- const {
19
- schemaTitle: paramsSchemaTitle,
20
- ts: paramsSchemaTs,
21
- jsonTitle: paramsJsonTitle
22
- } = await generateTsFromYamlSchema(folder, "parameters");
23
- const {
24
- schemaTitle: secretParamsSchemaTitle,
25
- ts: secretParamsSchemaTs,
26
- jsonTitle: secretParamsJsonTitle
27
- } = await generateTsFromYamlSchema(
28
- folder,
29
- "secret-parameters"
30
- );
31
- ts += `
32
- ${paramsSchemaTs}
33
- ${secretParamsSchemaTs}`;
34
- providerTypeMap += ` ${folder}: {
35
- `;
36
- providerTypeMap += ` parameters: ${paramsSchemaTitle}
37
- `;
38
- providerTypeMap += ` secretParameters: ${secretParamsSchemaTitle}
39
- `;
40
- providerTypeMap += " }\n";
41
- providerSchemaMap += ` ${folder}: {
42
- `;
43
- providerSchemaMap += ` parameters: ${paramsJsonTitle},
44
- `;
45
- providerSchemaMap += ` secretParameters: ${secretParamsJsonTitle}
46
- `;
47
- providerSchemaMap += " },\n";
48
- }
49
- providerTypeMap += "}\n";
50
- providerSchemaMap += "}\n";
51
- ts += providerTypeMap;
52
- ts += providerSchemaMap;
53
- await writeFile(GEN_TS_FILENAME, ts);
54
- console.log(`Wrote to ${GEN_TS_FILENAME}`);
55
- }
56
- async function getJsonSchemaForProvider(name, type) {
57
- const paramsYaml = await readFile(
58
- `${PROVIDER_SCHEMAS_PATH}/${name}/${type}.yaml`,
59
- { encoding: "utf-8" }
60
- );
61
- const paramsJson = parse(paramsYaml);
62
- return paramsJson;
63
- }
64
- async function generateTsFromYamlSchema(name, type) {
65
- const paramsJson = await getJsonSchemaForProvider(name, type);
66
- let paramsSchemaTs = await compile(
67
- paramsJson,
68
- "",
69
- {
70
- additionalProperties: false,
71
- bannerComment: "",
72
- ignoreMinAndMaxItems: true,
73
- declareExternallyReferenced: false,
74
- customName({ type: type2, format }) {
75
- if (type2 === "string" && format === "binary") {
76
- return BinaryDataType;
77
- }
78
- return void 0;
79
- }
80
- }
81
- );
82
- const jsonTitle = `${paramsJson.title}Json`;
83
- paramsSchemaTs += `
84
- export const ${jsonTitle} = ${JSON.stringify(paramsJson)}`;
85
- return {
86
- ts: paramsSchemaTs,
87
- schemaTitle: paramsJson.title,
88
- jsonTitle
89
- };
90
- }
91
- async function findAllProviderFolders() {
92
- const providerFolders = await readdir(
93
- PROVIDER_SCHEMAS_PATH,
94
- { withFileTypes: true }
95
- );
96
- return providerFolders.filter((p) => p.isDirectory()).map((p) => p.name);
97
- }
98
- void main();
99
- export {
100
- generateTsFromYamlSchema
101
- };
@@ -1,9 +0,0 @@
1
- import '#src/server/utils/config-env.ts';
2
- import type { ProviderName, ProviderParams, ProviderSecretParams } from '#src/index.ts';
3
- type ProviderReceiptGenerationParams<P extends ProviderName> = {
4
- name: P;
5
- params: ProviderParams<P>;
6
- secretParams: ProviderSecretParams<P>;
7
- };
8
- export declare function main<T extends ProviderName>(receiptParams?: ProviderReceiptGenerationParams<T>): Promise<void>;
9
- export {};
@@ -1,101 +0,0 @@
1
- import "../server/utils/config-env.js";
2
- import { setCryptoImplementation } from "@reclaimprotocol/tls";
3
- import { webcryptoCrypto } from "@reclaimprotocol/tls/webcrypto";
4
- import { readFile } from "fs/promises";
5
- import {
6
- API_SERVER_PORT,
7
- createClaimOnAttestor,
8
- getAttestorClientFromPool,
9
- getTranscriptString,
10
- logger,
11
- providers,
12
- WS_PATHNAME
13
- } from "../index.js";
14
- import { getCliArgument } from "../scripts/utils.js";
15
- import { createServer, decryptTranscript } from "../server/index.js";
16
- import { assertValidateProviderParams } from "../server/utils/validation.js";
17
- import { getEnvVariable } from "../utils/env.js";
18
- setCryptoImplementation(webcryptoCrypto);
19
- const DEFAULT_ATTESTOR_HOST_PORT = "wss://eu.attestor.reclaimprotocol.org/ws";
20
- const PRIVATE_KEY_HEX = getEnvVariable("PRIVATE_KEY_HEX") || "0x0123788edad59d7c013cdc85e4372f350f828e2cec62d9a2de4560e69aec7f89";
21
- let server;
22
- async function main(receiptParams) {
23
- const paramsJson = receiptParams ?? await getInputParameters();
24
- if (!(paramsJson.name in providers)) {
25
- throw new Error(`Unknown provider "${paramsJson.name}"`);
26
- }
27
- assertValidateProviderParams(paramsJson.name, paramsJson.params);
28
- let attestorHostPort = getCliArgument("attestor") || DEFAULT_ATTESTOR_HOST_PORT;
29
- if (attestorHostPort === "local") {
30
- console.log("starting local attestor server...");
31
- server = await createServer();
32
- attestorHostPort = `ws://localhost:${API_SERVER_PORT}${WS_PATHNAME}`;
33
- }
34
- globalThis.ATTESTOR_BASE_URL = attestorHostPort.replace("ws://", "http://").replace("wss://", "https://");
35
- const zkEngine = getCliArgument("zk") === "gnark" ? "gnark" : "stwo";
36
- const { request, error, claim } = await createClaimOnAttestor({
37
- name: paramsJson.name,
38
- secretParams: paramsJson.secretParams,
39
- params: paramsJson.params,
40
- ownerPrivateKey: PRIVATE_KEY_HEX,
41
- client: { url: attestorHostPort },
42
- logger,
43
- zkEngine
44
- });
45
- if (error) {
46
- console.error("claim creation failed:", error);
47
- } else {
48
- const ctx = claim?.context ? JSON.parse(claim.context) : {};
49
- console.log(`receipt is valid for ${paramsJson.name} provider`);
50
- if (ctx.extractedParameters) {
51
- console.log("extracted params:", ctx.extractedParameters);
52
- }
53
- }
54
- if (!request) {
55
- throw new Error("Missing request in claim");
56
- }
57
- const decTranscript = await decryptTranscript(
58
- request?.transcript,
59
- logger,
60
- zkEngine,
61
- request?.fixedServerIV,
62
- request?.fixedClientIV
63
- );
64
- const transcriptStr = getTranscriptString(decTranscript);
65
- console.log("receipt:\n", transcriptStr);
66
- console.log("claim:\n", claim);
67
- const client = getAttestorClientFromPool(attestorHostPort);
68
- await client.terminateConnection();
69
- }
70
- async function getInputParameters() {
71
- const paramsJsonFile = getCliArgument("json");
72
- if (!paramsJsonFile) {
73
- const name = getCliArgument("name");
74
- const paramsStr = getCliArgument("params");
75
- const secretParamsStr = getCliArgument("secretParams");
76
- if (!name || !paramsStr || !secretParamsStr) {
77
- throw new Error("Either provide --json argument for parameters JSON or provide separately with --name, --params & --secretParams");
78
- }
79
- return {
80
- name,
81
- params: JSON.parse(paramsStr),
82
- secretParams: JSON.parse(secretParamsStr)
83
- };
84
- }
85
- let fileContents = await readFile(paramsJsonFile, "utf8");
86
- for (const variable in process.env) {
87
- fileContents = fileContents.replace(
88
- `{{${variable}}}`,
89
- process.env[variable]
90
- );
91
- }
92
- return JSON.parse(fileContents);
93
- }
94
- main().catch((err) => {
95
- console.error("error in receipt gen", err);
96
- }).finally(() => {
97
- server?.close();
98
- });
99
- export {
100
- main
101
- };
@@ -1 +0,0 @@
1
- export {};
@@ -1,24 +0,0 @@
1
- import { hexlify } from "ethers";
2
- import { logger, makeDefaultOPRFOperator } from "../utils/index.js";
3
- const ENGINE = "gnark";
4
- const TOTAL_KEYS = 10;
5
- const THRESHOLD = 1;
6
- async function main() {
7
- const op = makeDefaultOPRFOperator("chacha20", ENGINE, logger);
8
- const {
9
- publicKey,
10
- privateKey,
11
- shares
12
- } = await op.generateThresholdKeys(TOTAL_KEYS, THRESHOLD);
13
- logEnvValue("TOPRF_PUBLIC_KEY", publicKey);
14
- logEnvValue("TOPRF_PRIVATE_KEY", privateKey);
15
- for (const [i, share] of shares.entries()) {
16
- console.log(`# Share ${i}`);
17
- logEnvValue("TOPRF_SHARE_PUBLIC_KEY", share.publicKey);
18
- logEnvValue("TOPRF_SHARE_PRIVATE_KEY", share.privateKey);
19
- }
20
- }
21
- function logEnvValue(name, value) {
22
- console.log(`${name}=${hexlify(value)}`);
23
- }
24
- void main();
@@ -1 +0,0 @@
1
- import '#src/external-rpc/jsc-polyfills/index.ts';
@@ -1,35 +0,0 @@
1
- import "../external-rpc/jsc-polyfills/index.js";
2
- import { setCryptoImplementation } from "@reclaimprotocol/tls";
3
- import { pureJsCrypto } from "@reclaimprotocol/tls/purejs-crypto";
4
- import { handleIncomingMessage } from "../external-rpc/index.js";
5
- import { B64_JSON_REVIVER } from "../utils/b64-json.js";
6
- function readIncomingMsg() {
7
- const cmd2 = readline();
8
- return JSON.parse(cmd2, B64_JSON_REVIVER);
9
- }
10
- setCryptoImplementation(pureJsCrypto);
11
- print("Input base URL for attestor");
12
- const initCmd = readIncomingMsg();
13
- if (initCmd.type !== "init") {
14
- throw new Error("Expected init command");
15
- }
16
- globalThis.RPC_CHANNEL_NAME = "cli";
17
- globalThis.ATTESTOR_BASE_URL = initCmd.attestorBaseUrl;
18
- const channel = {
19
- postMessage(message) {
20
- print(message);
21
- }
22
- };
23
- globalThis[RPC_CHANNEL_NAME] = channel;
24
- print("reading RPC messages...");
25
- let cmd;
26
- while (cmd = readIncomingMsg(), cmd.type !== "quit") {
27
- if (cmd.type === "init") {
28
- continue;
29
- }
30
- handleIncomingMessage(cmd);
31
- await new Promise((resolve) => {
32
- setTimeout(resolve, 500);
33
- });
34
- }
35
- print("done");
@@ -1 +0,0 @@
1
- import 'src/server/utils/config-env';
@@ -1,3 +0,0 @@
1
- import "src/server/utils/config-env";
2
- import { registerOperator } from "../avs/utils/register.js";
3
- void registerOperator();
@@ -1 +0,0 @@
1
- import '#src/server/utils/config-env.ts';
@@ -1,11 +0,0 @@
1
- import "../server/utils/config-env.js";
2
- import { setCryptoImplementation } from "@reclaimprotocol/tls";
3
- import { webcryptoCrypto } from "@reclaimprotocol/tls/webcrypto";
4
- import { getApm } from "../server/utils/apm.js";
5
- getApm();
6
- setCryptoImplementation(webcryptoCrypto);
7
- async function main() {
8
- const { createServer } = await import("../server/index.js");
9
- return createServer();
10
- }
11
- main();
@@ -1 +0,0 @@
1
- import 'src/server/utils/config-env';
@@ -1,20 +0,0 @@
1
- import "src/server/utils/config-env";
2
- import { getContracts } from "../avs/utils/contracts.js";
3
- import { getCliArgument } from "../scripts/utils.js";
4
- async function main() {
5
- const { contract } = getContracts();
6
- const minSignaturesPerTask = getCliArgument("minSignaturesPerTask");
7
- if (!minSignaturesPerTask) {
8
- throw new Error(
9
- "Provide operator address via --minSignaturesPerTask <num>"
10
- );
11
- }
12
- const tx = await contract.updateTaskCreationMetadata({
13
- minSignaturesPerTask: +(minSignaturesPerTask || 0),
14
- maxTaskCreationDelayS: 0,
15
- maxTaskLifetimeS: 0
16
- });
17
- await tx.wait();
18
- console.log("Updated task creation metadata");
19
- }
20
- void main();
@@ -1 +0,0 @@
1
- export declare function getCliArgument(arg: string): string | undefined;
@@ -1,10 +0,0 @@
1
- function getCliArgument(arg) {
2
- const index = process.argv.indexOf(`--${arg}`);
3
- if (index === -1) {
4
- return void 0;
5
- }
6
- return process.argv[index + 1];
7
- }
8
- export {
9
- getCliArgument
10
- };
@@ -1 +0,0 @@
1
- import 'src/server/utils/config-env';