parsec-lib
Version:
transaction and block implementation
46 lines (41 loc) • 3.62 kB
JavaScript
;Object.defineProperty(exports, "__esModule", { value: true });var _createClass = function () {function defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}return function (Constructor, protoProps, staticProps) {if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;};}();var _ethereumjsUtil = require('ethereumjs-util');var _ethereumjsUtil2 = _interopRequireDefault(_ethereumjsUtil);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}}var
Exit = function () {function Exit() {_classCallCheck(this, Exit);}_createClass(Exit, null, [{ key: 'signOverExit',
/*
returns:
* 0 - 32 bytes utxoid
* 32 - 32 bytes amount of money
* 64 - 32 bytes r-signature
* 96 - 32 bytes s-signature
* 128 - 31 bytes padding
* 159 - 1 byte v-signature
*/value: function signOverExit(
utxoid, amount, privKey) {
var sigHashBuff = Exit.sigHashBuff(utxoid, amount);
var sigHash = _ethereumjsUtil2.default.keccak256(sigHashBuff);
var sig = _ethereumjsUtil2.default.ecsign(
sigHash,
Buffer.from(privKey.replace('0x', ''), 'hex'));
var vBuff = Buffer.alloc(32);
vBuff.writeInt8(sig.v, 31);
return Buffer.concat([sigHashBuff, sig.r, sig.s, vBuff]);
}
// params:
// utxoid: string with 0x, e.g. 0x0000000000000000000000000000000000b447b980aea5accb5fd68789f6b099
// amount: plain JS number
// returns:
// 64 byte buffer
}, { key: 'sigHashBuff', value: function sigHashBuff(utxoid, amount) {
var buffer_value = _ethereumjsUtil2.default.setLengthLeft(_ethereumjsUtil2.default.toBuffer(amount), 32);
var buffer_uxoid = Buffer.from(utxoid.replace('0x', ''), 'hex');
return Buffer.concat([buffer_uxoid, buffer_value]);
} }, { key: 'bufferToBytes32Array', value: function bufferToBytes32Array(
buffer) {
var output = [];
var offset = 0;
for (var i = 0; i < buffer.length / 32; i++) {
var bytes32 = '0x' + buffer.slice(offset, offset + 32).toString('hex');
offset += 32;
output.push(bytes32);
}
return output;
} }]);return Exit;}();exports.default = Exit;module.exports = exports['default'];