主页 > imtoken官网app下载 > 比特币锁脚本带来的“坑”——比特币真正的高手是“锁脚本”,而不是私钥
比特币锁脚本带来的“坑”——比特币真正的高手是“锁脚本”,而不是私钥
比特币锁脚本带来的“坑”——真正控制比特币的是“锁脚本”,而不是私钥。
这几天研究了比特币的p2pkh、p2sh锁脚本和解锁脚本海峡比特币,发现了比特币锁脚本带来的“坑”——真正掌握比特币的前提是“锁脚本”,而不是私钥。
1、如果你了解utxo的原理,你就会知道:
(1) 一个比特币地址上的比特币总数实际上是该地址上所有utxo比特币的总和。
(2) 每个 utxo 都有一个“锁脚本”,它定义了 utxo 的花费条件。 通过私钥解锁utxo上的比特币只是消费条件之一,当然是最常用的,也是钱包构造交易时默认的消费条件。
(3) utxo的支出条件由交易发送方定义,因为utxo的锁定脚本是比特币交易的一部分海峡比特币,交易的构建由交易发送方完成。
这时候就有一个问题,就是这个utxo的消费条件可能是“不是用utxo所在地址的私钥解锁的”,而是用其他条件或者其他私钥解锁的。
比特币的锁定脚本和解锁脚本正是比特币作为可编程货币(自带智能合约)的体现。 我们可以设置各种解锁条件,比如一定时间或者一定区块高度来花费utxo。
因此,无论解锁消费条件是什么,全节点都不会检查是否“合法”,只能由交易的接收方检查,即使比特币被送入黑洞(即,没有人能给出相应的解锁“钥匙”)。
2.按脚本类型具体分析
1. p2pkh(pay to public key hash):地址以1开头。
我们可以通过blockchain.com查看交易7f972c4575a2f23aa7c794ed1b9578326bf552829cbf10b59253ca4aa6fa7250产生的index=1的utxo(即地址1JwyVSpJAa281cDLAdwBi74Sb6hHE7vBGz的utxo)。
如果锁定脚本(Pkscript):
(1) 格式如下:
OP_DUP
OP_HASH160
c4dfc18fb8bcfbeab61aa7ebb9e4d6e916995205
OP_EQUALVERIFY
OP_CHECKSIG
(2) 而“c4dfc18fb8bcfbeab61aa7ebb9e4d6e916995205”经过base58check编码后就是比特币的接收地址。
上面的十六进制值是没有经过base58check编码的比特币地址的格式。 也是sha256和ripemd160之后公钥的hash值。 如果将该值替换为发送方公钥的哈希值,发送方将可以用自己的私钥解锁地址上的 utxo。
可以通过网站查询。
如果不满足上述(1)或(2),则很有可能:即使你有该地址的私钥,也无法解锁utxo中的比特币。
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
2021年3月2日,首先说一下文章错误的地方:
对于p2pkh,在比特币的交易数据结构中,输出部分是没有“输出地址”字段的! “lock script”中的地址是经过base58check编码后的接收方地址,所以lock script中的地址必须是接收方的地址,否则接收方收不到比特币。 交易数据结构如下图所示:
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
2. p2sh(pay to script hash):地址以3开头。
(1) 标准p2sh脚本
p2sh主要用于多重签名。 例如,如果您与 A 和 B 这三个人一起创办一家公司,如果您同意,你们中的任何两个人都可以使用 utxo 上的比特币。 如果你不懂技术,你很可能会被骗,也就是你的私钥不起作用。 具体分析如下。
我们可以通过blockchain.com查看交易d8ded48f7874a6ef590655e18963ffdf0e20a160702bd671dcc2ca75d72e12d5生成的index = 0的utxo(即地址3DF7tcrgLWJ1jfoZhRwwSoBaMwNiMZqT5y上的utxo)。
如果锁定脚本(Pkscript):
(1) 格式如下:
OP_HASH160
59ff94aeca2beffecfc69616e1e797ccfdf9d344
OP_EQUAL
(2) 而“59ff94aeca2beffecfc69616e1e797ccfdf9d344”必须是你们三个公钥组成的赎回脚本sha256和ripemd160后的值。
赎回脚本的组成:“52”+“你的公钥”+“A的公钥”+“B的公钥”+“53”+“ae”。 不要忘记您的公钥!
原理见:《P2SH(pay-to-script-hash) multi-signature lock script and unlock script in Bitcoin》
注意:计算hash值时,去掉上面的双引号和加号。
可以通过网站计算。
如果以上(1)或(2)都不满足,那很有可能你已经被骗了,你的私钥只是一个摆设。
(2) P2SH-P2WPKH, P2SH-P2WSH
P2SH-P2WPKH和P2SH-P2WSH是为了支持老钱包升级P2WPKH和P2WSH。 使用这种格式,旧钱包可以创建到隔离见证地址的交易。
详细分析见下图
3.p2wpkh
交易编号:b9d4d5003269fa3b7555c69dd9075f67bfcb1dffa3555caea3e4c2428b6b2c13
具体的解析脚本如下,和p2pkh-p2wpkh很像,但是更加简洁。
4.p2wsh
可以参考p2sh-p2wsh脚本分析。
3、如何避免?
如果你是平台提币,你也不用担心,因为平台是盈利的,不会贪你的芝麻。
未来,当比特币支付开始流行时,建议小心并检查发送方构建的 utxo。