@reclaimprotocol/attestor-core 5.0.1-beta.1 → 5.0.1-beta.2
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/lib/avs/abis/avsDirectoryABI.d.ts +60 -0
- package/lib/avs/abis/avsDirectoryABI.js +343 -0
- package/lib/avs/abis/delegationABI.d.ts +126 -0
- package/lib/avs/abis/delegationABI.js +4 -0
- package/lib/avs/abis/registryABI.d.ts +136 -0
- package/lib/avs/abis/registryABI.js +728 -0
- package/lib/avs/client/create-claim-on-avs.d.ts +12 -0
- package/lib/avs/client/create-claim-on-avs.js +168 -0
- package/lib/avs/config.d.ts +7 -0
- package/lib/avs/config.js +26 -0
- package/lib/avs/contracts/ReclaimServiceManager.d.ts +601 -0
- package/lib/avs/contracts/ReclaimServiceManager.js +0 -0
- package/lib/avs/contracts/common.d.ts +50 -0
- package/lib/avs/contracts/common.js +0 -0
- package/lib/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +890 -0
- package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +1183 -0
- package/lib/avs/contracts/factories/index.d.ts +1 -0
- package/lib/avs/contracts/factories/index.js +4 -0
- package/lib/avs/contracts/index.d.ts +3 -0
- package/lib/avs/contracts/index.js +6 -0
- package/lib/avs/types/index.d.ts +55 -0
- package/lib/avs/types/index.js +0 -0
- package/lib/avs/utils/contracts.d.ts +21 -0
- package/lib/avs/utils/contracts.js +53 -0
- package/lib/avs/utils/register.d.ts +27 -0
- package/lib/avs/utils/register.js +74 -0
- package/lib/avs/utils/tasks.d.ts +22 -0
- package/lib/avs/utils/tasks.js +48 -0
- package/lib/client/create-claim.d.ts +5 -0
- package/lib/client/create-claim.js +461 -0
- package/lib/client/index.d.ts +3 -0
- package/lib/client/index.js +3 -0
- package/lib/client/tunnels/make-rpc-tcp-tunnel.d.ts +16 -0
- package/lib/client/tunnels/make-rpc-tcp-tunnel.js +53 -0
- package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +26 -0
- package/lib/client/tunnels/make-rpc-tls-tunnel.js +127 -0
- package/lib/client/utils/attestor-pool.d.ts +8 -0
- package/lib/client/utils/attestor-pool.js +24 -0
- package/lib/client/utils/client-socket.d.ts +11 -0
- package/lib/client/utils/client-socket.js +120 -0
- package/lib/client/utils/message-handler.d.ts +4 -0
- package/lib/client/utils/message-handler.js +97 -0
- package/lib/config/index.d.ts +31 -0
- package/lib/config/index.js +62 -0
- package/lib/external-rpc/benchmark.d.ts +1 -0
- package/lib/external-rpc/benchmark.js +82 -0
- package/lib/external-rpc/event-bus.d.ts +7 -0
- package/lib/external-rpc/event-bus.js +17 -0
- package/lib/external-rpc/global.d.js +0 -0
- package/lib/external-rpc/handle-incoming-msg.d.ts +2 -0
- package/lib/external-rpc/handle-incoming-msg.js +241 -0
- package/lib/external-rpc/index.d.ts +3 -0
- package/lib/external-rpc/index.js +3 -0
- package/lib/external-rpc/jsc-polyfills/1.d.ts +14 -0
- package/lib/external-rpc/jsc-polyfills/1.js +80 -0
- package/lib/external-rpc/jsc-polyfills/2.d.ts +1 -0
- package/lib/external-rpc/jsc-polyfills/2.js +15 -0
- package/lib/external-rpc/jsc-polyfills/event.d.ts +10 -0
- package/lib/external-rpc/jsc-polyfills/event.js +19 -0
- package/lib/external-rpc/jsc-polyfills/index.d.ts +2 -0
- package/lib/external-rpc/jsc-polyfills/index.js +2 -0
- package/lib/external-rpc/jsc-polyfills/ws.d.ts +21 -0
- package/lib/external-rpc/jsc-polyfills/ws.js +83 -0
- package/lib/external-rpc/setup-browser.d.ts +6 -0
- package/lib/external-rpc/setup-browser.js +33 -0
- package/lib/external-rpc/setup-jsc.d.ts +24 -0
- package/lib/external-rpc/setup-jsc.js +22 -0
- package/lib/external-rpc/types.d.ts +213 -0
- package/lib/external-rpc/types.js +0 -0
- package/lib/external-rpc/utils.d.ts +20 -0
- package/lib/external-rpc/utils.js +100 -0
- package/lib/external-rpc/zk.d.ts +14 -0
- package/lib/external-rpc/zk.js +58 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.js +13 -0
- package/lib/mechain/abis/governanceABI.d.ts +50 -0
- package/lib/mechain/abis/governanceABI.js +461 -0
- package/lib/mechain/abis/taskABI.d.ts +157 -0
- package/lib/mechain/abis/taskABI.js +512 -0
- package/lib/mechain/client/create-claim-on-mechain.d.ts +10 -0
- package/lib/mechain/client/create-claim-on-mechain.js +33 -0
- package/lib/mechain/client/index.d.ts +1 -0
- package/lib/mechain/client/index.js +1 -0
- package/lib/mechain/constants/index.d.ts +3 -0
- package/lib/mechain/constants/index.js +8 -0
- package/lib/mechain/index.d.ts +2 -0
- package/lib/mechain/index.js +2 -0
- package/lib/mechain/types/index.d.ts +23 -0
- package/lib/mechain/types/index.js +0 -0
- package/lib/proto/api.d.ts +651 -0
- package/lib/proto/api.js +4250 -0
- package/lib/proto/tee-bundle.d.ts +156 -0
- package/lib/proto/tee-bundle.js +1296 -0
- package/lib/providers/http/index.d.ts +18 -0
- package/lib/providers/http/index.js +640 -0
- package/lib/providers/http/patch-parse5-tree.d.ts +6 -0
- package/lib/providers/http/patch-parse5-tree.js +34 -0
- package/lib/providers/http/utils.d.ts +77 -0
- package/lib/providers/http/utils.js +283 -0
- package/lib/providers/index.d.ts +4 -0
- package/lib/providers/index.js +7 -0
- package/lib/scripts/build-browser.d.ts +1 -0
- package/lib/scripts/build-jsc.d.ts +1 -0
- package/lib/scripts/build-lib.d.ts +1 -0
- package/lib/scripts/check-avs-registration.d.ts +1 -0
- package/lib/scripts/check-avs-registration.js +28 -0
- package/lib/scripts/fallbacks/crypto.d.ts +1 -0
- package/lib/scripts/fallbacks/crypto.js +4 -0
- package/lib/scripts/fallbacks/empty.d.ts +3 -0
- package/lib/scripts/fallbacks/empty.js +4 -0
- package/lib/scripts/fallbacks/re2.d.ts +1 -0
- package/lib/scripts/fallbacks/re2.js +7 -0
- package/lib/scripts/fallbacks/snarkjs.d.ts +1 -0
- package/lib/scripts/fallbacks/snarkjs.js +10 -0
- package/lib/scripts/fallbacks/stwo.d.ts +6 -0
- package/lib/scripts/fallbacks/stwo.js +159 -0
- package/lib/scripts/generate-provider-types.d.ts +5 -0
- package/lib/scripts/generate-provider-types.js +101 -0
- package/lib/scripts/generate-receipt.d.ts +9 -0
- package/lib/scripts/generate-receipt.js +101 -0
- package/lib/scripts/generate-toprf-keys.d.ts +1 -0
- package/lib/scripts/generate-toprf-keys.js +24 -0
- package/lib/scripts/jsc-cli-rpc.d.ts +1 -0
- package/lib/scripts/jsc-cli-rpc.js +35 -0
- package/lib/scripts/register-avs-operator.d.ts +1 -0
- package/lib/scripts/register-avs-operator.js +3 -0
- package/lib/scripts/start-server.d.ts +1 -0
- package/lib/scripts/start-server.js +11 -0
- package/lib/scripts/update-avs-metadata.d.ts +1 -0
- package/lib/scripts/update-avs-metadata.js +20 -0
- package/lib/scripts/utils.d.ts +1 -0
- package/lib/scripts/utils.js +10 -0
- package/lib/scripts/whitelist-operator.d.ts +1 -0
- package/lib/scripts/whitelist-operator.js +16 -0
- package/lib/server/create-server.d.ts +8 -0
- package/lib/server/create-server.js +105 -0
- package/lib/server/handlers/claimTeeBundle.d.ts +6 -0
- package/lib/server/handlers/claimTeeBundle.js +232 -0
- package/lib/server/handlers/claimTunnel.d.ts +2 -0
- package/lib/server/handlers/claimTunnel.js +80 -0
- package/lib/server/handlers/completeClaimOnChain.d.ts +2 -0
- package/lib/server/handlers/completeClaimOnChain.js +29 -0
- package/lib/server/handlers/createClaimOnChain.d.ts +2 -0
- package/lib/server/handlers/createClaimOnChain.js +32 -0
- package/lib/server/handlers/createTaskOnMechain.d.ts +2 -0
- package/lib/server/handlers/createTaskOnMechain.js +57 -0
- package/lib/server/handlers/createTunnel.d.ts +2 -0
- package/lib/server/handlers/createTunnel.js +98 -0
- package/lib/server/handlers/disconnectTunnel.d.ts +2 -0
- package/lib/server/handlers/disconnectTunnel.js +8 -0
- package/lib/server/handlers/fetchCertificateBytes.d.ts +2 -0
- package/lib/server/handlers/fetchCertificateBytes.js +57 -0
- package/lib/server/handlers/index.d.ts +4 -0
- package/lib/server/handlers/index.js +25 -0
- package/lib/server/handlers/init.d.ts +2 -0
- package/lib/server/handlers/init.js +33 -0
- package/lib/server/handlers/toprf.d.ts +2 -0
- package/lib/server/handlers/toprf.js +19 -0
- package/lib/server/index.d.ts +4 -0
- package/lib/server/index.js +4 -0
- package/lib/server/socket.d.ts +13 -0
- package/lib/server/socket.js +112 -0
- package/lib/server/tunnels/make-tcp-tunnel.d.ts +22 -0
- package/lib/server/tunnels/make-tcp-tunnel.js +202 -0
- package/lib/server/utils/apm.d.ts +11 -0
- package/lib/server/utils/apm.js +29 -0
- package/lib/server/utils/assert-valid-claim-request.d.ts +31 -0
- package/lib/server/utils/assert-valid-claim-request.js +354 -0
- package/lib/server/utils/config-env.d.ts +1 -0
- package/lib/server/utils/config-env.js +4 -0
- package/lib/server/utils/dns.d.ts +1 -0
- package/lib/server/utils/dns.js +24 -0
- package/lib/server/utils/gcp-attestation.d.ts +17 -0
- package/lib/server/utils/gcp-attestation.js +237 -0
- package/lib/server/utils/generics.d.ts +22 -0
- package/lib/server/utils/generics.js +45 -0
- package/lib/server/utils/iso.d.ts +1 -0
- package/lib/server/utils/iso.js +259 -0
- package/lib/server/utils/keep-alive.d.ts +7 -0
- package/lib/server/utils/keep-alive.js +38 -0
- package/lib/server/utils/nitro-attestation.d.ts +33 -0
- package/lib/server/utils/nitro-attestation.js +249 -0
- package/lib/server/utils/oprf-raw.d.ts +21 -0
- package/lib/server/utils/oprf-raw.js +61 -0
- package/lib/server/utils/process-handshake.d.ts +13 -0
- package/lib/server/utils/process-handshake.js +233 -0
- package/lib/server/utils/proxy-session.d.ts +1 -0
- package/lib/server/utils/proxy-session.js +6 -0
- package/lib/server/utils/tee-oprf-mpc-verification.d.ts +16 -0
- package/lib/server/utils/tee-oprf-mpc-verification.js +86 -0
- package/lib/server/utils/tee-oprf-verification.d.ts +24 -0
- package/lib/server/utils/tee-oprf-verification.js +151 -0
- package/lib/server/utils/tee-transcript-reconstruction.d.ts +24 -0
- package/lib/server/utils/tee-transcript-reconstruction.js +140 -0
- package/lib/server/utils/tee-verification.d.ts +28 -0
- package/lib/server/utils/tee-verification.js +358 -0
- package/lib/server/utils/validation.d.ts +2 -0
- package/lib/server/utils/validation.js +45 -0
- package/lib/types/bgp.d.ts +11 -0
- package/lib/types/bgp.js +0 -0
- package/lib/types/claims.d.ts +70 -0
- package/lib/types/claims.js +0 -0
- package/lib/types/client.d.ts +163 -0
- package/lib/types/client.js +0 -0
- package/lib/types/general.d.ts +76 -0
- package/lib/types/general.js +0 -0
- package/lib/types/handlers.d.ts +10 -0
- package/lib/types/handlers.js +0 -0
- package/lib/types/index.d.ts +10 -0
- package/lib/types/index.js +10 -0
- package/lib/types/providers.d.ts +161 -0
- package/lib/types/providers.gen.d.ts +443 -0
- package/lib/types/providers.gen.js +16 -0
- package/lib/types/providers.js +0 -0
- package/lib/types/rpc.d.ts +35 -0
- package/lib/types/rpc.js +0 -0
- package/lib/types/signatures.d.ts +28 -0
- package/lib/types/signatures.js +0 -0
- package/lib/types/tunnel.d.ts +18 -0
- package/lib/types/tunnel.js +0 -0
- package/lib/types/zk.d.ts +38 -0
- package/lib/types/zk.js +0 -0
- package/lib/utils/auth.d.ts +8 -0
- package/lib/utils/auth.js +71 -0
- package/lib/utils/b64-json.d.ts +2 -0
- package/lib/utils/b64-json.js +17 -0
- package/lib/utils/bgp-listener.d.ts +7 -0
- package/lib/utils/bgp-listener.js +123 -0
- package/lib/utils/claims.d.ts +33 -0
- package/lib/utils/claims.js +89 -0
- package/lib/utils/env.d.ts +3 -0
- package/lib/utils/env.js +19 -0
- package/lib/utils/error.d.ts +26 -0
- package/lib/utils/error.js +54 -0
- package/lib/utils/generics.d.ts +114 -0
- package/lib/utils/generics.js +268 -0
- package/lib/utils/http-parser.d.ts +59 -0
- package/lib/utils/http-parser.js +201 -0
- package/lib/utils/index.d.ts +13 -0
- package/lib/utils/index.js +13 -0
- package/lib/utils/logger.d.ts +13 -0
- package/lib/utils/logger.js +82 -0
- package/lib/utils/prepare-packets.d.ts +16 -0
- package/lib/utils/prepare-packets.js +69 -0
- package/lib/utils/redactions.d.ts +73 -0
- package/lib/utils/redactions.js +135 -0
- package/lib/utils/retries.d.ts +12 -0
- package/lib/utils/retries.js +26 -0
- package/lib/utils/signatures/eth.d.ts +2 -0
- package/lib/utils/signatures/eth.js +31 -0
- package/lib/utils/signatures/index.d.ts +5 -0
- package/lib/utils/signatures/index.js +12 -0
- package/lib/utils/socket-base.d.ts +23 -0
- package/lib/utils/socket-base.js +96 -0
- package/lib/utils/tls.d.ts +2 -0
- package/lib/utils/tls.js +58 -0
- package/lib/utils/ws.d.ts +7 -0
- package/lib/utils/ws.js +22 -0
- package/lib/utils/zk.d.ts +71 -0
- package/lib/utils/zk.js +625 -0
- package/package.json +2 -2
|
@@ -0,0 +1,101 @@
|
|
|
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
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
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 {};
|
|
@@ -0,0 +1,101 @@
|
|
|
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
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
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();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '#src/external-rpc/jsc-polyfills/index.ts';
|
|
@@ -0,0 +1,35 @@
|
|
|
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");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'src/server/utils/config-env';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '#src/server/utils/config-env.ts';
|
|
@@ -0,0 +1,11 @@
|
|
|
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();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'src/server/utils/config-env';
|
|
@@ -0,0 +1,20 @@
|
|
|
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();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getCliArgument(arg: string): string | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'src/server/utils/config-env';
|
|
@@ -0,0 +1,16 @@
|
|
|
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 address = getCliArgument("address");
|
|
7
|
+
if (!address) {
|
|
8
|
+
throw new Error(
|
|
9
|
+
"Provide operator address via --address <addr>"
|
|
10
|
+
);
|
|
11
|
+
}
|
|
12
|
+
const tx = await contract.whitelistAddressAsOperator(address, true);
|
|
13
|
+
await tx.wait();
|
|
14
|
+
console.log("Whitelisted address:", address);
|
|
15
|
+
}
|
|
16
|
+
void main();
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IncomingMessage } from 'http';
|
|
2
|
+
import type { WebSocket } from 'ws';
|
|
3
|
+
/**
|
|
4
|
+
* Creates the WebSocket API server,
|
|
5
|
+
* creates a fileserver to serve the browser RPC client,
|
|
6
|
+
* and listens on the given port.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createServer(port?: number): Promise<import("ws").Server<typeof WebSocket, typeof IncomingMessage>>;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { createServer as createHttpServer } from "http";
|
|
2
|
+
import serveStatic from "serve-static";
|
|
3
|
+
import { WebSocketServer } from "ws";
|
|
4
|
+
import { API_SERVER_PORT, ATTESTOR_ADDRESS_PATHNAME, BROWSER_RPC_PATHNAME, WS_PATHNAME } from "../config/index.js";
|
|
5
|
+
import { AttestorServerSocket } from "../server/socket.js";
|
|
6
|
+
import { getAttestorAddress } from "../server/utils/generics.js";
|
|
7
|
+
import { addKeepAlive } from "../server/utils/keep-alive.js";
|
|
8
|
+
import { createBgpListener } from "../utils/bgp-listener.js";
|
|
9
|
+
import { getEnvVariable } from "../utils/env.js";
|
|
10
|
+
import { logger as LOGGER } from "../utils/index.js";
|
|
11
|
+
import { SelectedServiceSignatureType } from "../utils/signatures/index.js";
|
|
12
|
+
import { promisifySend } from "../utils/ws.js";
|
|
13
|
+
const PORT = +(getEnvVariable("PORT") || API_SERVER_PORT);
|
|
14
|
+
const DISABLE_BGP_CHECKS = getEnvVariable("DISABLE_BGP_CHECKS") === "1";
|
|
15
|
+
const ATTESTOR_ADDRESS_JSON_RES = JSON.stringify({
|
|
16
|
+
address: getAttestorAddress(SelectedServiceSignatureType),
|
|
17
|
+
signatureType: SelectedServiceSignatureType
|
|
18
|
+
});
|
|
19
|
+
async function createServer(port = PORT) {
|
|
20
|
+
const http = createHttpServer();
|
|
21
|
+
const serveBrowserRpc = serveStatic(
|
|
22
|
+
"browser",
|
|
23
|
+
{
|
|
24
|
+
index: ["index.html"],
|
|
25
|
+
setHeaders(res) {
|
|
26
|
+
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
const bgpListener = !DISABLE_BGP_CHECKS ? createBgpListener(LOGGER.child({ service: "bgp-listener" })) : void 0;
|
|
31
|
+
const wss = new WebSocketServer({ noServer: true });
|
|
32
|
+
http.on("upgrade", handleUpgrade.bind(wss));
|
|
33
|
+
http.on("request", (req, res) => {
|
|
34
|
+
const url = URL.parse(req.url || "", "http://localhost");
|
|
35
|
+
if (!url) {
|
|
36
|
+
res.statusCode = 422;
|
|
37
|
+
res.end("Invalid URL");
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (url.pathname === ATTESTOR_ADDRESS_PATHNAME) {
|
|
41
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
42
|
+
res.end(ATTESTOR_ADDRESS_JSON_RES);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (!url.pathname?.startsWith(BROWSER_RPC_PATHNAME)) {
|
|
46
|
+
res.statusCode = 404;
|
|
47
|
+
res.end("Not found");
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
req.url = req.url.slice(BROWSER_RPC_PATHNAME.length) || "/";
|
|
51
|
+
serveBrowserRpc(req, res, (err) => {
|
|
52
|
+
if (err) {
|
|
53
|
+
LOGGER.error({ err, url: req.url }, "Failed to serve file");
|
|
54
|
+
}
|
|
55
|
+
res.statusCode = err?.statusCode ?? 404;
|
|
56
|
+
res.end(err?.message ?? "Not found");
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
http.listen(port);
|
|
60
|
+
await new Promise((resolve, reject) => {
|
|
61
|
+
http.once("listening", () => resolve());
|
|
62
|
+
http.once("error", reject);
|
|
63
|
+
});
|
|
64
|
+
wss.on("connection", (ws, req) => handleNewClient(ws, req, bgpListener));
|
|
65
|
+
LOGGER.info(
|
|
66
|
+
{
|
|
67
|
+
port,
|
|
68
|
+
apiPath: WS_PATHNAME,
|
|
69
|
+
browserRpcPath: BROWSER_RPC_PATHNAME,
|
|
70
|
+
signerAddress: getAttestorAddress(SelectedServiceSignatureType)
|
|
71
|
+
},
|
|
72
|
+
"WS server listening"
|
|
73
|
+
);
|
|
74
|
+
const wssClose = wss.close.bind(wss);
|
|
75
|
+
wss.close = (cb) => {
|
|
76
|
+
wssClose(() => http.close(cb));
|
|
77
|
+
bgpListener?.close();
|
|
78
|
+
};
|
|
79
|
+
return wss;
|
|
80
|
+
}
|
|
81
|
+
async function handleNewClient(ws, req, bgpListener) {
|
|
82
|
+
promisifySend(ws);
|
|
83
|
+
const client = await AttestorServerSocket.acceptConnection(
|
|
84
|
+
ws,
|
|
85
|
+
{ req, bgpListener, logger: LOGGER }
|
|
86
|
+
);
|
|
87
|
+
if (!client) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
ws.serverSocket = client;
|
|
91
|
+
addKeepAlive(ws, LOGGER.child({ sessionId: client.sessionId }));
|
|
92
|
+
}
|
|
93
|
+
function handleUpgrade(request, socket, head) {
|
|
94
|
+
const { pathname } = new URL(request.url, "wss://base.url");
|
|
95
|
+
if (pathname === WS_PATHNAME) {
|
|
96
|
+
this.handleUpgrade(request, socket, head, (ws) => {
|
|
97
|
+
this.emit("connection", ws, request);
|
|
98
|
+
});
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
socket.destroy();
|
|
102
|
+
}
|
|
103
|
+
export {
|
|
104
|
+
createServer
|
|
105
|
+
};
|