send-crypto
Version:
A minimal JavaScript library / wallet for sending crypto assets
34 lines • 3.13 kB
JavaScript
import axios from "axios";
import { sortUTXOs } from "../../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.post(url, {
jsonrpc: "1.0",
id: "67",
method: "blockchain.scripthash.listunspent",
params: [scriptHash],
})).data.result.height;
const response = await axios.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(sortUTXOs);
};
export const ElectrumX = {
fetchUTXOs,
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlY3RydW14LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9hcGlzL2VsZWN0cnVteC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLFNBQVMsRUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE1BQU0sTUFBTSxHQUFHLENBQUMsT0FBZSxFQUFFLE9BQWdCLEVBQUUsRUFBRSxDQUNqRCx3REFBd0QsT0FBTyxJQUMzRCxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FDMUIsRUFBRSxDQUFDO0FBRVAsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFlLEVBQUUsT0FBZ0IsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUMzRCxPQUFlLEVBQ2YsYUFBcUIsRUFDckIsVUFBbUIsRUFDSyxFQUFFO0lBQzFCLElBQUksQ0FBQyxVQUFVLEVBQUU7UUFDYixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7S0FDaEQ7SUFDRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXJDLE1BQU0sV0FBVyxHQUFHLENBQ2hCLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FPYixHQUFHLEVBQUU7UUFDSixPQUFPLEVBQUUsS0FBSztRQUNkLEVBQUUsRUFBRSxJQUFJO1FBQ1IsTUFBTSxFQUFFLG1DQUFtQztRQUMzQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUM7S0FDdkIsQ0FBQyxDQUNMLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFFckIsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxDQVc5QixHQUFHLEVBQUU7UUFDSixPQUFPLEVBQUUsS0FBSztRQUNkLEVBQUUsRUFBRSxJQUFJO1FBQ1IsTUFBTSxFQUFFLG1DQUFtQztRQUMzQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUM7S0FDdkIsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU07U0FDdEIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSztRQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU07UUFDakIsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNqRSxDQUFDLENBQUM7U0FDRixNQUFNLENBQ0gsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGFBQWEsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxhQUFhLENBQ3ZFO1NBQ0EsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUNyQixVQUFVO0NBQ2IsQ0FBQyJ9