UNPKG

@vbyte/btc-dev

Version:

Batteries-included toolset for plebian bitcoin development

33 lines (32 loc) 1.26 kB
import { Buff } from '@vbyte/buff'; import { get_lock_script_type } from '../../lib/script/lock.js'; import { get_address_info } from './util.js'; import { LOCK_SCRIPT_TYPE } from '../../const.js'; import { P2PKH } from './p2pkh.js'; import { P2SH } from './p2sh.js'; import { P2TR } from './p2tr.js'; import { P2WPKH } from './p2wpkh.js'; import { P2WSH } from './p2wsh.js'; export function get_address(script, network = 'main') { const bytes = Buff.bytes(script); const type = get_lock_script_type(bytes); if (type === null) throw new Error('unknown locking script: ' + bytes.hex); switch (type) { case LOCK_SCRIPT_TYPE.P2PKH: return P2PKH.encode_address(script, network); case LOCK_SCRIPT_TYPE.P2SH: return P2SH.encode_address(script, network); case LOCK_SCRIPT_TYPE.P2WPKH: return P2WPKH.encode_address(script, network); case LOCK_SCRIPT_TYPE.P2WSH: return P2WSH.encode_address(script, network); case LOCK_SCRIPT_TYPE.P2TR: return P2TR.encode_address(script, network); default: throw new Error('unknown script type: ' + type); } } export function parse_address(address) { return get_address_info(address); }