fcoin/lib/workers/jobs.js
2016-08-24 04:59:06 -07:00

81 lines
1.5 KiB
JavaScript

/*!
* jobs.js - worker jobs for bcoin
* Copyright (c) 2014-2016, Christopher Jeffrey (MIT License).
* https://github.com/bcoin-org/bcoin
*/
'use strict';
var bcoin = require('../env');
/**
* Jobs to execute within the worker.
* @memberof Workers
* @const {Object}
*/
var jobs = exports;
/**
* Execute tx.verify() on worker.
* @see TX#verify
* @param {TX} tx
* @param {VerifyFlags} flags
* @returns {Boolean}
*/
jobs.verify = function verify(tx, flags) {
return tx.verify(flags);
};
/**
* Execute Wallet.sign() on worker.
* @see Wallet.sign
* @param {KeyRing[]} rings
* @param {HDPrivateKey} master
* @param {MTX} tx
*/
jobs.sign = function sign(tx, ring, type) {
var total = tx.sign(ring, type);
var sigs = [];
var i, input;
for (i = 0; i < tx.inputs.length; i++) {
input = tx.inputs[i];
sigs.push([input.script, input.witness]);
}
return [sigs, total];
};
/**
* Mine a block on worker.
* @param {Object} attempt - Naked {@link MinerBlock}.
* @returns {Block}
*/
jobs.mine = function mine(attempt) {
attempt.on('status', function(stat) {
bcoin.master.sendEvent('status', stat);
});
return attempt.mineSync();
};
/**
* Execute scrypt() on worker.
* @see scrypt
* @param {Buffer} passwd
* @param {Buffer} salt
* @param {Number} N
* @param {Number} r
* @param {Number} p
* @param {Number} len
* @returns {Buffer}
*/
jobs.scrypt = function scrypt(passwd, salt, N, r, p, len) {
var scrypt = require('../crypto/scrypt');
return scrypt(passwd, salt, N >>> 0, r >>> 0, p >>> 0, len);
};