UNPKG

parsec-lib

Version:

transaction and block implementation

46 lines (41 loc) 3.62 kB
'use strict';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'];