UNPKG

@emeraldplatform/eth-node

Version:

Ethereum and Ethereum classic full node management

57 lines (56 loc) 2.33 kB
"use strict"; 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';