UNPKG

send-crypto

Version:

A minimal JavaScript library / wallet for sending crypto assets

86 lines 7.79 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Blockstream = void 0; const axios_1 = __importDefault(require("axios")); const utxo_1 = require("../../lib/utxo"); const timeout_1 = require("./timeout"); const getAPIUrl = (testnet) => `https://blockstream.info/${testnet ? "testnet/" : ""}api`; const fetchUTXO = (testnet) => async (txHash, vOut) => { const apiUrl = getAPIUrl(testnet); const utxo = (await axios_1.default.get(`${apiUrl}/tx/${txHash}`, { timeout: timeout_1.DEFAULT_TIMEOUT, })).data; const heightResponse = (await axios_1.default.get(`${apiUrl}/blocks/tip/height`, { timeout: timeout_1.DEFAULT_TIMEOUT, })).data; const confirmations = utxo.status.confirmed ? Math.max(1 + parseInt(heightResponse, 10) - utxo.status.block_height, 0) : 0; return { txHash, amount: utxo.vout[vOut].value, vOut, confirmations, }; }; const fetchUTXOs = (testnet) => async (address, confirmations) => { const apiUrl = getAPIUrl(testnet); const response = await axios_1.default.get(`${apiUrl}/address/${address}/utxo`, { timeout: timeout_1.DEFAULT_TIMEOUT }); const heightResponse = await axios_1.default.get(`${apiUrl}/blocks/tip/height`, { timeout: timeout_1.DEFAULT_TIMEOUT }); return response.data .map((utxo) => ({ txHash: utxo.txid, amount: utxo.value, vOut: utxo.vout, confirmations: utxo.status.confirmed ? 1 + parseInt(heightResponse.data, 10) - utxo.status.block_height : 0, })) .filter((utxo) => confirmations === 0 || utxo.confirmations >= confirmations) .sort(utxo_1.sortUTXOs); }; const fetchTXs = (testnet) => async (address, confirmations = 0, limit = 0) => { const apiUrl = getAPIUrl(testnet); const response = await axios_1.default.get(`${apiUrl}/address/${address}/txs`, { timeout: timeout_1.DEFAULT_TIMEOUT }); const heightResponse = await axios_1.default.get(`${apiUrl}/blocks/tip/height`, { timeout: timeout_1.DEFAULT_TIMEOUT }); const received = []; for (const tx of response.data) { for (let i = 0; i < tx.vout.length; i++) { const vout = tx.vout[i]; if (vout.scriptpubkey_address === address) { received.push({ txHash: tx.txid, amount: vout.value, vOut: i, confirmations: tx.status.confirmed ? 1 + parseInt(heightResponse.data, 10) - tx.status.block_height : 0, }); } } } return received .filter((utxo) => confirmations === 0 || utxo.confirmations >= confirmations) .sort(utxo_1.sortUTXOs); }; const broadcastTransaction = (testnet) => async (txHex) => { const apiUrl = getAPIUrl(testnet); const response = await axios_1.default.post(`${apiUrl}/tx`, txHex, { timeout: timeout_1.DEFAULT_TIMEOUT, }); return response.data; }; exports.Blockstream = { fetchUTXO, fetchUTXOs, broadcastTransaction, fetchTXs, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzdHJlYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2FwaXMvYmxvY2tzdHJlYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQTBCO0FBRTFCLHlDQUFpRDtBQUNqRCx1Q0FBNEM7QUE0QzVDLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQ25DLDRCQUE0QixPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7QUFFL0QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQ3pDLE1BQWMsRUFDZCxJQUFZLEVBQ0MsRUFBRTtJQUNmLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVsQyxNQUFNLElBQUksR0FBRyxDQUNULE1BQU0sZUFBSyxDQUFDLEdBQUcsQ0FBZ0IsR0FBRyxNQUFNLE9BQU8sTUFBTSxFQUFFLEVBQUU7UUFDckQsT0FBTyxFQUFFLHlCQUFlO0tBQzNCLENBQUMsQ0FDTCxDQUFDLElBQUksQ0FBQztJQUVQLE1BQU0sY0FBYyxHQUFHLENBQ25CLE1BQU0sZUFBSyxDQUFDLEdBQUcsQ0FBUyxHQUFHLE1BQU0sb0JBQW9CLEVBQUU7UUFDbkQsT0FBTyxFQUFFLHlCQUFlO0tBQzNCLENBQUMsQ0FDTCxDQUFDLElBQUksQ0FBQztJQUVQLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUztRQUN2QyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDSixDQUFDLEdBQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFDM0QsQ0FBQyxDQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVSLE9BQU87UUFDSCxNQUFNO1FBQ04sTUFBTSxF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