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

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 (169) hide show
  1. package/lib/browser/avs/abis/avsDirectoryABI.d.ts +60 -0
  2. package/lib/browser/avs/abis/avsDirectoryABI.js +343 -0
  3. package/lib/browser/avs/abis/delegationABI.d.ts +126 -0
  4. package/lib/browser/avs/abis/delegationABI.js +4 -0
  5. package/lib/browser/avs/abis/registryABI.d.ts +136 -0
  6. package/lib/browser/avs/abis/registryABI.js +728 -0
  7. package/lib/browser/avs/client/create-claim-on-avs.d.ts +12 -0
  8. package/lib/browser/avs/client/create-claim-on-avs.js +168 -0
  9. package/lib/browser/avs/config.d.ts +7 -0
  10. package/lib/browser/avs/config.js +26 -0
  11. package/lib/browser/avs/contracts/ReclaimServiceManager.d.ts +601 -0
  12. package/lib/browser/avs/contracts/ReclaimServiceManager.js +0 -0
  13. package/lib/browser/avs/contracts/common.d.ts +50 -0
  14. package/lib/browser/avs/contracts/common.js +0 -0
  15. package/lib/browser/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +890 -0
  16. package/lib/browser/avs/contracts/factories/ReclaimServiceManager__factory.js +1183 -0
  17. package/lib/browser/avs/contracts/factories/index.d.ts +1 -0
  18. package/lib/browser/avs/contracts/factories/index.js +4 -0
  19. package/lib/browser/avs/contracts/index.d.ts +3 -0
  20. package/lib/browser/avs/contracts/index.js +6 -0
  21. package/lib/browser/avs/types/index.d.ts +55 -0
  22. package/lib/browser/avs/types/index.js +0 -0
  23. package/lib/browser/avs/utils/contracts.d.ts +21 -0
  24. package/lib/browser/avs/utils/contracts.js +53 -0
  25. package/lib/browser/avs/utils/register.d.ts +27 -0
  26. package/lib/browser/avs/utils/register.js +74 -0
  27. package/lib/browser/avs/utils/tasks.d.ts +22 -0
  28. package/lib/browser/avs/utils/tasks.js +48 -0
  29. package/lib/browser/client/create-claim.d.ts +5 -0
  30. package/lib/browser/client/create-claim.js +461 -0
  31. package/lib/browser/client/index.d.ts +3 -0
  32. package/lib/browser/client/index.js +3 -0
  33. package/lib/browser/client/tunnels/make-rpc-tcp-tunnel.d.ts +16 -0
  34. package/lib/browser/client/tunnels/make-rpc-tcp-tunnel.js +53 -0
  35. package/lib/browser/client/tunnels/make-rpc-tls-tunnel.d.ts +26 -0
  36. package/lib/browser/client/tunnels/make-rpc-tls-tunnel.js +127 -0
  37. package/lib/browser/client/utils/attestor-pool.d.ts +8 -0
  38. package/lib/browser/client/utils/attestor-pool.js +24 -0
  39. package/lib/browser/client/utils/client-socket.d.ts +11 -0
  40. package/lib/browser/client/utils/client-socket.js +120 -0
  41. package/lib/browser/client/utils/message-handler.d.ts +4 -0
  42. package/lib/browser/client/utils/message-handler.js +97 -0
  43. package/lib/browser/config/index.d.ts +31 -0
  44. package/lib/browser/config/index.js +62 -0
  45. package/lib/browser/external-rpc/benchmark.d.ts +1 -0
  46. package/lib/browser/external-rpc/benchmark.js +82 -0
  47. package/lib/browser/external-rpc/event-bus.d.ts +7 -0
  48. package/lib/browser/external-rpc/event-bus.js +17 -0
  49. package/lib/browser/external-rpc/global.d.js +0 -0
  50. package/lib/browser/external-rpc/handle-incoming-msg.d.ts +2 -0
  51. package/lib/browser/external-rpc/handle-incoming-msg.js +241 -0
  52. package/lib/browser/external-rpc/index.d.ts +3 -0
  53. package/lib/browser/external-rpc/index.js +3 -0
  54. package/lib/browser/external-rpc/jsc-polyfills/1.d.ts +14 -0
  55. package/lib/browser/external-rpc/jsc-polyfills/1.js +80 -0
  56. package/lib/browser/external-rpc/jsc-polyfills/2.d.ts +1 -0
  57. package/lib/browser/external-rpc/jsc-polyfills/2.js +15 -0
  58. package/lib/browser/external-rpc/jsc-polyfills/event.d.ts +10 -0
  59. package/lib/browser/external-rpc/jsc-polyfills/event.js +19 -0
  60. package/lib/browser/external-rpc/jsc-polyfills/index.d.ts +2 -0
  61. package/lib/browser/external-rpc/jsc-polyfills/index.js +2 -0
  62. package/lib/browser/external-rpc/jsc-polyfills/ws.d.ts +21 -0
  63. package/lib/browser/external-rpc/jsc-polyfills/ws.js +83 -0
  64. package/lib/browser/external-rpc/setup-browser.d.ts +6 -0
  65. package/lib/browser/external-rpc/setup-browser.js +33 -0
  66. package/lib/browser/external-rpc/setup-jsc.d.ts +24 -0
  67. package/lib/browser/external-rpc/setup-jsc.js +22 -0
  68. package/lib/browser/external-rpc/types.d.ts +213 -0
  69. package/lib/browser/external-rpc/types.js +0 -0
  70. package/lib/browser/external-rpc/utils.d.ts +20 -0
  71. package/lib/browser/external-rpc/utils.js +100 -0
  72. package/lib/browser/external-rpc/zk.d.ts +14 -0
  73. package/lib/browser/external-rpc/zk.js +58 -0
  74. package/lib/browser/index.browser.js +13 -0
  75. package/lib/browser/index.d.ts +9 -0
  76. package/lib/browser/index.js +13 -0
  77. package/lib/browser/mechain/abis/governanceABI.d.ts +50 -0
  78. package/lib/browser/mechain/abis/governanceABI.js +461 -0
  79. package/lib/browser/mechain/abis/taskABI.d.ts +157 -0
  80. package/lib/browser/mechain/abis/taskABI.js +512 -0
  81. package/lib/browser/mechain/client/create-claim-on-mechain.d.ts +10 -0
  82. package/lib/browser/mechain/client/create-claim-on-mechain.js +33 -0
  83. package/lib/browser/mechain/client/index.d.ts +1 -0
  84. package/lib/browser/mechain/client/index.js +1 -0
  85. package/lib/browser/mechain/constants/index.d.ts +3 -0
  86. package/lib/browser/mechain/constants/index.js +8 -0
  87. package/lib/browser/mechain/index.d.ts +2 -0
  88. package/lib/browser/mechain/index.js +2 -0
  89. package/lib/browser/mechain/types/index.d.ts +23 -0
  90. package/lib/browser/mechain/types/index.js +0 -0
  91. package/lib/browser/proto/api.d.ts +651 -0
  92. package/lib/browser/proto/api.js +4250 -0
  93. package/lib/browser/proto/tee-bundle.d.ts +156 -0
  94. package/lib/browser/proto/tee-bundle.js +1296 -0
  95. package/lib/browser/providers/http/index.d.ts +18 -0
  96. package/lib/browser/providers/http/index.js +640 -0
  97. package/lib/browser/providers/http/patch-parse5-tree.d.ts +6 -0
  98. package/lib/browser/providers/http/patch-parse5-tree.js +34 -0
  99. package/lib/browser/providers/http/utils.d.ts +77 -0
  100. package/lib/browser/providers/http/utils.js +283 -0
  101. package/lib/browser/providers/index.d.ts +4 -0
  102. package/lib/browser/providers/index.js +7 -0
  103. package/lib/browser/types/bgp.d.ts +11 -0
  104. package/lib/browser/types/bgp.js +0 -0
  105. package/lib/browser/types/claims.d.ts +70 -0
  106. package/lib/browser/types/claims.js +0 -0
  107. package/lib/browser/types/client.d.ts +163 -0
  108. package/lib/browser/types/client.js +0 -0
  109. package/lib/browser/types/general.d.ts +77 -0
  110. package/lib/browser/types/general.js +0 -0
  111. package/lib/browser/types/handlers.d.ts +10 -0
  112. package/lib/browser/types/handlers.js +0 -0
  113. package/lib/browser/types/index.d.ts +10 -0
  114. package/lib/browser/types/index.js +10 -0
  115. package/lib/browser/types/providers.d.ts +161 -0
  116. package/lib/browser/types/providers.gen.d.ts +443 -0
  117. package/lib/browser/types/providers.gen.js +16 -0
  118. package/lib/browser/types/providers.js +0 -0
  119. package/lib/browser/types/rpc.d.ts +35 -0
  120. package/lib/browser/types/rpc.js +0 -0
  121. package/lib/browser/types/signatures.d.ts +28 -0
  122. package/lib/browser/types/signatures.js +0 -0
  123. package/lib/browser/types/tunnel.d.ts +18 -0
  124. package/lib/browser/types/tunnel.js +0 -0
  125. package/lib/browser/types/zk.d.ts +38 -0
  126. package/lib/browser/types/zk.js +0 -0
  127. package/lib/browser/utils/auth.d.ts +8 -0
  128. package/lib/browser/utils/auth.js +71 -0
  129. package/lib/browser/utils/b64-json.d.ts +2 -0
  130. package/lib/browser/utils/b64-json.js +17 -0
  131. package/lib/browser/utils/claims.d.ts +33 -0
  132. package/lib/browser/utils/claims.js +89 -0
  133. package/lib/browser/utils/env.d.ts +3 -0
  134. package/lib/browser/utils/env.js +19 -0
  135. package/lib/browser/utils/error.d.ts +26 -0
  136. package/lib/browser/utils/error.js +54 -0
  137. package/lib/browser/utils/generics.d.ts +114 -0
  138. package/lib/browser/utils/generics.js +268 -0
  139. package/lib/browser/utils/http-parser.d.ts +59 -0
  140. package/lib/browser/utils/http-parser.js +201 -0
  141. package/lib/browser/utils/index.browser.js +12 -0
  142. package/lib/browser/utils/index.d.ts +12 -0
  143. package/lib/browser/utils/index.js +12 -0
  144. package/lib/browser/utils/logger.browser.js +88 -0
  145. package/lib/browser/utils/logger.d.ts +14 -0
  146. package/lib/browser/utils/logger.js +88 -0
  147. package/lib/browser/utils/prepare-packets.d.ts +16 -0
  148. package/lib/browser/utils/prepare-packets.js +69 -0
  149. package/lib/browser/utils/redactions.d.ts +73 -0
  150. package/lib/browser/utils/redactions.js +135 -0
  151. package/lib/browser/utils/retries.d.ts +12 -0
  152. package/lib/browser/utils/retries.js +26 -0
  153. package/lib/browser/utils/signatures/eth.d.ts +2 -0
  154. package/lib/browser/utils/signatures/eth.js +31 -0
  155. package/lib/browser/utils/signatures/index.d.ts +5 -0
  156. package/lib/browser/utils/signatures/index.js +12 -0
  157. package/lib/browser/utils/socket-base.d.ts +23 -0
  158. package/lib/browser/utils/socket-base.js +96 -0
  159. package/lib/browser/utils/tls.d.ts +2 -0
  160. package/lib/browser/utils/tls.js +58 -0
  161. package/lib/browser/utils/ws.d.ts +7 -0
  162. package/lib/browser/utils/ws.js +22 -0
  163. package/lib/browser/utils/zk.d.ts +71 -0
  164. package/lib/browser/utils/zk.js +625 -0
  165. package/lib/index.browser.d.ts +9 -0
  166. package/lib/types/general.d.ts +1 -0
  167. package/lib/utils/index.browser.d.ts +12 -0
  168. package/lib/utils/logger.browser.d.ts +14 -0
  169. package/package.json +6 -2
@@ -0,0 +1,12 @@
1
+ import type { TaskCompletedEvent } from '#src/avs/contracts/ReclaimServiceManager.ts';
2
+ import type { CreateClaimOnAvsOpts } from '#src/avs/types/index.ts';
3
+ import type { ProviderClaimData } from '#src/proto/api.ts';
4
+ import type { ProviderName } from '#src/types/index.ts';
5
+ /**
6
+ * Creates a Reclaim claim on the AVS chain.
7
+ */
8
+ export declare function createClaimOnAvs<N extends ProviderName>({ onStep, createClaimOnAttestor, chainId, payer, ...opts }: CreateClaimOnAvsOpts<N>): Promise<{
9
+ claimData: ProviderClaimData;
10
+ object: TaskCompletedEvent.OutputObject;
11
+ txHash: string;
12
+ }>;
@@ -0,0 +1,168 @@
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
+ };
@@ -0,0 +1,7 @@
1
+ import type { ChainConfig } from '#src/avs/types/index.ts';
2
+ export declare const CHAIN_CONFIGS: {
3
+ [key: string]: ChainConfig;
4
+ };
5
+ export declare const PRIVATE_KEY: string;
6
+ export declare const SELECTED_CHAIN_ID: string | undefined;
7
+ export declare const RECLAIM_PUBLIC_URL: string;
@@ -0,0 +1,26 @@
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
+ };