文章

BTC 多签赎回原理

一、什么是BTC赎回脚本?

赎回脚本(Redeem Script)是比特币脚本系统中的一个术语,主要与P2SH(Pay-to-Script-Hash)类型地址相关联。

  • P2SH地址:接收比特币时,用户一般看到的是一个以“3”开头的地址,本质上是一个脚本的哈希值。

  • 只有当你想“花费/转出”这个P2SH上的币时,才必须提供能解锁资金的完整赎回脚本与所需数据(如签名),其内容需和哈希对上。

简化理解:
赎回脚本 = 该笔比特币资金被锁定时的全部条件代码,即“满足什么条件才能花这笔钱”。


二、赎回脚本的原理

  1. 锁定阶段

    • 比如A设置一个P2SH多签或定制条件,把赎回脚本的哈希(Hash160)当做锁定条件(生成地址)。

  2. 花费阶段

    • 花比特币时,需要在交易解锁端提供:

      • 所需的数据(比如N个签名等,满足条件)。

      • 完整赎回脚本本身

    • 比特币节点将用户提供的赎回脚本再次哈希,与锁定脚本里的哈希对比,如果一致就运行赎回脚本,进一步验证条件是否满足(比如签名是否正确)——满足才能转账成功。


三、赎回脚本的例子

例子1:2-3多签P2SH赎回

假设Alice、Bob、Carol三个人设立一个2-3多签P2SH地址:

1. 赎回脚本内容

2 <PubKey_Alice> <PubKey_Bob> <PubKey_Carol> 3 OP_CHECKMULTISIG

含义:这3个公钥中至少2个签名,才能花这笔钱。

2. P2SH过程

  • 生成地址时:锁定脚本 = OP_HASH160 <赎回脚本哈希> OP_EQUAL

    • 用户仅看到以“3”开头的P2SH地址。

  • 花费时

    • 解锁脚本 =
      <签名A> <签名B> <完整赎回脚本>

    • 比特币系统会校验:“你提供的赎回脚本哈希”等于地址上锁定的哈希(必须一致),

    • 然后用签名A和签名B尝试解锁其内容,校验通过放币,否则失败。


例子2:定制锁定条件(如延时释放)

你可以创建任意复杂脚本,比如“在2025年以后才能花,且需要Bob和Carol签名”。
这种自定义逻辑都会写在赎回脚本里,P2SH能封装复杂条件,仅将条件哈希暴露为收款地址,需要花的时候再公布赎回逻辑本身。


四、实用性和优势

  • 匿名性:不直接暴露多签、复杂逻辑细节,地址只是个哈希,只有花钱时才公开脚本内容。

  • 高度可扩展:P2SH+赎回脚本可以实现大部分比特币逻辑上的自定义规则。

  • 多签管理:主流多签钱包、多方托管全靠赎回脚本。


五、简明总结

  • 赎回脚本:就是锁定比特币资金的条件脚本(如多签、公钥、时间锁等)。

  • P2SH流程
    1)锁币时保存“赎回脚本的哈希”,
    2)花币时“提供赎回脚本”和必要数据,节点先对比哈希,再验证脚本内容及数据。


口诀记忆

“P2SH收款只露哈希,花钱时须亮赎回书。”

许可协议:  CC BY 4.0