UNPKG

@ellcrys/spell

Version:

The official JavaScript library for Ellcrys

77 lines 3.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * @module TxUtility */ var msgpack = require("msgpack5"); var blake2 = require("blake2"); /** * TxUtility provides transaction * processing functions to be used * by other modules. * * @class TxUtility */ var TxUtility = /** @class */ (function () { function TxUtility() { } /** * Returns the byte equivalent of * a given transaction but does not * include the transaction `hash` and * `sig` fields * * @param {Transaction} tx The transaction * @returns {Buffer} * @memberof TxUtility */ TxUtility.prototype.getBytesNoHashAndSig = function (tx) { var data = [ tx.fee, tx.from, null, tx.nonce, tx.senderPubKey, tx.timestamp, tx.to, tx.type, tx.value, ]; return msgpack() .encode(data) .slice(0); }; /** * Compute and return the hash of a transaction * * @param {Transaction} tx The transaction * @param {string} [prefix="0x"] Add a prefix to the hash * @returns {string} * @memberof TxUtility */ TxUtility.prototype.hash = function (tx, prefix) { if (prefix === void 0) { prefix = "0x"; } var data = this.getBytesNoHashAndSig(tx); var h = blake2.createHash("blake2b", { digestLength: 32 }); h.update(data); return prefix + h.digest("hex"); }; /** * Sign and return a signature of the * transaction. * * @param {Transaction} tx The transaction * @param {PrivateKey} sk The private key to use for signing * @param {string} [prefix="0x"] A prefix to add to the signature * @returns {string} An hex string * @memberof TxUtility */ TxUtility.prototype.sign = function (tx, sk, prefix) { if (prefix === void 0) { prefix = "0x"; } var data = this.getBytesNoHashAndSig(tx); return prefix + sk.sign(data).toString("hex"); }; return TxUtility; }()); exports.default = TxUtility; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYnVpbGRlcnMvdHhfdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOztHQUVHO0FBQ0gsa0NBQXFDO0FBR3JDLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVqQzs7Ozs7O0dBTUc7QUFDSDtJQUFBO0lBeURBLENBQUM7SUF4REE7Ozs7Ozs7OztPQVNHO0lBQ0ksd0NBQW9CLEdBQTNCLFVBQTRCLEVBQWU7UUFDMUMsSUFBTSxJQUFJLEdBQUc7WUFDWixFQUFFLENBQUMsR0FBRztZQUNOLEVBQUUsQ0FBQyxJQUFJO1lBQ1AsSUFBSTtZQUNKLEVBQUUsQ0FBQyxLQUFLO1lBQ1IsRUFBRSxDQUFDLFlBQVk7WUFDZixFQUFFLENBQUMsU0FBUztZQUNaLEVBQUUsQ0FBQyxFQUFFO1lBQ0wsRUFBRSxDQUFDLElBQUk7WUFDUCxFQUFFLENBQUMsS0FBSztTQUNSLENBQUM7UUFDRixPQUFPLE9BQU8sRUFBRTthQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDWixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLHdCQUFJLEdBQVgsVUFBWSxFQUFlLEVBQUUsTUFBYTtRQUFiLHVCQUFBLEVBQUEsYUFBYTtRQUN6QyxJQUFNLElBQUksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2YsT0FBTyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksd0JBQUksR0FBWCxVQUFZLEVBQWUsRUFBRSxFQUFjLEVBQUUsTUFBYTtRQUFiLHVCQUFBLEVBQUEsYUFBYTtRQUN6RCxJQUFNLElBQUksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0MsT0FBTyxNQUFNLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNGLGdCQUFDO0FBQUQsQ0FBQyxBQXpERCxJQXlEQyJ9