@emeraldplatform/eth-node
Version:
Ethereum and Ethereum classic full node management
57 lines (56 loc) • 2.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const rpc_1 = require("@emeraldplatform/rpc");
class NodeChecker {
constructor(ethRpc) {
this.ethRpc = ethRpc;
}
exists() {
return this.ethRpc.web3.clientVersion();
}
check() {
return new Promise((resolve, reject) => {
let batch = new rpc_1.DefaultBatch();
let nodeInfo = {
chain: 'unknown',
chainId: 0,
clientVersion: null
};
batch.addCall('eth_getBlockByNumber', ['0x00', false])
.then((block) => {
if (block.hash === NodeChecker.ETC_MAINNET_GENESIS) {
nodeInfo.chain = nodeInfo.chain || 'ethereum';
nodeInfo.chainId = nodeInfo.chainId || 1;
}
else if (block.hash === NodeChecker.ETC_MORDEN_GENESIS) {
nodeInfo.chain = 'morden';
nodeInfo.chainId = 62;
}
}).catch(reject);
batch.addCall('eth_getBlockByNumber', ['0x1d4c00', false])
.then((block) => {
if (block.hash === NodeChecker.ETC_BLOCK_1920000) {
nodeInfo.chain = "etc";
nodeInfo.chainId = 61;
}
else if (block.hash === NodeChecker.ETH_BLOCK_1920000) {
nodeInfo.chain = "ethereum";
nodeInfo.chainId = 1;
}
}).catch(reject);
batch.addCall('web3_clientVersion', [])
.then((version) => {
nodeInfo.clientVersion = version;
})
.catch(reject);
this.ethRpc.rpc.execute(batch)
.then((_) => resolve(nodeInfo))
.catch(reject);
});
}
}
exports.default = NodeChecker;
NodeChecker.ETC_MAINNET_GENESIS = '0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3';
NodeChecker.ETC_MORDEN_GENESIS = '0x0cd786a2425d16f152c658316c423e6ce1181e15c3295826d7c9904cba9ce303';
NodeChecker.ETC_BLOCK_1920000 = '0x94365e3a8c0b35089c1d1195081fe7489b528a84b22199c916180db8b28ade7f';
NodeChecker.ETH_BLOCK_1920000 = '0x4985f5ca3d2afbec36529aa96f74de3cc10a2a4a6c44f2157a57d2c6059a11bb';