@berrywallet/core
Version:
Berrywallet main Core for work with common cryptocurrencies like Bitcoin, Ethereum, Dash, Litecoin
52 lines (51 loc) • 1.86 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
}
Object.defineProperty(exports, "__esModule", { value: true });
const lodash_1 = require("lodash");
const bitcoinjs_lib_1 = __importDefault(require("bitcoinjs-lib"));
const bignumber_js_1 = __importDefault(require("bignumber.js"));
const _1 = require("../../");
function toWalletTx(tx, coin) {
const txData = {
coin: coin.getUnit(),
txid: tx.txid,
blockHeight: (+tx.blockheight > 0) ? tx.blockheight : null,
blockTime: tx.blocktime * 1000,
scheme: _1.Coin.TransactionScheme.INPUTS_OUTPUTS,
version: tx.version,
lockTime: tx.locktime,
inputs: [],
outputs: [],
};
lodash_1.forEach(lodash_1.orderBy(tx.vin, 'n', 'asc'), (vin) => {
if (!vin.txid)
return;
txData.inputs.push({
prevTxid: vin.txid,
prevOutIndex: vin.vout,
scriptSig: vin.scriptSig ? vin.scriptSig.hex : undefined,
sequence: vin.sequence,
witness: vin.witness,
});
});
lodash_1.forEach(lodash_1.orderBy(tx.vout, 'n', 'asc'), (vout) => {
const spk = vout.scriptPubKey;
const buffer = _1.Utils.hexToBuffer(spk.hex);
const type = bitcoinjs_lib_1.default.script.classifyOutput(buffer);
let address;
try {
address = bitcoinjs_lib_1.default.address.fromOutputScript(buffer, coin.networkInfo());
}
catch (e) { }
txData.outputs.push({
scriptPubKey: spk.hex,
scriptType: type,
addresses: address ? [address] : [],
value: new bignumber_js_1.default(vout.value).toString(10),
});
});
return txData;
}
exports.toWalletTx = toWalletTx;