@vbyte/btc-dev
Version:
Batteries-included toolset for plebian bitcoin development
53 lines (52 loc) • 1.62 kB
JavaScript
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);
}