@ellcrys/spell
Version:
The official JavaScript library for Ellcrys
77 lines • 3.74 kB
JavaScript
;
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