@reclaimprotocol/attestor-core 5.0.1-beta.2 → 5.0.1-beta.21
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/browser/resources/attestor-browser.min.mjs +4512 -0
- package/lib/external-rpc/index.js +10399 -3
- package/lib/index.js +8323 -10
- package/package.json +9 -4
- package/lib/avs/abis/avsDirectoryABI.js +0 -343
- package/lib/avs/abis/delegationABI.js +0 -4
- package/lib/avs/abis/registryABI.js +0 -728
- package/lib/avs/client/create-claim-on-avs.js +0 -168
- package/lib/avs/config.js +0 -26
- package/lib/avs/contracts/ReclaimServiceManager.js +0 -0
- package/lib/avs/contracts/common.js +0 -0
- package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +0 -1183
- package/lib/avs/contracts/factories/index.js +0 -4
- package/lib/avs/contracts/index.js +0 -6
- package/lib/avs/types/index.js +0 -0
- package/lib/avs/utils/contracts.js +0 -53
- package/lib/avs/utils/register.js +0 -74
- package/lib/avs/utils/tasks.js +0 -48
- package/lib/client/create-claim.js +0 -461
- package/lib/client/index.js +0 -3
- package/lib/client/tunnels/make-rpc-tcp-tunnel.js +0 -53
- package/lib/client/tunnels/make-rpc-tls-tunnel.js +0 -127
- package/lib/client/utils/attestor-pool.js +0 -24
- package/lib/client/utils/client-socket.js +0 -120
- package/lib/client/utils/message-handler.js +0 -97
- package/lib/config/index.js +0 -62
- package/lib/external-rpc/benchmark.js +0 -82
- package/lib/external-rpc/event-bus.js +0 -17
- package/lib/external-rpc/global.d.js +0 -0
- package/lib/external-rpc/handle-incoming-msg.js +0 -241
- package/lib/external-rpc/jsc-polyfills/1.js +0 -80
- package/lib/external-rpc/jsc-polyfills/2.js +0 -15
- package/lib/external-rpc/jsc-polyfills/event.js +0 -19
- package/lib/external-rpc/jsc-polyfills/index.js +0 -2
- package/lib/external-rpc/jsc-polyfills/ws.js +0 -83
- package/lib/external-rpc/setup-browser.js +0 -33
- package/lib/external-rpc/setup-jsc.js +0 -22
- package/lib/external-rpc/types.js +0 -0
- package/lib/external-rpc/utils.js +0 -100
- package/lib/external-rpc/zk.js +0 -58
- package/lib/mechain/abis/governanceABI.js +0 -461
- package/lib/mechain/abis/taskABI.js +0 -512
- package/lib/mechain/client/create-claim-on-mechain.js +0 -33
- package/lib/mechain/client/index.js +0 -1
- package/lib/mechain/constants/index.js +0 -8
- package/lib/mechain/index.js +0 -2
- package/lib/mechain/types/index.js +0 -0
- package/lib/proto/api.js +0 -4250
- package/lib/proto/tee-bundle.js +0 -1296
- package/lib/providers/http/index.js +0 -640
- package/lib/providers/http/patch-parse5-tree.js +0 -34
- package/lib/providers/http/utils.js +0 -283
- package/lib/providers/index.js +0 -7
- package/lib/scripts/check-avs-registration.js +0 -28
- package/lib/scripts/fallbacks/crypto.js +0 -4
- package/lib/scripts/fallbacks/empty.js +0 -4
- package/lib/scripts/fallbacks/re2.js +0 -7
- package/lib/scripts/fallbacks/snarkjs.js +0 -10
- package/lib/scripts/fallbacks/stwo.js +0 -159
- package/lib/scripts/generate-provider-types.js +0 -101
- package/lib/scripts/generate-receipt.js +0 -101
- package/lib/scripts/generate-toprf-keys.js +0 -24
- package/lib/scripts/jsc-cli-rpc.js +0 -35
- package/lib/scripts/register-avs-operator.js +0 -3
- package/lib/scripts/start-server.js +0 -11
- package/lib/scripts/update-avs-metadata.js +0 -20
- package/lib/scripts/utils.js +0 -10
- package/lib/scripts/whitelist-operator.js +0 -16
- package/lib/server/create-server.js +0 -105
- package/lib/server/handlers/claimTeeBundle.js +0 -232
- package/lib/server/handlers/claimTunnel.js +0 -80
- package/lib/server/handlers/completeClaimOnChain.js +0 -29
- package/lib/server/handlers/createClaimOnChain.js +0 -32
- package/lib/server/handlers/createTaskOnMechain.js +0 -57
- package/lib/server/handlers/createTunnel.js +0 -98
- package/lib/server/handlers/disconnectTunnel.js +0 -8
- package/lib/server/handlers/fetchCertificateBytes.js +0 -57
- package/lib/server/handlers/index.js +0 -25
- package/lib/server/handlers/init.js +0 -33
- package/lib/server/handlers/toprf.js +0 -19
- package/lib/server/index.js +0 -4
- package/lib/server/socket.js +0 -112
- package/lib/server/tunnels/make-tcp-tunnel.js +0 -202
- package/lib/server/utils/apm.js +0 -29
- package/lib/server/utils/assert-valid-claim-request.js +0 -354
- package/lib/server/utils/config-env.js +0 -4
- package/lib/server/utils/dns.js +0 -24
- package/lib/server/utils/gcp-attestation.js +0 -237
- package/lib/server/utils/generics.js +0 -45
- package/lib/server/utils/iso.js +0 -259
- package/lib/server/utils/keep-alive.js +0 -38
- package/lib/server/utils/nitro-attestation.js +0 -249
- package/lib/server/utils/oprf-raw.js +0 -61
- package/lib/server/utils/process-handshake.js +0 -233
- package/lib/server/utils/proxy-session.js +0 -6
- package/lib/server/utils/tee-oprf-mpc-verification.js +0 -86
- package/lib/server/utils/tee-oprf-verification.js +0 -151
- package/lib/server/utils/tee-transcript-reconstruction.js +0 -140
- package/lib/server/utils/tee-verification.js +0 -358
- package/lib/server/utils/validation.js +0 -45
- package/lib/types/bgp.js +0 -0
- package/lib/types/claims.js +0 -0
- package/lib/types/client.js +0 -0
- package/lib/types/general.js +0 -0
- package/lib/types/handlers.js +0 -0
- package/lib/types/index.js +0 -10
- package/lib/types/providers.gen.js +0 -16
- package/lib/types/providers.js +0 -0
- package/lib/types/rpc.js +0 -0
- package/lib/types/signatures.js +0 -0
- package/lib/types/tunnel.js +0 -0
- package/lib/types/zk.js +0 -0
- package/lib/utils/auth.js +0 -71
- package/lib/utils/b64-json.js +0 -17
- package/lib/utils/bgp-listener.js +0 -123
- package/lib/utils/claims.js +0 -89
- package/lib/utils/env.js +0 -19
- package/lib/utils/error.js +0 -54
- package/lib/utils/generics.js +0 -268
- package/lib/utils/http-parser.js +0 -201
- package/lib/utils/index.js +0 -13
- package/lib/utils/logger.js +0 -82
- package/lib/utils/prepare-packets.js +0 -69
- package/lib/utils/redactions.js +0 -135
- package/lib/utils/retries.js +0 -26
- package/lib/utils/signatures/eth.js +0 -31
- package/lib/utils/signatures/index.js +0 -12
- package/lib/utils/socket-base.js +0 -96
- package/lib/utils/tls.js +0 -58
- package/lib/utils/ws.js +0 -22
- package/lib/utils/zk.js +0 -625
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { EventLog, hexlify, Wallet } from "ethers";
|
|
2
|
-
import { CHAIN_CONFIGS, SELECTED_CHAIN_ID } from "../../avs/config.js";
|
|
3
|
-
import { initialiseContracts } from "../../avs/utils/contracts.js";
|
|
4
|
-
import { createNewClaimRequestOnChain, signClaimRequest } from "../../avs/utils/tasks.js";
|
|
5
|
-
import { createClaimOnAttestor as _createClaimOnAttestor, getAttestorClientFromPool } from "../../client/index.js";
|
|
6
|
-
import { AttestorError, canonicalStringify, getIdentifierFromClaimInfo, logger as LOGGER, unixTimestampSeconds } from "../../utils/index.js";
|
|
7
|
-
const EMPTY_CLAIM_USER_ID = hexlify(new Uint8Array(32));
|
|
8
|
-
async function createClaimOnAvs({
|
|
9
|
-
onStep,
|
|
10
|
-
createClaimOnAttestor = _createClaimOnAttestor,
|
|
11
|
-
chainId = SELECTED_CHAIN_ID,
|
|
12
|
-
payer,
|
|
13
|
-
...opts
|
|
14
|
-
}) {
|
|
15
|
-
const {
|
|
16
|
-
logger = LOGGER,
|
|
17
|
-
ownerPrivateKey,
|
|
18
|
-
name,
|
|
19
|
-
params,
|
|
20
|
-
context
|
|
21
|
-
} = opts;
|
|
22
|
-
const { contract, wallet, provider } = initialiseContracts(
|
|
23
|
-
CHAIN_CONFIGS[chainId],
|
|
24
|
-
ownerPrivateKey
|
|
25
|
-
);
|
|
26
|
-
logger.info(
|
|
27
|
-
{ owner: wallet.address, contract: await contract.getAddress() },
|
|
28
|
-
"creating claim"
|
|
29
|
-
);
|
|
30
|
-
const arg = await requestClaimCreation();
|
|
31
|
-
logger.info(
|
|
32
|
-
{
|
|
33
|
-
index: arg.taskIndex,
|
|
34
|
-
operators: arg.task.operators.length
|
|
35
|
-
},
|
|
36
|
-
"task created, collecting claim signatures..."
|
|
37
|
-
);
|
|
38
|
-
onStep?.({ type: "taskCreated", data: arg });
|
|
39
|
-
const responses = [];
|
|
40
|
-
const timestampS = +arg.task.createdAt.toString();
|
|
41
|
-
for (const op of arg.task.operators) {
|
|
42
|
-
const res = await createClaimOnAttestor({
|
|
43
|
-
...opts,
|
|
44
|
-
client: { url: op.url },
|
|
45
|
-
timestampS,
|
|
46
|
-
onStep: (step) => onStep?.({
|
|
47
|
-
type: "attestorStep",
|
|
48
|
-
data: {
|
|
49
|
-
operatorAddress: op.addr,
|
|
50
|
-
step
|
|
51
|
-
}
|
|
52
|
-
}),
|
|
53
|
-
logger: logger.child({ operator: op.addr })
|
|
54
|
-
});
|
|
55
|
-
const signature = res.signatures?.claimSignature;
|
|
56
|
-
if (!signature) {
|
|
57
|
-
throw new Error("INTERNAL: Claim signature not generated");
|
|
58
|
-
}
|
|
59
|
-
const diff = getClaimRequestDifference(res.request?.data, res.claim);
|
|
60
|
-
if (diff) {
|
|
61
|
-
throw new AttestorError(
|
|
62
|
-
"ERROR_INVALID_CLAIM",
|
|
63
|
-
`Claim request does not match the claim res data: ${diff}`,
|
|
64
|
-
{
|
|
65
|
-
diff,
|
|
66
|
-
request: res.request?.data?.[diff],
|
|
67
|
-
claim: res.claim?.[diff]
|
|
68
|
-
}
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
responses.push(res);
|
|
72
|
-
logger.info({ operator: op.addr }, "signature generated");
|
|
73
|
-
onStep?.({
|
|
74
|
-
type: "attestorDone",
|
|
75
|
-
data: {
|
|
76
|
-
task: arg,
|
|
77
|
-
responsesDone: responses
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
const rslt = await completeTask();
|
|
82
|
-
logger.info(
|
|
83
|
-
{ tx: rslt.txHash, task: arg.taskIndex },
|
|
84
|
-
"claim submitted & validated"
|
|
85
|
-
);
|
|
86
|
-
return { ...rslt, claimData: responses[0].claim };
|
|
87
|
-
async function requestClaimCreation() {
|
|
88
|
-
const request = {
|
|
89
|
-
provider: name,
|
|
90
|
-
// blank for now -- till we figure out the right
|
|
91
|
-
// algorithm for this
|
|
92
|
-
claimUserId: EMPTY_CLAIM_USER_ID,
|
|
93
|
-
claimHash: getIdentifierFromClaimInfo({
|
|
94
|
-
provider: name,
|
|
95
|
-
parameters: canonicalStringify(params),
|
|
96
|
-
context: context ? canonicalStringify(context) : ""
|
|
97
|
-
}),
|
|
98
|
-
owner: wallet.address,
|
|
99
|
-
requestedAt: unixTimestampSeconds()
|
|
100
|
-
};
|
|
101
|
-
if (!payer) {
|
|
102
|
-
const payerWallet = new Wallet(ownerPrivateKey, provider);
|
|
103
|
-
const { task } = await createNewClaimRequestOnChain({
|
|
104
|
-
request,
|
|
105
|
-
payer: payerWallet,
|
|
106
|
-
owner: payerWallet,
|
|
107
|
-
chainId
|
|
108
|
-
});
|
|
109
|
-
return task;
|
|
110
|
-
}
|
|
111
|
-
const requestSignature = await signClaimRequest(
|
|
112
|
-
request,
|
|
113
|
-
wallet,
|
|
114
|
-
chainId
|
|
115
|
-
);
|
|
116
|
-
const client = getAttestorClientFromPool(payer.attestor);
|
|
117
|
-
await client.waitForInit();
|
|
118
|
-
const rslt2 = await client.rpc("createClaimOnChain", {
|
|
119
|
-
chainId: +chainId,
|
|
120
|
-
jsonCreateClaimRequest: JSON.stringify(request),
|
|
121
|
-
requestSignature
|
|
122
|
-
});
|
|
123
|
-
return JSON.parse(rslt2.jsonTask);
|
|
124
|
-
}
|
|
125
|
-
async function completeTask() {
|
|
126
|
-
const data = {
|
|
127
|
-
task: arg.task,
|
|
128
|
-
signatures: responses.map((res) => hexlify(res.signatures?.claimSignature))
|
|
129
|
-
};
|
|
130
|
-
if (!payer) {
|
|
131
|
-
const tx = await contract.taskCompleted(data, arg.taskIndex);
|
|
132
|
-
const rslt3 = await tx.wait();
|
|
133
|
-
const logs = rslt3?.logs ?? [];
|
|
134
|
-
const eventLogs = logs.filter((log) => log instanceof EventLog);
|
|
135
|
-
const ev = eventLogs[0];
|
|
136
|
-
return {
|
|
137
|
-
object: ev?.args,
|
|
138
|
-
txHash: rslt3.hash
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
const client = getAttestorClientFromPool(payer.attestor);
|
|
142
|
-
await client.waitForInit();
|
|
143
|
-
const rslt2 = await client.rpc("completeClaimOnChain", {
|
|
144
|
-
chainId: +chainId,
|
|
145
|
-
taskIndex: Number(arg.taskIndex),
|
|
146
|
-
completedTaskJson: JSON.stringify(data)
|
|
147
|
-
});
|
|
148
|
-
const object = JSON.parse(rslt2.taskCompletedObjectJson);
|
|
149
|
-
return { object, txHash: rslt2.txHash };
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
function getClaimRequestDifference(a, b) {
|
|
153
|
-
if (a.provider !== b.provider) {
|
|
154
|
-
return "provider";
|
|
155
|
-
}
|
|
156
|
-
if (a.context !== b.context) {
|
|
157
|
-
return "context";
|
|
158
|
-
}
|
|
159
|
-
if (a.parameters !== b.parameters) {
|
|
160
|
-
return "parameters";
|
|
161
|
-
}
|
|
162
|
-
if (a.timestampS !== b.timestampS) {
|
|
163
|
-
return "timestampS";
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
export {
|
|
167
|
-
createClaimOnAvs
|
|
168
|
-
};
|
package/lib/avs/config.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { getEnvVariable } from "../utils/env.js";
|
|
2
|
-
const CHAIN_CONFIGS = {
|
|
3
|
-
"31337": {
|
|
4
|
-
rpcUrl: "http://localhost:8545",
|
|
5
|
-
contractAddress: "0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB",
|
|
6
|
-
delegationManagerAddress: "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9",
|
|
7
|
-
stakeRegistryAddress: "0x9E545E3C0baAB3E08CdfD552C960A1050f373042",
|
|
8
|
-
avsDirectoryAddress: "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707"
|
|
9
|
-
},
|
|
10
|
-
"17000": {
|
|
11
|
-
rpcUrl: getEnvVariable("RPC_URL") || "https://rpc.holesky.ethpandaops.io",
|
|
12
|
-
contractAddress: "0x0861afc305999bfD3028dB66145395BdD7299366",
|
|
13
|
-
delegationManagerAddress: "0xA44151489861Fe9e3055d95adC98FbD462B948e7",
|
|
14
|
-
stakeRegistryAddress: "0xDa11C9Da04Ab02C4AF9374B27A5E727944D3E1dD",
|
|
15
|
-
avsDirectoryAddress: "0x055733000064333CaDDbC92763c58BF0192fFeBf"
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
const PRIVATE_KEY = getEnvVariable("PRIVATE_KEY");
|
|
19
|
-
const SELECTED_CHAIN_ID = getEnvVariable("CHAIN_ID");
|
|
20
|
-
const RECLAIM_PUBLIC_URL = getEnvVariable("RECLAIM_PUBLIC_URL");
|
|
21
|
-
export {
|
|
22
|
-
CHAIN_CONFIGS,
|
|
23
|
-
PRIVATE_KEY,
|
|
24
|
-
RECLAIM_PUBLIC_URL,
|
|
25
|
-
SELECTED_CHAIN_ID
|
|
26
|
-
};
|
|
File without changes
|
|
File without changes
|