var Decimal = require("decimal.js"); Decimal8 = Decimal.clone({ precision:8, rounding:8 }); function doSmartRedirect(req, res, defaultUrl) { if (req.session.redirectUrl) { res.redirect(req.session.redirectUrl); req.session.redirectUrl = null; } else { res.redirect(defaultUrl); } res.end(); } function redirectToConnectPageIfNeeded(req, res) { if (!req.session.host) { req.session.redirectUrl = req.originalUrl; res.redirect("/"); res.end(); return true; } return false; } function hex2ascii(hex) { var str = ""; for (var i = 0; i < hex.length; i += 2) { str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); } return str; } function getBlockReward(blockHeight) { var nSubsidy = 10 * 100000000; var prevBlock = blockHeight -1; // yearly decline of production by 10% per year, projected 136m coins max by year 2050+. var i =0; for (i = 262800; i <= prevBlock ; i += 262800 ) { nSubsidy -= nSubsidy/10; } return nSubsidy/100000000; } function splitArrayIntoChunks(array, chunkSize) { var j = array.length; var chunks = []; for (var i = 0; i < j; i += chunkSize) { chunks.push(array.slice(i, i + chunkSize)); } return chunks; } function getRandomString(length, chars) { var mask = ''; if (chars.indexOf('a') > -1) { mask += 'abcdefghijklmnopqrstuvwxyz'; } if (chars.indexOf('A') > -1) { mask += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; } if (chars.indexOf('#') > -1) { mask += '0123456789'; } if (chars.indexOf('!') > -1) { mask += '~`!@#$%^&*()_+-={}[]:";\'<>?,./|\\'; } var result = ''; for (var i = length; i > 0; --i) { result += mask[Math.floor(Math.random() * mask.length)]; } return result; } module.exports = { doSmartRedirect: doSmartRedirect, redirectToConnectPageIfNeeded: redirectToConnectPageIfNeeded, hex2ascii: hex2ascii, getBlockReward: getBlockReward, splitArrayIntoChunks: splitArrayIntoChunks, getRandomString: getRandomString };