BTC 多签赎回原理
一、什么是BTC赎回脚本?
赎回脚本(Redeem Script)是比特币脚本系统中的一个术语,主要与P2SH(Pay-to-Script-Hash)类型地址相关联。
P2SH地址:接收比特币时,用户一般看到的是一个以“3”开头的地址,本质上是一个脚本的哈希值。
只有当你想“花费/转出”这个P2SH上的币时,才必须提供能解锁资金的完整赎回脚本与所需数据(如签名),其内容需和哈希对上。
简化理解:
赎回脚本 = 该笔比特币资金被锁定时的全部条件代码,即“满足什么条件才能花这笔钱”。
二、赎回脚本的原理
锁定阶段:
比如A设置一个P2SH多签或定制条件,把赎回脚本的哈希(Hash160)当做锁定条件(生成地址)。
花费阶段:
花比特币时,需要在交易解锁端提供:
所需的数据(比如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收款只露哈希,花钱时须亮赎回书。”