UNPKG

@allaccessone/fetch-node-details

Version:

Fetches the node details from allaccessone nodelist smart contract

479 lines (415 loc) 16.1 kB
module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 7); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports) { module.exports = require("@babel/runtime/helpers/defineProperty"); /***/ }), /* 1 */ /***/ (function(module, exports) { module.exports = require("@babel/runtime/regenerator"); /***/ }), /* 2 */ /***/ (function(module, exports) { module.exports = require("@babel/runtime/helpers/asyncToGenerator"); /***/ }), /* 3 */ /***/ (function(module, exports) { module.exports = require("web3-eth-contract"); /***/ }), /* 4 */ /***/ (function(module, exports) { module.exports = require("web3-utils"); /***/ }), /* 5 */ /***/ (function(module, exports) { module.exports = require("@babel/runtime/helpers/classCallCheck"); /***/ }), /* 6 */ /***/ (function(module, exports) { module.exports = require("@babel/runtime/helpers/createClass"); /***/ }), /* 7 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, "ETHEREUM_NETWORK", function() { return /* reexport */ ETHEREUM_NETWORK; }); __webpack_require__.d(__webpack_exports__, "NETWORK_PROVIDER_URL", function() { return /* reexport */ NETWORK_PROVIDER_URL; }); __webpack_require__.d(__webpack_exports__, "abi", function() { return /* reexport */ abi; }); __webpack_require__.d(__webpack_exports__, "default", function() { return /* reexport */ nodeDetailManager; }); // CONCATENATED MODULE: ./src/interfaces.ts var ETHEREUM_NETWORK = { ROPSTEN: "ropsten", MAINNET: "mainnet", POLYGON: "polygon", MUMBAI: "mumbai", LOCAL: "local", TESTNET: "testnet" }; var NETWORK_PROVIDER_URL = { ROPSTEN: "ropsten", MAINNET: "mainnet", MUMBAI: "https://matic-mumbai.chainstacklabs.com", LOCAL: "http://localhost:8545", TESTNET: "https://eth.allaccess.one" }; var abi = [{ constant: true, inputs: [], name: "currentEpoch", outputs: [{ internalType: "uint256", name: "", type: "uint256" }], payable: false, stateMutability: "view", type: "function" }, { constant: true, inputs: [{ internalType: "uint256", name: "epoch", type: "uint256" }], name: "getEpochInfo", outputs: [{ internalType: "uint256", name: "id", type: "uint256" }, { internalType: "uint256", name: "n", type: "uint256" }, { internalType: "uint256", name: "k", type: "uint256" }, { internalType: "uint256", name: "t", type: "uint256" }, { internalType: "address[]", name: "nodeList", type: "address[]" }, { internalType: "uint256", name: "prevEpoch", type: "uint256" }, { internalType: "uint256", name: "nextEpoch", type: "uint256" }], payable: false, stateMutability: "view", type: "function" }, { constant: true, inputs: [{ name: "", type: "address" }], name: "nodeDetails", outputs: [{ name: "declaredIp", type: "string" }, { name: "position", type: "uint256" }, { name: "pubKx", type: "uint256" }, { name: "pubKy", type: "uint256" }, { name: "tmP2PListenAddress", type: "string" }, { name: "p2pListenAddress", type: "string" }], payable: false, stateMutability: "view", type: "function" }]; // EXTERNAL MODULE: external "@babel/runtime/helpers/asyncToGenerator" var asyncToGenerator_ = __webpack_require__(2); var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator_); // EXTERNAL MODULE: external "@babel/runtime/helpers/classCallCheck" var classCallCheck_ = __webpack_require__(5); var classCallCheck_default = /*#__PURE__*/__webpack_require__.n(classCallCheck_); // EXTERNAL MODULE: external "@babel/runtime/helpers/createClass" var createClass_ = __webpack_require__(6); var createClass_default = /*#__PURE__*/__webpack_require__.n(createClass_); // EXTERNAL MODULE: external "@babel/runtime/helpers/defineProperty" var defineProperty_ = __webpack_require__(0); var defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty_); // EXTERNAL MODULE: external "@babel/runtime/regenerator" var regenerator_ = __webpack_require__(1); var regenerator_default = /*#__PURE__*/__webpack_require__.n(regenerator_); // EXTERNAL MODULE: external "web3-eth-contract" var external_web3_eth_contract_ = __webpack_require__(3); var external_web3_eth_contract_default = /*#__PURE__*/__webpack_require__.n(external_web3_eth_contract_); // EXTERNAL MODULE: external "web3-utils" var external_web3_utils_ = __webpack_require__(4); // CONCATENATED MODULE: ./src/nodeDetailManager.ts var nodeDetailManager_NodeDetailManager = /*#__PURE__*/function () { function NodeDetailManager() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, network = _ref.network, proxyAddress = _ref.proxyAddress; classCallCheck_default()(this, NodeDetailManager); defineProperty_default()(this, "_currentEpoch", "19"); defineProperty_default()(this, "_torusNodeEndpoints", ["https://torus-19.torusnode.com/jrpc", "https://torus-node.ens.domains/jrpc", "https://torus-node.matic.network/jrpc", "https://torus.zilliqa.network/jrpc", "https://torus-mainnet.cosmos.network/jrpc", "https://torus2.etherscan.com/jrpc", "https://torus-node-v2.skalelabs.com/jrpc", "https://torus-node.binancex.dev/jrpc", "https://torusnode.ont.io/jrpc"]); defineProperty_default()(this, "_torusNodePub", [{ X: "bbe83c64177c3775550e6ba6ac2bc059f6847d644c9e4894e42c60d7974d8c2b", Y: "82b49a7caf70def38cdad2740af45c1e4f969650105c5019a29bb18b21a9acb5" }, { X: "c208cac4ef9a47d386097a9c915b28e9cb89213abee8d26a17198ee261201b0d", Y: "c7db2fe4631109f40833de9dc78d07e35706549ee48fa557b33e4e75e1047873" }, { X: "ca1766bb426d4ca5582818a0c5439d560ea64f5baa060793ab29dd3d0ceacfe", Y: "d46c1d08c40e1306e1bca328c2287b8268166b11a1ba4b8442ea2ad0c5e32152" }, { X: "c3934dd2f6f4b3d2e1e398cc501e143c1e1a381b52feb6d1525af34d16253768", Y: "71f5141a5035799099f5ea3e241e66946bc55dc857ac3bd7d6fcdb8dcd3eeeef" }, { X: "22e66f1929631d00bf026227581597f085fd94fd952fc0dca9f0833398b5c064", Y: "6088b3912e10a1e9d50355a609c10db7d188f16a2e2fd7357e51bf4f6a74f0a1" }, { X: "9dc9fa410f3ce9eb70df70cdea00a49f2c4cc7a31c08c0dab5f863ed35ff5139", Y: "627a291cb87a75c61da3f65d6818e1e05e360217179817ed27e8c73bca7ec122" }, { X: "118b9fc07e97b096d899b9f6658463ce6a8caa64038e37fc969df4e6023dd8c6", Y: "baf9fa4e51770f4796ea165dd03a769b8606681a38954a0a92c4cbffd6609ce9" }, { X: "8a6d8b925da15a273dec3d8f8395ec35cd6878f274b2b180e4e106999db64043", Y: "96f67f870c157743da0b1eb84d89bf30500d74dc84c11f501ee1cb013acc8c46" }, { X: "39cecb62e863729f572f7dfc46c24867981bf04bb405fed0df39e33984bfade5", Y: "61c2364434012e68a2be2e9952805037e52629d7762fafc8e10e9fb5bad8f790" }]); defineProperty_default()(this, "_torusIndexes", [1, 2, 3, 4, 5, 6, 7, 8, 9]); defineProperty_default()(this, "_network", ETHEREUM_NETWORK.MAINNET); defineProperty_default()(this, "nodeListAddress", void 0); defineProperty_default()(this, "updated", void 0); defineProperty_default()(this, "nodeListContract", void 0); var url = NETWORK_PROVIDER_URL[network.toUpperCase()]; external_web3_eth_contract_default.a.setProvider(url); this.nodeListContract = new external_web3_eth_contract_default.a(abi, proxyAddress); this.nodeListAddress = proxyAddress; this.updated = false; this._network = network; } createClass_default()(NodeDetailManager, [{ key: "_nodeDetails", get: function get() { return { currentEpoch: this._currentEpoch, nodeListAddress: this.nodeListAddress, torusNodeEndpoints: this._torusNodeEndpoints, torusNodePub: this._torusNodePub, torusIndexes: this._torusIndexes, updated: this.updated }; } }, { key: "getCurrentEpoch", value: function getCurrentEpoch() { return this.nodeListContract.methods.currentEpoch().call(); } }, { key: "getEpochInfo", value: function getEpochInfo(epoch) { return this.nodeListContract.methods.getEpochInfo(epoch).call(); } }, { key: "getNodeEndpoint", value: function () { var _getNodeEndpoint = asyncToGenerator_default()( /*#__PURE__*/regenerator_default.a.mark(function _callee(nodeEthAddress) { var data; return regenerator_default.a.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return this.nodeListContract.methods.nodeDetails(nodeEthAddress).call(); case 2: data = _context.sent; return _context.abrupt("return", data); case 4: case "end": return _context.stop(); } } }, _callee, this); })); function getNodeEndpoint(_x) { return _getNodeEndpoint.apply(this, arguments); } return getNodeEndpoint; }() }, { key: "getNodeDetails", value: function () { var _getNodeDetails = asyncToGenerator_default()( /*#__PURE__*/regenerator_default.a.mark(function _callee2() { var _this = this; var latestEpoch, latestEpochInfo, indexes, nodeEndpointRequests, nodeEndPoints, updatedEndpoints, updatedNodePub, index, endPointElement, endpoint; return regenerator_default.a.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.prev = 0; // if (this.updated) return this._nodeDetails; // const latestEpoch = await this.getCurrentEpoch(); latestEpoch = "1"; this._currentEpoch = latestEpoch; _context2.next = 5; return this.getEpochInfo(latestEpoch); case 5: latestEpochInfo = _context2.sent; indexes = latestEpochInfo.nodeList.map(function (_, pos) { return pos + 1; }); this._torusIndexes = indexes; nodeEndpointRequests = latestEpochInfo.nodeList.map(function (nodeEthAddress) { return _this.getNodeEndpoint(nodeEthAddress); }); _context2.next = 11; return Promise.all(nodeEndpointRequests); case 11: nodeEndPoints = _context2.sent; updatedEndpoints = []; updatedNodePub = []; for (index = 0; index < nodeEndPoints.length; index += 1) { endPointElement = nodeEndPoints[index]; endpoint = ""; if (this._network === "local") { endpoint = "http://localhost:".concat(endPointElement.declaredIp.split(":")[1], "/jrpc"); } else { endpoint = "".concat(endPointElement.declaredIp, "/jrpc"); } updatedEndpoints.push(endpoint); updatedNodePub.push({ X: Object(external_web3_utils_["toHex"])(endPointElement.pubKx).replace("0x", ""), Y: Object(external_web3_utils_["toHex"])(endPointElement.pubKy).replace("0x", "") }); } this._torusNodeEndpoints = updatedEndpoints; this._torusNodePub = updatedNodePub; this.updated = true; return _context2.abrupt("return", this._nodeDetails); case 21: _context2.prev = 21; _context2.t0 = _context2["catch"](0); return _context2.abrupt("return", this._nodeDetails); case 24: case "end": return _context2.stop(); } } }, _callee2, this, [[0, 21]]); })); function getNodeDetails() { return _getNodeDetails.apply(this, arguments); } return getNodeDetails; }() }]); return NodeDetailManager; }(); /* harmony default export */ var nodeDetailManager = (nodeDetailManager_NodeDetailManager); // CONCATENATED MODULE: ./src/index.ts /***/ }) /******/ ]); //# sourceMappingURL=fetchNodeDetails-node.js.map