send-crypto
Version:
A minimal JavaScript library / wallet for sending crypto assets
40 lines • 3.35 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ElectrumX = void 0;
const axios_1 = __importDefault(require("axios"));
const utxo_1 = require("../../lib/utxo");
const getURL = (network, testnet) => `https://multichain-web-proxy.herokuapp.com/electrumx-${network}-${testnet ? "testnet" : "mainnet"}`;
const fetchUTXOs = (network, testnet) => async (address, confirmations, scriptHash) => {
if (!scriptHash) {
throw new Error("Must provide script hash.");
}
const url = getURL(network, testnet);
const latestBlock = (await axios_1.default.post(url, {
jsonrpc: "1.0",
id: "67",
method: "blockchain.scripthash.listunspent",
params: [scriptHash],
})).data.result.height;
const response = await axios_1.default.post(url, {
jsonrpc: "1.0",
id: "67",
method: "blockchain.scripthash.listunspent",
params: [scriptHash],
});
return response.data.result
.map((utxo) => ({
txHash: utxo.tx_hash,
amount: utxo.value,
vOut: utxo.tx_pos,
confirmations: utxo.height ? 1 + latestBlock - utxo.height : 0,
}))
.filter((utxo) => confirmations === 0 || utxo.confirmations >= confirmations)
.sort(utxo_1.sortUTXOs);
};
exports.ElectrumX = {
fetchUTXOs,
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlY3RydW14LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9hcGlzL2VsZWN0cnVteC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFFMUIseUNBQWlEO0FBRWpELE1BQU0sTUFBTSxHQUFHLENBQUMsT0FBZSxFQUFFLE9BQWdCLEVBQUUsRUFBRSxDQUNqRCx3REFBd0QsT0FBTyxJQUMzRCxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FDMUIsRUFBRSxDQUFDO0FBRVAsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFlLEVBQUUsT0FBZ0IsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUMzRCxPQUFlLEVBQ2YsYUFBcUIsRUFDckIsVUFBbUIsRUFDSyxFQUFFO0lBQzFCLElBQUksQ0FBQyxVQUFVLEVBQUU7UUFDYixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7S0FDaEQ7SUFDRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXJDLE1BQU0sV0FBVyxHQUFHLENBQ2hCLE1BQU0sZUFBSyxDQUFDLElBQUksQ0FPYixHQUFHLEVBQUU7UUFDSixPQUFPLEVBQUUsS0FBSztRQUNkLEVBQUUsRUFBRSxJQUFJO1FBQ1IsTUFBTSxFQUFFLG1DQUFtQztRQUMzQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUM7S0FDdkIsQ0FBQyxDQUNMLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFFckIsTUFBTSxRQUFRLEdBQUcsTUFBTSxlQUFLLENBQUMsSUFBSSxDQVc5QixHQUFHLEVBQUU7UUFDSixPQUFPLEVBQUUsS0FBSztRQUNkLEVBQUUsRUFBRSxJQUFJO1FBQ1IsTUFBTSxFQUFFLG1DQUFtQztRQUMzQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUM7S0FDdkIsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU07U0FDdEIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSztRQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU07UUFDakIsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNqRSxDQUFDLENBQUM7U0FDRixNQUFNLENBQ0gsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGFBQWEsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxhQUFhLENBQ3ZFO1NBQ0EsSUFBSSxDQUFDLGdCQUFTLENBQUMsQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFVyxRQUFBLFNBQVMsR0FBRztJQUNyQixVQUFVO0NBQ2IsQ0FBQyJ9