ibctminer
Version:
```js const IntMiner = require('./src'); const Debug = require('./src/log')(); const fs = require('fs'); const COMP = '[SIPC]';
40 lines (34 loc) • 1.58 kB
JavaScript
const EventEmitter = require('events');
const Debug = require('../log')();
const BLAKE2B = require('./base/blake2b')
const sha3hns = require('./base/sha3hns');
const COMP = '[blake2bsha3Api]';
class blake2bsha3Api extends EventEmitter {
constructor({}) {
super();
var _this = this;
}
getAlgoName() {
return 'blake2bsha3';
}
genHash(data, length, varity) {
//const data = Buffer.from('40ad0f00d163845e00000000962b1c413636e85858fdf91d152b42056662b7fc000000000000005b20195afe280a27276d4517c7f80f5a61843eac78b1af2c82962b1c413636e80378e4a3e33d2165220b27a03b7f0eb30bb515b160961657af5b9f8af4996c2566621ecd0f71c6a77cf80c2e6b6e816aae44d07d91830caa07', 'hex');
//Debug.IbctLogDbg(COMP, 'genhash++++', data.toString('hex'));
const pad8 = Buffer.alloc(8);
const pad32 = Buffer.alloc(32);
for (let i = 0; i < 32; i++) {
if (i < 8)
pad8.writeUInt8(data.readUInt8(i + 32) ^ data.readUInt8(i + 64), i);
pad32.writeUInt8(data.readUInt8(i + 32) ^ data.readUInt8(i + 64), i);
}
const left = BLAKE2B.digest(data, 64);
//const rxx = SHA3.multi(data, pad8);
const right = sha3hns(Buffer.concat([data, pad8]));
const hash = BLAKE2B.multi(left, pad32, right);
//Debug.IbctLogDbg(COMP, 'HASH IS', hash.toString('hex'));
return hash.toString('hex');
}
};
module.exports = function Runblake2bsha3Api(options = {}) {
return new blake2bsha3Api(options);
};