@instadapp/interop-x 0.0.0-dev.80722d6 → 0.0.0-dev.b3789e6
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 +69 -0
- package/dist/{abi → src/abi}/erc20.json +0 -0
- package/dist/{abi → src/abi}/gnosisSafe.json +0 -0
- package/dist/{abi → src/abi}/index.js +0 -0
- package/dist/{abi → src/abi}/interopBridgeToken.json +0 -0
- package/dist/{abi → src/abi}/interopXGateway.json +0 -0
- package/dist/src/api/index.js +33 -0
- package/dist/{config → src/config}/index.js +0 -0
- package/dist/{constants → src/constants}/addresses.js +0 -0
- package/dist/{constants → src/constants}/index.js +0 -0
- package/dist/{constants → src/constants}/tokens.js +0 -0
- package/dist/{db → src/db}/index.js +0 -0
- package/dist/{db → src/db}/models/index.js +0 -0
- package/dist/{db → src/db}/models/transaction.js +1 -1
- package/dist/{db → src/db}/sequelize.js +0 -0
- package/dist/{index.js → src/index.js} +5 -0
- package/dist/{logger → src/logger}/index.js +0 -0
- package/dist/{net → src/net}/index.js +0 -0
- package/dist/{net → src/net}/peer/index.js +0 -0
- package/dist/{net → src/net}/pool/index.js +0 -0
- package/dist/{net → src/net}/protocol/dial/BaseDialProtocol.js +0 -0
- package/dist/{net → src/net}/protocol/dial/SignatureDialProtocol.js +0 -0
- package/dist/{net → src/net}/protocol/index.js +0 -0
- package/dist/{tasks → src/tasks}/BaseTask.js +0 -0
- package/dist/{tasks → src/tasks}/InteropXGateway/SyncDepositEvents.js +3 -16
- package/dist/{tasks → src/tasks}/index.js +0 -0
- package/dist/{typechain → src/typechain}/Erc20.js +0 -0
- package/dist/{typechain → src/typechain}/GnosisSafe.js +0 -0
- package/dist/{typechain → src/typechain}/InteropBridgeToken.js +0 -0
- package/dist/{typechain → src/typechain}/InteropXGateway.js +0 -0
- package/dist/{typechain → src/typechain}/common.js +0 -0
- package/dist/{typechain → src/typechain}/factories/Erc20__factory.js +0 -0
- package/dist/{typechain → src/typechain}/factories/GnosisSafe__factory.js +0 -0
- package/dist/{typechain → src/typechain}/factories/InteropBridgeToken__factory.js +0 -0
- package/dist/{typechain → src/typechain}/factories/InteropXGateway__factory.js +0 -0
- package/dist/{typechain → src/typechain}/factories/index.js +0 -0
- package/dist/{typechain → src/typechain}/index.js +0 -0
- package/dist/{types.js → src/types.js} +0 -0
- package/dist/{utils → src/utils}/index.js +1 -1
- package/package.json +5 -2
- package/src/api/index.ts +33 -0
- package/src/db/models/transaction.ts +2 -2
- package/src/index.ts +7 -0
- package/src/tasks/InteropXGateway/SyncDepositEvents.ts +2 -5
- package/src/utils/index.ts +2 -2
@@ -0,0 +1,69 @@
|
|
1
|
+
{
|
2
|
+
"name": "@instadapp/interop-x",
|
3
|
+
"version": "0.0.0-dev.b3789e6",
|
4
|
+
"license": "MIT",
|
5
|
+
"main": "dist/index.js",
|
6
|
+
"engines": {
|
7
|
+
"node": ">=16",
|
8
|
+
"yarn": "^1.22.0"
|
9
|
+
},
|
10
|
+
"scripts": {
|
11
|
+
"start": "yarn build && node bin/interop-x",
|
12
|
+
"build": "yarn generate-abi-types && export GIT_REF=$(git rev-parse --short HEAD) && rimraf ./dist && tsc -p tsconfig.json && replace-in-file '@GIT_SHORT_HASH@' $GIT_REF ./dist/**/*.js",
|
13
|
+
"dev": "yarn generate-abi-types && NODE_ENV=development nodemon",
|
14
|
+
"generate-abi-types": "typechain --target=ethers-v5 'src/abi/*.json' --out-dir 'src/typechain'",
|
15
|
+
"prepublishOnly": "yarn build"
|
16
|
+
},
|
17
|
+
"nodemonConfig": {
|
18
|
+
"watch": [
|
19
|
+
"src"
|
20
|
+
],
|
21
|
+
"ext": "ts",
|
22
|
+
"exec": "./node_modules/.bin/ts-node --files -r tsconfig-paths/register ./src/index.ts"
|
23
|
+
},
|
24
|
+
"dependencies": {
|
25
|
+
"@achingbrain/libp2p-gossipsub": "^0.12.2",
|
26
|
+
"axios": "^0.27.1",
|
27
|
+
"axios-retry": "^3.2.4",
|
28
|
+
"bignumber.js": "^9.0.2",
|
29
|
+
"chalk": "4.1.2",
|
30
|
+
"dotenv": "^16.0.0",
|
31
|
+
"ethereumjs-util": "^7.1.4",
|
32
|
+
"ethers": "^5.6.4",
|
33
|
+
"ethers-multisend": "^2.1.1",
|
34
|
+
"expand-home-dir": "^0.0.3",
|
35
|
+
"fastify": "^3.28.0",
|
36
|
+
"fastify-cors": "^6.0.3",
|
37
|
+
"libp2p": "^0.36.2",
|
38
|
+
"libp2p-bootstrap": "^0.14.0",
|
39
|
+
"libp2p-kad-dht": "^0.28.6",
|
40
|
+
"libp2p-mdns": "^0.18.0",
|
41
|
+
"libp2p-mplex": "^0.10.7",
|
42
|
+
"libp2p-noise": "^4.0.0",
|
43
|
+
"libp2p-pubsub-peer-discovery": "^4.0.0",
|
44
|
+
"libp2p-tcp": "^0.17.2",
|
45
|
+
"libp2p-websockets": "^0.16.2",
|
46
|
+
"luxon": "^2.3.2",
|
47
|
+
"module-alias": "^2.2.2",
|
48
|
+
"sequelize": "^6.19.0",
|
49
|
+
"sqlite3": "^5.0.5",
|
50
|
+
"waait": "^1.0.5"
|
51
|
+
},
|
52
|
+
"bin": {
|
53
|
+
"interop-x": "bin/interop-x",
|
54
|
+
"interopx": "bin/interop-x"
|
55
|
+
},
|
56
|
+
"devDependencies": {
|
57
|
+
"@typechain/ethers-v5": "^10.0.0",
|
58
|
+
"@types/bn.js": "^5.1.0",
|
59
|
+
"@types/fs-extra": "^9.0.13",
|
60
|
+
"@types/node": "^17.0.17",
|
61
|
+
"nodemon": "^2.0.15",
|
62
|
+
"replace-in-file": "^6.3.2",
|
63
|
+
"rimraf": "^3.0.2",
|
64
|
+
"ts-node": "^10.5.0",
|
65
|
+
"tsconfig-paths": "^3.12.0",
|
66
|
+
"typechain": "^8.0.0",
|
67
|
+
"typescript": "^4.5.5"
|
68
|
+
}
|
69
|
+
}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,33 @@
|
|
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.startApiServer = void 0;
|
7
|
+
const fastify_1 = __importDefault(require("fastify"));
|
8
|
+
const fastify_cors_1 = __importDefault(require("fastify-cors"));
|
9
|
+
const logger_1 = __importDefault(require("@/logger"));
|
10
|
+
const db_1 = require("@/db");
|
11
|
+
const logger = new logger_1.default("RPC");
|
12
|
+
const server = (0, fastify_1.default)({ logger: false });
|
13
|
+
server.register(fastify_cors_1.default, {});
|
14
|
+
server.get('/', async () => 'Interop X API');
|
15
|
+
const startApiServer = async () => {
|
16
|
+
const HOST = process.env.API_HOST || '0.0.0.0';
|
17
|
+
const PORT = process.env.API_PORT || '8080';
|
18
|
+
try {
|
19
|
+
server.get('/transactions', async (req) => {
|
20
|
+
return await db_1.Transaction.findAndCountAll({
|
21
|
+
limit: 20,
|
22
|
+
offset: 0,
|
23
|
+
});
|
24
|
+
});
|
25
|
+
await server.listen(PORT, HOST);
|
26
|
+
logger.log(`RPC Server listening at http://${HOST}:${PORT}`);
|
27
|
+
}
|
28
|
+
catch (err) {
|
29
|
+
logger.error(err);
|
30
|
+
process.exit(1);
|
31
|
+
}
|
32
|
+
};
|
33
|
+
exports.startApiServer = startApiServer;
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -13,7 +13,7 @@ Transaction.init({
|
|
13
13
|
primaryKey: true
|
14
14
|
},
|
15
15
|
transactionHash: sequelize_2.DataTypes.STRING,
|
16
|
-
|
16
|
+
action: sequelize_2.DataTypes.STRING,
|
17
17
|
from: sequelize_2.DataTypes.STRING,
|
18
18
|
to: sequelize_2.DataTypes.STRING,
|
19
19
|
sourceChainId: sequelize_2.DataTypes.NUMBER,
|
File without changes
|
@@ -9,6 +9,7 @@ module_alias_1.default.addAliases({
|
|
9
9
|
"@/logger": __dirname + "/logger",
|
10
10
|
"@/tasks": __dirname + "/tasks",
|
11
11
|
"@/utils": __dirname + "/utils",
|
12
|
+
"@/api": __dirname + "/api",
|
12
13
|
"@/net": __dirname + "/net",
|
13
14
|
"@/db": __dirname + "/db",
|
14
15
|
"@/config": __dirname + "/config",
|
@@ -21,6 +22,7 @@ module_alias_1.default.addAliases({
|
|
21
22
|
const assert_1 = __importDefault(require("assert"));
|
22
23
|
const dotenv_1 = __importDefault(require("dotenv"));
|
23
24
|
const ethers_1 = require("ethers");
|
25
|
+
const package_json_1 = __importDefault(require("../package.json"));
|
24
26
|
dotenv_1.default.config();
|
25
27
|
const logger_1 = __importDefault(require("@/logger"));
|
26
28
|
const logger = new logger_1.default('Process');
|
@@ -38,12 +40,15 @@ catch (e) {
|
|
38
40
|
logger.error('Invalid private key');
|
39
41
|
process.exit(1);
|
40
42
|
}
|
43
|
+
logger.debug(`Starting Interop X Node (v${package_json_1.default.version} - rev.b3789e6)`);
|
41
44
|
const tasks_1 = require("@/tasks");
|
42
45
|
const net_1 = require("@/net");
|
46
|
+
const api_1 = require("@/api");
|
43
47
|
async function main() {
|
44
48
|
(0, net_1.startPeer)({});
|
45
49
|
const tasks = new tasks_1.Tasks();
|
46
50
|
tasks.start();
|
51
|
+
(0, api_1.startApiServer)();
|
47
52
|
}
|
48
53
|
main()
|
49
54
|
.then(() => {
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -29,7 +29,7 @@ class SyncDepositEvents extends BaseTask_1.BaseTask {
|
|
29
29
|
}
|
30
30
|
const { sourceChainId, targetChainId, user, vnonce, amount, token } = event.args;
|
31
31
|
const uniqueIdentifier = {
|
32
|
-
|
32
|
+
action: 'deposit',
|
33
33
|
sourceTransactionHash: event.transactionHash,
|
34
34
|
sourceChainId: sourceChainId.toNumber(),
|
35
35
|
targetChainId: targetChainId.toNumber(),
|
@@ -38,27 +38,14 @@ class SyncDepositEvents extends BaseTask_1.BaseTask {
|
|
38
38
|
continue;
|
39
39
|
}
|
40
40
|
const tx = await event.getTransaction();
|
41
|
-
await db_1.Transaction.create({
|
42
|
-
transactionHash: (0, utils_1.generateInteropTransactionHash)(uniqueIdentifier),
|
43
|
-
type: 'deposit',
|
44
|
-
from: tx.from,
|
45
|
-
to: user,
|
46
|
-
sourceChainId: sourceChainId.toNumber(),
|
47
|
-
sourceTransactionHash: event.transactionHash,
|
48
|
-
sourceBlockNumber: event.blockNumber,
|
49
|
-
sourceStatus: "uninitialised",
|
50
|
-
targetChainId: targetChainId.toNumber(),
|
51
|
-
targetStatus: "uninitialised",
|
52
|
-
submitEvent: {
|
41
|
+
await db_1.Transaction.create(Object.assign(Object.assign({}, uniqueIdentifier), { transactionHash: (0, utils_1.generateInteropTransactionHash)(uniqueIdentifier), from: tx.from, to: user, sourceBlockNumber: event.blockNumber, sourceStatus: "uninitialised", targetStatus: "uninitialised", submitEvent: {
|
53
42
|
user,
|
54
43
|
sourceChainId: sourceChainId.toString(),
|
55
44
|
targetChainId: targetChainId.toString(),
|
56
45
|
token: token,
|
57
46
|
ammout: amount.toString(),
|
58
47
|
vnonce: vnonce.toString(),
|
59
|
-
},
|
60
|
-
status: "pending",
|
61
|
-
});
|
48
|
+
}, status: "pending" }));
|
62
49
|
this.logger.info(`Execution queued: ${event.transactionHash} ${event.blockNumber}`);
|
63
50
|
}
|
64
51
|
catch (error) {
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -92,7 +92,7 @@ const asyncCallWithTimeout = async (asyncPromise, timeout) => {
|
|
92
92
|
exports.asyncCallWithTimeout = asyncCallWithTimeout;
|
93
93
|
const generateInteropTransactionHash = (data) => {
|
94
94
|
return ethers_1.ethers.utils.solidityKeccak256(['string', 'string', 'string', 'string'], [
|
95
|
-
String(data.
|
95
|
+
String(data.action),
|
96
96
|
String(data.sourceTransactionHash),
|
97
97
|
String(data.sourceChainId),
|
98
98
|
String(data.targetChainId),
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@instadapp/interop-x",
|
3
|
-
"version": "0.0.0-dev.
|
3
|
+
"version": "0.0.0-dev.b3789e6",
|
4
4
|
"license": "MIT",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"engines": {
|
@@ -32,6 +32,8 @@
|
|
32
32
|
"ethers": "^5.6.4",
|
33
33
|
"ethers-multisend": "^2.1.1",
|
34
34
|
"expand-home-dir": "^0.0.3",
|
35
|
+
"fastify": "^3.28.0",
|
36
|
+
"fastify-cors": "^6.0.3",
|
35
37
|
"libp2p": "^0.36.2",
|
36
38
|
"libp2p-bootstrap": "^0.14.0",
|
37
39
|
"libp2p-kad-dht": "^0.28.6",
|
@@ -48,7 +50,8 @@
|
|
48
50
|
"waait": "^1.0.5"
|
49
51
|
},
|
50
52
|
"bin": {
|
51
|
-
"interop-x": "bin/interop-x"
|
53
|
+
"interop-x": "bin/interop-x",
|
54
|
+
"interopx": "bin/interop-x"
|
52
55
|
},
|
53
56
|
"devDependencies": {
|
54
57
|
"@typechain/ethers-v5": "^10.0.0",
|
package/src/api/index.ts
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
import fastify from "fastify"
|
2
|
+
import cors from 'fastify-cors'
|
3
|
+
import Logger from "@/logger"
|
4
|
+
import { Transaction } from "@/db";
|
5
|
+
|
6
|
+
const logger = new Logger("RPC");
|
7
|
+
|
8
|
+
|
9
|
+
const server = fastify({ logger: false })
|
10
|
+
|
11
|
+
server.register(cors, {})
|
12
|
+
|
13
|
+
server.get('/', async () => 'Interop X API')
|
14
|
+
|
15
|
+
export const startApiServer = async () => {
|
16
|
+
const HOST = process.env.API_HOST || '0.0.0.0';
|
17
|
+
const PORT = process.env.API_PORT || '8080';
|
18
|
+
try {
|
19
|
+
server.get('/transactions', async (req) => {
|
20
|
+
return await Transaction.findAndCountAll({
|
21
|
+
limit: 20,
|
22
|
+
offset: 0,
|
23
|
+
})
|
24
|
+
})
|
25
|
+
|
26
|
+
await server.listen(PORT, HOST)
|
27
|
+
|
28
|
+
logger.log(`RPC Server listening at http://${HOST}:${PORT}`)
|
29
|
+
} catch (err) {
|
30
|
+
logger.error(err)
|
31
|
+
process.exit(1)
|
32
|
+
}
|
33
|
+
}
|
@@ -5,7 +5,7 @@ export class Transaction extends Model<InferAttributes<Transaction>, InferCreati
|
|
5
5
|
declare id: CreationOptional<number>;
|
6
6
|
|
7
7
|
declare transactionHash: string;
|
8
|
-
declare
|
8
|
+
declare action: string;
|
9
9
|
declare from: string;
|
10
10
|
declare to: string;
|
11
11
|
|
@@ -47,7 +47,7 @@ Transaction.init({
|
|
47
47
|
|
48
48
|
|
49
49
|
transactionHash: DataTypes.STRING,
|
50
|
-
|
50
|
+
action: DataTypes.STRING,
|
51
51
|
|
52
52
|
from: DataTypes.STRING,
|
53
53
|
to: DataTypes.STRING,
|
package/src/index.ts
CHANGED
@@ -5,6 +5,7 @@ moduleAlias.addAliases({
|
|
5
5
|
"@/logger": __dirname + "/logger",
|
6
6
|
"@/tasks": __dirname + "/tasks",
|
7
7
|
"@/utils": __dirname + "/utils",
|
8
|
+
"@/api": __dirname + "/api",
|
8
9
|
"@/net": __dirname + "/net",
|
9
10
|
"@/db": __dirname + "/db",
|
10
11
|
"@/config": __dirname + "/config",
|
@@ -18,6 +19,7 @@ moduleAlias();
|
|
18
19
|
import assert from "assert";
|
19
20
|
import dotenv from "dotenv";
|
20
21
|
import { ethers } from "ethers";
|
22
|
+
import packageJson from '../package.json'
|
21
23
|
dotenv.config();
|
22
24
|
|
23
25
|
import Logger from "@/logger";
|
@@ -40,8 +42,11 @@ try {
|
|
40
42
|
process.exit(1)
|
41
43
|
}
|
42
44
|
|
45
|
+
logger.debug(`Starting Interop X Node (v${packageJson.version} - rev.@GIT_SHORT_HASH@)`)
|
46
|
+
|
43
47
|
import { Tasks } from "@/tasks";
|
44
48
|
import { startPeer } from "@/net";
|
49
|
+
import { startApiServer } from '@/api';
|
45
50
|
|
46
51
|
async function main() {
|
47
52
|
|
@@ -50,6 +55,8 @@ async function main() {
|
|
50
55
|
const tasks = new Tasks()
|
51
56
|
|
52
57
|
tasks.start();
|
58
|
+
|
59
|
+
startApiServer()
|
53
60
|
}
|
54
61
|
|
55
62
|
main()
|
@@ -43,7 +43,7 @@ class SyncDepositEvents extends BaseTask {
|
|
43
43
|
const { sourceChainId, targetChainId, user, vnonce, amount, token } = event.args;
|
44
44
|
|
45
45
|
const uniqueIdentifier = {
|
46
|
-
|
46
|
+
action: 'deposit',
|
47
47
|
sourceTransactionHash: event.transactionHash,
|
48
48
|
sourceChainId: sourceChainId.toNumber(),
|
49
49
|
targetChainId: targetChainId.toNumber(),
|
@@ -56,17 +56,14 @@ class SyncDepositEvents extends BaseTask {
|
|
56
56
|
const tx = await event.getTransaction()
|
57
57
|
|
58
58
|
await Transaction.create({
|
59
|
+
...uniqueIdentifier,
|
59
60
|
transactionHash: generateInteropTransactionHash(uniqueIdentifier),
|
60
|
-
type: 'deposit',
|
61
61
|
from: tx.from,
|
62
62
|
to: user,
|
63
63
|
|
64
|
-
sourceChainId: sourceChainId.toNumber(),
|
65
|
-
sourceTransactionHash: event.transactionHash,
|
66
64
|
sourceBlockNumber: event.blockNumber,
|
67
65
|
sourceStatus: "uninitialised",
|
68
66
|
|
69
|
-
targetChainId: targetChainId.toNumber(),
|
70
67
|
targetStatus: "uninitialised",
|
71
68
|
|
72
69
|
submitEvent: {
|
package/src/utils/index.ts
CHANGED
@@ -119,9 +119,9 @@ export const asyncCallWithTimeout = async <T>(asyncPromise: Promise<T>, timeout:
|
|
119
119
|
}
|
120
120
|
|
121
121
|
|
122
|
-
export const generateInteropTransactionHash = (data: {
|
122
|
+
export const generateInteropTransactionHash = (data: { action: string, sourceTransactionHash: string, sourceChainId: string | number, targetChainId: string | number }) => {
|
123
123
|
return ethers.utils.solidityKeccak256(['string', 'string', 'string', 'string'], [
|
124
|
-
String(data.
|
124
|
+
String(data.action),
|
125
125
|
String(data.sourceTransactionHash),
|
126
126
|
String(data.sourceChainId),
|
127
127
|
String(data.targetChainId),
|