UNPKG

@berrywallet/core

Version:

Berrywallet main Core for work with common cryptocurrencies like Bitcoin, Ethereum, Dash, Litecoin

52 lines (51 loc) 1.86 kB
"use strict"; 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;