SuperAPI AI 工具集

timelock

通用与其它

查看项目

更新于 10-15 17:23

技能介绍

用途:timelock 用于处理时间锁定的 BSV,可把 satoshi 锁定到指定区块高度、查询锁定状态,并在锁到期后解锁。它基于 @1sat/actions,是 1sat-sdk 中的技能。

主要能力:getLockData 返回全部锁的摘要,包括 totalLocked、unlockable 与 nextUnlock(下一个到期区块高度);lockBsv 将 BSV 锁定到指定高度 until,支持一笔交易内提交多个锁请求,返回 txid;unlockBsv 解锁所有已到期锁,无到期锁时返回 error 为 no-matured-locks。

使用方式:安装依赖 bun add @1sat/actions @1sat/wallet @bsv/sdk。用 createContext(wallet, { services }) 创建上下文后调用相应动作。lockBsv 传入 requests 数组,每项含 satoshis 与 until;unlockBsv 通过 completeSignedAction 走两阶段流程,处理 BEEF 合并、逐输入用 Lock.unlockWithWallet 签名、脚本校验、signAction 提交,失败时自动 abortAction。构建锁输入的 createAction 参数为 unlockingScriptLength 1205、sequenceNumber 0、anyoneCanPay 为 false。解锁需交易 nLockTime 大于等于锁区块高度、输入 sequenceNumber 为 0、锁密钥有效签名。锁脚本为 CLTV 加 P2PKH,存储于 locks basket,带 until:{height} 标签和自定义指令。当前高度可用 services.chaintracks.currentHeight() 获取,也可请求 https://api.1sat.app/1sat/chaintracks/height。

适用场景与限制:适合需要按区块高度约束 BSV 动用时间的钱包或应用。解锁操作需要 services 提供当前高度;费用、完整错误处理与网络要求暂未提供。