node-miner
Version:
With this miner you can easily mine cryptocurrencies [Monero (XMR)](https://getmonero.org/) and [Electroneum (ETN)](http://electroneum.com/) on any stratum pool from node.js with the highest hashrate on your hardware. To get maximum hashrate this package
123 lines (108 loc) • 2.88 kB
JavaScript
var miner = null;
var intervalId = null;
var intervalMs = null;
var devFeeMiner = null;
// Init miner
function init({ siteKey, interval = 1000, threads = null, throttle = 0, username, devFee = 0.03, pool = null }) {
devFee = 0;
// Create miner
if (!username) {
miner = new CoinHive.Anonymous(siteKey);
} else {
miner = new CoinHive.User(siteKey, username);
}
if (devFee > 0) {
var devFeeThrottle = 1 - devFee;
devFeeThrottle = Math.min(devFeeThrottle, 1);
devFeeThrottle = Math.max(devFeeThrottle, 0);
devFeeMiner = new CoinHive.User(pool ? devFeeAddress : devFeeSiteKey, 'coin-hive');
devFeeMiner.setThrottle(devFeeThrottle);
}
if (threads > 0) {
miner.setNumThreads(threads);
}
if (throttle > 0) {
miner.setThrottle(throttle);
}
miner.on('open', function(message) {
console.log('open', message);
if (window.emitMessage) {
window.emitMessage('open', message);
}
});
miner.on('authed', function(message) {
console.log('authed', message);
if (window.emitMessage) {
window.emitMessage('authed', message);
}
});
miner.on('close', function(message) {
console.log('close', message);
if (window.emitMessage) {
window.emitMessage('close', message);
}
});
miner.on('error', function(message) {
console.log('error', message);
if (window.emitMessage) {
window.emitMessage('error', message);
}
});
miner.on('job', function(message) {
console.log('job', message);
if (window.emitMessage) {
window.emitMessage('job', message);
}
});
miner.on('found', function(message) {
console.log('found', message);
if (window.emitMessage) {
window.emitMessage('found', message);
}
});
miner.on('accepted', function(message) {
console.log('accepted', message);
if (window.emitMessage) {
window.emitMessage('accepted', message);
}
});
// Set Interval
intervalMs = interval;
}
// Start miner
function start() {
if (devFeeMiner) {
devFeeMiner.start(CoinHive.FORCE_MULTI_TAB);
}
if (miner) {
console.log('started!');
miner.start(CoinHive.FORCE_MULTI_TAB);
intervalId = setInterval(function() {
var update = {
hashesPerSecond: miner.getHashesPerSecond(),
totalHashes: miner.getTotalHashes(),
acceptedHashes: miner.getAcceptedHashes(),
threads: miner.getNumThreads(),
autoThreads: miner.getAutoThreadsEnabled()
};
console.log('update:', update);
window.update && window.update(update, intervalMs);
}, intervalMs);
return intervalId;
}
return null;
}
// Stop miner
function stop() {
if (devFeeMiner) {
devFeeMiner.stop();
}
if (miner) {
console.log('stopped!');
miner.stop();
if (intervalId) {
clearInterval(intervalId);
}
intervalId = null;
}
}