0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

比特币交易脚本详解

lviY_AI_shequ 来源:未知 作者:胡薇 2018-06-22 09:59 次阅读

经过第五章的学习,其实对区块链有一个更深的了解,就是,不仅区块前后相连,而且交易和交易之间也是相连,一个普通交易的输入部分总是前面某个交易的输出UTXO。在《比特币 (1):传统货币和比特币的区别》中看到的相连,就是普通交易之间的相互连接;在《比特币 (2):区块链的大致结构》中看到的相连,是区块之间的相互连接。

假设你已经阅读完第五章,对于为啥需要脚本也比较清楚了。首先明确一下,交易输入其实是之前某个交易的某个输出UTXO,是按照之前那个交易的Hash值加上对应输出在该交易中的位置标记的。一旦UTXO被选中,钱包会为每个UTXO生成包含签名的解锁脚本,换句话说,每个解锁脚本都对应的是一个之前某个输出的某个UTXO。

对于解锁脚本加上锁定脚本拼在一起,按照栈的方式运算,这个书中第五章已经说得很明确了,最重要的是栈操作的最后一步:

栈内是操作符是CHECKSIG

其实CHECKSIG很简单,就是基于一定的规则,看看之前钱包生成的正不正确。CHECKSIG的步骤肯定和生成的过程相同。我们来看看CHECKSIG的过程,其实也就知道了生成的过程。如下图:

正如前面所述,正在检查的这个解锁脚本,是放在该交易下面的该输入中,会对应一个之前某个交易的某个输出UTXO,那么假设,之前这个交易叫 TxPrev,而当前包含这个解锁脚本的交易叫TxNew(即TxNew的某个输入是该UTXO)。按照上图中说明的CHECKSIG的步骤(根据签名类型SIGHASH_ALL对整个交易进行验证):

1. 在栈中pop出

2. TxPrev中该UTXO对应的输出脚本,也即锁定脚本,会有很多的操作系列,每个操作系列之间使用OP_CODESEPARATOR分隔。取这个脚本最后一个操作系列,也就是倒数第一个OP_CODESEPARATOR和脚本结束之间的部分(上图与该逻辑不符合),取出来即为Subscript,注意该Subscript对应的是TxPrev下面的一个输出UTXO。

(3. 在Subscript中去掉签名)

4. 在Subscript中移除OP_CODESEPARATORS

5. 之前从栈中弹出的,最后一个字节代表的是签名类型,1是指SIGHASH_ALL,对整个交易进行验证。一个字节没有所谓的大小端问题。

6. 复制TxNew为TxCopy

7. 将交易TxCopy中的所有输入中的解锁脚本置为空(因为上面说过,CHECKSIG是和生成的过程对应,生成的时候,该部分都没有,所以验证的时候该部分肯定得去掉)

8. TxCopy中正在检查的解锁脚本位置,替换为经过步骤4处理完的Subscript

9. 序列化TxCopy,添加4字节的签名类型,即在步骤5中提到的签名类型,因为在5中是1个字节,现在变成4个字节,这时候才会涉及大小端问题,存为小端模式。得到的最终信息假设叫verifyThisStr。

10. 之前是个人钱包使用私钥对SHA256(SHA256(verifyThisStr))进行ECDSA加密的结果,现在已经重新计算出来了verifyThisStr,其他人验证的时候,利用对应的公开的公钥,对进行ECDSA解密,看是否与SHA256(SHA256(verifyThisStr))相同即可!!(反过来也是一样的)

至此,交易脚本的验证过程结束。

这里面最重要的是:

1. 生成verifyThisStr的过程,确保了每次进行加密解密的内容都不一样

2. 个人钱包使用用户的私钥进行加密,其他人利用用户公开的公钥进行解密

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 区块链
    +关注

    关注

    110

    文章

    15554

    浏览量

    104757
  • 比特币
    +关注

    关注

    57

    文章

    7000

    浏览量

    139331

原文标题:区块链系列--比特币 (5):交易脚本详解

文章出处:【微信号:AI_shequ,微信公众号:人工智能爱好者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    #硬声创作季 #区块链 区块链技术与应用-09-BTC-比特脚本-1

    区块链比特
    水管工
    发布于 :2022年10月09日 00:09:46

    #硬声创作季 #区块链 区块链技术与应用-09-BTC-比特脚本-2

    区块链比特
    水管工
    发布于 :2022年10月09日 00:10:46

    #硬声创作季 #区块链 区块链技术与应用-09-BTC-比特脚本-3

    区块链比特
    水管工
    发布于 :2022年10月09日 00:12:00

    #硬声创作季 区块链:1.1认识比特

    区块链比特
    Mr_haohao
    发布于 :2022年10月16日 23:44:12

    #硬声创作季 区块链:1.6比特的分叉

    区块链比特
    Mr_haohao
    发布于 :2022年10月16日 23:48:32

    #硬声创作季 区块链:1.7比特系统总结

    区块链比特
    Mr_haohao
    发布于 :2022年10月16日 23:49:07

    #硬声创作季 区块链与加:1.2比特的来源

    区块链比特
    Mr_haohao
    发布于 :2022年10月17日 09:42:07

    #硬声创作季 区块链与加:1.6比特分叉

    区块链比特
    Mr_haohao
    发布于 :2022年10月17日 09:44:29

    #硬声创作季 区块链与加:2.4比特回顾

    区块链比特
    Mr_haohao
    发布于 :2022年10月17日 09:47:11

    究竟比特是什么

    12月5日央行等五部委宣布禁止金融机构开展比特业务,但表示比特交易作为一种互联网上的商品买卖行为,普通民众在自担风险的前提下拥有参与的自
    发表于 12-15 11:17

    虚拟交易平台开发带挖矿程序矿机程序app开发

    ,是通往成功的不二法门。新型虚拟交易平台开发,场外交易平台开发。王女士:186--1561--4062,Q:28--2030--8734  1、转战海外市场 最近时日,日本比特
    发表于 12-11 10:43

    比特点对点场外交易平台系统开发公司哪家好

    交易系统专注研究区块链技术!专注于加密数字货币开发、数字资产交易管理平台开发、比特点对点场外交易平台系统开发、区块链应用定制、数字货币应用
    发表于 12-11 10:45

    比特交易所系统开发如何适应海外市场?

    比特交易所系统开发如何适应海外市场?近日央视携《对话》栏目帮助电视机前的观众们更好的探寻区块链是什么、会为我们的生活带来哪些改变、这项技术具体应该如何应用。目前大家对区块链的技术非常关注,之前国内
    发表于 05-28 14:55

    回收蚂蚁矿机,回收比特大陆矿机,收购比特矿机

    矿机的盛况已经不再。前途未卜 比特的“挖矿”过程是通过利用较高算力来解决一系列复杂的数学问题,来证明“矿工”使用了这个过程并将交易记录放到区块链上。如果矿工们能成功地验证这个方程式,他就能得到相应
    发表于 06-01 10:32

    时代周刊:为什么比特是自由的源泉?

    。为了避免这些状况,有些委内瑞拉人已经开始接收来自国外的比特。只要给身处国外的亲人发一条短信,他们就能在几分钟之后发出比特,而且手续费还很低。在这个过程中,***的审查并不管用,因
    发表于 01-01 23:23