@maci-protocol/coordinator 0.0.0-ci.8ce4c0a → 0.0.0-ci.92b493f
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/LICENSE +1 -2
- package/README.md +31 -6
- package/build/hardhat.config.cjs +5 -3
- package/build/hardhat.config.cjs.map +1 -1
- package/build/hardhat.config.d.cts +5 -4
- package/build/scripts/generateKeypair.js +2 -2
- package/build/scripts/generateKeypair.js.map +1 -1
- package/build/scripts/generateMaciKeyPair.js +2 -2
- package/build/scripts/generateMaciKeyPair.js.map +1 -1
- package/build/tests/constants.d.ts +0 -1
- package/build/tests/constants.d.ts.map +1 -1
- package/build/tests/constants.js +0 -1
- package/build/tests/constants.js.map +1 -1
- package/build/tests/e2e.deploy.test.js +145 -89
- package/build/tests/e2e.deploy.test.js.map +1 -1
- package/build/tests/e2e.redis.test.d.ts +2 -0
- package/build/tests/e2e.redis.test.d.ts.map +1 -0
- package/build/tests/e2e.redis.test.js +119 -0
- package/build/tests/e2e.redis.test.js.map +1 -0
- package/build/tests/utils.d.ts +6 -0
- package/build/tests/utils.d.ts.map +1 -1
- package/build/tests/utils.js +13 -4
- package/build/tests/utils.js.map +1 -1
- package/build/ts/app.module.d.ts.map +1 -1
- package/build/ts/app.module.js +6 -0
- package/build/ts/app.module.js.map +1 -1
- package/build/ts/common/__tests__/common.test.js +12 -26
- package/build/ts/common/__tests__/common.test.js.map +1 -1
- package/build/ts/common/accountAbstraction.d.ts +3 -20
- package/build/ts/common/accountAbstraction.d.ts.map +1 -1
- package/build/ts/common/accountAbstraction.js +16 -46
- package/build/ts/common/accountAbstraction.js.map +1 -1
- package/build/ts/common/chain.d.ts +16 -0
- package/build/ts/common/chain.d.ts.map +1 -0
- package/build/ts/common/chain.js +33 -0
- package/build/ts/common/chain.js.map +1 -0
- package/build/ts/common/coordinatorKeypair.d.ts +7 -0
- package/build/ts/common/coordinatorKeypair.d.ts.map +1 -0
- package/build/ts/common/coordinatorKeypair.js +14 -0
- package/build/ts/common/coordinatorKeypair.js.map +1 -0
- package/build/ts/common/errors.d.ts +13 -10
- package/build/ts/common/errors.d.ts.map +1 -1
- package/build/ts/common/errors.js +12 -9
- package/build/ts/common/errors.js.map +1 -1
- package/build/ts/common/index.d.ts +2 -0
- package/build/ts/common/index.d.ts.map +1 -1
- package/build/ts/common/index.js +2 -0
- package/build/ts/common/index.js.map +1 -1
- package/build/ts/common/types.d.ts +2 -3
- package/build/ts/common/types.d.ts.map +1 -1
- package/build/ts/deployer/__tests__/deployer.controller.test.js +17 -20
- package/build/ts/deployer/__tests__/deployer.controller.test.js.map +1 -1
- package/build/ts/deployer/__tests__/deployer.service.test.js +165 -342
- package/build/ts/deployer/__tests__/deployer.service.test.js.map +1 -1
- package/build/ts/deployer/__tests__/utils.d.ts +26 -1
- package/build/ts/deployer/__tests__/utils.d.ts.map +1 -1
- package/build/ts/deployer/__tests__/utils.js +42 -11
- package/build/ts/deployer/__tests__/utils.js.map +1 -1
- package/build/ts/deployer/deployer.service.d.ts +27 -53
- package/build/ts/deployer/deployer.service.d.ts.map +1 -1
- package/build/ts/deployer/deployer.service.js +338 -468
- package/build/ts/deployer/deployer.service.js.map +1 -1
- package/build/ts/deployer/dto.d.ts +4 -4
- package/build/ts/deployer/dto.d.ts.map +1 -1
- package/build/ts/deployer/dto.js +9 -1
- package/build/ts/deployer/dto.js.map +1 -1
- package/build/ts/deployer/types.d.ts +77 -35
- package/build/ts/deployer/types.d.ts.map +1 -1
- package/build/ts/file/__tests__/file.service.test.js +12 -11
- package/build/ts/file/__tests__/file.service.test.js.map +1 -1
- package/build/ts/file/file.service.d.ts +4 -3
- package/build/ts/file/file.service.d.ts.map +1 -1
- package/build/ts/file/file.service.js +16 -10
- package/build/ts/file/file.service.js.map +1 -1
- package/build/ts/file/types.d.ts +2 -2
- package/build/ts/file/types.d.ts.map +1 -1
- package/build/ts/health/__tests__/health.controller.test.d.ts +2 -0
- package/build/ts/health/__tests__/health.controller.test.d.ts.map +1 -0
- package/build/ts/health/__tests__/health.controller.test.js +52 -0
- package/build/ts/health/__tests__/health.controller.test.js.map +1 -0
- package/build/ts/health/__tests__/health.service.test.d.ts +2 -0
- package/build/ts/health/__tests__/health.service.test.d.ts.map +1 -0
- package/build/ts/health/__tests__/health.service.test.js +101 -0
- package/build/ts/health/__tests__/health.service.test.js.map +1 -0
- package/build/ts/health/health.controller.d.ts +16 -0
- package/build/ts/health/health.controller.d.ts.map +1 -0
- package/build/ts/health/health.controller.js +43 -0
- package/build/ts/health/health.controller.js.map +1 -0
- package/build/ts/health/health.module.d.ts +3 -0
- package/build/ts/health/health.module.d.ts.map +1 -0
- package/build/ts/health/health.module.js +22 -0
- package/build/ts/health/health.module.js.map +1 -0
- package/build/ts/health/health.service.d.ts +42 -0
- package/build/ts/health/health.service.d.ts.map +1 -0
- package/build/ts/health/health.service.js +176 -0
- package/build/ts/health/health.service.js.map +1 -0
- package/build/ts/health/types.d.ts +87 -0
- package/build/ts/health/types.d.ts.map +1 -0
- package/build/ts/health/types.js +2 -0
- package/build/ts/health/types.js.map +1 -0
- package/build/ts/proof/__tests__/proof.controller.test.js +5 -3
- package/build/ts/proof/__tests__/proof.controller.test.js.map +1 -1
- package/build/ts/proof/__tests__/proof.gateway.test.js +6 -3
- package/build/ts/proof/__tests__/proof.gateway.test.js.map +1 -1
- package/build/ts/proof/__tests__/proof.service.test.js +32 -76
- package/build/ts/proof/__tests__/proof.service.test.js.map +1 -1
- package/build/ts/proof/dto.d.ts +13 -15
- package/build/ts/proof/dto.d.ts.map +1 -1
- package/build/ts/proof/dto.js +51 -44
- package/build/ts/proof/dto.js.map +1 -1
- package/build/ts/proof/proof.controller.d.ts +3 -2
- package/build/ts/proof/proof.controller.d.ts.map +1 -1
- package/build/ts/proof/proof.controller.js +1 -4
- package/build/ts/proof/proof.controller.js.map +1 -1
- package/build/ts/proof/proof.service.d.ts +4 -6
- package/build/ts/proof/proof.service.d.ts.map +1 -1
- package/build/ts/proof/proof.service.js +48 -130
- package/build/ts/proof/proof.service.js.map +1 -1
- package/build/ts/proof/types.d.ts +19 -14
- package/build/ts/proof/types.d.ts.map +1 -1
- package/build/ts/redis/__tests__/redis.service.test.d.ts +2 -0
- package/build/ts/redis/__tests__/redis.service.test.d.ts.map +1 -0
- package/build/ts/redis/__tests__/redis.service.test.js +149 -0
- package/build/ts/redis/__tests__/redis.service.test.js.map +1 -0
- package/build/ts/redis/redis.module.d.ts +3 -0
- package/build/ts/redis/redis.module.d.ts.map +1 -0
- package/build/ts/redis/redis.module.js +18 -0
- package/build/ts/redis/redis.module.js.map +1 -0
- package/build/ts/redis/redis.service.d.ts +52 -0
- package/build/ts/redis/redis.service.d.ts.map +1 -0
- package/build/ts/redis/redis.service.js +97 -0
- package/build/ts/redis/redis.service.js.map +1 -0
- package/build/ts/redis/types.d.ts +54 -0
- package/build/ts/redis/types.d.ts.map +1 -0
- package/build/ts/redis/types.js +2 -0
- package/build/ts/redis/types.js.map +1 -0
- package/build/ts/redis/utils.d.ts +20 -0
- package/build/ts/redis/utils.d.ts.map +1 -0
- package/build/ts/redis/utils.js +27 -0
- package/build/ts/redis/utils.js.map +1 -0
- package/build/ts/scheduler/__tests__/scheduler.controller.test.d.ts +2 -0
- package/build/ts/scheduler/__tests__/scheduler.controller.test.d.ts.map +1 -0
- package/build/ts/scheduler/__tests__/scheduler.controller.test.js +63 -0
- package/build/ts/scheduler/__tests__/scheduler.controller.test.js.map +1 -0
- package/build/ts/scheduler/__tests__/scheduler.service.test.d.ts +2 -0
- package/build/ts/scheduler/__tests__/scheduler.service.test.d.ts.map +1 -0
- package/build/ts/scheduler/__tests__/scheduler.service.test.js +264 -0
- package/build/ts/scheduler/__tests__/scheduler.service.test.js.map +1 -0
- package/build/ts/scheduler/dto.d.ts +42 -0
- package/build/ts/scheduler/dto.d.ts.map +1 -0
- package/build/ts/scheduler/dto.js +116 -0
- package/build/ts/scheduler/dto.js.map +1 -0
- package/build/ts/scheduler/scheduler.controller.d.ts +32 -0
- package/build/ts/scheduler/scheduler.controller.d.ts.map +1 -0
- package/build/ts/scheduler/scheduler.controller.js +111 -0
- package/build/ts/scheduler/scheduler.controller.js.map +1 -0
- package/build/ts/scheduler/scheduler.module.d.ts +3 -0
- package/build/ts/scheduler/scheduler.module.d.ts.map +1 -0
- package/build/ts/scheduler/scheduler.module.js +23 -0
- package/build/ts/scheduler/scheduler.module.js.map +1 -0
- package/build/ts/scheduler/scheduler.service.d.ts +63 -0
- package/build/ts/scheduler/scheduler.service.d.ts.map +1 -0
- package/build/ts/scheduler/scheduler.service.js +239 -0
- package/build/ts/scheduler/scheduler.service.js.map +1 -0
- package/build/ts/scheduler/types.d.ts +61 -0
- package/build/ts/scheduler/types.d.ts.map +1 -0
- package/build/ts/scheduler/types.js +2 -0
- package/build/ts/scheduler/types.js.map +1 -0
- package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js +2 -2
- package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js.map +1 -1
- package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js +30 -16
- package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js.map +1 -1
- package/build/ts/sessionKeys/__tests__/utils.d.ts.map +1 -1
- package/build/ts/sessionKeys/__tests__/utils.js +3 -4
- package/build/ts/sessionKeys/__tests__/utils.js.map +1 -1
- package/build/ts/sessionKeys/provider/KernelEIP1193Provider.d.ts +53 -0
- package/build/ts/sessionKeys/provider/KernelEIP1193Provider.d.ts.map +1 -0
- package/build/ts/sessionKeys/provider/KernelEIP1193Provider.js +105 -0
- package/build/ts/sessionKeys/provider/KernelEIP1193Provider.js.map +1 -0
- package/build/ts/sessionKeys/sessionKeys.service.d.ts +13 -2
- package/build/ts/sessionKeys/sessionKeys.service.d.ts.map +1 -1
- package/build/ts/sessionKeys/sessionKeys.service.js +23 -6
- package/build/ts/sessionKeys/sessionKeys.service.js.map +1 -1
- package/build/ts/subgraph/__tests__/subgraph.service.test.js +2 -3
- package/build/ts/subgraph/__tests__/subgraph.service.test.js.map +1 -1
- package/build/ts/subgraph/subgraph.service.d.ts +4 -0
- package/build/ts/subgraph/subgraph.service.d.ts.map +1 -1
- package/build/ts/subgraph/subgraph.service.js +16 -5
- package/build/ts/subgraph/subgraph.service.js.map +1 -1
- package/build/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +41 -37
- package/build/tests/e2e.aa.test.d.ts +0 -2
- package/build/tests/e2e.aa.test.d.ts.map +0 -1
- package/build/tests/e2e.aa.test.js +0 -103
- package/build/tests/e2e.aa.test.js.map +0 -1
- package/build/ts/deployer/utils.d.ts +0 -8
- package/build/ts/deployer/utils.d.ts.map +0 -1
- package/build/ts/deployer/utils.js +0 -9
- package/build/ts/deployer/utils.js.map +0 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { EMode } from "@maci-protocol/sdk";
|
|
2
|
+
import { createClient } from "@redis/client";
|
|
3
|
+
import { ESupportedNetworks } from "../ts/common";
|
|
4
|
+
import { RedisService } from "../ts/redis/redis.service";
|
|
5
|
+
import { getPollKeyFromObject } from "../ts/redis/utils";
|
|
6
|
+
const REDIS__GET_ALL_PREFIX = "*-test";
|
|
7
|
+
const scheduledPoll = {
|
|
8
|
+
maciAddress: "0xb83074Ac11fc569AC12F1b7D0C0a6809c3dc355b",
|
|
9
|
+
pollId: "5",
|
|
10
|
+
mode: EMode.NON_QV,
|
|
11
|
+
chain: ESupportedNetworks.OPTIMISM_SEPOLIA,
|
|
12
|
+
endDate: 1752534000,
|
|
13
|
+
deploymentBlockNumber: 1,
|
|
14
|
+
merged: false,
|
|
15
|
+
proofsGenerated: false,
|
|
16
|
+
};
|
|
17
|
+
describe("RedisService", () => {
|
|
18
|
+
let redisClient;
|
|
19
|
+
let service;
|
|
20
|
+
beforeAll(async () => {
|
|
21
|
+
redisClient = createClient({
|
|
22
|
+
url: `redis://${process.env.COORDINATOR_REDIS_HOST}:${process.env.COORDINATOR_REDIS_PORT}`,
|
|
23
|
+
disableOfflineQueue: true,
|
|
24
|
+
});
|
|
25
|
+
await redisClient.connect();
|
|
26
|
+
service = new RedisService();
|
|
27
|
+
await service.onModuleInit();
|
|
28
|
+
});
|
|
29
|
+
afterEach(async () => {
|
|
30
|
+
// Clean up after each test
|
|
31
|
+
const keys = await redisClient.keys(REDIS__GET_ALL_PREFIX);
|
|
32
|
+
if (keys.length) {
|
|
33
|
+
await redisClient.del(keys);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
afterAll(async () => {
|
|
37
|
+
await redisClient.quit();
|
|
38
|
+
});
|
|
39
|
+
test("should connect to Redis without issues", () => {
|
|
40
|
+
expect(service.isOpen()).toBe(true);
|
|
41
|
+
});
|
|
42
|
+
test("should set and get a value, and parse it as IScheduledPoll", async () => {
|
|
43
|
+
const key = getPollKeyFromObject(scheduledPoll, true);
|
|
44
|
+
const value = JSON.stringify(scheduledPoll);
|
|
45
|
+
await service.set(key, value);
|
|
46
|
+
const stored = await service.get(key);
|
|
47
|
+
expect(stored).not.toBeNull();
|
|
48
|
+
const parsed = JSON.parse(stored);
|
|
49
|
+
expect(parsed).toEqual(scheduledPoll);
|
|
50
|
+
});
|
|
51
|
+
test("should return null when non-existent key is requested", async () => {
|
|
52
|
+
const nonExistentKey = "non-existent-key";
|
|
53
|
+
const result = await service.get(nonExistentKey);
|
|
54
|
+
expect(result).toBeNull();
|
|
55
|
+
});
|
|
56
|
+
test("should set and get multiple values", async () => {
|
|
57
|
+
const pollOne = { ...scheduledPoll };
|
|
58
|
+
pollOne.pollId = "1";
|
|
59
|
+
const pollKeyOne = getPollKeyFromObject(pollOne, true);
|
|
60
|
+
await service.set(pollKeyOne, JSON.stringify(pollOne));
|
|
61
|
+
const pollTwo = { ...scheduledPoll };
|
|
62
|
+
pollTwo.pollId = "2";
|
|
63
|
+
const pollKeyTwo = getPollKeyFromObject(pollTwo, true);
|
|
64
|
+
await service.set(pollKeyTwo, JSON.stringify(pollTwo));
|
|
65
|
+
const pollThree = { ...scheduledPoll };
|
|
66
|
+
pollThree.pollId = "3";
|
|
67
|
+
const pollKeyThree = getPollKeyFromObject(pollThree, true);
|
|
68
|
+
await service.set(pollKeyThree, JSON.stringify(pollThree));
|
|
69
|
+
const [storedPollOne, storedPollTwo, storedPollThree] = await Promise.all([
|
|
70
|
+
service.get(pollKeyOne),
|
|
71
|
+
service.get(pollKeyTwo),
|
|
72
|
+
service.get(pollKeyThree),
|
|
73
|
+
]);
|
|
74
|
+
expect(pollOne).toEqual(JSON.parse(storedPollOne || "{}"));
|
|
75
|
+
expect(pollTwo).toEqual(JSON.parse(storedPollTwo || "{}"));
|
|
76
|
+
expect(pollThree).toEqual(JSON.parse(storedPollThree || "{}"));
|
|
77
|
+
});
|
|
78
|
+
test("should retrieve all values using getAll", async () => {
|
|
79
|
+
const pollOne = { ...scheduledPoll };
|
|
80
|
+
pollOne.pollId = "1";
|
|
81
|
+
const pollKeyOne = getPollKeyFromObject(pollOne, true);
|
|
82
|
+
await service.set(pollKeyOne, JSON.stringify(pollOne));
|
|
83
|
+
const pollTwo = { ...scheduledPoll };
|
|
84
|
+
pollTwo.pollId = "2";
|
|
85
|
+
const pollKeyTwo = getPollKeyFromObject(pollTwo, true);
|
|
86
|
+
await service.set(pollKeyTwo, JSON.stringify(pollTwo));
|
|
87
|
+
const pollThree = { ...scheduledPoll };
|
|
88
|
+
pollThree.pollId = "3";
|
|
89
|
+
const pollKeyThree = getPollKeyFromObject(pollThree, true);
|
|
90
|
+
await service.set(pollKeyThree, JSON.stringify(pollThree));
|
|
91
|
+
const all = await service.getAll(REDIS__GET_ALL_PREFIX);
|
|
92
|
+
expect(all.length).toBe(3);
|
|
93
|
+
});
|
|
94
|
+
test("should delete a value and return one as confirmation", async () => {
|
|
95
|
+
const key = "delete-me";
|
|
96
|
+
await service.set(key, '{"bye":"now"}');
|
|
97
|
+
const deleted = await service.delete(key);
|
|
98
|
+
const value = await service.get(key);
|
|
99
|
+
expect(deleted).toBe(1);
|
|
100
|
+
expect(value).toBeNull();
|
|
101
|
+
});
|
|
102
|
+
test("should not throw and return zero when deleting non-existent value", async () => {
|
|
103
|
+
const key = "non-existent-key";
|
|
104
|
+
const deleted = await service.delete(key);
|
|
105
|
+
expect(deleted).toBe(0);
|
|
106
|
+
});
|
|
107
|
+
test("should update a value using set with same key", async () => {
|
|
108
|
+
const key = getPollKeyFromObject(scheduledPoll, true);
|
|
109
|
+
const valuePoll = JSON.stringify(scheduledPoll);
|
|
110
|
+
await service.set(key, valuePoll);
|
|
111
|
+
const updatedPoll = { ...scheduledPoll, endDate: 1 };
|
|
112
|
+
const updatedPollValue = JSON.stringify(updatedPoll);
|
|
113
|
+
await service.set(key, updatedPollValue);
|
|
114
|
+
const stored = await service.get(key);
|
|
115
|
+
const parsed = JSON.parse(stored);
|
|
116
|
+
expect(parsed.endDate).toBe(updatedPoll.endDate);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
//# sourceMappingURL=e2e.redis.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e2e.redis.test.js","sourceRoot":"","sources":["../../tests/e2e.redis.test.ts"],"names":[],"mappings":"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"}
|
package/build/tests/utils.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { type Signer } from "ethers";
|
|
2
2
|
import { Hex } from "viem";
|
|
3
|
+
/**
|
|
4
|
+
* Encrypt a message using the coordinator's public key
|
|
5
|
+
* @param message to encrypt
|
|
6
|
+
* @returns encrypted message (ciphertext)
|
|
7
|
+
*/
|
|
8
|
+
export declare const encryptWithCoordinatorRSAPublicKey: (message: string) => Promise<string>;
|
|
3
9
|
/**
|
|
4
10
|
* Sign a message with a wallet and encrypt it using the coordinator's public key
|
|
5
11
|
* @param signer
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAmC,GAAG,EAAoB,MAAM,MAAM,CAAC;AAY9E;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAmC,GAAG,EAAoB,MAAM,MAAM,CAAC;AAY9E;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,CAIxF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAK3E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,GAAG,EACZ,qBAAqB,MAAM,EAC3B,oBAAoB,MAAM,KACzB,OAAO,CAAC,IAAI,CAkBd,CAAC"}
|
package/build/tests/utils.js
CHANGED
|
@@ -8,24 +8,33 @@ import { ESupportedNetworks } from "../ts/common";
|
|
|
8
8
|
import { getPublicClient } from "../ts/common/accountAbstraction";
|
|
9
9
|
import { CryptoService } from "../ts/crypto/crypto.service";
|
|
10
10
|
dotenv.config();
|
|
11
|
+
/**
|
|
12
|
+
* Encrypt a message using the coordinator's public key
|
|
13
|
+
* @param message to encrypt
|
|
14
|
+
* @returns encrypted message (ciphertext)
|
|
15
|
+
*/
|
|
16
|
+
export const encryptWithCoordinatorRSAPublicKey = async (message) => {
|
|
17
|
+
const cryptoService = new CryptoService();
|
|
18
|
+
const publicKey = await fs.promises.readFile(process.env.COORDINATOR_PUBLIC_KEY_PATH);
|
|
19
|
+
return cryptoService.encrypt(publicKey, message);
|
|
20
|
+
};
|
|
11
21
|
/**
|
|
12
22
|
* Sign a message with a wallet and encrypt it using the coordinator's public key
|
|
13
23
|
* @param signer
|
|
14
24
|
* @returns Authorization header
|
|
15
25
|
*/
|
|
16
26
|
export const getAuthorizationHeader = async (signer) => {
|
|
17
|
-
const cryptoService = new CryptoService();
|
|
18
|
-
const publicKey = await fs.promises.readFile(process.env.COORDINATOR_PUBLIC_KEY_PATH);
|
|
19
27
|
const signature = await signer.signMessage("message");
|
|
20
28
|
const digest = Buffer.from(getBytes(hashMessage("message"))).toString("hex");
|
|
21
|
-
|
|
29
|
+
const encrypted = await encryptWithCoordinatorRSAPublicKey(`${signature}:${digest}`);
|
|
30
|
+
return `Bearer ${encrypted}`;
|
|
22
31
|
};
|
|
23
32
|
/**
|
|
24
33
|
* Reloads with ETH in case the smart account is out of gas (less than 0.05)
|
|
25
34
|
* @param sessionKeyAddress
|
|
26
35
|
*/
|
|
27
36
|
export const rechargeGasIfNeeded = async (address, minimumValueOfEther, valueToSendOfEther) => {
|
|
28
|
-
const publicClient = getPublicClient(ESupportedNetworks.OPTIMISM_SEPOLIA);
|
|
37
|
+
const publicClient = await getPublicClient(ESupportedNetworks.OPTIMISM_SEPOLIA);
|
|
29
38
|
const balance = await publicClient.getBalance({ address });
|
|
30
39
|
const balanceAsEther = formatEther(balance);
|
|
31
40
|
if (balanceAsEther <= minimumValueOfEther) {
|
package/build/tests/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAe,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAO,IAAI,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB;;;;GAIG;AACH,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAe,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAO,IAAI,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,KAAK,EAAE,OAAe,EAAmB,EAAE;IAC3F,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA4B,CAAC,CAAC;IACvF,OAAO,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,MAAc,EAAmB,EAAE;IAC9E,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,MAAM,kCAAkC,CAAC,GAAG,SAAS,IAAI,MAAM,EAAE,CAAC,CAAC;IACrF,OAAO,UAAU,SAAS,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,OAAY,EACZ,mBAA2B,EAC3B,kBAA0B,EACX,EAAE;IACjB,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,cAAc,IAAI,mBAAmB,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAwB,CAAC,CAAC;QAC9E,MAAM,YAAY,GAAG,kBAAkB,CAAC;YACtC,KAAK,EAAE,eAAe;YACtB,SAAS,EAAE,IAAI,EAAE;SAClB,CAAC,CAAC;QAEH,MAAM,YAAY,CAAC,eAAe,CAAC;YACjC,OAAO,EAAE,WAAW;YACpB,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.module.d.ts","sourceRoot":"","sources":["../../ts/app.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app.module.d.ts","sourceRoot":"","sources":["../../ts/app.module.ts"],"names":[],"mappings":"AAaA,qBAmBa,SAAS;CAAG"}
|
package/build/ts/app.module.js
CHANGED
|
@@ -9,7 +9,10 @@ import { ThrottlerModule } from "@nestjs/throttler";
|
|
|
9
9
|
import { CryptoModule } from "./crypto/crypto.module";
|
|
10
10
|
import { DeployerModule } from "./deployer/deployer.module";
|
|
11
11
|
import { FileModule } from "./file/file.module";
|
|
12
|
+
import { HealthModule } from "./health/health.module";
|
|
12
13
|
import { ProofModule } from "./proof/proof.module";
|
|
14
|
+
import { RedisModule } from "./redis/redis.module";
|
|
15
|
+
import { SchedulerModule } from "./scheduler/scheduler.module";
|
|
13
16
|
import { SessionKeysModule } from "./sessionKeys/sessionKeys.module";
|
|
14
17
|
import { SubgraphModule } from "./subgraph/subgraph.module";
|
|
15
18
|
let AppModule = class AppModule {
|
|
@@ -23,12 +26,15 @@ AppModule = __decorate([
|
|
|
23
26
|
limit: Number(process.env.LIMIT),
|
|
24
27
|
},
|
|
25
28
|
]),
|
|
29
|
+
HealthModule,
|
|
26
30
|
FileModule,
|
|
27
31
|
CryptoModule,
|
|
28
32
|
SubgraphModule,
|
|
29
33
|
ProofModule,
|
|
30
34
|
SessionKeysModule,
|
|
31
35
|
DeployerModule,
|
|
36
|
+
RedisModule,
|
|
37
|
+
SchedulerModule,
|
|
32
38
|
],
|
|
33
39
|
})
|
|
34
40
|
], AppModule);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../ts/app.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../ts/app.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAqBrD,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,SAAS;IAnBrB,MAAM,CAAC;QACN,OAAO,EAAE;YACP,eAAe,CAAC,OAAO,CAAC;gBACtB;oBACE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;oBAC5B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;iBACjC;aACF,CAAC;YACF,YAAY;YACZ,UAAU;YACV,YAAY;YACZ,cAAc;YACd,WAAW;YACX,iBAAiB;YACjB,cAAc;YACd,WAAW;YACX,eAAe;SAChB;KACF,CAAC;GACW,SAAS,CAAG"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { mainnet, sepolia, arbitrum, arbitrumSepolia, baseSepolia, lineaSepolia, scrollSepolia, scroll, base, holesky, linea, bsc, gnosis, polygon, optimism, optimismSepolia, } from "viem/chains";
|
|
2
|
-
import {
|
|
2
|
+
import { getBundlerClient, getPublicClient, getZeroDevBundlerRPCUrl } from "../accountAbstraction";
|
|
3
|
+
import { getRpcUrl } from "../chain";
|
|
3
4
|
import { ErrorCodes } from "../errors";
|
|
4
5
|
import { ESupportedNetworks, viemChain } from "../networks";
|
|
5
6
|
describe("common", () => {
|
|
6
7
|
describe("getPublicClient", () => {
|
|
7
|
-
test("should return a public client", () => {
|
|
8
|
-
const publicClient = getPublicClient(ESupportedNetworks.OPTIMISM_SEPOLIA);
|
|
8
|
+
test("should return a public client", async () => {
|
|
9
|
+
const publicClient = await getPublicClient(ESupportedNetworks.OPTIMISM_SEPOLIA);
|
|
9
10
|
expect(publicClient).toBeDefined();
|
|
10
11
|
});
|
|
11
|
-
test("should throw when given an unsupported network", () => {
|
|
12
|
-
expect(() => getPublicClient("Unsupported")).toThrow(ErrorCodes.UNSUPPORTED_NETWORK.toString());
|
|
12
|
+
test("should throw when given an unsupported network", async () => {
|
|
13
|
+
await expect(() => getPublicClient("Unsupported")).rejects.toThrow(ErrorCodes.UNSUPPORTED_NETWORK.toString());
|
|
13
14
|
});
|
|
14
15
|
});
|
|
15
16
|
describe("getZeroDevBundlerRPCUrl", () => {
|
|
@@ -28,28 +29,13 @@ describe("common", () => {
|
|
|
28
29
|
expect(() => getBundlerClient("Unsupported")).toThrow(ErrorCodes.UNSUPPORTED_NETWORK.toString());
|
|
29
30
|
});
|
|
30
31
|
});
|
|
31
|
-
describe("
|
|
32
|
-
test("should
|
|
33
|
-
|
|
34
|
-
expect(rpcUrl).toBeDefined();
|
|
35
|
-
expect(rpcUrl).toContain("https://opt-sepolia.g.alchemy.com/v2/");
|
|
32
|
+
describe("getRpcUrl", () => {
|
|
33
|
+
test("should throw when given an unsupported network", async () => {
|
|
34
|
+
await expect(() => getRpcUrl("Unsupported")).rejects.toThrow(ErrorCodes.UNSUPPORTED_NETWORK.toString());
|
|
36
35
|
});
|
|
37
|
-
test("should
|
|
38
|
-
|
|
39
|
-
expect(
|
|
40
|
-
expect(rpcUrl).toContain("https://eth-sepolia.g.alchemy.com/v2/");
|
|
41
|
-
});
|
|
42
|
-
test("should throw when given an unsupported network", () => {
|
|
43
|
-
expect(() => genAlchemyRPCUrl(ESupportedNetworks.GNOSIS_CHAIN)).toThrow(ErrorCodes.UNSUPPORTED_NETWORK.toString());
|
|
44
|
-
});
|
|
45
|
-
test("should throw when ALCHEMY_API_KEY is not set", () => {
|
|
46
|
-
delete process.env.RPC_API_KEY;
|
|
47
|
-
expect(() => genAlchemyRPCUrl(ESupportedNetworks.OPTIMISM_SEPOLIA)).toThrow(ErrorCodes.RPC_API_KEY_NOT_SET.toString());
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
describe("getDeployedContractAddress", () => {
|
|
51
|
-
test("should throw when the log is undefined", () => {
|
|
52
|
-
expect(() => getDeployedContractAddress({})).toThrow();
|
|
36
|
+
test("should throw when COORDINATOR_RPC_URL is not set", async () => {
|
|
37
|
+
delete process.env.COORDINATOR_RPC_URL;
|
|
38
|
+
await expect(() => getRpcUrl(ESupportedNetworks.OPTIMISM_SEPOLIA)).rejects.toThrow(ErrorCodes.COORDINATOR_RPC_URL_NOT_SET.toString());
|
|
53
39
|
});
|
|
54
40
|
});
|
|
55
41
|
describe("viemChain", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.test.js","sourceRoot":"","sources":["../../../../ts/common/__tests__/common.test.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,OAAO,EACP,QAAQ,EACR,eAAe,EACf,WAAW,EACX,YAAY,EACZ,aAAa,EACb,MAAM,EACN,IAAI,EACJ,OAAO,EACP,KAAK,EACL,GAAG,EACH,MAAM,EACN,OAAO,EACP,QAAQ,EACR,eAAe,GAChB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"common.test.js","sourceRoot":"","sources":["../../../../ts/common/__tests__/common.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,13 @@
|
|
|
1
|
-
import { type Hex
|
|
1
|
+
import { type Hex } from "viem";
|
|
2
|
+
import type { BundlerClientType, KernelClientType, PublicClientHTTPType } from "./types";
|
|
2
3
|
import { ESupportedNetworks } from "./networks";
|
|
3
|
-
import { KernelClientType, BundlerClientType, PublicClientHTTPType } from "./types";
|
|
4
|
-
/**
|
|
5
|
-
* Generate the RPCUrl for Alchemy based on the chain we need to interact with
|
|
6
|
-
*
|
|
7
|
-
* @param network - the network we want to interact with
|
|
8
|
-
* @returns the RPCUrl for the network
|
|
9
|
-
*/
|
|
10
|
-
export declare const genAlchemyRPCUrl: (network: ESupportedNetworks) => string;
|
|
11
4
|
/**
|
|
12
5
|
* Get a public client
|
|
13
6
|
*
|
|
14
7
|
* @param chainName - the name of the chain to use
|
|
15
8
|
* @returns the public client
|
|
16
9
|
*/
|
|
17
|
-
export declare const getPublicClient: (chainName: ESupportedNetworks) => PublicClientHTTPType
|
|
10
|
+
export declare const getPublicClient: (chainName: ESupportedNetworks) => Promise<PublicClientHTTPType>;
|
|
18
11
|
/**
|
|
19
12
|
* Get the ZeroDev bundler RPC URL based on the network
|
|
20
13
|
*
|
|
@@ -29,20 +22,10 @@ export declare const getZeroDevBundlerRPCUrl: (network: ESupportedNetworks) => s
|
|
|
29
22
|
* @returns the bundler client
|
|
30
23
|
*/
|
|
31
24
|
export declare const getBundlerClient: (chainName: ESupportedNetworks) => BundlerClientType;
|
|
32
|
-
/**
|
|
33
|
-
* The topic for the contract creation event
|
|
34
|
-
*/
|
|
35
|
-
export declare const contractCreationEventTopic = "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511";
|
|
36
25
|
/**
|
|
37
26
|
* The offset for the address in the contract creation event
|
|
38
27
|
*/
|
|
39
28
|
export declare const addressOffset = 26;
|
|
40
|
-
/**
|
|
41
|
-
* Get the address of the newly deployed contract from a transaction receipt
|
|
42
|
-
* @param receipt - The transaction receipt
|
|
43
|
-
* @returns The address of the newly deployed contract
|
|
44
|
-
*/
|
|
45
|
-
export declare const getDeployedContractAddress: (receipt: TransactionReceipt) => string | undefined;
|
|
46
29
|
/**
|
|
47
30
|
* Get a Kernel account handle given a session key
|
|
48
31
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accountAbstraction.d.ts","sourceRoot":"","sources":["../../../ts/common/accountAbstraction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"accountAbstraction.d.ts","sourceRoot":"","sources":["../../../ts/common/accountAbstraction.ts"],"names":[],"mappings":"AAKA,OAAO,EAA4B,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAI1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAIzF,OAAO,EAAE,kBAAkB,EAAa,MAAM,YAAY,CAAC;AAI3D;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAU,WAAW,kBAAkB,KAAG,OAAO,CAAC,oBAAoB,CAI9F,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAAI,SAAS,kBAAkB,KAAG,MASrE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,WAAW,kBAAkB,KAAG,iBAI7D,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAC1B,YAAY,GAAG,EACf,UAAU,MAAM,EAChB,OAAO,kBAAkB,KACxB,OAAO,CAAC,gBAAgB,CA0B1B,CAAC"}
|
|
@@ -3,40 +3,21 @@ import { toECDSASigner } from "@zerodev/permissions/signers";
|
|
|
3
3
|
import { createKernelAccountClient } from "@zerodev/sdk";
|
|
4
4
|
import { getEntryPoint, KERNEL_V3_1 } from "@zerodev/sdk/constants";
|
|
5
5
|
import dotenv from "dotenv";
|
|
6
|
-
import { createBundlerClient, ENTRYPOINT_ADDRESS_V07 } from "permissionless";
|
|
7
6
|
import { createPublicClient, http } from "viem";
|
|
7
|
+
import { createBundlerClient } from "viem/account-abstraction";
|
|
8
8
|
import { privateKeyToAccount } from "viem/accounts";
|
|
9
|
+
import { getRpcUrl } from "./chain";
|
|
9
10
|
import { ErrorCodes } from "./errors";
|
|
10
11
|
import { ESupportedNetworks, viemChain } from "./networks";
|
|
11
12
|
dotenv.config();
|
|
12
|
-
/**
|
|
13
|
-
* Generate the RPCUrl for Alchemy based on the chain we need to interact with
|
|
14
|
-
*
|
|
15
|
-
* @param network - the network we want to interact with
|
|
16
|
-
* @returns the RPCUrl for the network
|
|
17
|
-
*/
|
|
18
|
-
export const genAlchemyRPCUrl = (network) => {
|
|
19
|
-
const rpcAPIKey = process.env.RPC_API_KEY;
|
|
20
|
-
if (!rpcAPIKey) {
|
|
21
|
-
throw new Error(ErrorCodes.RPC_API_KEY_NOT_SET.toString());
|
|
22
|
-
}
|
|
23
|
-
switch (network) {
|
|
24
|
-
case ESupportedNetworks.OPTIMISM_SEPOLIA:
|
|
25
|
-
return `https://opt-sepolia.g.alchemy.com/v2/${rpcAPIKey}`;
|
|
26
|
-
case ESupportedNetworks.ETHEREUM_SEPOLIA:
|
|
27
|
-
return `https://eth-sepolia.g.alchemy.com/v2/${rpcAPIKey}`;
|
|
28
|
-
default:
|
|
29
|
-
throw new Error(ErrorCodes.UNSUPPORTED_NETWORK.toString());
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
13
|
/**
|
|
33
14
|
* Get a public client
|
|
34
15
|
*
|
|
35
16
|
* @param chainName - the name of the chain to use
|
|
36
17
|
* @returns the public client
|
|
37
18
|
*/
|
|
38
|
-
export const getPublicClient = (chainName) => createPublicClient({
|
|
39
|
-
transport: http(
|
|
19
|
+
export const getPublicClient = async (chainName) => createPublicClient({
|
|
20
|
+
transport: http(await getRpcUrl(chainName)),
|
|
40
21
|
chain: viemChain(chainName),
|
|
41
22
|
});
|
|
42
23
|
/**
|
|
@@ -64,26 +45,11 @@ export const getZeroDevBundlerRPCUrl = (network) => {
|
|
|
64
45
|
export const getBundlerClient = (chainName) => createBundlerClient({
|
|
65
46
|
transport: http(getZeroDevBundlerRPCUrl(chainName)),
|
|
66
47
|
chain: viemChain(chainName),
|
|
67
|
-
entryPoint: ENTRYPOINT_ADDRESS_V07,
|
|
68
48
|
});
|
|
69
|
-
/**
|
|
70
|
-
* The topic for the contract creation event
|
|
71
|
-
*/
|
|
72
|
-
export const contractCreationEventTopic = "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511";
|
|
73
49
|
/**
|
|
74
50
|
* The offset for the address in the contract creation event
|
|
75
51
|
*/
|
|
76
52
|
export const addressOffset = 26;
|
|
77
|
-
/**
|
|
78
|
-
* Get the address of the newly deployed contract from a transaction receipt
|
|
79
|
-
* @param receipt - The transaction receipt
|
|
80
|
-
* @returns The address of the newly deployed contract
|
|
81
|
-
*/
|
|
82
|
-
export const getDeployedContractAddress = (receipt) => {
|
|
83
|
-
const addr = receipt.logs.find((log) => log.topics[0] === contractCreationEventTopic);
|
|
84
|
-
const deployedAddress = addr ? `0x${addr.topics[1]?.slice(addressOffset)}` : undefined;
|
|
85
|
-
return deployedAddress;
|
|
86
|
-
};
|
|
87
53
|
/**
|
|
88
54
|
* Get a Kernel account handle given a session key
|
|
89
55
|
*
|
|
@@ -94,17 +60,21 @@ export const getDeployedContractAddress = (receipt) => {
|
|
|
94
60
|
*/
|
|
95
61
|
export const getKernelClient = async (sessionKey, approval, chain) => {
|
|
96
62
|
const bundlerUrl = getZeroDevBundlerRPCUrl(chain);
|
|
97
|
-
const publicClient = getPublicClient(chain);
|
|
63
|
+
const publicClient = await getPublicClient(chain);
|
|
98
64
|
// Using a stored private key
|
|
99
65
|
const sessionKeySigner = await toECDSASigner({
|
|
100
66
|
signer: privateKeyToAccount(sessionKey),
|
|
101
67
|
});
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
68
|
+
try {
|
|
69
|
+
const sessionKeyAccount = await deserializePermissionAccount(publicClient, getEntryPoint("0.7"), KERNEL_V3_1, approval, sessionKeySigner);
|
|
70
|
+
return createKernelAccountClient({
|
|
71
|
+
bundlerTransport: http(bundlerUrl),
|
|
72
|
+
account: sessionKeyAccount,
|
|
73
|
+
chain: viemChain(chain),
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
throw new Error(ErrorCodes.INVALID_APPROVAL.toString());
|
|
78
|
+
}
|
|
109
79
|
};
|
|
110
80
|
//# sourceMappingURL=accountAbstraction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accountAbstraction.js","sourceRoot":"","sources":["../../../ts/common/accountAbstraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"accountAbstraction.js","sourceRoot":"","sources":["../../../ts/common/accountAbstraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Signer } from "ethers";
|
|
2
|
+
import { ESupportedNetworks } from "./networks";
|
|
3
|
+
/**
|
|
4
|
+
* Get the RPC url for the chain we need to interact with
|
|
5
|
+
*
|
|
6
|
+
* @param network - the network we want to interact with
|
|
7
|
+
* @returns the RPC url for the network
|
|
8
|
+
*/
|
|
9
|
+
export declare const getRpcUrl: (network: ESupportedNetworks) => Promise<string>;
|
|
10
|
+
/**
|
|
11
|
+
* Get a Ethers Signer given a chain and private key
|
|
12
|
+
* @param chain
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
export declare const getSigner: (chain: ESupportedNetworks) => Promise<Signer>;
|
|
16
|
+
//# sourceMappingURL=chain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../../ts/common/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAU,MAAM,QAAQ,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAU,SAAS,kBAAkB,KAAG,OAAO,CAAC,MAAM,CAY3E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAU,OAAO,kBAAkB,KAAG,OAAO,CAAC,MAAM,CASzE,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { JsonRpcProvider, Wallet } from "ethers";
|
|
2
|
+
import { ErrorCodes } from "./errors";
|
|
3
|
+
import { ESupportedNetworks } from "./networks";
|
|
4
|
+
/**
|
|
5
|
+
* Get the RPC url for the chain we need to interact with
|
|
6
|
+
*
|
|
7
|
+
* @param network - the network we want to interact with
|
|
8
|
+
* @returns the RPC url for the network
|
|
9
|
+
*/
|
|
10
|
+
export const getRpcUrl = async (network) => {
|
|
11
|
+
const rpcUrl = process.env.COORDINATOR_RPC_URL;
|
|
12
|
+
if (!rpcUrl) {
|
|
13
|
+
return Promise.reject(new Error(ErrorCodes.COORDINATOR_RPC_URL_NOT_SET.toString()));
|
|
14
|
+
}
|
|
15
|
+
if (!Object.values(ESupportedNetworks).includes(network)) {
|
|
16
|
+
return Promise.reject(new Error(ErrorCodes.UNSUPPORTED_NETWORK.toString()));
|
|
17
|
+
}
|
|
18
|
+
return Promise.resolve(rpcUrl);
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Get a Ethers Signer given a chain and private key
|
|
22
|
+
* @param chain
|
|
23
|
+
* @returns
|
|
24
|
+
*/
|
|
25
|
+
export const getSigner = async (chain) => {
|
|
26
|
+
const wallet = process.env.PRIVATE_KEY
|
|
27
|
+
? new Wallet(process.env.PRIVATE_KEY)
|
|
28
|
+
: Wallet.fromPhrase(process.env.MNEMONIC);
|
|
29
|
+
const alchemyRpcUrl = await getRpcUrl(chain);
|
|
30
|
+
const provider = new JsonRpcProvider(alchemyRpcUrl);
|
|
31
|
+
return wallet.connect(provider);
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=chain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../ts/common/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,OAA2B,EAAmB,EAAE;IAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAE/C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,2BAA2B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,KAAyB,EAAmB,EAAE;IAC5E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW;QACpC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QACrC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,QAAS,CAAC,CAAC;IAE7C,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;IAEpD,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Keypair } from "@maci-protocol/domainobjs";
|
|
2
|
+
/**
|
|
3
|
+
* Instantiate the MACI Coordinator keypair.
|
|
4
|
+
* @returns {Keypair} - The MACI Coordinator keypair.
|
|
5
|
+
*/
|
|
6
|
+
export declare const getCoordinatorKeypair: () => Keypair;
|
|
7
|
+
//# sourceMappingURL=coordinatorKeypair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinatorKeypair.d.ts","sourceRoot":"","sources":["../../../ts/common/coordinatorKeypair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAc,MAAM,2BAA2B,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAO,OAUxC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Keypair, PrivateKey } from "@maci-protocol/domainobjs";
|
|
2
|
+
/**
|
|
3
|
+
* Instantiate the MACI Coordinator keypair.
|
|
4
|
+
* @returns {Keypair} - The MACI Coordinator keypair.
|
|
5
|
+
*/
|
|
6
|
+
export const getCoordinatorKeypair = () => {
|
|
7
|
+
const privateKey = String(process.env.COORDINATOR_MACI_PRIVATE_KEY);
|
|
8
|
+
if (!privateKey) {
|
|
9
|
+
throw new Error("COORDINATOR_MACI_PRIVATE_KEY environment variable is not set.");
|
|
10
|
+
}
|
|
11
|
+
const maciPrivateKey = PrivateKey.deserialize(privateKey);
|
|
12
|
+
return new Keypair(maciPrivateKey);
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=coordinatorKeypair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinatorKeypair.js","sourceRoot":"","sources":["../../../ts/common/coordinatorKeypair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAY,EAAE;IACjD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAEpE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAE1D,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;AACrC,CAAC,CAAC"}
|
|
@@ -11,23 +11,26 @@ export declare enum ErrorCodes {
|
|
|
11
11
|
SUBGRAPH_DEPLOY = 6,
|
|
12
12
|
SUBGRAPH_DEPLOY_KEY_NOT_FOUND = 7,
|
|
13
13
|
SESSION_KEY_NOT_FOUND = 8,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
INVALID_APPROVAL = 9,
|
|
15
|
+
UNSUPPORTED_NETWORK = 10,
|
|
16
|
+
COORDINATOR_RPC_URL_NOT_SET = 11,
|
|
17
|
+
FAILED_TO_MERGE_STATE_TREE = 12,
|
|
18
|
+
FAILED_TO_MERGE_MESSAGE_SUBTREES = 13,
|
|
19
|
+
FAILED_TO_MERGE_MESSAGE_TREE = 14,
|
|
20
|
+
UNSUPPORTED_VOICE_CREDIT_PROXY_FACTORY = 15,
|
|
21
21
|
UNSUPPORTED_VOICE_CREDIT_PROXY = 16,
|
|
22
22
|
UNSUPPORTED_POLICY = 17,
|
|
23
23
|
FAILED_TO_DEPLOY_CONTRACT = 18,
|
|
24
24
|
FAILED_TO_SET_MACI_INSTANCE_ON_POLICY = 19,
|
|
25
25
|
MACI_NOT_DEPLOYED = 20,
|
|
26
26
|
VERIFIER_NOT_DEPLOYED = 21,
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
VERIFYING_KEYS_REGISTRY_NOT_DEPLOYED = 22,
|
|
28
|
+
FAILED_TO_SET_VERIFYING_KEYS = 23,
|
|
29
29
|
FAILED_TO_DEPLOY_MACI = 24,
|
|
30
30
|
FAILED_TO_DEPLOY_POLL = 25,
|
|
31
|
-
NOT_MERGED_MESSAGE_TREE = 26
|
|
31
|
+
NOT_MERGED_MESSAGE_TREE = 26,
|
|
32
|
+
FAILED_TO_UPDATE_SCHEDULED_POLL = 27,
|
|
33
|
+
POLL_ALREADY_SCHEDULED = 28,
|
|
34
|
+
POLL_ALREADY_TALLIED = 29
|
|
32
35
|
}
|
|
33
36
|
//# sourceMappingURL=errors.d.ts.map
|