UNPKG

@vbyte/btc-dev

Version:

Batteries-included toolset for plebian bitcoin development

53 lines (52 loc) 1.62 kB
import { Buff } from '@vbyte/buff'; import { LOCK_SCRIPT_REGEX } from '../../const.js'; export function is_return_script(script) { const bytes = Buff.bytes(script); return bytes.at(0) === 0x6a; } export function get_lock_script_info(script) { return { type: get_lock_script_type(script), version: get_lock_script_version(script) }; } export function get_lock_script_type(script) { const hex = Buff.bytes(script).hex; for (const [type, regex] of Object.entries(LOCK_SCRIPT_REGEX)) { if (regex.test(hex)) return type; } return null; } export function get_lock_script_version(script) { const version = Buff.bytes(script); switch (version.at(0)) { case 0x00: return 0; case 0x51: return 1; default: return null; } } export function is_p2pkh_script(script) { const hex = Buff.bytes(script).hex; return LOCK_SCRIPT_REGEX['p2pkh'].test(hex); } export function is_p2sh_script(script) { const hex = Buff.bytes(script).hex; return LOCK_SCRIPT_REGEX['p2sh'].test(hex); } export function is_p2wpkh_script(script) { const hex = Buff.bytes(script).hex; return LOCK_SCRIPT_REGEX['p2wpkh'].test(hex); } export function is_p2wsh_script(script) { const hex = Buff.bytes(script).hex; return LOCK_SCRIPT_REGEX['p2wsh'].test(hex); } export function is_p2tr_script(script) { const hex = Buff.bytes(script).hex; return LOCK_SCRIPT_REGEX['p2tr'].test(hex); } export function is_opreturn_script(script) { const hex = Buff.bytes(script).hex; return LOCK_SCRIPT_REGEX['opreturn'].test(hex); }