Home Reference Source Repository

src/lib/hash.js

import {SHA256} from 'crypto-js';

const _SHA256 = (object) => {
	return SHA256(JSON.stringify(object)).toString();
};

/**
 * Generate block hash
 *
 * @param {object} block {index, prevHash, time, transactions, nonce}
 */
export const calculateBlockHash = (block) => {
	const {index, prevHash, time, transactions, nonce} = block;
	return _SHA256({index, prevHash, time, transactions, nonce});
};

/**
 * Generate transaction hash
 *
 * @param {object} transaction {id, type, inputs, outputs}
 */
export const transactionHash = (transaction) => {
	const {id, type, inputs, outputs} = transaction;
	return _SHA256({id, type, inputs, outputs});
};

/**
 * Generate transaction input hash
 *
 * @param {object} transactionInput {transaction, index, amount, address}
 */
export const transactionInputHash = (transactionInput) => {
	const {transaction, index, amount, address} = transactionInput;
	return _SHA256({transaction, index, amount, address});
};