@instadapp/interop-x 0.0.0-dev.d71f27e → 0.0.0-dev.de59649
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/dist/package.json +12 -11
- package/dist/src/abi/interopXContract.json +73 -10
- package/dist/src/constants/addresses.js +7 -7
- package/dist/src/constants/tokens.js +62 -39
- package/dist/src/db/models/transaction.js +1 -3
- package/dist/src/gnosis/actions/withdraw/index.js +72 -9
- package/dist/src/gnosis/index.js +3 -3
- package/dist/src/index.js +1 -1
- package/dist/src/tasks/InteropXContract/SyncBridgeCommittedEvents.js +93 -0
- package/dist/src/tasks/InteropXContract/SyncBridgeRequestEvents.js +4 -4
- package/dist/src/tasks/InteropXContract/SyncBridgeRequestSentEvents.js +5 -4
- package/dist/src/tasks/index.js +3 -0
- package/dist/src/typechain/factories/InteropXContract__factory.js +124 -15
- package/dist/src/utils/index.js +24 -6
- package/package.json +12 -11
- package/src/abi/interopXContract.json +73 -10
- package/src/constants/addresses.ts +7 -7
- package/src/constants/tokens.ts +63 -40
- package/src/db/models/transaction.ts +13 -9
- package/src/gnosis/actions/withdraw/index.ts +93 -9
- package/src/gnosis/index.ts +3 -3
- package/src/tasks/InteropXContract/SyncBridgeCommittedEvents.ts +125 -0
- package/src/tasks/InteropXContract/SyncBridgeRequestEvents.ts +3 -4
- package/src/tasks/InteropXContract/SyncBridgeRequestSentEvents.ts +5 -4
- package/src/tasks/index.ts +4 -0
- package/src/typechain/InteropXContract.ts +199 -43
- package/src/typechain/factories/InteropXContract__factory.ts +124 -15
- package/src/utils/index.ts +61 -33
@@ -13,6 +13,12 @@ const _abi = [
|
|
13
13
|
{
|
14
14
|
anonymous: false,
|
15
15
|
inputs: [
|
16
|
+
{
|
17
|
+
indexed: false,
|
18
|
+
internalType: "string",
|
19
|
+
name: "actionId",
|
20
|
+
type: "string",
|
21
|
+
},
|
16
22
|
{
|
17
23
|
indexed: true,
|
18
24
|
internalType: "address",
|
@@ -102,6 +108,12 @@ const _abi = [
|
|
102
108
|
{
|
103
109
|
anonymous: false,
|
104
110
|
inputs: [
|
111
|
+
{
|
112
|
+
indexed: false,
|
113
|
+
internalType: "string",
|
114
|
+
name: "actionId",
|
115
|
+
type: "string",
|
116
|
+
},
|
105
117
|
{
|
106
118
|
indexed: true,
|
107
119
|
internalType: "address",
|
@@ -197,6 +209,12 @@ const _abi = [
|
|
197
209
|
{
|
198
210
|
anonymous: false,
|
199
211
|
inputs: [
|
212
|
+
{
|
213
|
+
indexed: false,
|
214
|
+
internalType: "string",
|
215
|
+
name: "actionId",
|
216
|
+
type: "string",
|
217
|
+
},
|
200
218
|
{
|
201
219
|
indexed: true,
|
202
220
|
internalType: "address",
|
@@ -280,6 +298,12 @@ const _abi = [
|
|
280
298
|
{
|
281
299
|
anonymous: false,
|
282
300
|
inputs: [
|
301
|
+
{
|
302
|
+
indexed: false,
|
303
|
+
internalType: "string",
|
304
|
+
name: "actionId",
|
305
|
+
type: "string",
|
306
|
+
},
|
283
307
|
{
|
284
308
|
indexed: true,
|
285
309
|
internalType: "address",
|
@@ -367,20 +391,12 @@ const _abi = [
|
|
367
391
|
type: "event",
|
368
392
|
},
|
369
393
|
{
|
370
|
-
inputs: [
|
371
|
-
name: "_vnonce",
|
372
|
-
outputs: [
|
394
|
+
inputs: [
|
373
395
|
{
|
374
|
-
internalType: "
|
375
|
-
name: "",
|
376
|
-
type: "
|
396
|
+
internalType: "string",
|
397
|
+
name: "actionId",
|
398
|
+
type: "string",
|
377
399
|
},
|
378
|
-
],
|
379
|
-
stateMutability: "view",
|
380
|
-
type: "function",
|
381
|
-
},
|
382
|
-
{
|
383
|
-
inputs: [
|
384
400
|
{
|
385
401
|
internalType: "address",
|
386
402
|
name: "to_",
|
@@ -403,7 +419,7 @@ const _abi = [
|
|
403
419
|
},
|
404
420
|
{
|
405
421
|
internalType: "uint32",
|
406
|
-
name: "
|
422
|
+
name: "sourceChainId_",
|
407
423
|
type: "uint32",
|
408
424
|
},
|
409
425
|
{
|
@@ -424,6 +440,47 @@ const _abi = [
|
|
424
440
|
},
|
425
441
|
{
|
426
442
|
inputs: [
|
443
|
+
{
|
444
|
+
internalType: "address",
|
445
|
+
name: "user",
|
446
|
+
type: "address",
|
447
|
+
},
|
448
|
+
{
|
449
|
+
internalType: "address[]",
|
450
|
+
name: "tokens",
|
451
|
+
type: "address[]",
|
452
|
+
},
|
453
|
+
],
|
454
|
+
name: "getBridgeAmounts",
|
455
|
+
outputs: [
|
456
|
+
{
|
457
|
+
components: [
|
458
|
+
{
|
459
|
+
internalType: "uint256",
|
460
|
+
name: "deposit",
|
461
|
+
type: "uint256",
|
462
|
+
},
|
463
|
+
{
|
464
|
+
internalType: "uint256",
|
465
|
+
name: "withdraw",
|
466
|
+
type: "uint256",
|
467
|
+
},
|
468
|
+
],
|
469
|
+
internalType: "struct InteropXContractBeta.UserData[]",
|
470
|
+
name: "userData",
|
471
|
+
type: "tuple[]",
|
472
|
+
},
|
473
|
+
],
|
474
|
+
stateMutability: "view",
|
475
|
+
type: "function",
|
476
|
+
},
|
477
|
+
{
|
478
|
+
inputs: [
|
479
|
+
{
|
480
|
+
internalType: "string",
|
481
|
+
name: "actionId",
|
482
|
+
type: "string",
|
483
|
+
},
|
427
484
|
{
|
428
485
|
internalType: "address",
|
429
486
|
name: "sourceToken_",
|
@@ -455,6 +512,24 @@ const _abi = [
|
|
455
512
|
stateMutability: "nonpayable",
|
456
513
|
type: "function",
|
457
514
|
},
|
515
|
+
{
|
516
|
+
inputs: [
|
517
|
+
{
|
518
|
+
internalType: "address",
|
519
|
+
name: "token",
|
520
|
+
type: "address",
|
521
|
+
},
|
522
|
+
{
|
523
|
+
internalType: "bool",
|
524
|
+
name: "toggle",
|
525
|
+
type: "bool",
|
526
|
+
},
|
527
|
+
],
|
528
|
+
name: "toggleWhitelist",
|
529
|
+
outputs: [],
|
530
|
+
stateMutability: "nonpayable",
|
531
|
+
type: "function",
|
532
|
+
},
|
458
533
|
{
|
459
534
|
inputs: [
|
460
535
|
{
|
@@ -462,20 +537,54 @@ const _abi = [
|
|
462
537
|
name: "",
|
463
538
|
type: "address",
|
464
539
|
},
|
540
|
+
{
|
541
|
+
internalType: "address",
|
542
|
+
name: "",
|
543
|
+
type: "address",
|
544
|
+
},
|
465
545
|
],
|
466
|
-
name: "
|
546
|
+
name: "userMapping",
|
467
547
|
outputs: [
|
468
548
|
{
|
469
549
|
internalType: "uint256",
|
470
|
-
name: "",
|
550
|
+
name: "deposit",
|
471
551
|
type: "uint256",
|
472
552
|
},
|
553
|
+
{
|
554
|
+
internalType: "uint256",
|
555
|
+
name: "withdraw",
|
556
|
+
type: "uint256",
|
557
|
+
},
|
558
|
+
],
|
559
|
+
stateMutability: "view",
|
560
|
+
type: "function",
|
561
|
+
},
|
562
|
+
{
|
563
|
+
inputs: [
|
564
|
+
{
|
565
|
+
internalType: "address",
|
566
|
+
name: "",
|
567
|
+
type: "address",
|
568
|
+
},
|
569
|
+
],
|
570
|
+
name: "whitelistedTokens",
|
571
|
+
outputs: [
|
572
|
+
{
|
573
|
+
internalType: "bool",
|
574
|
+
name: "",
|
575
|
+
type: "bool",
|
576
|
+
},
|
473
577
|
],
|
474
578
|
stateMutability: "view",
|
475
579
|
type: "function",
|
476
580
|
},
|
477
581
|
{
|
478
582
|
inputs: [
|
583
|
+
{
|
584
|
+
internalType: "string",
|
585
|
+
name: "actionId",
|
586
|
+
type: "string",
|
587
|
+
},
|
479
588
|
{
|
480
589
|
internalType: "address",
|
481
590
|
name: "user_",
|
package/src/utils/index.ts
CHANGED
@@ -7,6 +7,8 @@ import { addresses } from '@/constants';
|
|
7
7
|
import { ChainId } from '@/types'
|
8
8
|
import { ethers } from 'ethers';
|
9
9
|
import { GnosisSafe } from '@/typechain';
|
10
|
+
import retry from 'async-retry'
|
11
|
+
|
10
12
|
export const http = axios.create();
|
11
13
|
|
12
14
|
axiosRetry(http, { retries: 3, retryDelay: axiosRetry.exponentialDelay });
|
@@ -131,9 +133,9 @@ export const asyncCallWithTimeout = async <T>(asyncPromise: Promise<T>, timeout:
|
|
131
133
|
}
|
132
134
|
|
133
135
|
|
134
|
-
export const generateInteropTransactionHash = (data: {
|
136
|
+
export const generateInteropTransactionHash = (data: { actionId: string, bridger: string, requestTransactionHash: string, sourceChainId: string | number, targetChainId: string | number }) => {
|
135
137
|
return ethers.utils.solidityKeccak256(['string', 'string', 'string', 'string', 'string'], [
|
136
|
-
String(data.
|
138
|
+
String(data.actionId),
|
137
139
|
String(data.bridger),
|
138
140
|
String(data.requestTransactionHash),
|
139
141
|
String(data.sourceChainId),
|
@@ -141,6 +143,13 @@ export const generateInteropTransactionHash = (data: { action: string, bridger:
|
|
141
143
|
]);
|
142
144
|
}
|
143
145
|
|
146
|
+
|
147
|
+
export class ContractError extends Error {
|
148
|
+
method: string;
|
149
|
+
address: string;
|
150
|
+
args: any[];
|
151
|
+
}
|
152
|
+
|
144
153
|
export function getContract<TContract extends ethers.Contract>(address: string, contractInterface: ethers.ContractInterface | any, signerOrProvider?: ethers.Signer | ethers.providers.Provider) {
|
145
154
|
if (!ethers.utils.getAddress(address) || address === ethers.constants.AddressZero) {
|
146
155
|
throw Error(`Invalid 'address' parameter '${address}'.`)
|
@@ -164,11 +173,24 @@ export function getContract<TContract extends ethers.Contract>(address: string,
|
|
164
173
|
const value = Reflect.get(target, prop, receiver);
|
165
174
|
|
166
175
|
if (typeof value === 'function' && (contract.functions.hasOwnProperty(prop) || ['queryFilter'].includes(String(prop)))) {
|
176
|
+
let isConstant = false;
|
177
|
+
|
178
|
+
try {
|
179
|
+
isConstant = contract.interface.getFunction(String(prop)).constant
|
180
|
+
} catch (error) {
|
181
|
+
}
|
182
|
+
|
167
183
|
return async (...args: any[]) => {
|
168
184
|
try {
|
169
|
-
return await value.bind(contract)(...args);
|
185
|
+
return await retry(async () => await value.bind(contract)(...args), { retries: isConstant ? 1 : 3 });
|
170
186
|
} catch (error) {
|
171
|
-
|
187
|
+
const err = new ContractError(`Error calling "${String(prop)}" on "${address}": ${error.reason || error.message}`)
|
188
|
+
|
189
|
+
err.method = String(prop)
|
190
|
+
err.address = address
|
191
|
+
err.args = [...args]
|
192
|
+
|
193
|
+
throw err
|
172
194
|
}
|
173
195
|
}
|
174
196
|
}
|
@@ -184,9 +206,15 @@ export function getContract<TContract extends ethers.Contract>(address: string,
|
|
184
206
|
if (typeof value === 'function') {
|
185
207
|
return async (...args: any[]) => {
|
186
208
|
try {
|
187
|
-
return await value.bind(contract)(...args);
|
209
|
+
return await retry(async () => await value.bind(contract)(...args), { retries: parentProp === 'callStatic' ? 3 : 1 });
|
188
210
|
} catch (error) {
|
189
|
-
|
211
|
+
const err = new ContractError(`Error calling "${String(prop)}" using "${parentProp}" on "${address}": ${error.reason || error.message}`)
|
212
|
+
|
213
|
+
err.method = String(prop)
|
214
|
+
err.address = address
|
215
|
+
err.args = [...args]
|
216
|
+
|
217
|
+
throw err
|
190
218
|
}
|
191
219
|
}
|
192
220
|
}
|
@@ -203,37 +231,37 @@ export const generateGnosisTransaction = async (transactionData: any, safeContra
|
|
203
231
|
console.log(transactionData);
|
204
232
|
|
205
233
|
let isExecuted = await safeContract.dataHashes(
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
234
|
+
await safeContract.getTransactionHash(
|
235
|
+
transactionData.to,
|
236
|
+
transactionData.value,
|
237
|
+
transactionData.data,
|
238
|
+
transactionData.operation,
|
239
|
+
transactionData.safeTxGas,
|
240
|
+
transactionData.baseGas,
|
241
|
+
transactionData.gasPrice,
|
242
|
+
transactionData.gasToken,
|
243
|
+
transactionData.refundReceiver,
|
244
|
+
transactionData.nonce
|
245
|
+
)
|
218
246
|
)
|
219
247
|
|
220
248
|
while (isExecuted == 1) {
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
)
|
249
|
+
transactionData.safeTxGas = ethers.BigNumber.from(String(transactionData.safeTxGas)).add(1).toString()
|
250
|
+
|
251
|
+
isExecuted = await safeContract.dataHashes(
|
252
|
+
await safeContract.getTransactionHash(
|
253
|
+
transactionData.to,
|
254
|
+
transactionData.value,
|
255
|
+
transactionData.data,
|
256
|
+
transactionData.operation,
|
257
|
+
transactionData.safeTxGas,
|
258
|
+
transactionData.baseGas,
|
259
|
+
transactionData.gasPrice,
|
260
|
+
transactionData.gasToken,
|
261
|
+
transactionData.refundReceiver,
|
262
|
+
transactionData.nonce
|
236
263
|
)
|
264
|
+
)
|
237
265
|
}
|
238
266
|
|
239
267
|
return transactionData
|