@instadapp/interop-x 0.0.0-dev.20e87fa → 0.0.0-dev.2187d72
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 +8 -1
- package/dist/src/abi/aaveV2Resolver.json +832 -0
- package/dist/src/abi/balanceResolver.json +211 -0
- package/dist/src/abi/index.js +4 -0
- package/dist/src/api/index.js +7 -0
- package/dist/src/constants/addresses.js +5 -1
- package/dist/src/constants/capPerChain.js +8 -0
- package/dist/src/constants/index.js +2 -0
- package/dist/src/constants/tokens.js +44 -44
- package/dist/src/constants/wrappedNativeToken.js +8 -0
- package/dist/src/crons/index.js +3 -0
- package/dist/src/crons/prices.js +16 -0
- package/dist/src/db/models/transaction.js +4 -0
- package/dist/src/errors/index.js +30 -0
- package/dist/src/gnosis/actions/aaveV2/source.js +2 -1
- package/dist/src/gnosis/actions/aaveV2/target.js +3 -2
- package/dist/src/index.js +2 -1
- package/dist/src/providers/index.js +17 -0
- package/dist/src/providers/retry-provider.js +45 -0
- package/dist/src/services/Prices.js +74 -0
- package/dist/src/services/index.js +8 -0
- package/dist/src/tasks/InteropX/{ProcessSubmitSubmitEvents.js → ProcessSubmitEvents.js} +95 -8
- package/dist/src/tasks/InteropX/ProcessValidateEvents.js +27 -4
- package/dist/src/tasks/InteropX/SyncLogExecuteEvents.js +113 -0
- package/dist/src/tasks/InteropX/SyncLogSubmitEvents.js +2 -1
- package/dist/src/tasks/InteropX/SyncLogValidateEvents.js +5 -4
- package/dist/src/tasks/index.js +7 -5
- package/dist/src/typechain/AaveV2Resolver.js +2 -0
- package/dist/src/typechain/BalanceResolver.js +2 -0
- package/dist/src/typechain/factories/AaveV2Resolver__factory.js +1191 -0
- package/dist/src/typechain/factories/BalanceResolver__factory.js +228 -0
- package/dist/src/typechain/factories/index.js +5 -1
- package/dist/src/typechain/index.js +5 -1
- package/dist/src/utils/async.js +18 -0
- package/dist/src/utils/dsa.js +24 -0
- package/dist/src/utils/formatting.js +67 -0
- package/dist/src/utils/gnosis.js +77 -0
- package/dist/src/utils/http.js +10 -0
- package/dist/src/utils/index.js +22 -220
- package/dist/src/utils/interop.js +16 -0
- package/dist/src/utils/tokens.js +22 -0
- package/dist/src/utils/validate.js +111 -0
- package/dist/src/utils/web3.js +93 -0
- package/package.json +8 -1
- package/src/abi/aaveV2Resolver.json +832 -0
- package/src/abi/balanceResolver.json +211 -0
- package/src/abi/index.ts +4 -0
- package/src/api/index.ts +8 -0
- package/src/constants/addresses.ts +16 -2
- package/src/constants/capPerChain.ts +5 -0
- package/src/constants/index.ts +2 -0
- package/src/constants/tokens.ts +44 -44
- package/src/constants/wrappedNativeToken.ts +5 -0
- package/src/crons/index.ts +1 -0
- package/src/crons/prices.ts +12 -0
- package/src/db/models/transaction.ts +21 -0
- package/src/errors/index.ts +26 -0
- package/src/gnosis/actions/aaveV2/source.ts +2 -1
- package/src/gnosis/actions/aaveV2/target.ts +4 -2
- package/src/index.ts +1 -0
- package/src/providers/index.ts +1 -0
- package/src/providers/retry-provider.ts +51 -0
- package/src/services/Prices.ts +89 -0
- package/src/services/index.ts +1 -0
- package/src/tasks/InteropX/{ProcessSubmitSubmitEvents.ts → ProcessSubmitEvents.ts} +120 -14
- package/src/tasks/InteropX/ProcessValidateEvents.ts +38 -12
- package/src/tasks/InteropX/SyncLogExecuteEvents.ts +161 -0
- package/src/tasks/InteropX/SyncLogSubmitEvents.ts +5 -6
- package/src/tasks/InteropX/SyncLogValidateEvents.ts +8 -9
- package/src/tasks/index.ts +8 -5
- package/src/typechain/AaveV2Resolver.ts +1017 -0
- package/src/typechain/BalanceResolver.ts +266 -0
- package/src/typechain/factories/AaveV2Resolver__factory.ts +1198 -0
- package/src/typechain/factories/BalanceResolver__factory.ts +235 -0
- package/src/typechain/factories/index.ts +2 -0
- package/src/typechain/index.ts +4 -0
- package/src/utils/async.ts +22 -0
- package/src/utils/dsa.ts +30 -0
- package/src/utils/formatting.ts +68 -0
- package/src/utils/gnosis.ts +155 -0
- package/src/utils/http.ts +6 -0
- package/src/utils/index.ts +9 -365
- package/src/utils/interop.ts +28 -0
- package/src/utils/tokens.ts +21 -0
- package/src/utils/validate.ts +174 -0
- package/src/utils/web3.ts +132 -0
@@ -0,0 +1,211 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"inputs": [
|
4
|
+
{
|
5
|
+
"internalType": "address",
|
6
|
+
"name": "_wnativeToken",
|
7
|
+
"type": "address"
|
8
|
+
}
|
9
|
+
],
|
10
|
+
"stateMutability": "nonpayable",
|
11
|
+
"type": "constructor"
|
12
|
+
},
|
13
|
+
{
|
14
|
+
"inputs": [
|
15
|
+
{
|
16
|
+
"components": [
|
17
|
+
{
|
18
|
+
"components": [
|
19
|
+
{
|
20
|
+
"internalType": "address",
|
21
|
+
"name": "sourceToken",
|
22
|
+
"type": "address"
|
23
|
+
},
|
24
|
+
{
|
25
|
+
"internalType": "address",
|
26
|
+
"name": "targetToken",
|
27
|
+
"type": "address"
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"internalType": "uint256",
|
31
|
+
"name": "amount",
|
32
|
+
"type": "uint256"
|
33
|
+
}
|
34
|
+
],
|
35
|
+
"internalType": "struct Variables.TokenInfo[]",
|
36
|
+
"name": "supply",
|
37
|
+
"type": "tuple[]"
|
38
|
+
},
|
39
|
+
{
|
40
|
+
"components": [
|
41
|
+
{
|
42
|
+
"internalType": "address",
|
43
|
+
"name": "sourceToken",
|
44
|
+
"type": "address"
|
45
|
+
},
|
46
|
+
{
|
47
|
+
"internalType": "address",
|
48
|
+
"name": "targetToken",
|
49
|
+
"type": "address"
|
50
|
+
},
|
51
|
+
{
|
52
|
+
"internalType": "uint256",
|
53
|
+
"name": "amount",
|
54
|
+
"type": "uint256"
|
55
|
+
}
|
56
|
+
],
|
57
|
+
"internalType": "struct Variables.TokenInfo[]",
|
58
|
+
"name": "withdraw",
|
59
|
+
"type": "tuple[]"
|
60
|
+
}
|
61
|
+
],
|
62
|
+
"internalType": "struct Variables.Position",
|
63
|
+
"name": "position",
|
64
|
+
"type": "tuple"
|
65
|
+
},
|
66
|
+
{
|
67
|
+
"internalType": "address",
|
68
|
+
"name": "liquidityContract",
|
69
|
+
"type": "address"
|
70
|
+
},
|
71
|
+
{
|
72
|
+
"internalType": "bool",
|
73
|
+
"name": "isSupply",
|
74
|
+
"type": "bool"
|
75
|
+
},
|
76
|
+
{
|
77
|
+
"internalType": "bool",
|
78
|
+
"name": "isTargetToken",
|
79
|
+
"type": "bool"
|
80
|
+
}
|
81
|
+
],
|
82
|
+
"name": "checkLiquidity",
|
83
|
+
"outputs": [
|
84
|
+
{
|
85
|
+
"components": [
|
86
|
+
{
|
87
|
+
"internalType": "bool",
|
88
|
+
"name": "isOk",
|
89
|
+
"type": "bool"
|
90
|
+
},
|
91
|
+
{
|
92
|
+
"components": [
|
93
|
+
{
|
94
|
+
"internalType": "address",
|
95
|
+
"name": "token",
|
96
|
+
"type": "address"
|
97
|
+
},
|
98
|
+
{
|
99
|
+
"internalType": "uint256",
|
100
|
+
"name": "liquidityAvailable",
|
101
|
+
"type": "uint256"
|
102
|
+
},
|
103
|
+
{
|
104
|
+
"internalType": "uint256",
|
105
|
+
"name": "liquidityShort",
|
106
|
+
"type": "uint256"
|
107
|
+
}
|
108
|
+
],
|
109
|
+
"internalType": "struct Helpers.LiquidityData[]",
|
110
|
+
"name": "supply",
|
111
|
+
"type": "tuple[]"
|
112
|
+
},
|
113
|
+
{
|
114
|
+
"components": [
|
115
|
+
{
|
116
|
+
"internalType": "address",
|
117
|
+
"name": "token",
|
118
|
+
"type": "address"
|
119
|
+
},
|
120
|
+
{
|
121
|
+
"internalType": "uint256",
|
122
|
+
"name": "liquidityAvailable",
|
123
|
+
"type": "uint256"
|
124
|
+
},
|
125
|
+
{
|
126
|
+
"internalType": "uint256",
|
127
|
+
"name": "liquidityShort",
|
128
|
+
"type": "uint256"
|
129
|
+
}
|
130
|
+
],
|
131
|
+
"internalType": "struct Helpers.LiquidityData[]",
|
132
|
+
"name": "withdraw",
|
133
|
+
"type": "tuple[]"
|
134
|
+
}
|
135
|
+
],
|
136
|
+
"internalType": "struct Helpers.PositionData",
|
137
|
+
"name": "p",
|
138
|
+
"type": "tuple"
|
139
|
+
}
|
140
|
+
],
|
141
|
+
"stateMutability": "view",
|
142
|
+
"type": "function"
|
143
|
+
},
|
144
|
+
{
|
145
|
+
"inputs": [
|
146
|
+
{
|
147
|
+
"internalType": "address[]",
|
148
|
+
"name": "tokens",
|
149
|
+
"type": "address[]"
|
150
|
+
},
|
151
|
+
{
|
152
|
+
"internalType": "address",
|
153
|
+
"name": "liquidityContract",
|
154
|
+
"type": "address"
|
155
|
+
}
|
156
|
+
],
|
157
|
+
"name": "getLiquidity",
|
158
|
+
"outputs": [
|
159
|
+
{
|
160
|
+
"components": [
|
161
|
+
{
|
162
|
+
"internalType": "address",
|
163
|
+
"name": "token",
|
164
|
+
"type": "address"
|
165
|
+
},
|
166
|
+
{
|
167
|
+
"internalType": "uint256",
|
168
|
+
"name": "liquidityAvailable",
|
169
|
+
"type": "uint256"
|
170
|
+
},
|
171
|
+
{
|
172
|
+
"internalType": "uint256",
|
173
|
+
"name": "liquidityShort",
|
174
|
+
"type": "uint256"
|
175
|
+
}
|
176
|
+
],
|
177
|
+
"internalType": "struct Helpers.LiquidityData[]",
|
178
|
+
"name": "l",
|
179
|
+
"type": "tuple[]"
|
180
|
+
}
|
181
|
+
],
|
182
|
+
"stateMutability": "view",
|
183
|
+
"type": "function"
|
184
|
+
},
|
185
|
+
{
|
186
|
+
"inputs": [],
|
187
|
+
"name": "nativeToken",
|
188
|
+
"outputs": [
|
189
|
+
{
|
190
|
+
"internalType": "address",
|
191
|
+
"name": "",
|
192
|
+
"type": "address"
|
193
|
+
}
|
194
|
+
],
|
195
|
+
"stateMutability": "view",
|
196
|
+
"type": "function"
|
197
|
+
},
|
198
|
+
{
|
199
|
+
"inputs": [],
|
200
|
+
"name": "wnativeToken",
|
201
|
+
"outputs": [
|
202
|
+
{
|
203
|
+
"internalType": "address",
|
204
|
+
"name": "",
|
205
|
+
"type": "address"
|
206
|
+
}
|
207
|
+
],
|
208
|
+
"stateMutability": "view",
|
209
|
+
"type": "function"
|
210
|
+
}
|
211
|
+
]
|
package/dist/src/abi/index.js
CHANGED
@@ -8,10 +8,14 @@ const erc20_json_1 = __importDefault(require("./erc20.json"));
|
|
8
8
|
const interopX_json_1 = __importDefault(require("./interopX.json"));
|
9
9
|
const connectors_1 = require("./connectors");
|
10
10
|
const instList_json_1 = __importDefault(require("./instList.json"));
|
11
|
+
const balanceResolver_json_1 = __importDefault(require("./balanceResolver.json"));
|
12
|
+
const aaveV2Resolver_json_1 = __importDefault(require("./aaveV2Resolver.json"));
|
11
13
|
exports.default = {
|
12
14
|
gnosisSafe: gnosisSafe_json_1.default,
|
13
15
|
erc20: erc20_json_1.default,
|
14
16
|
interopX: interopX_json_1.default,
|
15
17
|
connectors: connectors_1.connectors,
|
16
18
|
instList: instList_json_1.default,
|
19
|
+
balanceResolver: balanceResolver_json_1.default,
|
20
|
+
aaveV2Resolver: aaveV2Resolver_json_1.default,
|
17
21
|
};
|
package/dist/src/api/index.js
CHANGED
@@ -25,6 +25,13 @@ const startApiServer = async () => {
|
|
25
25
|
]
|
26
26
|
});
|
27
27
|
});
|
28
|
+
server.get('/transactions/:transaction', async (req) => {
|
29
|
+
return await db_1.Transaction.findOne({
|
30
|
+
where: {
|
31
|
+
transactionHash: req.params.transaction
|
32
|
+
}
|
33
|
+
});
|
34
|
+
});
|
28
35
|
await server.listen(PORT, HOST);
|
29
36
|
logger.log(`RPC Server listening at http://${HOST}:${PORT}`);
|
30
37
|
}
|
@@ -8,12 +8,16 @@ exports.addresses = {
|
|
8
8
|
interopX: '0xDB6083df37C5F224a3dF84A4B5f9fB60b6c8670a',
|
9
9
|
dsaAddress: '0x9Fbd453a8e7a158510fBae5D9935958507cf4b19',
|
10
10
|
instList: "0x839c2D3aDe63DF5b0b8F3E57D5e145057Ab41556",
|
11
|
+
aaveResolver: "0x0731c1d0154C2bE74d50e2083Df10aa531AAbb10",
|
12
|
+
balanceResolver: "0xecc3991846bB21717B95A593Fd86C5930A491F95",
|
11
13
|
},
|
12
14
|
43114: {
|
13
15
|
gnosisSafe: '0x31d7a5194Fe60AC209Cf1Ce2d539C9A60662Ed6b',
|
14
16
|
multisend: '0x998739BFdAAdde7C933B942a68053933098f9EDa',
|
15
17
|
interopX: '0xA82A87096709E3D8648c9d9a22f31133bC4B6d32',
|
16
|
-
dsaAddress: '
|
18
|
+
dsaAddress: '0x995e67a652d2be45a8bff438b3dfac66dfff1c46',
|
17
19
|
instList: "0x9926955e0Dd681Dc303370C52f4Ad0a4dd061687",
|
20
|
+
aaveResolver: "0x7C5C59944263311a1e350E3B871B0d1d8E9A513E",
|
21
|
+
balanceResolver: "0xD45dFA34cEeAB567208041331F5ed9916C23b1E8",
|
18
22
|
}
|
19
23
|
};
|
@@ -17,3 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./addresses"), exports);
|
18
18
|
__exportStar(require("./tokens"), exports);
|
19
19
|
__exportStar(require("./blockConfirmations"), exports);
|
20
|
+
__exportStar(require("./wrappedNativeToken"), exports);
|
21
|
+
__exportStar(require("./capPerChain"), exports);
|
@@ -2,50 +2,50 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.tokens = void 0;
|
4
4
|
exports.tokens = {
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
5
|
+
1: [
|
6
|
+
{
|
7
|
+
aliases: ['eth'],
|
8
|
+
symbol: "ETH",
|
9
|
+
name: "Ethereum",
|
10
|
+
address: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
|
11
|
+
decimals: 18,
|
12
|
+
},
|
13
|
+
{
|
14
|
+
aliases: ['weth'],
|
15
|
+
symbol: "WETH",
|
16
|
+
name: "Wrapped Ethereum",
|
17
|
+
address: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
18
|
+
decimals: 18,
|
19
|
+
},
|
20
|
+
{
|
21
|
+
aliases: ['dai'],
|
22
|
+
symbol: "DAI",
|
23
|
+
name: "DAI Stable",
|
24
|
+
address: "0x6B175474E89094C44Da98b954EedeAC495271d0F",
|
25
|
+
decimals: 18,
|
26
|
+
},
|
27
|
+
{
|
28
|
+
aliases: ['usdc'],
|
29
|
+
symbol: "USDC",
|
30
|
+
name: "USD Coin",
|
31
|
+
address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
32
|
+
decimals: 6,
|
33
|
+
},
|
34
|
+
{
|
35
|
+
aliases: ['usdt'],
|
36
|
+
symbol: "USDT",
|
37
|
+
name: "Tether USD Coin",
|
38
|
+
address: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
|
39
|
+
decimals: 6,
|
40
|
+
},
|
41
|
+
{
|
42
|
+
aliases: ['wbtc'],
|
43
|
+
symbol: "WBTC",
|
44
|
+
name: "Wrapped BTC",
|
45
|
+
address: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
|
46
|
+
decimals: 8,
|
47
|
+
},
|
48
|
+
],
|
49
49
|
137: [
|
50
50
|
{
|
51
51
|
aliases: ['eth', 'weth'],
|
@@ -0,0 +1,8 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.wrappedNativeToken = void 0;
|
4
|
+
exports.wrappedNativeToken = {
|
5
|
+
"1": '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
|
6
|
+
"137": '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270',
|
7
|
+
"43114": '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7'
|
8
|
+
};
|
@@ -0,0 +1,16 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const services_1 = require("@/services");
|
7
|
+
const node_cron_1 = __importDefault(require("node-cron"));
|
8
|
+
services_1.Prices.fetch().catch(console.log);
|
9
|
+
node_cron_1.default.schedule(`* * * * *`, async () => {
|
10
|
+
try {
|
11
|
+
await services_1.Prices.fetch();
|
12
|
+
}
|
13
|
+
catch (error) {
|
14
|
+
console.log("Prices: ", error.message);
|
15
|
+
}
|
16
|
+
});
|
@@ -0,0 +1,30 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.LowLiquidityError = exports.InvalidChaindIdError = exports.LiquidityError = exports.UnsupportedChaindIdError = void 0;
|
4
|
+
class UnsupportedChaindIdError extends Error {
|
5
|
+
constructor(chainId) {
|
6
|
+
super(`Unsupported chainId: ${chainId}`);
|
7
|
+
}
|
8
|
+
}
|
9
|
+
exports.UnsupportedChaindIdError = UnsupportedChaindIdError;
|
10
|
+
class LiquidityError extends Error {
|
11
|
+
constructor(message) {
|
12
|
+
super(message || "Not enough liquidity");
|
13
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
14
|
+
}
|
15
|
+
}
|
16
|
+
exports.LiquidityError = LiquidityError;
|
17
|
+
class InvalidChaindIdError extends Error {
|
18
|
+
constructor(message) {
|
19
|
+
super(message || "Invalid chain id");
|
20
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
21
|
+
}
|
22
|
+
}
|
23
|
+
exports.InvalidChaindIdError = InvalidChaindIdError;
|
24
|
+
class LowLiquidityError extends Error {
|
25
|
+
constructor(message) {
|
26
|
+
super(message || "Low liquidity");
|
27
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
28
|
+
}
|
29
|
+
}
|
30
|
+
exports.LowLiquidityError = LowLiquidityError;
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const abi_1 = __importDefault(require("@/abi"));
|
7
7
|
const config_1 = __importDefault(require("@/config"));
|
8
8
|
const constants_1 = require("@/constants");
|
9
|
+
const providers_1 = require("@/providers");
|
9
10
|
const utils_1 = require("@/utils");
|
10
11
|
const ethers_1 = require("ethers");
|
11
12
|
const ethers_multisend_1 = require("ethers-multisend");
|
@@ -13,7 +14,7 @@ async function default_1(transaction) {
|
|
13
14
|
const transactions = [];
|
14
15
|
const logs = [];
|
15
16
|
const { position, actionId, actionIdHashHash, sourceSender, sourceDsaId, targetDsaId, sourceChainId, targetChainId, vnonce, metadata, } = transaction.submitEvent;
|
16
|
-
const sourceChainProvider = new
|
17
|
+
const sourceChainProvider = new providers_1.JsonRpcRetryProvider((0, utils_1.getRpcProviderUrl)(sourceChainId));
|
17
18
|
const sourceWallet = new ethers_1.ethers.Wallet(config_1.default.privateKey, sourceChainProvider);
|
18
19
|
const dsaAddress = constants_1.addresses[sourceChainId].dsaAddress;
|
19
20
|
const sourceUserAddress = Number(sourceDsaId) == 0 ? sourceSender : dsaAddress;
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const abi_1 = __importDefault(require("@/abi"));
|
7
7
|
const config_1 = __importDefault(require("@/config"));
|
8
8
|
const constants_1 = require("@/constants");
|
9
|
+
const providers_1 = require("@/providers");
|
9
10
|
const utils_1 = require("@/utils");
|
10
11
|
const ethers_1 = require("ethers");
|
11
12
|
const ethers_multisend_1 = require("ethers-multisend");
|
@@ -13,9 +14,9 @@ async function default_1(transaction) {
|
|
13
14
|
const transactions = [];
|
14
15
|
const logs = [];
|
15
16
|
const { sourceSpells, position, actionId, sourceSender, sourceDsaId, targetDsaId, sourceChainId, targetChainId, vnonce, metadata, } = transaction.validateEvent;
|
16
|
-
const targetChainProvider = new
|
17
|
+
const targetChainProvider = new providers_1.JsonRpcRetryProvider((0, utils_1.getRpcProviderUrl)(targetChainId));
|
17
18
|
const targetWallet = new ethers_1.ethers.Wallet(config_1.default.privateKey, targetChainProvider);
|
18
|
-
const targetInstListContract = (0, utils_1.getContract)(constants_1.addresses[targetChainId].instList, abi_1.default.instList);
|
19
|
+
const targetInstListContract = (0, utils_1.getContract)(constants_1.addresses[targetChainId].instList, abi_1.default.instList, targetChainProvider);
|
19
20
|
const targetDsaAddress = await targetInstListContract.accountAddr(targetDsaId);
|
20
21
|
const dsaAddress = constants_1.addresses[targetChainId].dsaAddress;
|
21
22
|
const interopAddress = constants_1.addresses[targetChainId].interopX;
|
package/dist/src/index.js
CHANGED
@@ -13,7 +13,7 @@ const package_json_1 = __importDefault(require("../package.json"));
|
|
13
13
|
dotenv_1.default.config();
|
14
14
|
const logger_1 = __importDefault(require("@/logger"));
|
15
15
|
const logger = new logger_1.default('Process');
|
16
|
-
const GIT_SHORT_HASH = '
|
16
|
+
const GIT_SHORT_HASH = '2187d72';
|
17
17
|
const printUsage = () => {
|
18
18
|
console.log();
|
19
19
|
console.log(`Interop X Node (v${package_json_1.default.version} - rev.${GIT_SHORT_HASH})`);
|
@@ -69,6 +69,7 @@ const net_1 = require("@/net");
|
|
69
69
|
const api_1 = require("@/api");
|
70
70
|
const db_1 = require("./db");
|
71
71
|
const utils_1 = require("./utils");
|
72
|
+
require("./crons");
|
72
73
|
async function main() {
|
73
74
|
(0, net_1.startPeer)({});
|
74
75
|
const tasks = new tasks_1.Tasks();
|
@@ -0,0 +1,17 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./retry-provider"), exports);
|
@@ -0,0 +1,45 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.JsonRpcRetryProvider = exports.retryOperation = exports.promiseTimeout = void 0;
|
7
|
+
const ethers_1 = require("ethers");
|
8
|
+
const waait_1 = __importDefault(require("waait"));
|
9
|
+
const bluebird_1 = __importDefault(require("bluebird"));
|
10
|
+
function promiseTimeout(ms, promise) {
|
11
|
+
return bluebird_1.default.resolve(promise).timeout(ms);
|
12
|
+
}
|
13
|
+
exports.promiseTimeout = promiseTimeout;
|
14
|
+
function retryOperation(retriesLeft, operation, options) {
|
15
|
+
return new Promise((resolve, reject) => {
|
16
|
+
const { timeouts } = options;
|
17
|
+
// Find the timeout for this specific iteration
|
18
|
+
const timeout = timeouts[timeouts.length - retriesLeft];
|
19
|
+
// Wrap the original operation in a timeout
|
20
|
+
const execution = promiseTimeout(timeout, operation());
|
21
|
+
// If the promise is successful, resolve it and bubble the result up
|
22
|
+
return execution.then(resolve).catch((reason) => {
|
23
|
+
// If there are any retries left, we call the same retryOperation function again,
|
24
|
+
// but decrementing the number of retries left by 1
|
25
|
+
if (retriesLeft - 1 > 0) {
|
26
|
+
// Delay the new attempt slightly
|
27
|
+
return (0, waait_1.default)(options.delay || 50)
|
28
|
+
.then(retryOperation.bind(null, retriesLeft - 1, operation, options))
|
29
|
+
.then(resolve)
|
30
|
+
.catch(reject);
|
31
|
+
}
|
32
|
+
// Reject (and bubble the result up) if there are no more retries
|
33
|
+
return reject(reason);
|
34
|
+
});
|
35
|
+
});
|
36
|
+
}
|
37
|
+
exports.retryOperation = retryOperation;
|
38
|
+
class JsonRpcRetryProvider extends ethers_1.ethers.providers.JsonRpcProvider {
|
39
|
+
perform(method, params) {
|
40
|
+
const timeouts = [5000, 10000];
|
41
|
+
const operation = () => super.perform(method, params);
|
42
|
+
return retryOperation(2, operation, { timeouts, delay: 50 });
|
43
|
+
}
|
44
|
+
}
|
45
|
+
exports.JsonRpcRetryProvider = JsonRpcRetryProvider;
|
@@ -0,0 +1,74 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const web3_utils_1 = __importDefault(require("web3-utils"));
|
7
|
+
const path_1 = __importDefault(require("path"));
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
9
|
+
const constants_1 = require("@/constants");
|
10
|
+
const expand_home_dir_1 = __importDefault(require("expand-home-dir"));
|
11
|
+
const config_1 = __importDefault(require("@/config"));
|
12
|
+
const utils_1 = require("@/utils");
|
13
|
+
const basePath = (0, expand_home_dir_1.default)(`~/.interop-x/data/${config_1.default.publicAddress}/${config_1.default.staging ? 'staging' : ''}`);
|
14
|
+
const mainnetPricesFilePath = path_1.default.resolve(basePath, "./mainnetPrices.json");
|
15
|
+
const networkTokenPricesFilePath = path_1.default.resolve(basePath, "./networkTokenPrices.json");
|
16
|
+
class Prices {
|
17
|
+
static async fetch() {
|
18
|
+
if (!fs_1.default.existsSync(mainnetPricesFilePath)) {
|
19
|
+
fs_1.default.writeFileSync(mainnetPricesFilePath, JSON.stringify({}));
|
20
|
+
}
|
21
|
+
if (!fs_1.default.existsSync(networkTokenPricesFilePath)) {
|
22
|
+
fs_1.default.writeFileSync(networkTokenPricesFilePath, JSON.stringify({}));
|
23
|
+
}
|
24
|
+
this.mainnetPrices = JSON.parse(fs_1.default.readFileSync(mainnetPricesFilePath, "utf8"));
|
25
|
+
this.networkTokenPrices = JSON.parse(fs_1.default.readFileSync(networkTokenPricesFilePath, "utf8"));
|
26
|
+
try {
|
27
|
+
const path = constants_1.tokens["1"]
|
28
|
+
.filter((a) => a.symbol !== "ETH")
|
29
|
+
.map((token) => token.address)
|
30
|
+
.join(",");
|
31
|
+
const [response, ethResponse, avaxResponse, polygonResponse] = await Promise.all([
|
32
|
+
utils_1.http.get("https://api.coingecko.com/api/v3/simple/token_price/ethereum", {
|
33
|
+
params: { contract_addresses: path, vs_currencies: "usd" },
|
34
|
+
}),
|
35
|
+
utils_1.http.get("https://api.coingecko.com/api/v3/simple/price", {
|
36
|
+
params: { ids: "ethereum", vs_currencies: "usd" },
|
37
|
+
}),
|
38
|
+
utils_1.http.get("https://api.coingecko.com/api/v3/simple/price", {
|
39
|
+
params: { ids: "avalanche-2", vs_currencies: "usd" },
|
40
|
+
}),
|
41
|
+
utils_1.http.get("https://api.coingecko.com/api/v3/simple/price", {
|
42
|
+
params: { ids: "matic-network", vs_currencies: "usd" },
|
43
|
+
}),
|
44
|
+
]);
|
45
|
+
this.networkTokenPrices = {
|
46
|
+
"1": ethResponse.data.ethereum.usd.toString(),
|
47
|
+
"137": polygonResponse.data["matic-network"].usd.toString(),
|
48
|
+
"43114": avaxResponse.data["avalanche-2"].usd.toString(),
|
49
|
+
};
|
50
|
+
const data = response.data;
|
51
|
+
for (const key in data) {
|
52
|
+
const _key = web3_utils_1.default.toChecksumAddress(key);
|
53
|
+
if (!data[key].usd)
|
54
|
+
continue;
|
55
|
+
this.mainnetPrices[_key] = data[key].usd.toString();
|
56
|
+
}
|
57
|
+
this.mainnetPrices["0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"] =
|
58
|
+
ethResponse.data.ethereum.usd.toString();
|
59
|
+
}
|
60
|
+
catch (error) { }
|
61
|
+
fs_1.default.writeFileSync(mainnetPricesFilePath, JSON.stringify(this.mainnetPrices));
|
62
|
+
fs_1.default.writeFileSync(networkTokenPricesFilePath, JSON.stringify(this.networkTokenPrices));
|
63
|
+
return this.mainnetPrices;
|
64
|
+
}
|
65
|
+
static getMainnetPrices() {
|
66
|
+
return this.mainnetPrices;
|
67
|
+
}
|
68
|
+
static getNetworkTokenPrices() {
|
69
|
+
return this.networkTokenPrices;
|
70
|
+
}
|
71
|
+
}
|
72
|
+
Prices.mainnetPrices = {};
|
73
|
+
Prices.networkTokenPrices = {};
|
74
|
+
exports.default = Prices;
|
@@ -0,0 +1,8 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.Prices = void 0;
|
7
|
+
var Prices_1 = require("./Prices");
|
8
|
+
Object.defineProperty(exports, "Prices", { enumerable: true, get: function () { return __importDefault(Prices_1).default; } });
|