@reclaimprotocol/attestor-core 4.0.3 → 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.
Files changed (297) hide show
  1. package/LICENSE +660 -660
  2. package/README.md +1 -2
  3. package/lib/avs/abis/avsDirectoryABI.js +341 -342
  4. package/lib/avs/abis/delegationABI.js +4 -5
  5. package/lib/avs/abis/registryABI.js +722 -723
  6. package/lib/avs/client/create-claim-on-avs.d.ts +5 -5
  7. package/lib/avs/client/create-claim-on-avs.js +160 -139
  8. package/lib/avs/config.d.ts +1 -1
  9. package/lib/avs/config.js +25 -23
  10. package/lib/avs/contracts/ReclaimServiceManager.d.ts +436 -532
  11. package/lib/avs/contracts/ReclaimServiceManager.js +0 -3
  12. package/lib/avs/contracts/common.d.ts +40 -11
  13. package/lib/avs/contracts/common.js +0 -3
  14. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +13 -11
  15. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +1157 -1148
  16. package/lib/avs/contracts/factories/index.d.ts +1 -1
  17. package/lib/avs/contracts/factories/index.js +4 -9
  18. package/lib/avs/contracts/index.d.ts +3 -3
  19. package/lib/avs/contracts/index.js +6 -40
  20. package/lib/avs/types/index.d.ts +6 -6
  21. package/lib/avs/types/index.js +0 -3
  22. package/lib/avs/utils/contracts.d.ts +14 -14
  23. package/lib/avs/utils/contracts.js +50 -35
  24. package/lib/avs/utils/register.d.ts +3 -3
  25. package/lib/avs/utils/register.js +71 -79
  26. package/lib/avs/utils/tasks.d.ts +4 -4
  27. package/lib/avs/utils/tasks.js +44 -41
  28. package/lib/client/create-claim.d.ts +2 -2
  29. package/lib/client/create-claim.js +437 -400
  30. package/lib/client/index.d.ts +3 -3
  31. package/lib/client/index.js +3 -20
  32. package/lib/client/tunnels/make-rpc-tcp-tunnel.d.ts +2 -2
  33. package/lib/client/tunnels/make-rpc-tcp-tunnel.js +49 -56
  34. package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +4 -3
  35. package/lib/client/tunnels/make-rpc-tls-tunnel.js +123 -131
  36. package/lib/client/utils/attestor-pool.d.ts +3 -1
  37. package/lib/client/utils/attestor-pool.js +21 -25
  38. package/lib/client/utils/client-socket.d.ts +4 -4
  39. package/lib/client/utils/client-socket.js +114 -94
  40. package/lib/client/utils/message-handler.d.ts +2 -2
  41. package/lib/client/utils/message-handler.js +89 -86
  42. package/lib/config/index.d.ts +6 -3
  43. package/lib/config/index.js +60 -37
  44. package/lib/external-rpc/benchmark.d.ts +1 -0
  45. package/lib/external-rpc/benchmark.js +82 -0
  46. package/lib/external-rpc/event-bus.d.ts +7 -0
  47. package/lib/external-rpc/event-bus.js +17 -0
  48. package/lib/external-rpc/global.d.js +0 -0
  49. package/lib/external-rpc/handle-incoming-msg.d.ts +2 -0
  50. package/lib/external-rpc/handle-incoming-msg.js +241 -0
  51. package/lib/external-rpc/index.d.ts +3 -0
  52. package/lib/external-rpc/index.js +3 -0
  53. package/lib/external-rpc/jsc-polyfills/1.d.ts +14 -0
  54. package/lib/external-rpc/jsc-polyfills/1.js +80 -0
  55. package/lib/external-rpc/jsc-polyfills/2.js +15 -0
  56. package/lib/external-rpc/jsc-polyfills/event.d.ts +10 -0
  57. package/lib/external-rpc/jsc-polyfills/event.js +19 -0
  58. package/lib/external-rpc/jsc-polyfills/index.d.ts +2 -0
  59. package/lib/external-rpc/jsc-polyfills/index.js +2 -0
  60. package/lib/external-rpc/jsc-polyfills/ws.d.ts +21 -0
  61. package/lib/external-rpc/jsc-polyfills/ws.js +83 -0
  62. package/lib/external-rpc/setup-browser.d.ts +6 -0
  63. package/lib/external-rpc/setup-browser.js +33 -0
  64. package/lib/external-rpc/setup-jsc.d.ts +24 -0
  65. package/lib/external-rpc/setup-jsc.js +22 -0
  66. package/lib/{window-rpc → external-rpc}/types.d.ts +56 -35
  67. package/lib/external-rpc/types.js +0 -0
  68. package/lib/external-rpc/utils.d.ts +20 -0
  69. package/lib/external-rpc/utils.js +100 -0
  70. package/lib/external-rpc/zk.d.ts +14 -0
  71. package/lib/external-rpc/zk.js +58 -0
  72. package/lib/index.d.ts +8 -9
  73. package/lib/index.js +12 -49
  74. package/lib/mechain/abis/governanceABI.js +460 -461
  75. package/lib/mechain/abis/taskABI.js +505 -506
  76. package/lib/mechain/client/create-claim-on-mechain.d.ts +3 -3
  77. package/lib/mechain/client/create-claim-on-mechain.js +31 -30
  78. package/lib/mechain/client/index.d.ts +1 -1
  79. package/lib/mechain/client/index.js +1 -18
  80. package/lib/mechain/constants/index.js +8 -7
  81. package/lib/mechain/index.d.ts +2 -2
  82. package/lib/mechain/index.js +2 -19
  83. package/lib/mechain/types/index.d.ts +2 -2
  84. package/lib/mechain/types/index.js +0 -3
  85. package/lib/proto/api.d.ts +182 -39
  86. package/lib/proto/api.js +4105 -3555
  87. package/lib/proto/tee-bundle.d.ts +156 -0
  88. package/lib/proto/tee-bundle.js +1296 -0
  89. package/lib/providers/http/index.d.ts +16 -1
  90. package/lib/providers/http/index.js +603 -576
  91. package/lib/providers/http/patch-parse5-tree.d.ts +6 -0
  92. package/lib/providers/http/patch-parse5-tree.js +34 -0
  93. package/lib/providers/http/utils.d.ts +7 -4
  94. package/lib/providers/http/utils.js +240 -317
  95. package/lib/providers/index.d.ts +1 -1
  96. package/lib/providers/index.js +5 -9
  97. package/lib/scripts/check-avs-registration.d.ts +1 -1
  98. package/lib/scripts/check-avs-registration.js +24 -25
  99. package/lib/scripts/fallbacks/crypto.d.ts +1 -0
  100. package/lib/scripts/fallbacks/crypto.js +4 -0
  101. package/lib/scripts/fallbacks/empty.d.ts +3 -0
  102. package/lib/scripts/fallbacks/empty.js +4 -0
  103. package/lib/scripts/fallbacks/re2.d.ts +1 -0
  104. package/lib/scripts/fallbacks/re2.js +7 -0
  105. package/lib/scripts/fallbacks/snarkjs.d.ts +1 -0
  106. package/lib/scripts/fallbacks/snarkjs.js +10 -0
  107. package/lib/scripts/fallbacks/stwo.d.ts +6 -0
  108. package/lib/scripts/fallbacks/stwo.js +159 -0
  109. package/lib/scripts/generate-provider-types.js +92 -73
  110. package/lib/scripts/generate-receipt.d.ts +2 -2
  111. package/lib/scripts/generate-receipt.js +94 -83
  112. package/lib/scripts/generate-toprf-keys.js +17 -16
  113. package/lib/scripts/jsc-cli-rpc.d.ts +1 -0
  114. package/lib/scripts/jsc-cli-rpc.js +35 -0
  115. package/lib/scripts/register-avs-operator.d.ts +1 -1
  116. package/lib/scripts/register-avs-operator.js +3 -7
  117. package/lib/scripts/start-server.d.ts +1 -1
  118. package/lib/scripts/start-server.js +9 -11
  119. package/lib/scripts/update-avs-metadata.d.ts +1 -1
  120. package/lib/scripts/update-avs-metadata.js +17 -19
  121. package/lib/scripts/utils.js +8 -9
  122. package/lib/scripts/whitelist-operator.d.ts +1 -1
  123. package/lib/scripts/whitelist-operator.js +13 -15
  124. package/lib/server/create-server.d.ts +3 -2
  125. package/lib/server/create-server.js +98 -85
  126. package/lib/server/handlers/claimTeeBundle.d.ts +6 -0
  127. package/lib/server/handlers/claimTeeBundle.js +232 -0
  128. package/lib/server/handlers/claimTunnel.d.ts +1 -1
  129. package/lib/server/handlers/claimTunnel.js +75 -73
  130. package/lib/server/handlers/completeClaimOnChain.d.ts +1 -1
  131. package/lib/server/handlers/completeClaimOnChain.js +27 -26
  132. package/lib/server/handlers/createClaimOnChain.d.ts +1 -1
  133. package/lib/server/handlers/createClaimOnChain.js +30 -29
  134. package/lib/server/handlers/createTaskOnMechain.d.ts +1 -1
  135. package/lib/server/handlers/createTaskOnMechain.js +54 -49
  136. package/lib/server/handlers/createTunnel.d.ts +1 -1
  137. package/lib/server/handlers/createTunnel.js +91 -94
  138. package/lib/server/handlers/disconnectTunnel.d.ts +1 -1
  139. package/lib/server/handlers/disconnectTunnel.js +6 -8
  140. package/lib/server/handlers/fetchCertificateBytes.d.ts +2 -0
  141. package/lib/server/handlers/fetchCertificateBytes.js +57 -0
  142. package/lib/server/handlers/index.d.ts +1 -1
  143. package/lib/server/handlers/index.js +24 -21
  144. package/lib/server/handlers/init.d.ts +1 -1
  145. package/lib/server/handlers/init.js +31 -34
  146. package/lib/server/handlers/toprf.d.ts +1 -1
  147. package/lib/server/handlers/toprf.js +17 -19
  148. package/lib/server/index.d.ts +4 -4
  149. package/lib/server/index.js +4 -21
  150. package/lib/server/socket.d.ts +7 -7
  151. package/lib/server/socket.js +104 -106
  152. package/lib/server/tunnels/make-tcp-tunnel.d.ts +5 -3
  153. package/lib/server/tunnels/make-tcp-tunnel.js +189 -162
  154. package/lib/server/utils/apm.d.ts +1 -1
  155. package/lib/server/utils/apm.js +26 -40
  156. package/lib/server/utils/assert-valid-claim-request.d.ts +6 -5
  157. package/lib/server/utils/assert-valid-claim-request.js +339 -185
  158. package/lib/server/utils/config-env.js +4 -7
  159. package/lib/server/utils/dns.js +18 -16
  160. package/lib/server/utils/gcp-attestation.d.ts +17 -0
  161. package/lib/server/utils/gcp-attestation.js +237 -0
  162. package/lib/server/utils/generics.d.ts +3 -3
  163. package/lib/server/utils/generics.js +37 -51
  164. package/lib/server/utils/iso.js +255 -256
  165. package/lib/server/utils/keep-alive.d.ts +2 -2
  166. package/lib/server/utils/keep-alive.js +36 -40
  167. package/lib/server/utils/nitro-attestation.d.ts +33 -0
  168. package/lib/server/utils/nitro-attestation.js +249 -0
  169. package/lib/server/utils/oprf-raw.d.ts +21 -0
  170. package/lib/server/utils/oprf-raw.js +61 -0
  171. package/lib/server/utils/process-handshake.d.ts +3 -3
  172. package/lib/server/utils/process-handshake.js +217 -175
  173. package/lib/server/utils/proxy-session.d.ts +1 -0
  174. package/lib/server/utils/proxy-session.js +6 -0
  175. package/lib/server/utils/tee-oprf-mpc-verification.d.ts +16 -0
  176. package/lib/server/utils/tee-oprf-mpc-verification.js +86 -0
  177. package/lib/server/utils/tee-oprf-verification.d.ts +24 -0
  178. package/lib/server/utils/tee-oprf-verification.js +151 -0
  179. package/lib/server/utils/tee-transcript-reconstruction.d.ts +24 -0
  180. package/lib/server/utils/tee-transcript-reconstruction.js +140 -0
  181. package/lib/server/utils/tee-verification.d.ts +28 -0
  182. package/lib/server/utils/tee-verification.js +358 -0
  183. package/lib/{utils → server/utils}/validation.d.ts +1 -1
  184. package/lib/server/utils/validation.js +45 -0
  185. package/lib/types/bgp.js +0 -3
  186. package/lib/types/claims.d.ts +7 -10
  187. package/lib/types/claims.js +0 -3
  188. package/lib/types/client.d.ts +5 -5
  189. package/lib/types/client.js +0 -3
  190. package/lib/types/general.d.ts +29 -4
  191. package/lib/types/general.js +0 -3
  192. package/lib/types/handlers.d.ts +3 -3
  193. package/lib/types/handlers.js +0 -3
  194. package/lib/types/index.d.ts +10 -10
  195. package/lib/types/index.js +10 -27
  196. package/lib/types/providers.d.ts +15 -4
  197. package/lib/types/providers.gen.d.ts +15 -1
  198. package/lib/types/providers.gen.js +15 -13
  199. package/lib/types/providers.js +0 -3
  200. package/lib/types/rpc.d.ts +2 -2
  201. package/lib/types/rpc.js +0 -3
  202. package/lib/types/signatures.js +0 -3
  203. package/lib/types/tunnel.d.ts +2 -2
  204. package/lib/types/tunnel.js +0 -3
  205. package/lib/types/zk.d.ts +17 -2
  206. package/lib/types/zk.js +0 -3
  207. package/lib/utils/auth.d.ts +2 -1
  208. package/lib/utils/auth.js +66 -59
  209. package/lib/utils/b64-json.js +13 -19
  210. package/lib/utils/bgp-listener.d.ts +1 -1
  211. package/lib/utils/bgp-listener.js +111 -114
  212. package/lib/utils/claims.d.ts +3 -3
  213. package/lib/utils/claims.js +78 -101
  214. package/lib/utils/env.js +15 -16
  215. package/lib/utils/error.d.ts +6 -7
  216. package/lib/utils/error.js +50 -39
  217. package/lib/utils/generics.d.ts +15 -13
  218. package/lib/utils/generics.js +217 -297
  219. package/lib/utils/http-parser.d.ts +1 -1
  220. package/lib/utils/http-parser.js +186 -237
  221. package/lib/utils/index.d.ts +13 -12
  222. package/lib/utils/index.js +13 -29
  223. package/lib/utils/logger.d.ts +1 -1
  224. package/lib/utils/logger.js +69 -87
  225. package/lib/utils/prepare-packets.d.ts +3 -3
  226. package/lib/utils/prepare-packets.js +66 -58
  227. package/lib/utils/redactions.d.ts +20 -1
  228. package/lib/utils/redactions.js +116 -129
  229. package/lib/utils/retries.d.ts +1 -1
  230. package/lib/utils/retries.js +24 -26
  231. package/lib/utils/signatures/eth.d.ts +1 -1
  232. package/lib/utils/signatures/eth.js +28 -30
  233. package/lib/utils/signatures/index.d.ts +3 -3
  234. package/lib/utils/signatures/index.js +11 -10
  235. package/lib/utils/socket-base.d.ts +6 -5
  236. package/lib/utils/socket-base.js +89 -88
  237. package/lib/utils/tls.d.ts +1 -1
  238. package/lib/utils/tls.js +54 -28
  239. package/lib/utils/ws.d.ts +1 -6
  240. package/lib/utils/ws.js +17 -33
  241. package/lib/utils/zk.d.ts +28 -12
  242. package/lib/utils/zk.js +587 -406
  243. package/package.json +72 -60
  244. package/lib/avs/tests/test.operator.d.ts +0 -11
  245. package/lib/avs/tests/test.operator.js +0 -313
  246. package/lib/avs/tests/utils.d.ts +0 -2
  247. package/lib/avs/tests/utils.js +0 -50
  248. package/lib/scripts/verify-root-ca.d.ts +0 -1
  249. package/lib/scripts/verify-root-ca.js +0 -51
  250. package/lib/tests/describe-with-server.d.ts +0 -20
  251. package/lib/tests/describe-with-server.js +0 -64
  252. package/lib/tests/mock-provider-server.d.ts +0 -13
  253. package/lib/tests/mock-provider-server.js +0 -65
  254. package/lib/tests/mocks.d.ts +0 -4
  255. package/lib/tests/mocks.js +0 -23
  256. package/lib/tests/test.auth.js +0 -75
  257. package/lib/tests/test.bgp-listener.js +0 -169
  258. package/lib/tests/test.claim-creation.js +0 -280
  259. package/lib/tests/test.http-parser.d.ts +0 -1
  260. package/lib/tests/test.http-parser.js +0 -120
  261. package/lib/tests/test.http-provider-utils.js +0 -2416
  262. package/lib/tests/test.http-provider.d.ts +0 -1
  263. package/lib/tests/test.http-provider.js +0 -114
  264. package/lib/tests/test.rpc-communication.d.ts +0 -1
  265. package/lib/tests/test.rpc-communication.js +0 -64
  266. package/lib/tests/test.rpc-tunnel.d.ts +0 -1
  267. package/lib/tests/test.rpc-tunnel.js +0 -172
  268. package/lib/tests/test.signatures.d.ts +0 -1
  269. package/lib/tests/test.signatures.js +0 -24
  270. package/lib/tests/test.tcp-tunnel.d.ts +0 -1
  271. package/lib/tests/test.tcp-tunnel.js +0 -64
  272. package/lib/tests/test.zk.d.ts +0 -1
  273. package/lib/tests/test.zk.js +0 -337
  274. package/lib/tests/utils.d.ts +0 -18
  275. package/lib/tests/utils.js +0 -64
  276. package/lib/utils/atomic-operations.d.ts +0 -24
  277. package/lib/utils/atomic-operations.js +0 -65
  278. package/lib/utils/benchmark.d.ts +0 -1
  279. package/lib/utils/benchmark.js +0 -70
  280. package/lib/utils/connection-state-machine.d.ts +0 -43
  281. package/lib/utils/connection-state-machine.js +0 -129
  282. package/lib/utils/resource-monitor.d.ts +0 -61
  283. package/lib/utils/resource-monitor.js +0 -107
  284. package/lib/utils/validation.js +0 -46
  285. package/lib/window-rpc/index.d.ts +0 -3
  286. package/lib/window-rpc/index.js +0 -20
  287. package/lib/window-rpc/setup-window-rpc.d.ts +0 -5
  288. package/lib/window-rpc/setup-window-rpc.js +0 -291
  289. package/lib/window-rpc/types.js +0 -3
  290. package/lib/window-rpc/utils.d.ts +0 -14
  291. package/lib/window-rpc/utils.js +0 -102
  292. package/lib/window-rpc/window-rpc-zk.d.ts +0 -15
  293. package/lib/window-rpc/window-rpc-zk.js +0 -85
  294. /package/lib/{tests/test.auth.d.ts → external-rpc/jsc-polyfills/2.d.ts} +0 -0
  295. /package/lib/{tests/test.bgp-listener.d.ts → scripts/build-browser.d.ts} +0 -0
  296. /package/lib/{tests/test.claim-creation.d.ts → scripts/build-jsc.d.ts} +0 -0
  297. /package/lib/{tests/test.http-provider-utils.d.ts → scripts/build-lib.d.ts} +0 -0
@@ -1,28 +1,29 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.completeClaimOnChain = void 0;
4
- const contracts_1 = require("../../avs/utils/contracts");
5
- const utils_1 = require("../../utils");
6
- const env_1 = require("../../utils/env");
7
- const ACCEPT_CLAIM_PAYMENT_REQUESTS = (0, env_1.getEnvVariable)('ACCEPT_CLAIM_PAYMENT_REQUESTS') === '1';
1
+ import { EventLog } from "ethers";
2
+ import { getContracts } from "../../avs/utils/contracts.js";
3
+ import { getEnvVariable } from "../../utils/env.js";
4
+ import { AttestorError, ethersStructToPlainObject } from "../../utils/index.js";
5
+ const ACCEPT_CLAIM_PAYMENT_REQUESTS = getEnvVariable("ACCEPT_CLAIM_PAYMENT_REQUESTS") === "1";
8
6
  const completeClaimOnChain = async ({ chainId: chainIdNum, taskIndex, completedTaskJson }) => {
9
- var _a;
10
- if (!ACCEPT_CLAIM_PAYMENT_REQUESTS) {
11
- throw new utils_1.AttestorError('ERROR_PAYMENT_REFUSED', 'Payment requests are not accepted at this time');
12
- }
13
- const chainId = chainIdNum.toString();
14
- const { contract } = (0, contracts_1.getContracts)(chainId.toString());
15
- const task = JSON.parse(completedTaskJson);
16
- const tx = await contract.taskCompleted(task, taskIndex);
17
- const rslt = await tx.wait();
18
- // check task created event was emitted
19
- const ev = (_a = rslt.events) === null || _a === void 0 ? void 0 : _a[0];
20
- const obj = ev === null || ev === void 0 ? void 0 : ev.args;
21
- const plainObj = (0, utils_1.ethersStructToPlainObject)(obj);
22
- return {
23
- txHash: rslt.transactionHash,
24
- taskCompletedObjectJson: JSON.stringify(plainObj)
25
- };
7
+ if (!ACCEPT_CLAIM_PAYMENT_REQUESTS) {
8
+ throw new AttestorError(
9
+ "ERROR_PAYMENT_REFUSED",
10
+ "Payment requests are not accepted at this time"
11
+ );
12
+ }
13
+ const chainId = chainIdNum.toString();
14
+ const { contract } = getContracts(chainId.toString());
15
+ const task = JSON.parse(completedTaskJson);
16
+ const tx = await contract.taskCompleted(task, taskIndex);
17
+ const rslt = await tx.wait();
18
+ const logs = rslt?.logs ?? [];
19
+ const eventLogs = logs.filter((log) => log instanceof EventLog);
20
+ const obj = eventLogs[0]?.args;
21
+ const plainObj = ethersStructToPlainObject(obj);
22
+ return {
23
+ txHash: rslt?.hash ?? "",
24
+ taskCompletedObjectJson: JSON.stringify(plainObj)
25
+ };
26
+ };
27
+ export {
28
+ completeClaimOnChain
26
29
  };
27
- exports.completeClaimOnChain = completeClaimOnChain;
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGVDbGFpbU9uQ2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmVyL2hhbmRsZXJzL2NvbXBsZXRlQ2xhaW1PbkNoYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVEQUFzRDtBQUV0RCxxQ0FBb0U7QUFDcEUsdUNBQThDO0FBRTlDLE1BQU0sNkJBQTZCLEdBQUcsSUFBQSxvQkFBYyxFQUFDLCtCQUErQixDQUFDLEtBQUssR0FBRyxDQUFBO0FBRXRGLE1BQU0sb0JBQW9CLEdBQXVDLEtBQUssRUFDNUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxFQUNwRCxFQUFFOztJQUNILElBQUcsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxxQkFBYSxDQUN0Qix1QkFBdUIsRUFDdkIsZ0RBQWdELENBQ2hELENBQUE7SUFDRixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ3JDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFBLHdCQUFZLEVBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDckQsTUFBTSxJQUFJLEdBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQ2hDLE1BQU0sRUFBRSxHQUFHLE1BQU0sUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDeEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7SUFFNUIsdUNBQXVDO0lBQ3ZDLE1BQU0sRUFBRSxHQUFHLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUcsQ0FBQyxDQUFDLENBQUE7SUFDM0IsTUFBTSxHQUFHLEdBQUcsRUFBRSxhQUFGLEVBQUUsdUJBQUYsRUFBRSxDQUFFLElBQTJDLENBQUE7SUFFM0QsTUFBTSxRQUFRLEdBQUcsSUFBQSxpQ0FBeUIsRUFBQyxHQUFHLENBQUMsQ0FBQTtJQUUvQyxPQUFPO1FBQ04sTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlO1FBQzVCLHVCQUF1QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0tBQ2pELENBQUE7QUFDRixDQUFDLENBQUE7QUEzQlksUUFBQSxvQkFBb0Isd0JBMkJoQyJ9
@@ -1,2 +1,2 @@
1
- import { RPCHandler } from '../../types';
1
+ import type { RPCHandler } from '#src/types/index.ts';
2
2
  export declare const createClaimOnChain: RPCHandler<'createClaimOnChain'>;
@@ -1,31 +1,32 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createClaimOnChain = void 0;
4
- const contracts_1 = require("../../avs/utils/contracts");
5
- const tasks_1 = require("../../avs/utils/tasks");
6
- const utils_1 = require("../../utils");
7
- const env_1 = require("../../utils/env");
8
- const ACCEPT_CLAIM_PAYMENT_REQUESTS = (0, env_1.getEnvVariable)('ACCEPT_CLAIM_PAYMENT_REQUESTS') === '1';
1
+ import { getContracts } from "../../avs/utils/contracts.js";
2
+ import { createNewClaimRequestOnChain } from "../../avs/utils/tasks.js";
3
+ import { getEnvVariable } from "../../utils/env.js";
4
+ import { AttestorError, ethersStructToPlainObject } from "../../utils/index.js";
5
+ const ACCEPT_CLAIM_PAYMENT_REQUESTS = getEnvVariable("ACCEPT_CLAIM_PAYMENT_REQUESTS") === "1";
9
6
  const createClaimOnChain = async ({ chainId: chainIdNum, jsonCreateClaimRequest, requestSignature }) => {
10
- if (!ACCEPT_CLAIM_PAYMENT_REQUESTS) {
11
- throw new utils_1.AttestorError('ERROR_PAYMENT_REFUSED', 'Payment requests are not accepted at this time');
12
- }
13
- const chainId = chainIdNum.toString();
14
- const { wallet } = (0, contracts_1.getContracts)(chainId.toString());
15
- const request = JSON.parse(jsonCreateClaimRequest);
16
- const { task, tx } = await (0, tasks_1.createNewClaimRequestOnChain)({
17
- request,
18
- owner: request.owner,
19
- payer: wallet,
20
- chainId,
21
- requestSignature: requestSignature
22
- });
23
- const plainTask = (0, utils_1.ethersStructToPlainObject)(task);
24
- return {
25
- txHash: tx.transactionHash,
26
- taskIndex: task.taskIndex,
27
- jsonTask: JSON.stringify(plainTask)
28
- };
7
+ if (!ACCEPT_CLAIM_PAYMENT_REQUESTS) {
8
+ throw new AttestorError(
9
+ "ERROR_PAYMENT_REFUSED",
10
+ "Payment requests are not accepted at this time"
11
+ );
12
+ }
13
+ const chainId = chainIdNum.toString();
14
+ const { wallet } = getContracts(chainId.toString());
15
+ const request = JSON.parse(jsonCreateClaimRequest);
16
+ const { task, tx } = await createNewClaimRequestOnChain({
17
+ request,
18
+ owner: request.owner,
19
+ payer: wallet,
20
+ chainId,
21
+ requestSignature
22
+ });
23
+ const plainTask = ethersStructToPlainObject(task);
24
+ return {
25
+ txHash: tx?.hash ?? "",
26
+ taskIndex: Number(task.taskIndex),
27
+ jsonTask: JSON.stringify(plainTask)
28
+ };
29
+ };
30
+ export {
31
+ createClaimOnChain
29
32
  };
30
- exports.createClaimOnChain = createClaimOnChain;
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQ2xhaW1PbkNoYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci9oYW5kbGVycy9jcmVhdGVDbGFpbU9uQ2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsdURBQXNEO0FBQ3RELCtDQUFrRTtBQUVsRSxxQ0FBb0U7QUFDcEUsdUNBQThDO0FBRTlDLE1BQU0sNkJBQTZCLEdBQUcsSUFBQSxvQkFBYyxFQUFDLCtCQUErQixDQUFDLEtBQUssR0FBRyxDQUFBO0FBRXRGLE1BQU0sa0JBQWtCLEdBQXFDLEtBQUssRUFDeEUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLEVBQ2hFLEVBQUU7SUFDSCxJQUFHLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUkscUJBQWEsQ0FDdEIsdUJBQXVCLEVBQ3ZCLGdEQUFnRCxDQUNoRCxDQUFBO0lBQ0YsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUNyQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSx3QkFBWSxFQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQ25ELE1BQU0sT0FBTyxHQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtJQUNyQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLE1BQU0sSUFBQSxvQ0FBNEIsRUFBQztRQUN2RCxPQUFPO1FBQ1AsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLEtBQUssRUFBRSxNQUFPO1FBQ2QsT0FBTztRQUNQLGdCQUFnQixFQUFFLGdCQUFnQjtLQUNsQyxDQUFDLENBQUE7SUFFRixNQUFNLFNBQVMsR0FBRyxJQUFBLGlDQUF5QixFQUFDLElBQUksQ0FBQyxDQUFBO0lBRWpELE9BQU87UUFDTixNQUFNLEVBQUUsRUFBRSxDQUFDLGVBQWU7UUFDMUIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1FBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztLQUNuQyxDQUFBO0FBQ0YsQ0FBQyxDQUFBO0FBN0JZLFFBQUEsa0JBQWtCLHNCQTZCOUIifQ==
@@ -1,2 +1,2 @@
1
- import { RPCHandler } from '../../types';
1
+ import type { RPCHandler } from '#src/types/index.ts';
2
2
  export declare const createTaskOnMechain: RPCHandler<'createTaskOnMechain'>;
@@ -1,52 +1,57 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createTaskOnMechain = void 0;
4
- const ethers_1 = require("ethers");
5
- const governanceABI_1 = require("../../mechain/abis/governanceABI");
6
- const taskABI_1 = require("../../mechain/abis/taskABI");
7
- const constants_1 = require("../../mechain/constants");
8
- const env_1 = require("../../utils/env");
9
- const createTaskOnMechain = async ({ timestamp }) => {
10
- const { taskContract } = await getContracts();
11
- const seed = ethers_1.utils.randomBytes(32);
12
- // Perform a static call to fetch taskId and attestors for the next task
13
- const result = await taskContract.callStatic.createNewTaskRequest(seed, timestamp);
14
- const taskId = result[0];
15
- // Fetch requiredAttestors to determine how many proofs to request
16
- const requiredAttestors = await taskContract.requiredAttestors();
17
- const hosts = [];
18
- // Fetch attestors's WebSocket URI, e.g. wss://attestor.reclaimprotocol.org/ws
19
- for (let i = 0; i < requiredAttestors; i++) {
20
- hosts.push(result[1][i].host);
21
- }
22
- // Perform the call that was statically-called previously
23
- const tx = await taskContract.createNewTaskRequest(seed, timestamp);
24
- await tx.wait();
25
- return {
26
- taskId: taskId,
27
- requiredAttestors: requiredAttestors,
28
- hosts: hosts
29
- };
1
+ import { Contract, JsonRpcProvider, randomBytes, Wallet } from "ethers";
2
+ import { governanceABI } from "../../mechain/abis/governanceABI.js";
3
+ import { taskABI } from "../../mechain/abis/taskABI.js";
4
+ import { GOVERNANCE_CONTRACT_ADDRESS, RPC_URL, TASK_CONTRACT_ADDRESS } from "../../mechain/constants/index.js";
5
+ import { getEnvVariable } from "../../utils/env.js";
6
+ const createTaskOnMechain = async ({
7
+ timestamp
8
+ }) => {
9
+ const { taskContract } = await getContracts();
10
+ const seed = randomBytes(32);
11
+ const result = await taskContract.createNewTaskRequest.staticCall(
12
+ seed,
13
+ timestamp
14
+ );
15
+ const taskId = result[0];
16
+ const requiredAttestors = await taskContract.requiredAttestors();
17
+ const hosts = [];
18
+ for (let i = 0; i < requiredAttestors; i++) {
19
+ hosts.push(result[1][i].host);
20
+ }
21
+ const tx = await taskContract.createNewTaskRequest(seed, timestamp);
22
+ await tx.wait();
23
+ return {
24
+ taskId,
25
+ requiredAttestors,
26
+ hosts
27
+ };
30
28
  };
31
- exports.createTaskOnMechain = createTaskOnMechain;
32
29
  async function getContracts() {
33
- const privateKey = (0, env_1.getEnvVariable)('MECHAIN_PRIVATE_KEY');
34
- const taskContractAddress = (0, env_1.getEnvVariable)('TASK_CONTRACT_ADDRESS') || constants_1.TASK_CONTRACT_ADDRESS;
35
- const governanceContractAddress = (0, env_1.getEnvVariable)('GOVERNANCE_CONTRACT_ADDRESS') || constants_1.GOVERNANCE_CONTRACT_ADDRESS;
36
- if (!privateKey) {
37
- throw new Error('MECHAIN_PRIVATE_KEY environment variable is not set');
38
- }
39
- try {
40
- const provider = new ethers_1.providers.JsonRpcProvider(constants_1.RPC_URL);
41
- // Validate connection to provider
42
- await provider.getNetwork();
43
- const signer = new ethers_1.Wallet(privateKey, provider);
44
- const taskContract = new ethers_1.Contract(taskContractAddress, taskABI_1.taskABI, signer);
45
- const governanceContract = new ethers_1.Contract(governanceContractAddress, governanceABI_1.governanceABI, signer);
46
- return { taskContract, governanceContract };
47
- }
48
- catch (error) {
49
- throw new Error(`Failed to initialize contracts: ${error.message || error}`);
50
- }
30
+ const privateKey = getEnvVariable("MECHAIN_PRIVATE_KEY");
31
+ const taskContractAddress = getEnvVariable("TASK_CONTRACT_ADDRESS") || TASK_CONTRACT_ADDRESS;
32
+ const governanceContractAddress = getEnvVariable("GOVERNANCE_CONTRACT_ADDRESS") || GOVERNANCE_CONTRACT_ADDRESS;
33
+ if (!privateKey) {
34
+ throw new Error("MECHAIN_PRIVATE_KEY environment variable is not set");
35
+ }
36
+ try {
37
+ const provider = new JsonRpcProvider(RPC_URL);
38
+ await provider.getNetwork();
39
+ const signer = new Wallet(privateKey, provider);
40
+ const taskContract = new Contract(
41
+ taskContractAddress,
42
+ taskABI,
43
+ signer
44
+ );
45
+ const governanceContract = new Contract(
46
+ governanceContractAddress,
47
+ governanceABI,
48
+ signer
49
+ );
50
+ return { taskContract, governanceContract };
51
+ } catch (error) {
52
+ throw new Error(`Failed to initialize contracts: ${error.message || error}`);
53
+ }
51
54
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlVGFza09uTWVjaGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvaGFuZGxlcnMvY3JlYXRlVGFza09uTWVjaGFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBMkQ7QUFDM0Qsa0VBQThEO0FBQzlELHNEQUFrRDtBQUNsRCxxREFBbUc7QUFFbkcsdUNBQThDO0FBR3ZDLE1BQU0sbUJBQW1CLEdBQXNDLEtBQUssRUFBQyxFQUMzRSxTQUFTLEVBQ1QsRUFBRSxFQUFFO0lBRUosTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLE1BQU0sWUFBWSxFQUFFLENBQUE7SUFFN0MsTUFBTSxJQUFJLEdBQUcsY0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUVsQyx3RUFBd0U7SUFDeEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxZQUFZLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUNoRSxJQUFJLEVBQ0osU0FBUyxDQUNULENBQUE7SUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFXLENBQUE7SUFFbEMsa0VBQWtFO0lBQ2xFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtJQUVoRSxNQUFNLEtBQUssR0FBYyxFQUFFLENBQUE7SUFFM0IsOEVBQThFO0lBQzlFLEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFFRCx5REFBeUQ7SUFDekQsTUFBTSxFQUFFLEdBQUcsTUFBTSxZQUFZLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ25FLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFBO0lBRWYsT0FBTztRQUNOLE1BQU0sRUFBRSxNQUFNO1FBQ2QsaUJBQWlCLEVBQUUsaUJBQWlCO1FBQ3BDLEtBQUssRUFBRSxLQUFLO0tBQ1osQ0FBQTtBQUNGLENBQUMsQ0FBQTtBQW5DWSxRQUFBLG1CQUFtQix1QkFtQy9CO0FBRUQsS0FBSyxVQUFVLFlBQVk7SUFDMUIsTUFBTSxVQUFVLEdBQUcsSUFBQSxvQkFBYyxFQUFDLHFCQUFxQixDQUFDLENBQUE7SUFDeEQsTUFBTSxtQkFBbUIsR0FBRyxJQUFBLG9CQUFjLEVBQUMsdUJBQXVCLENBQUMsSUFBSSxpQ0FBcUIsQ0FBQTtJQUM1RixNQUFNLHlCQUF5QixHQUFHLElBQUEsb0JBQWMsRUFBQyw2QkFBNkIsQ0FBQyxJQUFJLHVDQUEyQixDQUFBO0lBRTlHLElBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUE7SUFDdkUsQ0FBQztJQUVELElBQUksQ0FBQztRQUNKLE1BQU0sUUFBUSxHQUFHLElBQUksa0JBQVMsQ0FBQyxlQUFlLENBQUMsbUJBQU8sQ0FBQyxDQUFBO1FBQ3ZELGtDQUFrQztRQUNsQyxNQUFNLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUUzQixNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFFL0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxpQkFBUSxDQUNoQyxtQkFBbUIsRUFDbkIsaUJBQU8sRUFDUCxNQUFNLENBQ04sQ0FBQTtRQUVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxpQkFBUSxDQUN0Qyx5QkFBeUIsRUFDekIsNkJBQWEsRUFDYixNQUFNLENBQ04sQ0FBQTtRQUVELE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQTtJQUM1QyxDQUFDO0lBQUMsT0FBTSxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUM3RSxDQUFDO0FBRUYsQ0FBQyJ9
55
+ export {
56
+ createTaskOnMechain
57
+ };
@@ -1,2 +1,2 @@
1
- import { RPCHandler } from '../../types';
1
+ import type { RPCHandler } from '#src/types/index.ts';
2
2
  export declare const createTunnel: RPCHandler<'createTunnel'>;
@@ -1,101 +1,98 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createTunnel = void 0;
4
- const make_tcp_tunnel_1 = require("../../server/tunnels/make-tcp-tunnel");
5
- const apm_1 = require("../../server/utils/apm");
6
- const dns_1 = require("../../server/utils/dns");
7
- const utils_1 = require("../../utils");
1
+ import { makeTcpTunnel } from "../../server/tunnels/make-tcp-tunnel.js";
2
+ import { getApm } from "../../server/utils/apm.js";
3
+ import { resolveHostnames } from "../../server/utils/dns.js";
4
+ import { AttestorError } from "../../utils/index.js";
8
5
  const createTunnel = async ({ id, ...opts }, { tx, logger, client }) => {
9
- var _a, _b, _c;
10
- if (client.tunnels[id]) {
11
- throw utils_1.AttestorError.badRequest(`Tunnel "${id}" already exists`);
12
- }
13
- const allowedHosts = (_c = (_b = (_a = client.metadata) === null || _a === void 0 ? void 0 : _a.auth) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.hostWhitelist;
14
- if ((allowedHosts === null || allowedHosts === void 0 ? void 0 : allowedHosts.length) && !allowedHosts.includes(opts.host)) {
15
- throw utils_1.AttestorError.badRequest(`Host "${opts.host}" not allowed by auth request`);
16
- }
17
- let cancelBgp;
18
- const apm = (0, apm_1.getApm)();
19
- const sessionTx = apm === null || apm === void 0 ? void 0 : apm.startTransaction('tunnelConnection', { childOf: tx });
20
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.setLabel('tunnelId', id.toString());
21
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.setLabel('hostPort', `${opts.host}:${opts.port}`);
22
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.setLabel('geoLocation', opts.geoLocation);
23
- try {
24
- const tunnel = await (0, make_tcp_tunnel_1.makeTcpTunnel)({
25
- ...opts,
26
- logger,
27
- onMessage(message) {
28
- if (!client.isOpen) {
29
- logger.warn('client is closed, dropping message');
30
- return;
31
- }
32
- void client.sendMessage({
33
- tunnelMessage: {
34
- tunnelId: id,
35
- message
36
- }
37
- });
38
- },
39
- onClose(err) {
40
- cancelBgp === null || cancelBgp === void 0 ? void 0 : cancelBgp();
41
- if (err) {
42
- apm === null || apm === void 0 ? void 0 : apm.captureError(err, { parent: sessionTx });
43
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.setOutcome('failure');
44
- }
45
- else {
46
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.setOutcome('success');
47
- }
48
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.end();
49
- if (!client.isOpen) {
50
- return;
51
- }
52
- client.sendMessage({
53
- tunnelDisconnectEvent: {
54
- tunnelId: id,
55
- error: err
56
- ? utils_1.AttestorError
57
- .fromError(err)
58
- .toProto()
59
- : undefined
60
- }
61
- })
62
- .catch(err => {
63
- logger.error({ err }, 'failed to send tunnel disconnect event');
64
- });
65
- },
66
- });
67
- try {
68
- await checkForBgp(tunnel);
6
+ if (client.tunnels[id]) {
7
+ throw AttestorError.badRequest(`Tunnel "${id}" already exists`);
8
+ }
9
+ const allowedHosts = client.metadata?.auth?.data?.hostWhitelist;
10
+ if (allowedHosts?.length && !allowedHosts.includes(opts.host)) {
11
+ throw AttestorError.badRequest(
12
+ `Host "${opts.host}" not allowed by auth request`
13
+ );
14
+ }
15
+ let cancelBgp;
16
+ const apm = getApm();
17
+ const sessionTx = apm?.startTransaction("tunnelConnection", { childOf: tx });
18
+ sessionTx?.setLabel("tunnelId", id.toString());
19
+ sessionTx?.setLabel("hostPort", `${opts.host}:${opts.port}`);
20
+ sessionTx?.setLabel("geoLocation", opts.geoLocation);
21
+ sessionTx?.setLabel("proxySessionId", opts.proxySessionId);
22
+ try {
23
+ const tunnel = await makeTcpTunnel({
24
+ ...opts,
25
+ logger,
26
+ onMessage(message) {
27
+ if (!client.isOpen) {
28
+ logger.warn("client is closed, dropping message");
29
+ return;
69
30
  }
70
- catch (err) {
71
- logger.warn({ err, host: opts.host }, 'failed to start BGP overlap check');
31
+ return client.sendMessage({ tunnelMessage: { tunnelId: id, message } });
32
+ },
33
+ onClose(err) {
34
+ cancelBgp?.();
35
+ if (err) {
36
+ apm?.captureError(err, { parent: sessionTx });
37
+ sessionTx?.setOutcome("failure");
38
+ } else {
39
+ sessionTx?.setOutcome("success");
72
40
  }
73
- client.tunnels[id] = tunnel;
74
- return {};
75
- }
76
- catch (err) {
77
- apm === null || apm === void 0 ? void 0 : apm.captureError(err, { parent: sessionTx });
78
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.setOutcome('failure');
79
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.end();
80
- cancelBgp === null || cancelBgp === void 0 ? void 0 : cancelBgp();
81
- throw err;
82
- }
83
- async function checkForBgp(tunnel) {
84
- if (!client.bgpListener) {
85
- return;
41
+ sessionTx?.end();
42
+ if (!client.isOpen) {
43
+ return;
86
44
  }
87
- // listen to all IPs for the host -- in case any of them
88
- // has a BGP announcement overlap, we'll close the tunnel
89
- // so the user can retry
90
- const ips = await (0, dns_1.resolveHostnames)(opts.host);
91
- cancelBgp = client.bgpListener.onOverlap(ips, (info) => {
92
- logger.warn({ info, host: opts.host }, 'BGP announcement overlap detected');
93
- // track how many times we've seen a BGP overlap
94
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.addLabels({ bgpOverlap: true, ...info });
95
- void (tunnel === null || tunnel === void 0 ? void 0 : tunnel.close(new utils_1.AttestorError('ERROR_BGP_ANNOUNCEMENT_OVERLAP', `BGP announcement overlap detected for ${opts.host}`)));
45
+ client.sendMessage({
46
+ tunnelDisconnectEvent: {
47
+ tunnelId: id,
48
+ error: err ? AttestorError.fromError(err).toProto() : void 0
49
+ }
50
+ }).catch((err2) => {
51
+ logger.error(
52
+ { err: err2 },
53
+ "failed to send tunnel disconnect event"
54
+ );
96
55
  });
97
- logger.debug({ ips }, 'checking for BGP overlap');
56
+ }
57
+ });
58
+ try {
59
+ await checkForBgp(tunnel);
60
+ } catch (err) {
61
+ logger.warn(
62
+ { err, host: opts.host },
63
+ "failed to start BGP overlap check"
64
+ );
98
65
  }
66
+ client.tunnels[id] = tunnel;
67
+ return {};
68
+ } catch (err) {
69
+ apm?.captureError(err, { parent: sessionTx });
70
+ sessionTx?.setOutcome("failure");
71
+ sessionTx?.end();
72
+ cancelBgp?.();
73
+ throw err;
74
+ }
75
+ async function checkForBgp(tunnel) {
76
+ if (!client.bgpListener) {
77
+ return;
78
+ }
79
+ const ips = await resolveHostnames(opts.host);
80
+ cancelBgp = client.bgpListener.onOverlap(ips, (info) => {
81
+ logger.warn(
82
+ { info, host: opts.host },
83
+ "BGP announcement overlap detected"
84
+ );
85
+ sessionTx?.addLabels({ bgpOverlap: true, ...info });
86
+ void tunnel?.close(
87
+ new AttestorError(
88
+ "ERROR_BGP_ANNOUNCEMENT_OVERLAP",
89
+ `BGP announcement overlap detected for ${opts.host}`
90
+ )
91
+ );
92
+ });
93
+ logger.debug({ ips }, "checking for BGP overlap");
94
+ }
95
+ };
96
+ export {
97
+ createTunnel
99
98
  };
100
- exports.createTunnel = createTunnel;
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlVHVubmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci9oYW5kbGVycy9jcmVhdGVUdW5uZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0VBQWtFO0FBQ2xFLDhDQUE2QztBQUM3Qyw4Q0FBdUQ7QUFFdkQscUNBQXlDO0FBRWxDLE1BQU0sWUFBWSxHQUErQixLQUFLLEVBQzVELEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQ2YsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUNyQixFQUFFOztJQUNILElBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0scUJBQWEsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLENBQUE7SUFDaEUsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLE1BQUEsTUFBQSxNQUFBLE1BQU0sQ0FBQyxRQUFRLDBDQUFFLElBQUksMENBQUUsSUFBSSwwQ0FBRSxhQUFhLENBQUE7SUFDL0QsSUFBRyxDQUFBLFlBQVksYUFBWixZQUFZLHVCQUFaLFlBQVksQ0FBRSxNQUFNLEtBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzlELE1BQU0scUJBQWEsQ0FBQyxVQUFVLENBQzdCLFNBQVMsSUFBSSxDQUFDLElBQUksK0JBQStCLENBQ2pELENBQUE7SUFDRixDQUFDO0lBRUQsSUFBSSxTQUFtQyxDQUFBO0lBRXZDLE1BQU0sR0FBRyxHQUFHLElBQUEsWUFBTSxHQUFFLENBQUE7SUFDcEIsTUFBTSxTQUFTLEdBQUcsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDNUUsU0FBUyxhQUFULFNBQVMs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
@@ -1,2 +1,2 @@
1
- import { RPCHandler } from '../../types';
1
+ import type { RPCHandler } from '#src/types/index.ts';
2
2
  export declare const disconnectTunnel: RPCHandler<'disconnectTunnel'>;
@@ -1,10 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.disconnectTunnel = void 0;
4
1
  const disconnectTunnel = async ({ id }, { client }) => {
5
- const tunnel = client.getTunnel(id);
6
- await tunnel.close();
7
- return {};
2
+ const tunnel = client.getTunnel(id);
3
+ await tunnel.close();
4
+ return {};
5
+ };
6
+ export {
7
+ disconnectTunnel
8
8
  };
9
- exports.disconnectTunnel = disconnectTunnel;
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY29ubmVjdFR1bm5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvaGFuZGxlcnMvZGlzY29ubmVjdFR1bm5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFTyxNQUFNLGdCQUFnQixHQUFtQyxLQUFLLEVBQ3BFLEVBQUUsRUFBRSxFQUFFLEVBQ04sRUFBRSxNQUFNLEVBQUUsRUFDVCxFQUFFO0lBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNuQyxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUVwQixPQUFPLEVBQUUsQ0FBQTtBQUNWLENBQUMsQ0FBQTtBQVJZLFFBQUEsZ0JBQWdCLG9CQVE1QiJ9
@@ -0,0 +1,2 @@
1
+ import type { RPCHandler } from '#src/types/handlers.ts';
2
+ export declare const fetchCertificateBytes: RPCHandler<'fetchCertificateBytes'>;
@@ -0,0 +1,57 @@
1
+ import { concatenateUint8Arrays, loadX509FromPem } from "@reclaimprotocol/tls";
2
+ import { CERT_ALLOWED_MIMETYPES, MAX_CERT_SIZE_BYTES } from "../../config/index.js";
3
+ import { AttestorError } from "../../utils/error.js";
4
+ const fetchCertificateBytes = async ({ url }) => {
5
+ const res = await fetch(url, {
6
+ redirect: "follow",
7
+ signal: AbortSignal.timeout(1e4)
8
+ });
9
+ if (!res.ok) {
10
+ res.body?.cancel("Not ok");
11
+ throw new AttestorError(
12
+ "ERROR_CERTIFICATE_FETCH_FAILED",
13
+ `Failed to fetch certificate from URL: ${url}, status: ${res.status}`
14
+ );
15
+ }
16
+ const contentType = res.headers.get("content-type");
17
+ if (!contentType || !CERT_ALLOWED_MIMETYPES.includes(contentType)) {
18
+ res.body?.cancel("Mismatch");
19
+ throw new AttestorError(
20
+ "ERROR_CERTIFICATE_FETCH_FAILED",
21
+ `Invalid content-type when fetching certificate from URL: ${url}, content-type: ${contentType}`
22
+ );
23
+ }
24
+ if (!res.body) {
25
+ throw new AttestorError(
26
+ "ERROR_CERTIFICATE_FETCH_FAILED",
27
+ `No body in response when fetching certificate from URL: ${url}`
28
+ );
29
+ }
30
+ let total = 0;
31
+ const byteArr = [];
32
+ for await (const chunk of res.body) {
33
+ total += chunk.length;
34
+ if (total > MAX_CERT_SIZE_BYTES) {
35
+ res.body.cancel("Too many bytes");
36
+ throw new AttestorError(
37
+ "ERROR_CERTIFICATE_FETCH_FAILED",
38
+ `Certificate size exceeds maximum limit of ${MAX_CERT_SIZE_BYTES}b`
39
+ );
40
+ }
41
+ byteArr.push(chunk);
42
+ }
43
+ const bytes = concatenateUint8Arrays(byteArr);
44
+ try {
45
+ const cert = loadX509FromPem(bytes);
46
+ TLS_INTERMEDIATE_CA_CACHE[url] = cert;
47
+ } catch (err) {
48
+ throw new AttestorError(
49
+ "ERROR_CERTIFICATE_FETCH_FAILED",
50
+ `Failed to parse certificate, error: ${err.message}`
51
+ );
52
+ }
53
+ return { bytes: concatenateUint8Arrays(byteArr) };
54
+ };
55
+ export {
56
+ fetchCertificateBytes
57
+ };
@@ -1,4 +1,4 @@
1
- import { RPCHandler, RPCType } from '../../types';
1
+ import type { RPCHandler, RPCType } from '#src/types/index.ts';
2
2
  export declare const HANDLERS: {
3
3
  [T in RPCType]: RPCHandler<T>;
4
4
  };
@@ -1,22 +1,25 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HANDLERS = void 0;
4
- const claimTunnel_1 = require("../../server/handlers/claimTunnel");
5
- const completeClaimOnChain_1 = require("../../server/handlers/completeClaimOnChain");
6
- const createClaimOnChain_1 = require("../../server/handlers/createClaimOnChain");
7
- const createTaskOnMechain_1 = require("../../server/handlers/createTaskOnMechain");
8
- const createTunnel_1 = require("../../server/handlers/createTunnel");
9
- const disconnectTunnel_1 = require("../../server/handlers/disconnectTunnel");
10
- const init_1 = require("../../server/handlers/init");
11
- const toprf_1 = require("../../server/handlers/toprf");
12
- exports.HANDLERS = {
13
- createTunnel: createTunnel_1.createTunnel,
14
- disconnectTunnel: disconnectTunnel_1.disconnectTunnel,
15
- claimTunnel: claimTunnel_1.claimTunnel,
16
- init: init_1.init,
17
- createClaimOnChain: createClaimOnChain_1.createClaimOnChain,
18
- completeClaimOnChain: completeClaimOnChain_1.completeClaimOnChain,
19
- toprf: toprf_1.toprf,
20
- createTaskOnMechain: createTaskOnMechain_1.createTaskOnMechain,
1
+ import { claimTeeBundle } from "../../server/handlers/claimTeeBundle.js";
2
+ import { claimTunnel } from "../../server/handlers/claimTunnel.js";
3
+ import { completeClaimOnChain } from "../../server/handlers/completeClaimOnChain.js";
4
+ import { createClaimOnChain } from "../../server/handlers/createClaimOnChain.js";
5
+ import { createTaskOnMechain } from "../../server/handlers/createTaskOnMechain.js";
6
+ import { createTunnel } from "../../server/handlers/createTunnel.js";
7
+ import { disconnectTunnel } from "../../server/handlers/disconnectTunnel.js";
8
+ import { fetchCertificateBytes } from "../../server/handlers/fetchCertificateBytes.js";
9
+ import { init } from "../../server/handlers/init.js";
10
+ import { toprf } from "../../server/handlers/toprf.js";
11
+ const HANDLERS = {
12
+ createTunnel,
13
+ disconnectTunnel,
14
+ claimTunnel,
15
+ claimTeeBundle,
16
+ init,
17
+ createClaimOnChain,
18
+ completeClaimOnChain,
19
+ toprf,
20
+ createTaskOnMechain,
21
+ fetchCertificateBytes
22
+ };
23
+ export {
24
+ HANDLERS
21
25
  };
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmVyL2hhbmRsZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlFQUE2RDtBQUM3RCxtRkFBK0U7QUFDL0UsK0VBQTJFO0FBQzNFLGlGQUE2RTtBQUM3RSxtRUFBK0Q7QUFDL0QsMkVBQXVFO0FBQ3ZFLG1EQUErQztBQUMvQyxxREFBaUQ7QUFHcEMsUUFBQSxRQUFRLEdBQXNDO0lBQzFELFlBQVksRUFBWiwyQkFBWTtJQUNaLGdCQUFnQixFQUFoQixtQ0FBZ0I7SUFDaEIsV0FBVyxFQUFYLHlCQUFXO0lBQ1gsSUFBSSxFQUFKLFdBQUk7SUFDSixrQkFBa0IsRUFBbEIsdUNBQWtCO0lBQ2xCLG9CQUFvQixFQUFwQiwyQ0FBb0I7SUFDcEIsS0FBSyxFQUFMLGFBQUs7SUFDTCxtQkFBbUIsRUFBbkIseUNBQW1CO0NBQ25CLENBQUEifQ==
@@ -1,2 +1,2 @@
1
- import { RPCHandler } from '../../types';
1
+ import type { RPCHandler } from '#src/types/index.ts';
2
2
  export declare const init: RPCHandler<'init'>;