var request = require('postman-request') , settings = require('./settings') , Address = require('../models/address'); var base_server = 'http://127.0.0.1:' + settings.port + "/"; var base_url = base_server + 'api/'; const onode = require('./node'); const client = new onode.Client(settings.wallet); // returns coinbase total sent as current coin supply function coinbase_supply(cb) { Address.findOne({a_id: 'coinbase'}, function(err, address) { if (address) { return cb(address.sent); } else { return cb(0); } }); } function rpcCommand(params, cb) { client.cmd([{method: params[0].method, params: params[0].parameters}], function(err, response) { if (err) return cb('There was an error. Check your console.'); else return cb(response); }); } module.exports = { convert_to_satoshi: function(amount, cb) { // fix to 8dp & convert to string var fixed = amount.toFixed(8).toString(); // remove decimal (.) and return integer return cb(parseInt(fixed.replace('.', ''))); }, get_hashrate: function(cb) { if (settings.index.show_hashrate == false) return cb('-'); if (settings.use_rpc) { if (settings.nethash == 'netmhashps') { rpcCommand([{method:'getmininginfo', parameters: []}], function(response) { if (response == 'There was an error. Check your console.') { return cb(response);} if (response.netmhashps) { if (settings.nethash_units == 'K') { return cb((response.netmhashps * 1000).toFixed(4)); } else if (settings.nethash_units == 'G') { return cb((response.netmhashps / 1000).toFixed(4)); } else if (settings.nethash_units == 'H') { return cb((response.netmhashps * 1000000).toFixed(4)); } else if (settings.nethash_units == 'T') { return cb((response.netmhashps / 1000000).toFixed(4)); } else if (settings.nethash_units == 'P') { return cb((response.netmhashps / 1000000000).toFixed(4)); } else { return cb(response.netmhashps.toFixed(4)); } } else { return cb('-'); } }); } else { rpcCommand([{method:'getnetworkhashps', parameters: []}], function(response) { if (response == 'There was an error. Check your console.') { return cb(response);} if (response) { if (settings.nethash_units == 'K') { return cb((response / 1000).toFixed(4)); } else if (settings.nethash_units == 'M'){ return cb((response / 1000000).toFixed(4)); } else if (settings.nethash_units == 'G') { return cb((response / 1000000000).toFixed(4)); } else if (settings.nethash_units == 'T') { return cb((response / 1000000000000).toFixed(4)); } else if (settings.nethash_units == 'P') { return cb((response / 1000000000000000).toFixed(4)); } else { return cb(response.toFixed(4)); } } else { return cb('-'); } }); } }else{ if (settings.nethash == 'netmhashps') { var uri = base_url + 'getmininginfo'; request({uri: uri, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) { //returned in mhash if (body.netmhashps) { if (settings.nethash_units == 'K') { return cb((body.netmhashps * 1000).toFixed(4)); } else if (settings.nethash_units == 'G') { return cb((body.netmhashps / 1000).toFixed(4)); } else if (settings.nethash_units == 'H') { return cb((body.netmhashps * 1000000).toFixed(4)); } else if (settings.nethash_units == 'T') { return cb((body.netmhashps / 1000000).toFixed(4)); } else if (settings.nethash_units == 'P') { return cb((body.netmhashps / 1000000000).toFixed(4)); } else { return cb(body.netmhashps.toFixed(4)); } } else { return cb('-'); } }); } else { var uri = base_url + 'getnetworkhashps'; request({uri: uri, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) { if (body == 'There was an error. Check your console.') { return cb('-'); } else { if (settings.nethash_units == 'K') { return cb((body / 1000).toFixed(4)); } else if (settings.nethash_units == 'M'){ return cb((body / 1000000).toFixed(4)); } else if (settings.nethash_units == 'G') { return cb((body / 1000000000).toFixed(4)); } else if (settings.nethash_units == 'T') { return cb((body / 1000000000000).toFixed(4)); } else if (settings.nethash_units == 'P') { return cb((body / 1000000000000000).toFixed(4)); } else { return cb((body).toFixed(4)); } } }); } } }, get_difficulty: function(cb) { if (settings.use_rpc) { rpcCommand([{method:'getdifficulty', parameters: []}], function(response) { return cb(response); }); } else { var uri = base_url + 'getdifficulty'; request({uri: uri, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) { return cb(body); }); } }, get_connectioncount: function(cb) { if (settings.use_rpc) { rpcCommand([{method:'getconnectioncount', parameters: []}], function(response) { return cb(response); }); } else { var uri = base_url + 'getconnectioncount'; request({uri: uri, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) { return cb(body); }); } }, get_masternodecount: function(cb) { if (settings.api_cmds.masternode_count != '') { if (settings.use_rpc) { // split cmd by spaces var split = settings.api_cmds.masternode_count.split(' '); var method_name = ''; var params = []; for (i=0; i