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. 个人钱包使用用户的私钥进行加密,其他人利用用户公开的公钥进行解密

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

    关注

    111

    文章

    15562

    浏览量

    106244
  • 比特币
    +关注

    关注

    57

    文章

    7005

    浏览量

    140760

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

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

收藏 人收藏

    评论

    相关推荐

    究竟比特是什么

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

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

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

    比特交易平台排名情况

    国内比特交易平台哪个好,国内十大比特交易平台排名2017版:搞
    发表于 12-16 09:41 1.4w次阅读

    比特是不是电子货币_比特怎么交易

    本文开始详细的介绍了比特的特征,其次介绍了比特的几个易平台和分析了比特是不是电子货币,最后
    发表于 01-30 16:25 1w次阅读

    比特交易网站哪个好?比特交易网站排名一览

    比特早已分布在世界的各个角落,而如今想要获取比特比以前更加困难了,据说,在国内1枚比特现在
    发表于 05-29 16:01 2.5w次阅读

    比特ETN代表着比特交易所交易基金的一个软开端

    美国的投资者如果想在不购买加密货币的情况下交易比特,就可以通过比特交易所交易票据(ETN)获
    发表于 08-17 14:52 2288次阅读

    比特OTC场外交易市场具有哪些特点?

    随着各大交易所的关闭,严管之下,比特逐渐由场内交易交易所)转为场外交易。目前以社交群为载体的
    发表于 09-29 15:25 4980次阅读

    比特期货的交易模式及风险

    近期比特交易无论成交量还是价格似乎远远超出了我们的预期,更而甚者美国芝加哥商品交易所、芝加哥期权交易所、东京期货
    发表于 10-23 14:45 1292次阅读

    什么是灰尘比特交易

    在过去,粉尘交易比特用户来说并不一定是个问题。然而现在,情况发生了变化,去年晚些时候费用就比以往任何时候都高了,这就使得较小的价值交易发送起来变得更昂贵了。简而言之,一些开发商认为
    发表于 12-21 11:42 1137次阅读

    比特为什么要采用UTXO模型

    比特脚本是非图灵完备的。比特使用自行定义的一种脚本进行
    发表于 01-15 11:11 2424次阅读
    <b class='flag-5'>比特</b><b class='flag-5'>币</b>为什么要采用UTXO模型

    比特交易究竟是如何运作的

    比特使用UTXO(未使用的交易输出)模型,而不是账户/余额系统。这意味着区块链并不直接跟踪每个比特地址的
    发表于 04-06 09:00 6316次阅读
    <b class='flag-5'>比特</b><b class='flag-5'>币</b><b class='flag-5'>交易</b>究竟是如何运作的

    比特交易的好处的有哪些

    你有没有想过改变你的交易方式,用比特取代现金和银行?如果你已经想过,而且你还没有决定是否应该采取下一步,比如说紧接着在你的交易中全部使用数字加密货币,现在看看
    发表于 04-23 10:48 3351次阅读

    比特脚本的应用实例介绍

    比特一直以来都有一种机制,它可通过更复杂的策略(而不仅仅是单个密钥)来使可花费:这就是脚本(Script)系统。虽然脚本主要用于单密钥支
    发表于 09-10 11:16 1768次阅读

    比特被频繁用于非法交易的原因是什么

    比特价格暴涨,交易手续费持续高昂,与比特功能相似,但交易速度和手续费价格更佳的莱特
    发表于 11-11 10:10 3564次阅读

    比特混合交易的好处是什么

    比特网络上的交易是开放的。这意味着任何对此感兴趣的人都可以查看分类帐并了解您的交易历史。他们甚至可以知道你钱包里有多少比特
    发表于 03-08 11:34 581次阅读