Added random or configurable instance ID
This commit is contained in:
parent
90bdc9a250
commit
96cfc412a8
@ -1,4 +1,5 @@
|
|||||||
var events = require('events');
|
var events = require('events');
|
||||||
|
var crypto = require('crypto');
|
||||||
|
|
||||||
var bignum = require('bignum');
|
var bignum = require('bignum');
|
||||||
|
|
||||||
@ -14,18 +15,17 @@ var blockTemplate = require('./blockTemplate.js');
|
|||||||
|
|
||||||
|
|
||||||
//Unique extranonce per subscriber
|
//Unique extranonce per subscriber
|
||||||
var ExtraNonceCounter = function(){
|
var ExtraNonceCounter = function(configInstanceId){
|
||||||
var instanceId = 31;
|
|
||||||
|
var instanceId = configInstanceId || crypto.randomBytes(4).readUInt32LE(0);
|
||||||
var counter = instanceId << 27;
|
var counter = instanceId << 27;
|
||||||
var size = util.packUInt32BE(counter).length;
|
|
||||||
|
|
||||||
this.next = function(){
|
this.next = function(){
|
||||||
var extraNonce = util.packUInt32BE(counter++);
|
var extraNonce = util.packUInt32BE(Math.abs(counter++));
|
||||||
return extraNonce.toString('hex');
|
return extraNonce.toString('hex');
|
||||||
};
|
};
|
||||||
this.size = function(){
|
|
||||||
return size;
|
this.size = 4; //bytes
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//Unique job per new block template
|
//Unique job per new block template
|
||||||
@ -126,7 +126,7 @@ var JobManager = module.exports = function JobManager(options){
|
|||||||
|
|
||||||
//public members
|
//public members
|
||||||
|
|
||||||
this.extraNonceCounter = new ExtraNonceCounter();
|
this.extraNonceCounter = new ExtraNonceCounter(options.instanceId);
|
||||||
this.extraNoncePlaceholder = new Buffer('f000000ff111111f', 'hex');
|
this.extraNoncePlaceholder = new Buffer('f000000ff111111f', 'hex');
|
||||||
this.extraNonce2Size = this.extraNoncePlaceholder.length - this.extraNonceCounter.size();
|
this.extraNonce2Size = this.extraNoncePlaceholder.length - this.extraNonceCounter.size();
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user