UNPKG

@vbyte/btc-dev

Version:

Batteries-included toolset for plebian bitcoin development

38 lines (37 loc) 1.14 kB
import { Assert } from '@vbyte/micro-lib'; const LOCKTIME_THRESHOLD = 500000000; export var LocktimeField; (function (LocktimeField) { LocktimeField.encode = encode_locktime; LocktimeField.decode = decode_locktime; })(LocktimeField || (LocktimeField = {})); export function encode_locktime(locktime) { switch (locktime.type) { case 'timelock': Assert.ok(locktime.stamp >= LOCKTIME_THRESHOLD, 'Invalid timestamp'); return locktime.stamp; case 'heightlock': Assert.ok(locktime.height > 0, 'height must be greater than 0'); Assert.ok(locktime.height < LOCKTIME_THRESHOLD, 'invalid block height'); return locktime.height; default: throw new Error('Invalid locktime type'); } } export function decode_locktime(locktime) { if (isNaN(locktime) || locktime <= 0) { return null; } if (locktime < LOCKTIME_THRESHOLD) { return { type: 'heightlock', height: locktime }; } else { return { type: 'timelock', stamp: locktime }; } }