Merge pull request #622 from xmrminers/patch-1

[removed haven breaking changes] Update pool.js
This commit is contained in:
dvandal
2021-01-03 21:20:37 -05:00
committed by GitHub

View File

@@ -42,9 +42,6 @@ let cnAlgorithm = config.cnAlgorithm || "cryptonight";
let cnVariant = config.cnVariant || 0; let cnVariant = config.cnVariant || 0;
let cnBlobType = config.cnBlobType || 0; let cnBlobType = config.cnBlobType || 0;
// HBD - check for HAVEN coin type
let bUseHaven = (config.coin == "haven");
let cryptoNight; let cryptoNight;
if (!cnHashing || !cnHashing[cnAlgorithm]) { if (!cnHashing || !cnHashing[cnAlgorithm]) {
log('error', logSystem, 'Invalid cryptonight algorithm: %s', [cnAlgorithm]); log('error', logSystem, 'Invalid cryptonight algorithm: %s', [cnAlgorithm]);
@@ -61,8 +58,7 @@ let connectedMiners = {};
// Get merged mining tag reseved space size // Get merged mining tag reseved space size
let POOL_NONCE_SIZE = 16 + 1; // +1 for old XMR/new TRTL bugs let POOL_NONCE_SIZE = 16 + 1; // +1 for old XMR/new TRTL bugs
let EXTRA_NONCE_TEMPLATE = "02" + POOL_NONCE_SIZE.toString(16) + "00".repeat(POOL_NONCE_SIZE); let EXTRA_NONCE_TEMPLATE = "02" + POOL_NONCE_SIZE.toString(16) + "00".repeat(POOL_NONCE_SIZE);
let POOL_NONCE_MM_SIZE = POOL_NONCE_SIZE + let POOL_NONCE_MM_SIZE = POOL_NONCE_SIZE + utils.cnUtil.get_merged_mining_nonce_size();
bUseHaven ? utils.havenUtil.get_merged_mining_nonce_size() : utils.cnUtil.get_merged_mining_nonce_size();
let EXTRA_NONCE_NO_CHILD_TEMPLATE = "02" + POOL_NONCE_MM_SIZE.toString(16) + "00".repeat(POOL_NONCE_MM_SIZE); let EXTRA_NONCE_NO_CHILD_TEMPLATE = "02" + POOL_NONCE_MM_SIZE.toString(16) + "00".repeat(POOL_NONCE_MM_SIZE);
let mergedMining = config.poolServer.mergedMining && (Array.isArray(config.childPools) && config.childPools.length > 0) let mergedMining = config.poolServer.mergedMining && (Array.isArray(config.childPools) && config.childPools.length > 0)
@@ -241,7 +237,7 @@ function BlockTemplate (template, parent, indexOfChildPool) {
let blob = this.blocktemplate_blob; let blob = this.blocktemplate_blob;
this.buffer = Buffer.from(blob, 'hex'); this.buffer = Buffer.from(blob, 'hex');
let template_hex = EXTRA_NONCE_TEMPLATE; let template_hex = EXTRA_NONCE_TEMPLATE;
if (parent && mergedMining && !bUseHaven) { if (parent && mergedMining) {
if (currentChildBlockTemplate[indexOfChildPool]) { if (currentChildBlockTemplate[indexOfChildPool]) {
this.childBlockTemplate = currentChildBlockTemplate[indexOfChildPool]; this.childBlockTemplate = currentChildBlockTemplate[indexOfChildPool];
this.buffer = utils.cnUtil.construct_mm_parent_block_blob(this.buffer, cnBlobType, this.childBlockTemplate.buffer); this.buffer = utils.cnUtil.construct_mm_parent_block_blob(this.buffer, cnBlobType, this.childBlockTemplate.buffer);
@@ -279,15 +275,11 @@ function BlockTemplate (template, parent, indexOfChildPool) {
} }
BlockTemplate.prototype = { BlockTemplate.prototype = {
nextBlob: function (index) { nextBlob: function (index) {
this.buffer.writeUInt32BE(++this.extraNonce, this.reserveOffset); this.buffer.writeUInt32BE(++this.extraNonce, this.reserveOffset);
if (!bUseHaven && mergedMining && this.childBlockTemplate) { if (mergedMining && this.childBlockTemplate) {
return utils.cnUtil.convert_blob(this.buffer, cnBlobType, this.childBlockTemplate.buffer) return utils.cnUtil.convert_blob(this.buffer, cnBlobType, this.childBlockTemplate.buffer)
.toString('hex') .toString('hex')
} }
if (bUseHaven)
return utils.havenUtil.convert_blob(this.buffer)
.toString('hex');
else
return utils.cnUtil.convert_blob(this.buffer, cnBlobType) return utils.cnUtil.convert_blob(this.buffer, cnBlobType)
.toString('hex'); .toString('hex');
}, },
@@ -1166,9 +1158,7 @@ function getShareBuffer (miner, job, blockTemplate, params) {
} }
try { try {
let shareBuffer = (bUseHaven) let shareBuffer = utils.cnUtil.construct_block_blob(template, Buffer.from(nonce, 'hex'), cnBlobType);
? utils.havenUtil.construct_block_blob(template, Buffer.from(nonce, 'hex'))
: utils.cnUtil.construct_block_blob(template, Buffer.from(nonce, 'hex'), cnBlobType);
return shareBuffer; return shareBuffer;
} catch (e) { } catch (e) {
log('error', logSystem, "Can't get share buffer with nonce %s from %s@%s: %s", [nonce, miner.login, miner.ip, e]); log('error', logSystem, "Can't get share buffer with nonce %s from %s@%s: %s", [nonce, miner.login, miner.ip, e]);
@@ -1192,9 +1182,7 @@ function processShare (miner, job, blockTemplate, params) {
hash = Buffer.from(resultHash, 'hex'); hash = Buffer.from(resultHash, 'hex');
shareType = 'trusted'; shareType = 'trusted';
} else { } else {
let convertedBlob = (bUseHaven) let convertedBlob = utils.cnUtil.convert_blob(shareBuffer, cnBlobType);
? utils.havenUtil.convert_blob(shareBuffer)
: utils.cnUtil.convert_blob(shareBuffer, cnBlobType);
let hard_fork_version = convertedBlob[0]; let hard_fork_version = convertedBlob[0];
if (blockTemplate.isRandomX) { if (blockTemplate.isRandomX) {
@@ -1225,9 +1213,8 @@ function processShare (miner, job, blockTemplate, params) {
if (error) { if (error) {
log('error', logSystem, 'Error submitting block at height %d from %s@%s, share type: "%s" - %j', [job.height, miner.login, miner.ip, shareType, error]); log('error', logSystem, 'Error submitting block at height %d from %s@%s, share type: "%s" - %j', [job.height, miner.login, miner.ip, shareType, error]);
} else { } else {
let blockFastHash = (bUseHaven) let blockFastHash = utils.cnUtil.get_block_id(shareBuffer, cnBlobType)
? utils.havenUtil.get_block_id(shareBuffer).toString('hex') .toString('hex');
: utils.cnUtil.get_block_id(shareBuffer, cnBlobType).toString('hex');
log('info', logSystem, log('info', logSystem,
'Block %s found at height %d by miner %s@%s - submit result: %j', 'Block %s found at height %d by miner %s@%s - submit result: %j',
[blockFastHash.substr(0, 6), job.height, miner.login, miner.ip, result] [blockFastHash.substr(0, 6), job.height, miner.login, miner.ip, result]
@@ -1248,7 +1235,7 @@ function processShare (miner, job, blockTemplate, params) {
var childBlockTemplate = blockTemplate.childBlockTemplate; var childBlockTemplate = blockTemplate.childBlockTemplate;
if (childBlockTemplate) { if (childBlockTemplate) {
if (!bUseHaven && mergedMining) { if (mergedMining) {
let pool = config.childPools[miner.activeChildPool] let pool = config.childPools[miner.activeChildPool]
if (hashDiff.ge(childBlockTemplate.difficulty)) { if (hashDiff.ge(childBlockTemplate.difficulty)) {
let mergedBuffer = null let mergedBuffer = null