一个P2TR地址可以同时准备“大家合作签名”和“合作失败时按备用脚本退出”。Taproot把内部公钥与脚本树根调整成一个输出键,链上在未花费前看不到备用分支。真正花费时,见证数据才表明走的是密钥路径还是脚本路径。
输出键背后的承诺
- Taproot输出键由内部密钥和可选脚本树Merkle根共同调整得到,同一个P2TR输出可承诺两种花费路径。
- 密钥路径见证主要提供Schnorr签名;脚本路径还需提供脚本、控制块及满足脚本的栈数据。
- 未执行的脚本分支不会在链上公开,脚本路径只揭示实际叶子及其承诺证明,但仍会暴露该次备用条件。
输出地址如何承诺两套方案
内部密钥与可选脚本树Merkle根经过tweak形成输出键。地址只展示输出键,旁观者不知道是否存在脚本树、树里有多少分支。创建方必须保存内部密钥、每个叶子脚本和树结构;丢失控制块所需信息,脚本条件即使理论成立也无法构造证明。
| 维度 | 密钥路径 | 脚本路径 |
|---|---|---|
| 主要见证 | Schnorr签名 | 脚本、控制块、满足条件的数据 |
| 公开条件 | 不公开脚本树 | 公开实际叶子与Merkle证明 |
| 常见用途 | 正常协作、聚合签名 | 超时退款、恢复、多条件备用 |
| 费用 | 通常更小 | 随脚本与证明大小增加 |
密钥路径适合正常合作
参与者若能聚合或协作产生对输出键有效的Schnorr签名,见证更短,也不公开备用条款。它的风险集中在密钥协作协议、nonce生成和参与者可用性。不能把“链上看起来像单签”误认为实际只有一个控制者。
Taproot改善隐私但不等于匿名
Taproot改善隐私,不提供匿名保证。脚本路径花费仍会公开所用条件,地址复用、金额和交易图也会泄露关系。密钥路径更小,但若协作签名协议或备份失败,费用优势无法补救不可花费风险。
脚本路径承担故障恢复
合作失败时,可以公开一个时间锁、多签或哈希锁叶子,再附控制块证明该叶子属于原承诺。其他未用分支仍保持隐藏。叶子越复杂、Merkle路径越深,见证越大;设计时应把高概率路径放在较浅位置,并先演练恢复交易。
设计恢复叶子的演练表
- 备份内部密钥与完整脚本树描述
- 分别测试密钥路径和每个恢复叶子
- 核对leaf version与控制块奇偶位
- 估算最坏脚本路径见证费用
- 大额使用前在测试环境完成恢复演练
脚本中的绝对和相对锁可结合比特币三种时间锁设计;签名交易前参考PSBT核对清单,交易卡住后再按RBF与CPFP判断加速方式。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。