UNPKG

@vbyte/btc-dev

Version:

Batteries-included toolset for plebian bitcoin development

39 lines (38 loc) 1.09 kB
import { z } from 'zod'; import { hex, hex32, uint } from '@vbyte/micro-lib/schema'; const sats = z.bigint().min(0n).max(2100000000000000n); export const tx_output = z.object({ value: sats, script_pk: hex, }); export const tx_input = z.object({ coinbase: hex.nullable(), txid: hex32, vout: uint, prevout: tx_output.nullable(), script_sig: hex.nullable(), sequence: uint, witness: z.array(hex) }); export const tx_data = z.object({ version: uint, vin: z.array(tx_input), vout: z.array(tx_output), locktime: uint, }); export const vout_template = tx_output.extend({ value: z.union([uint, sats]) }); export const vin_template = tx_input.extend({ coinbase: hex.nullable().optional(), prevout: vout_template.nullable().optional(), script_sig: hex.nullable().optional(), sequence: z.union([hex, uint]).optional(), witness: z.array(hex).optional(), }); export const tx_template = z.object({ version: uint.optional(), vin: z.array(vin_template), vout: z.array(vout_template), locktime: uint.optional(), });