@instadapp/interop-x 0.0.0-dev.f39d622 → 0.0.0-dev.f45bd03

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. package/dist/package.json +4 -2
  2. package/dist/src/abi/aaveV3Resolver.json +628 -0
  3. package/dist/src/abi/index.js +2 -0
  4. package/dist/src/constants/addresses.js +4 -2
  5. package/dist/src/db/models/transaction.js +1 -1
  6. package/dist/src/gnosis/actions/aaveV2/source.js +26 -1
  7. package/dist/src/gnosis/actions/aaveV2/target.js +16 -1
  8. package/dist/src/gnosis/actions/aaveV3/index.js +11 -0
  9. package/dist/src/gnosis/actions/aaveV3/source.js +74 -0
  10. package/dist/src/gnosis/actions/aaveV3/target.js +87 -0
  11. package/dist/src/gnosis/actions/index.js +2 -0
  12. package/dist/src/index.js +1 -1
  13. package/dist/src/providers/index.js +17 -0
  14. package/dist/src/providers/retry-provider.js +45 -0
  15. package/dist/src/tasks/InteropX/ProcessSubmitEvents.js +38 -10
  16. package/dist/src/tasks/InteropX/ProcessValidateEvents.js +28 -9
  17. package/dist/src/tasks/InteropX/SyncLogExecuteEvents.js +2 -1
  18. package/dist/src/tasks/InteropX/SyncLogSubmitEvents.js +2 -1
  19. package/dist/src/tasks/InteropX/SyncLogValidateEvents.js +2 -1
  20. package/dist/src/typechain/AaveV3Resolver.js +2 -0
  21. package/dist/src/typechain/factories/AaveV3Resolver__factory.js +887 -0
  22. package/dist/src/typechain/factories/index.js +3 -1
  23. package/dist/src/typechain/index.js +3 -1
  24. package/dist/src/utils/gnosis.js +42 -17
  25. package/dist/src/utils/validate.js +10 -14
  26. package/package.json +4 -2
  27. package/src/abi/aaveV3Resolver.json +628 -0
  28. package/src/abi/index.ts +2 -0
  29. package/src/constants/addresses.ts +6 -3
  30. package/src/db/models/transaction.ts +1 -1
  31. package/src/gnosis/actions/aaveV2/source.ts +58 -2
  32. package/src/gnosis/actions/aaveV2/target.ts +29 -2
  33. package/src/gnosis/actions/aaveV3/index.ts +9 -0
  34. package/src/gnosis/actions/aaveV3/source.ts +119 -0
  35. package/src/gnosis/actions/aaveV3/target.ts +142 -0
  36. package/src/gnosis/actions/index.ts +2 -0
  37. package/src/providers/index.ts +1 -0
  38. package/src/providers/retry-provider.ts +51 -0
  39. package/src/tasks/InteropX/ProcessSubmitEvents.ts +52 -13
  40. package/src/tasks/InteropX/ProcessValidateEvents.ts +39 -13
  41. package/src/tasks/InteropX/SyncLogExecuteEvents.ts +3 -2
  42. package/src/tasks/InteropX/SyncLogSubmitEvents.ts +3 -2
  43. package/src/tasks/InteropX/SyncLogValidateEvents.ts +3 -2
  44. package/src/typechain/AaveV3Resolver.ts +935 -0
  45. package/src/typechain/factories/AaveV3Resolver__factory.ts +894 -0
  46. package/src/typechain/factories/index.ts +1 -0
  47. package/src/typechain/index.ts +2 -0
  48. package/src/utils/gnosis.ts +75 -32
  49. package/src/utils/validate.ts +17 -19
@@ -5,8 +5,11 @@ import abi from "@/abi";
5
5
  import { Transaction } from "@/db";
6
6
  import {
7
7
  buildSignatureBytes,
8
+ generateGnosisSignatureMessage,
8
9
  generateGnosisTransaction,
9
10
  getContract,
11
+ getGnosisOwnerPeerIds,
12
+ getGnosisSignatureAddress,
10
13
  getRpcProviderUrl,
11
14
  Signature,
12
15
  } from "@/utils";
@@ -21,9 +24,10 @@ import { peerPool, protocol } from "@/net";
21
24
  import { LogDescription } from "ethers/lib/utils";
22
25
  import wait from "waait";
23
26
  import { LiquidityError } from "@/errors";
27
+ import { JsonRpcRetryProvider } from "@/providers";
24
28
 
25
29
  export default class ProcessValidateEvents extends BaseTask {
26
- sourceProvider: ethers.providers.JsonRpcProvider;
30
+ sourceProvider: JsonRpcRetryProvider;
27
31
  chainId: ChainId;
28
32
  leadNodeOnly: boolean = true;
29
33
  blockConfirmationsCount: number = 12;
@@ -74,7 +78,7 @@ export default class ProcessValidateEvents extends BaseTask {
74
78
 
75
79
  const { sourceChainId, targetChainId } = transaction.validateEvent
76
80
 
77
- const targetProvider = new ethers.providers.JsonRpcProvider(
81
+ const targetProvider = new JsonRpcRetryProvider(
78
82
  getRpcProviderUrl(targetChainId as ChainId)
79
83
  );
80
84
 
@@ -140,13 +144,9 @@ export default class ProcessValidateEvents extends BaseTask {
140
144
  targetGnosisContract
141
145
  );
142
146
 
143
- const owners = await targetGnosisContract
144
- .getOwners()
145
- .then((owners) => owners.map((owner) => owner.toLowerCase()));
146
-
147
- const ownerPeerIds = peerPool.activePeers
148
- .filter((peer) => owners.includes(peer.publicAddress.toLowerCase()))
149
- .map((peer) => peer.id);
147
+ const ownerPeerIds = await getGnosisOwnerPeerIds({
148
+ gnosisContract: targetGnosisContract,
149
+ });
150
150
 
151
151
  console.log(
152
152
  `Collecting signatures for execution ${transaction.transactionHash}`
@@ -154,6 +154,14 @@ export default class ProcessValidateEvents extends BaseTask {
154
154
 
155
155
  console.log(ownerPeerIds);
156
156
 
157
+ const message = generateGnosisSignatureMessage({
158
+ to: addresses[data.chainId].multisend,
159
+ data,
160
+ chainId: this.chainId,
161
+ safeTxGas: gnosisTx.safeTxGas,
162
+ nonce: gnosisTx.safeNonce,
163
+ });
164
+
157
165
  const signatures = await protocol.requestSignatures(
158
166
  {
159
167
  type: "target",
@@ -165,9 +173,27 @@ export default class ProcessValidateEvents extends BaseTask {
165
173
  ownerPeerIds
166
174
  );
167
175
 
168
- const validSignatures = signatures.filter(
169
- (s) => !!s.data && s.data !== "0x"
170
- ) as Signature[];
176
+ const validSignatures = signatures
177
+ .filter(
178
+ (s) => !!s.data && s.data !== "0x"
179
+ )
180
+ .filter((s) => {
181
+
182
+ try {
183
+
184
+ const address = getGnosisSignatureAddress({
185
+ message,
186
+ signature: s.data!,
187
+ chainId: this.chainId,
188
+ })
189
+
190
+ return address?.toLowerCase() === s.signer.toLowerCase();
191
+
192
+ } catch (error) {
193
+ return false
194
+ }
195
+
196
+ }) as Signature[];
171
197
 
172
198
  console.log({
173
199
  signatures,
@@ -262,7 +288,7 @@ export default class ProcessValidateEvents extends BaseTask {
262
288
  async start(): Promise<void> {
263
289
  this.blockConfirmationsCount = blockConfirmations[this.chainId] + 1;
264
290
 
265
- this.sourceProvider = new ethers.providers.JsonRpcProvider(
291
+ this.sourceProvider = new JsonRpcRetryProvider(
266
292
  getRpcProviderUrl(this.chainId)
267
293
  );
268
294
 
@@ -13,10 +13,11 @@ import { ChainId } from "@/types";
13
13
  import config from "@/config";
14
14
  import { InteropX } from "@/typechain";
15
15
  import { Op } from "sequelize";
16
+ import { JsonRpcRetryProvider } from "@/providers";
16
17
 
17
18
  export default class SyncLogExecuteEvents extends BaseTask {
18
19
  contractAddress: string;
19
- provider: ethers.providers.JsonRpcProvider;
20
+ provider: JsonRpcRetryProvider;
20
21
  contract: InteropX;
21
22
  targetChainId: ChainId;
22
23
 
@@ -145,7 +146,7 @@ export default class SyncLogExecuteEvents extends BaseTask {
145
146
  async start(): Promise<void> {
146
147
  this.contractAddress = addresses[this.targetChainId].interopX;
147
148
 
148
- this.provider = new ethers.providers.JsonRpcProvider(
149
+ this.provider = new JsonRpcRetryProvider(
149
150
  getRpcProviderUrl(this.targetChainId)
150
151
  );
151
152
 
@@ -12,10 +12,11 @@ import { addresses } from "@/constants";
12
12
  import { ChainId } from "@/types";
13
13
  import config from "@/config";
14
14
  import { InteropX } from "@/typechain";
15
+ import { JsonRpcRetryProvider } from "@/providers";
15
16
 
16
17
  export default class SyncLogSubmitEvents extends BaseTask {
17
18
  contractAddress: string;
18
- provider: ethers.providers.JsonRpcProvider;
19
+ provider: JsonRpcRetryProvider;
19
20
  contract: InteropX;
20
21
  chainId: ChainId;
21
22
 
@@ -122,7 +123,7 @@ export default class SyncLogSubmitEvents extends BaseTask {
122
123
  async start(): Promise<void> {
123
124
  this.contractAddress = addresses[this.chainId].interopX;
124
125
 
125
- this.provider = new ethers.providers.JsonRpcProvider(
126
+ this.provider = new JsonRpcRetryProvider(
126
127
  getRpcProviderUrl(this.chainId)
127
128
  );
128
129
 
@@ -13,10 +13,11 @@ import { ChainId } from "@/types";
13
13
  import config from "@/config";
14
14
  import { InteropX } from "@/typechain";
15
15
  import { Op } from "sequelize";
16
+ import { JsonRpcRetryProvider } from "@/providers";
16
17
 
17
18
  export default class SyncLogValidateEvents extends BaseTask {
18
19
  contractAddress: string;
19
- provider: ethers.providers.JsonRpcProvider;
20
+ provider: JsonRpcRetryProvider;
20
21
  contract: InteropX;
21
22
  chainId: ChainId;
22
23
 
@@ -135,7 +136,7 @@ export default class SyncLogValidateEvents extends BaseTask {
135
136
  async start(): Promise<void> {
136
137
  this.contractAddress = addresses[this.chainId].interopX;
137
138
 
138
- this.provider = new ethers.providers.JsonRpcProvider(
139
+ this.provider = new JsonRpcRetryProvider(
139
140
  getRpcProviderUrl(this.chainId)
140
141
  );
141
142