@instadapp/interop-x 0.0.0-dev.73e5298 → 0.0.0-dev.7738003
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/.github/workflows/ci.yml +19 -0
- package/dist/package.json +1 -1
- package/dist/src/abi/index.js +2 -2
- package/dist/src/abi/interopX.json +1436 -0
- package/dist/src/api/index.js +1 -1
- package/dist/src/constants/addresses.js +2 -7
- package/dist/src/db/models/transaction.js +11 -9
- package/dist/src/gnosis/actions/withdraw/index.js +106 -107
- package/dist/src/index.js +1 -1
- package/dist/src/tasks/{InteropXContract/SyncBridgeRequestEvents.js → InteropX/SyncLogSubmitEvents.js} +18 -12
- package/dist/src/tasks/Transactions/SyncTransactionStatusTask.js +3 -3
- package/dist/src/tasks/index.js +4 -13
- package/dist/src/typechain/{InteropXContract.js → InteropX.js} +0 -0
- package/dist/src/typechain/factories/InteropX__factory.js +1928 -0
- package/dist/src/typechain/factories/index.js +3 -3
- package/dist/src/typechain/index.js +3 -3
- package/dist/src/utils/index.js +5 -3
- package/package.json +1 -1
- package/src/abi/index.ts +2 -2
- package/src/abi/interopX.json +1436 -0
- package/src/api/index.ts +1 -1
- package/src/constants/addresses.ts +3 -8
- package/src/db/models/transaction.ts +28 -37
- package/src/gnosis/actions/withdraw/index.ts +131 -131
- package/src/tasks/{InteropXContract/SyncBridgeRequestEvents.ts → InteropX/SyncLogSubmitEvents.ts} +37 -16
- package/src/tasks/Transactions/SyncTransactionStatusTask.ts +3 -3
- package/src/tasks/index.ts +5 -17
- package/src/typechain/InteropX.ts +1216 -0
- package/src/typechain/factories/InteropX__factory.ts +1932 -0
- package/src/typechain/factories/index.ts +1 -1
- package/src/typechain/index.ts +2 -2
- package/src/utils/index.ts +22 -8
- package/dist/src/abi/interopXContract.json +0 -454
- package/dist/src/tasks/InteropXContract/ProcessBridgeRequestEvents.js +0 -158
- package/dist/src/tasks/InteropXContract/SyncBridgeCommittedEvents.js +0 -93
- package/dist/src/tasks/InteropXContract/SyncBridgeRequestSentEvents.js +0 -90
- package/dist/src/typechain/factories/InteropXContract__factory.js +0 -635
- package/src/abi/interopXContract.json +0 -454
- package/src/tasks/InteropXContract/ProcessBridgeRequestEvents.ts +0 -226
- package/src/tasks/InteropXContract/SyncBridgeCommittedEvents.ts +0 -125
- package/src/tasks/InteropXContract/SyncBridgeRequestSentEvents.ts +0 -121
- package/src/typechain/InteropXContract.ts +0 -680
- package/src/typechain/factories/InteropXContract__factory.ts +0 -642
package/src/api/index.ts
CHANGED
@@ -1,17 +1,12 @@
|
|
1
1
|
export const addresses = {
|
2
|
-
// 1: {
|
3
|
-
// gnosisSafe: '0x811Bff6eF88dAAA0aD6438386B534A81cE3F160F',
|
4
|
-
// multisend: '0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761',
|
5
|
-
// interopXContract: '',
|
6
|
-
// },
|
7
2
|
137: {
|
8
3
|
gnosisSafe: '0x5635d2910e51da33d9DC0422c893CF4F28B69A25',
|
9
4
|
multisend: '0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761',
|
10
|
-
|
5
|
+
interopX: '0xDB6083df37C5F224a3dF84A4B5f9fB60b6c8670a',
|
11
6
|
},
|
12
7
|
43114: {
|
13
8
|
gnosisSafe: '0x31d7a5194Fe60AC209Cf1Ce2d539C9A60662Ed6b',
|
14
9
|
multisend: '0x998739BFdAAdde7C933B942a68053933098f9EDa',
|
15
|
-
|
10
|
+
interopX: '0xd61f55C6d9deD35B9d13243b816c4BcC1d78592b',
|
16
11
|
}
|
17
|
-
} as Record<number, { gnosisSafe: string, multisend: string,
|
12
|
+
} as Record<number, { gnosisSafe: string, multisend: string, interopX: string }>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { sequelize } from '@/db/sequelize'
|
2
2
|
import { CreationOptional, InferAttributes, InferCreationAttributes, Model, DataTypes } from 'sequelize';
|
3
3
|
|
4
|
-
export interface IPositionTokenInfo{
|
4
|
+
export interface IPositionTokenInfo {
|
5
5
|
amount: string;
|
6
6
|
sourceToken: string;
|
7
7
|
targetToken: string;
|
@@ -16,14 +16,17 @@ export class Transaction extends Model<InferAttributes<Transaction>, InferCreati
|
|
16
16
|
declare id: CreationOptional<number>;
|
17
17
|
|
18
18
|
declare transactionHash: string;
|
19
|
-
|
19
|
+
declare vnonce: string;
|
20
20
|
declare actionId: string;
|
21
|
-
declare
|
22
|
-
declare requestTransactionHash: string;
|
21
|
+
declare sourceSender: string;
|
23
22
|
|
24
|
-
declare
|
23
|
+
declare submitChainId: number;
|
24
|
+
declare submitTransactionHash: string;
|
25
|
+
declare submitBlockNumber: number;
|
26
|
+
declare submitCreatedAt: Date;
|
25
27
|
|
26
28
|
declare sourceChainId: number;
|
29
|
+
declare sourceDsaId: string;
|
27
30
|
declare sourceTransactionHash: CreationOptional<string>;
|
28
31
|
declare sourceBlockNumber: CreationOptional<number>;
|
29
32
|
declare sourceStatus: CreationOptional<string>;
|
@@ -33,6 +36,7 @@ export class Transaction extends Model<InferAttributes<Transaction>, InferCreati
|
|
33
36
|
declare sourceDelayUntil: CreationOptional<Date>;
|
34
37
|
|
35
38
|
declare targetChainId: number;
|
39
|
+
declare targetDsaId: string;
|
36
40
|
declare targetTransactionHash: CreationOptional<string>;
|
37
41
|
declare targetBlockNumber: CreationOptional<number>;
|
38
42
|
declare targetStatus: CreationOptional<string>;
|
@@ -41,33 +45,18 @@ export class Transaction extends Model<InferAttributes<Transaction>, InferCreati
|
|
41
45
|
declare targetCreatedAt: CreationOptional<Date>;
|
42
46
|
declare targetDelayUntil: CreationOptional<Date>;
|
43
47
|
|
44
|
-
declare
|
45
|
-
actionId: string;
|
46
|
-
bridger: string;
|
47
|
-
metadata: string;
|
48
|
+
declare submitEvent: {
|
48
49
|
position: IPosition;
|
49
|
-
sourceChainId: number;
|
50
|
-
targetChainId: number;
|
51
|
-
};
|
52
|
-
declare requestSentEvent: CreationOptional<{
|
53
50
|
actionId: string;
|
54
|
-
|
55
|
-
|
56
|
-
|
51
|
+
actionIdHashHash: string;
|
52
|
+
sourceSender: string;
|
53
|
+
sourceDsaId: string;
|
54
|
+
targetDsaId: string;
|
57
55
|
sourceChainId: number;
|
58
56
|
targetChainId: number;
|
59
|
-
|
60
|
-
}>;
|
61
|
-
declare committedEvent: CreationOptional<{
|
62
|
-
actionId: string;
|
63
|
-
bridger: string;
|
57
|
+
vnonce: string;
|
64
58
|
metadata: string;
|
65
|
-
|
66
|
-
sourceChainId: number;
|
67
|
-
targetChainId: number;
|
68
|
-
requestTransactionHash: string;
|
69
|
-
}>;
|
70
|
-
declare completedEvent: CreationOptional<any>;
|
59
|
+
};
|
71
60
|
|
72
61
|
declare status: CreationOptional<string>;
|
73
62
|
|
@@ -82,19 +71,23 @@ Transaction.init({
|
|
82
71
|
primaryKey: true
|
83
72
|
},
|
84
73
|
|
85
|
-
requestTransactionHash: DataTypes.NUMBER,
|
86
|
-
requestBlockNumber: DataTypes.NUMBER,
|
87
|
-
|
88
74
|
transactionHash: DataTypes.STRING,
|
89
75
|
actionId: DataTypes.STRING,
|
90
|
-
|
76
|
+
vnonce: DataTypes.STRING,
|
77
|
+
sourceSender: DataTypes.STRING,
|
78
|
+
|
79
|
+
submitChainId: DataTypes.NUMBER,
|
80
|
+
submitTransactionHash: DataTypes.STRING,
|
81
|
+
submitBlockNumber: DataTypes.NUMBER,
|
82
|
+
submitCreatedAt: DataTypes.DATE,
|
91
83
|
|
92
84
|
sourceChainId: DataTypes.NUMBER,
|
85
|
+
sourceDsaId: DataTypes.STRING,
|
93
86
|
sourceTransactionHash: DataTypes.STRING,
|
94
87
|
sourceBlockNumber: DataTypes.NUMBER,
|
95
88
|
sourceStatus: {
|
96
89
|
type: DataTypes.STRING,
|
97
|
-
defaultValue: '
|
90
|
+
defaultValue: 'pending'
|
98
91
|
},
|
99
92
|
sourceErrors: {
|
100
93
|
type: DataTypes.JSON,
|
@@ -111,11 +104,12 @@ Transaction.init({
|
|
111
104
|
sourceDelayUntil: DataTypes.STRING,
|
112
105
|
|
113
106
|
targetChainId: DataTypes.NUMBER,
|
107
|
+
targetDsaId: DataTypes.STRING,
|
114
108
|
targetTransactionHash: DataTypes.STRING,
|
115
109
|
targetBlockNumber: DataTypes.NUMBER,
|
116
110
|
targetStatus: {
|
117
111
|
type: DataTypes.STRING,
|
118
|
-
defaultValue: '
|
112
|
+
defaultValue: 'pending'
|
119
113
|
},
|
120
114
|
targetErrors: {
|
121
115
|
type: DataTypes.JSON,
|
@@ -128,13 +122,10 @@ Transaction.init({
|
|
128
122
|
targetCreatedAt: DataTypes.DATE,
|
129
123
|
targetDelayUntil: DataTypes.DATE,
|
130
124
|
|
131
|
-
|
125
|
+
submitEvent: {
|
132
126
|
type: DataTypes.JSON,
|
133
127
|
allowNull: false
|
134
128
|
},
|
135
|
-
requestSentEvent: DataTypes.JSON,
|
136
|
-
committedEvent: DataTypes.JSON,
|
137
|
-
completedEvent: DataTypes.JSON,
|
138
129
|
|
139
130
|
status: {
|
140
131
|
type: DataTypes.STRING,
|
@@ -2,154 +2,154 @@ import abi from "@/abi";
|
|
2
2
|
import config from "@/config";
|
3
3
|
import { addresses, tokens } from "@/constants";
|
4
4
|
import { Transaction } from "@/db";
|
5
|
-
import { Erc20,
|
5
|
+
import { Erc20, InteropX } from "@/typechain";
|
6
6
|
import { ChainId } from "@/types";
|
7
7
|
import { getContract, getRpcProviderUrl, LiquidityError } from "@/utils";
|
8
8
|
import { BigNumber, ethers } from "ethers";
|
9
9
|
import { MetaTransaction, OperationType } from "ethers-multisend";
|
10
10
|
|
11
11
|
|
12
|
-
const getBridgeAmounts = async (user: string, tokens: string[], chainId: ChainId) => {
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
// const getBridgeAmounts = async (user: string, tokens: string[], chainId: ChainId) => {
|
13
|
+
// const sourceChainProvider = new ethers.providers.JsonRpcProvider(getRpcProviderUrl(chainId));
|
14
|
+
// const sourceWallet = new ethers.Wallet(config.privateKey, sourceChainProvider);
|
15
|
+
// const contractAddress = addresses[chainId].interopX;
|
16
|
+
// const contract = getContract<InteropX>(contractAddress, abi.interopX, sourceWallet);
|
17
|
+
// const data = await contract.getBridgeAmounts(user, tokens);
|
18
18
|
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
}
|
20
|
+
// return data.map((item, index) => ({
|
21
|
+
// token: tokens[index],
|
22
|
+
// deposit: item.deposit,
|
23
|
+
// withdraw: item.withdraw,
|
24
|
+
// }))
|
25
|
+
// }
|
26
26
|
|
27
27
|
export default async function (transaction: Transaction, type: 'source' | 'target') {
|
28
28
|
const transactions: MetaTransaction[] = [];
|
29
29
|
const logs: any[] = [];
|
30
30
|
|
31
|
-
if (transaction.actionId !== 'withdraw') {
|
32
|
-
|
33
|
-
}
|
31
|
+
// if (transaction.actionId !== 'withdraw') {
|
32
|
+
// throw new Error(`Invalid action: ${transaction.actionId}`)
|
33
|
+
// }
|
34
34
|
|
35
|
-
if (type !== 'source') {
|
36
|
-
|
37
|
-
}
|
35
|
+
// if (type !== 'source') {
|
36
|
+
// throw new Error(`[WIP] Type not supported: ${type}`)
|
37
|
+
// }
|
38
38
|
|
39
|
-
if (transaction.sourceStatus === 'pending') {
|
40
|
-
|
41
|
-
}
|
39
|
+
// if (transaction.sourceStatus === 'pending') {
|
40
|
+
// throw Error('Source transaction already processesing')
|
41
|
+
// }
|
42
42
|
|
43
|
-
if (transaction.sourceStatus === 'pending') {
|
44
|
-
|
45
|
-
}
|
43
|
+
// if (transaction.sourceStatus === 'pending') {
|
44
|
+
// throw Error('Source transaction already processed')
|
45
|
+
// }
|
46
46
|
|
47
|
-
if (!transaction.requestEvent) {
|
48
|
-
|
49
|
-
}
|
50
|
-
|
51
|
-
const { actionId, bridger, position, sourceChainId, targetChainId, metadata } = transaction.requestEvent;
|
52
|
-
|
53
|
-
const sourceChainProvider = new ethers.providers.JsonRpcProvider(getRpcProviderUrl(sourceChainId as ChainId));
|
54
|
-
const sourceWallet = new ethers.Wallet(config.privateKey, sourceChainProvider);
|
55
|
-
const contractAddress = addresses[sourceChainId].
|
56
|
-
const contract = getContract<
|
57
|
-
|
58
|
-
const sourceToken = tokens[sourceChainId].find(t => t.address.toLowerCase() === position.withdraw[0].sourceToken.toLowerCase());
|
59
|
-
|
60
|
-
if (!sourceToken) {
|
61
|
-
|
62
|
-
}
|
63
|
-
|
64
|
-
const targetToken = tokens[targetChainId].find(t => t.address.toLowerCase() === position.withdraw[0].targetToken.toLowerCase());
|
65
|
-
|
66
|
-
if (!targetToken) {
|
67
|
-
|
68
|
-
}
|
69
|
-
|
70
|
-
if (!sourceToken.aliases.some(alias => targetToken.aliases.includes(alias))) {
|
71
|
-
|
72
|
-
}
|
73
|
-
|
74
|
-
const networks: ChainId[] = [137, 43114];
|
75
|
-
const networkUserData = {}
|
76
|
-
for (const network of networks) {
|
77
|
-
|
78
|
-
}
|
79
|
-
|
80
|
-
for (const tokenSymbol of ["dai", "usdc", "usdt", "eth", "wbtc"]) {
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
}
|
120
|
-
|
121
|
-
let balance = BigNumber.from(0);
|
122
|
-
|
123
|
-
if (position.withdraw[0].sourceToken.toLowerCase() === '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE'.toLowerCase()) {
|
124
|
-
|
125
|
-
|
126
|
-
} else {
|
127
|
-
|
128
|
-
|
129
|
-
}
|
130
|
-
|
131
|
-
if (balance.lt(position.withdraw[0].amount)) {
|
132
|
-
|
133
|
-
}
|
134
|
-
|
135
|
-
|
136
|
-
const { data } = await contract.populateTransaction.withdrawRequested(
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
);
|
146
|
-
|
147
|
-
transactions.push({
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
});
|
47
|
+
// if (!transaction.requestEvent) {
|
48
|
+
// throw Error('Something went wrong, source transaction has no request event')
|
49
|
+
// }
|
50
|
+
|
51
|
+
// const { actionId, bridger, position, sourceChainId, targetChainId, metadata } = transaction.requestEvent;
|
52
|
+
|
53
|
+
// const sourceChainProvider = new ethers.providers.JsonRpcProvider(getRpcProviderUrl(sourceChainId as ChainId));
|
54
|
+
// const sourceWallet = new ethers.Wallet(config.privateKey, sourceChainProvider);
|
55
|
+
// const contractAddress = addresses[sourceChainId].interopX;
|
56
|
+
// const contract = getContract<InteropX>(contractAddress, abi.interopX, sourceWallet);
|
57
|
+
|
58
|
+
// const sourceToken = tokens[sourceChainId].find(t => t.address.toLowerCase() === position.withdraw[0].sourceToken.toLowerCase());
|
59
|
+
|
60
|
+
// if (!sourceToken) {
|
61
|
+
// throw Error('Source token not found')
|
62
|
+
// }
|
63
|
+
|
64
|
+
// const targetToken = tokens[targetChainId].find(t => t.address.toLowerCase() === position.withdraw[0].targetToken.toLowerCase());
|
65
|
+
|
66
|
+
// if (!targetToken) {
|
67
|
+
// throw Error('Target token not found')
|
68
|
+
// }
|
69
|
+
|
70
|
+
// if (!sourceToken.aliases.some(alias => targetToken.aliases.includes(alias))) {
|
71
|
+
// throw Error('Source and target token must be the same')
|
72
|
+
// }
|
73
|
+
|
74
|
+
// const networks: ChainId[] = [137, 43114];
|
75
|
+
// const networkUserData = {}
|
76
|
+
// for (const network of networks) {
|
77
|
+
// networkUserData[network] = await getBridgeAmounts(bridger, tokens[network].map(t => t.address), network)
|
78
|
+
// }
|
79
|
+
|
80
|
+
// for (const tokenSymbol of ["dai", "usdc", "usdt", "eth", "wbtc"]) {
|
81
|
+
// let totalDeposit = BigNumber.from(0)
|
82
|
+
// let totalWithdraw = BigNumber.from(0)
|
83
|
+
|
84
|
+
// for (const network of networks) {
|
85
|
+
// // on avax might we have 2 usdc/usdt tokens
|
86
|
+
// const matchedTokens = tokens[network].filter(t => t.aliases.includes(tokenSymbol));
|
87
|
+
|
88
|
+
// for (const matchedToken of matchedTokens) {
|
89
|
+
// const data = networkUserData[network].find(t => t.token.toLowerCase() === matchedToken.address.toLowerCase());
|
90
|
+
|
91
|
+
// if (data) {
|
92
|
+
// totalDeposit = totalDeposit.add(data.deposit)
|
93
|
+
// totalWithdraw = totalWithdraw.add(data.withdraw)
|
94
|
+
// }
|
95
|
+
// }
|
96
|
+
|
97
|
+
// // on Mainent add weth too
|
98
|
+
// if (tokenSymbol === "eth" && network === 1) {
|
99
|
+
// const weth = tokens[1].find(t => t.symbol === 'WETH');
|
100
|
+
|
101
|
+
// if (weth) {
|
102
|
+
// const data = networkUserData[1].find(t => t.token.toLowerCase() === weth.address.toLowerCase());
|
103
|
+
|
104
|
+
// if (data) {
|
105
|
+
// totalDeposit = totalDeposit.add(data.deposit)
|
106
|
+
// totalWithdraw = totalWithdraw.add(data.withdraw)
|
107
|
+
// }
|
108
|
+
// }
|
109
|
+
// }
|
110
|
+
// }
|
111
|
+
|
112
|
+
// if (totalWithdraw.gt(totalDeposit)) {
|
113
|
+
// throw Error(`if withdraw > deposit, user has debt and we can't process the withdraw and reject it`)
|
114
|
+
// }
|
115
|
+
|
116
|
+
// if (totalWithdraw.lt(totalDeposit)) {
|
117
|
+
// throw Error('Something went wrong')
|
118
|
+
// }
|
119
|
+
// }
|
120
|
+
|
121
|
+
// let balance = BigNumber.from(0);
|
122
|
+
|
123
|
+
// if (position.withdraw[0].sourceToken.toLowerCase() === '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE'.toLowerCase()) {
|
124
|
+
// balance = await sourceChainProvider.getBalance(bridger);
|
125
|
+
|
126
|
+
// } else {
|
127
|
+
// const erc20 = getContract<Erc20>(position.withdraw[0].sourceToken, abi.erc20, sourceChainProvider);
|
128
|
+
// balance = await erc20.balanceOf(addresses[sourceChainId].gnosisSafe);
|
129
|
+
// }
|
130
|
+
|
131
|
+
// if (balance.lt(position.withdraw[0].amount)) {
|
132
|
+
// throw new LiquidityError()
|
133
|
+
// }
|
134
|
+
|
135
|
+
|
136
|
+
// const { data } = await contract.populateTransaction.withdrawRequested(
|
137
|
+
// actionId,
|
138
|
+
// bridger,
|
139
|
+
// position.withdraw[0].sourceToken,
|
140
|
+
// position.withdraw[0].targetToken,
|
141
|
+
// position.withdraw[0].amount,
|
142
|
+
// targetChainId,
|
143
|
+
// transaction.requestTransactionHash,
|
144
|
+
// metadata,
|
145
|
+
// );
|
146
|
+
|
147
|
+
// transactions.push({
|
148
|
+
// to: contractAddress,
|
149
|
+
// data: data!,
|
150
|
+
// value: '0',
|
151
|
+
// operation: OperationType.Call,
|
152
|
+
// });
|
153
153
|
|
154
154
|
return { transactions, logs }
|
155
155
|
}
|
package/src/tasks/{InteropXContract/SyncBridgeRequestEvents.ts → InteropX/SyncLogSubmitEvents.ts}
RENAMED
@@ -7,17 +7,17 @@ import { generateInteropTransactionHash, getContract, getRpcProviderUrl } from "
|
|
7
7
|
import { addresses } from "@/constants";
|
8
8
|
import { ChainId } from "@/types";
|
9
9
|
import config from "@/config";
|
10
|
-
import {
|
10
|
+
import { InteropX } from "@/typechain";
|
11
11
|
|
12
|
-
class
|
12
|
+
class SyncLogSubmitEvents extends BaseTask {
|
13
13
|
contractAddress: string;
|
14
14
|
provider: ethers.providers.JsonRpcProvider;
|
15
|
-
contract:
|
15
|
+
contract: InteropX;
|
16
16
|
chainId: ChainId;
|
17
17
|
|
18
18
|
constructor({ chainId }: { chainId: ChainId }) {
|
19
19
|
super({
|
20
|
-
logger: new Logger("
|
20
|
+
logger: new Logger("InteropX::SyncLogSubmitEvents"),
|
21
21
|
})
|
22
22
|
this.chainId = chainId;
|
23
23
|
}
|
@@ -26,7 +26,7 @@ class SyncBridgeRequestEvents extends BaseTask {
|
|
26
26
|
const currentBlock = await this.provider.getBlockNumber();
|
27
27
|
|
28
28
|
const events = await this.contract.queryFilter(
|
29
|
-
this.contract.filters.
|
29
|
+
this.contract.filters.LogSubmit(),
|
30
30
|
currentBlock - 2000,
|
31
31
|
currentBlock,
|
32
32
|
);
|
@@ -40,14 +40,28 @@ class SyncBridgeRequestEvents extends BaseTask {
|
|
40
40
|
continue;
|
41
41
|
}
|
42
42
|
|
43
|
-
const {
|
43
|
+
const {
|
44
|
+
position,
|
45
|
+
actionId,
|
46
|
+
actionIdHashHash,
|
47
|
+
sourceSender,
|
48
|
+
sourceDsaId,
|
49
|
+
targetDsaId,
|
50
|
+
sourceChainId,
|
51
|
+
targetChainId,
|
52
|
+
vnonce,
|
53
|
+
metadata,
|
54
|
+
|
55
|
+
} = event.args;
|
44
56
|
|
45
57
|
const uniqueIdentifier = {
|
46
58
|
actionId,
|
47
|
-
|
48
|
-
|
59
|
+
vnonce: vnonce.toString(),
|
60
|
+
sourceSender: sourceSender.toString(),
|
49
61
|
sourceChainId: sourceChainId.toNumber(),
|
50
62
|
targetChainId: targetChainId.toNumber(),
|
63
|
+
sourceDsaId: sourceDsaId.toString(),
|
64
|
+
targetDsaId: targetDsaId.toString(),
|
51
65
|
}
|
52
66
|
|
53
67
|
let transactionHash = generateInteropTransactionHash(uniqueIdentifier);
|
@@ -61,10 +75,14 @@ class SyncBridgeRequestEvents extends BaseTask {
|
|
61
75
|
await Transaction.create({
|
62
76
|
transactionHash,
|
63
77
|
...uniqueIdentifier,
|
64
|
-
|
65
|
-
|
78
|
+
submitChainId: this.chainId,
|
79
|
+
submitTransactionHash: event.transactionHash,
|
80
|
+
submitBlockNumber: event.blockNumber,
|
81
|
+
submitCreatedAt: new Date(),
|
82
|
+
submitEvent: {
|
66
83
|
actionId,
|
67
|
-
|
84
|
+
actionIdHashHash,
|
85
|
+
vnonce: vnonce.toString(),
|
68
86
|
position: {
|
69
87
|
withdraw: position.withdraw.map((v) => ({
|
70
88
|
sourceToken: v.sourceToken,
|
@@ -79,12 +97,15 @@ class SyncBridgeRequestEvents extends BaseTask {
|
|
79
97
|
},
|
80
98
|
sourceChainId: sourceChainId.toNumber(),
|
81
99
|
targetChainId: targetChainId.toNumber(),
|
100
|
+
sourceSender,
|
101
|
+
sourceDsaId: sourceDsaId.toString(),
|
102
|
+
targetDsaId: targetDsaId.toString(),
|
82
103
|
metadata,
|
83
104
|
}
|
84
105
|
})
|
85
106
|
|
86
107
|
this.logger.info(
|
87
|
-
`New
|
108
|
+
`New InteropX tranaction: ${transactionHash} `
|
88
109
|
);
|
89
110
|
} catch (error) {
|
90
111
|
this.logger.error(error);
|
@@ -96,15 +117,15 @@ class SyncBridgeRequestEvents extends BaseTask {
|
|
96
117
|
}
|
97
118
|
|
98
119
|
async start(): Promise<void> {
|
99
|
-
this.contractAddress = addresses[this.chainId].
|
120
|
+
this.contractAddress = addresses[this.chainId].interopX;
|
100
121
|
|
101
122
|
this.provider = new ethers.providers.JsonRpcProvider(
|
102
123
|
getRpcProviderUrl(this.chainId)
|
103
124
|
);
|
104
125
|
|
105
|
-
this.contract = getContract<
|
126
|
+
this.contract = getContract<InteropX>(
|
106
127
|
this.contractAddress,
|
107
|
-
abi.
|
128
|
+
abi.interopX,
|
108
129
|
new ethers.Wallet(config.privateKey!, this.provider)
|
109
130
|
);
|
110
131
|
|
@@ -112,4 +133,4 @@ class SyncBridgeRequestEvents extends BaseTask {
|
|
112
133
|
}
|
113
134
|
}
|
114
135
|
|
115
|
-
export default
|
136
|
+
export default SyncLogSubmitEvents;
|
@@ -25,11 +25,11 @@ class SyncTransactionStatusTask extends BaseTask {
|
|
25
25
|
|
26
26
|
const transaction = await Transaction.findOne({
|
27
27
|
where: {
|
28
|
-
|
29
|
-
[Op.
|
28
|
+
sourceStatus: {
|
29
|
+
[Op.notIn] : ['success', 'failed'],
|
30
30
|
},
|
31
31
|
sourceCreatedAt: {
|
32
|
-
[Op.gte]: new Date(Date.now() -
|
32
|
+
[Op.gte]: new Date(Date.now() - 15 * 60 * 1000),
|
33
33
|
},
|
34
34
|
}
|
35
35
|
})
|
package/src/tasks/index.ts
CHANGED
@@ -5,10 +5,8 @@ import SyncTransactionStatusTask from "./Transactions/SyncTransactionStatusTask"
|
|
5
5
|
|
6
6
|
import AutoUpdateTask from "./AutoUpdateTask";
|
7
7
|
|
8
|
-
import SyncBridgeRequestEvents from "./
|
9
|
-
import
|
10
|
-
import SyncBridgeRequestSentEvents from "./InteropXContract/SyncBridgeRequestSentEvents";
|
11
|
-
import SyncBridgeCommittedEvents from "./InteropXContract/SyncBridgeCommittedEvents";
|
8
|
+
import SyncBridgeRequestEvents from "./InteropX/SyncLogSubmitEvents";
|
9
|
+
import SyncLogSubmitEvents from "./InteropX/SyncLogSubmitEvents";
|
12
10
|
|
13
11
|
export class Tasks {
|
14
12
|
|
@@ -16,19 +14,9 @@ export class Tasks {
|
|
16
14
|
// new SyncTransactionStatusTask(),
|
17
15
|
new AutoUpdateTask(),
|
18
16
|
|
19
|
-
//
|
20
|
-
|
21
|
-
new
|
22
|
-
new SyncBridgeRequestEvents({ chainId: 43114 }),
|
23
|
-
|
24
|
-
new SyncBridgeRequestSentEvents({ chainId: 137 }),
|
25
|
-
new SyncBridgeRequestSentEvents({ chainId: 43114 }),
|
26
|
-
|
27
|
-
new SyncBridgeCommittedEvents({ chainId: 137 }),
|
28
|
-
new SyncBridgeCommittedEvents({ chainId: 43114 }),
|
29
|
-
|
30
|
-
new ProccessBridgeRequestEvents({ chainId: 137 }),
|
31
|
-
new ProccessBridgeRequestEvents({ chainId: 43114 }),
|
17
|
+
// InteropX
|
18
|
+
new SyncLogSubmitEvents({ chainId: 137 }),
|
19
|
+
new SyncLogSubmitEvents({ chainId: 43114 }),
|
32
20
|
];
|
33
21
|
|
34
22
|
async start() {
|