PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo-express/node_modules/ripple-lib/dist/npm/offline
Просмотр файла: ledgerhash.js
'use strict'; // eslint-disable-line strict
var _ = require('lodash');
var common = require('../common');
var hashes = require('ripple-hashes');
function convertLedgerHeader(header) {
return {
account_hash: header.stateHash,
close_time: common.iso8601ToRippleTime(header.closeTime),
close_time_resolution: header.closeTimeResolution,
close_flags: header.closeFlags,
hash: header.ledgerHash,
ledger_hash: header.ledgerHash,
ledger_index: header.ledgerVersion.toString(),
seqNum: header.ledgerVersion.toString(),
parent_hash: header.parentLedgerHash,
parent_close_time: common.iso8601ToRippleTime(header.parentCloseTime),
total_coins: header.totalDrops,
totalCoins: header.totalDrops,
transaction_hash: header.transactionHash
};
}
function hashLedgerHeader(ledgerHeader) {
var header = convertLedgerHeader(ledgerHeader);
return hashes.computeLedgerHash(header);
}
function computeTransactionHash(ledger, version) {
if (ledger.rawTransactions === undefined) {
return ledger.transactionHash;
}
var transactions = JSON.parse(ledger.rawTransactions);
var txs = _.map(transactions, function (tx) {
var mergeTx = _.assign({}, _.omit(tx, 'tx'), tx.tx || {});
var renameMeta = _.assign({}, _.omit(mergeTx, 'meta'), tx.meta ? { metaData: tx.meta } : {});
return renameMeta;
});
var transactionHash = hashes.computeTransactionTreeHash(txs, version);
if (ledger.transactionHash !== undefined && ledger.transactionHash !== transactionHash) {
throw new common.errors.ValidationError('transactionHash in header' + ' does not match computed hash of transactions');
}
return transactionHash;
}
function computeStateHash(ledger, version) {
if (ledger.rawState === undefined) {
return ledger.stateHash;
}
var state = JSON.parse(ledger.rawState);
var stateHash = hashes.computeStateTreeHash(state, version);
if (ledger.stateHash !== undefined && ledger.stateHash !== stateHash) {
throw new common.errors.ValidationError('stateHash in header' + ' does not match computed hash of state');
}
return stateHash;
}
var sLCF_SHAMapV2 = 0x02;
function computeLedgerHash(ledger) {
var version = (ledger.closeFlags & sLCF_SHAMapV2) === 0 ? 1 : 2;
var subhashes = {
transactionHash: computeTransactionHash(ledger, version),
stateHash: computeStateHash(ledger, version)
};
return hashLedgerHeader(_.assign({}, ledger, subhashes));
}
module.exports = computeLedgerHash;Выполнить команду
Для локальной разработки. Не используйте в интернете!