aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/ticket.ts
blob: 0d93f39071d512af4c2de528e2d97acaf0882601 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { auth, get, post } from "$lib/utils";
import { env } from "$env/dynamic/private";
import tickets from "$lib/tickets";

export const createTicket = async (cookies, username) => {
	const { ticket } = await get("/ticket");

	const { address } = await post(
		`/${username}/invoice`,
		{ invoice: { network: "liquid" }, user: { username } },
		auth(cookies),
	);

	const { asset } = await post(
		"/assets",
		{
			address,
			name: `Launch Party Ticket ${ticket}`,
			ticker: "LPT",
			precision: 0,
			asset_amount: "1",
			token_amount: 0,
			domain: "coinos.io",
			filename: tickets[ticket],
		},
		{ authorization: `Bearer ${env.LAUNCH}` },
	);

	await post("/ticket", { asset }, { authorization: `Bearer ${env.LAUNCH}` });
	return asset;
};
s="nx">p => p.address))]; const utxos = []; for (let i = 0; i < addresses.length; i++) { try { utxos.push(...(await axios.get(`${api}/address/${addresses[i]}/utxo`)).data); } catch (e) { l.error("problem fetching utxos", e.message); } } let targets = [ { address, value: amount } ]; let { inputs, outputs, fee } = coinselect(utxos, targets, feeRate); if (!inputs || !outputs) { l.info("utxos", amount, feeRate, utxos.map(u => u.value)); throw new Error("Couldn't find inputs for transaction, check your balance/fee"); } let psbt = new bitcoin.Psbt({ network }); let total = 0; outputs.map(({ address, value }) => { total += value; if (!address) { address = payments[payments.length - 1].address; change.push(address); } psbt = psbt.addOutput({ address, value }); }); for (let i = 0; i < inputs.length; i++) { let { txid, vout } = inputs[i]; let nonWitnessUtxo = Buffer.from(await bc.getRawTransaction(txid), "hex"); psbt = psbt.addInput({ hash: txid, index: vout, nonWitnessUtxo }); } if (replaceable) psbt.setInputSequence(0, 0xffffffff - 2); feeRate = Math.round(feeRate * 1000); psbt = psbt.toBase64(); return { tx: psbt, feeRate }; };