美文网首页共读《精通比特币》
共读《精通比特币》第21天——5.7.5 P2SH(Pay-to

共读《精通比特币》第21天——5.7.5 P2SH(Pay-to

作者: 且听风吟闲翻书 | 来源:发表于2018-08-18 08:36 被阅读167次

    我们只能做自己,因为别人的角色已经有他们自己做了。

    比特币,究竟是一场颠覆现有金融体系的伟大互联网金融试验?还是一个由极客主导的庞氏骗局?比特币到底是什么?我们能做的是人云亦云还是有自己的独立判断?

    一起来读《精通比特币》,全面了解比特币的工作原理,推而广之让我们也能理解其他数字货币原理,走向数字货币新旅程。

    每天早上发文,欢迎关注支持,一起加油!

    《精通比特币》一书,英文原名为Mastering Bitcoin ,本书中英文电子版链接如下,点击蓝色字可跳转阅读:

    1. 英文原版:Mastering Bitcoin
    2. 知笔墨中文版,第5章 交易

    简单的说比特币世界里的钱,是一串由数字签名组成的链条。我们把这一串数字签名链条,叫做一个数字货币。

    这一串数字签名链条,我们可以通俗地理解为一个巨大的活页账本,账本的第一页写的是『这是中本聪的钱』,第二页写的是『中本聪把钱给张3啦』和中本聪的亲笔签名,第三页写的是『张3把钱给李4啦』和『张3』的签名……每一次交易,都会在这个活页账本再加上一页,记录了钱的上一个主人把钱给了谁,再附上原主人的签名,这使得数字货币得以流转起来。

    活页账本每加一页,都由比特币网络中的所有人,做出记录和见证,因而无法造假,或者因为造假成本太大,比如要黑掉全网51%的账本才能改变之前的账本,而变成事实上的无法造假。

    比特币交易验证,通过运行脚本语言来实现。今天我们继续学习第7节标准交易的第5小节——5.7.5 P2SH(Pay-to-Script-Hash)。

    本小白教程会跳过第七节的程序代码,想要学习区块链编程的同学们,请自行阅读原文内容 知笔墨中文版,第5章 交易

    5.7 标准交易

    在比特币最初几年的发展过程中,开发者对可以经由客户端进行操作的脚本类型设置了一些限制。这些限制被编译为一个Standard()函数,该函数定义了五种类型的标准交易。五大标准脚本分别为P2PKH、P2PK、MS(限15个密钥)、P2SH和OP_Return。

    5.7.5 P2SH(Pay-to-Script-Hash)

    在第1章中,我们曾介绍过一个实例,迪拜的电子产品进口商Mohammed的公司,要求采用多重签名交易,也就是顾客的任何支付都需要至少两个签名才能解锁,一个来自Mohammed,另一个来自其合伙人或拥有备份钥匙的代理人。

    这样的多重签名机制,能为公司治理提供管控便利,同时也能有效防范盗窃、挪用和遗失。

    虽然多重签名十分强大,但最终的交易脚本,可能是最初交易脚本长度的5倍之多,使用起来多有不便,额外长度的脚本也将给客户造成费用负担,且这个交易脚本,会一直记录在所有节点的随机存储器的UTXO集中,直到该笔资金被使用。

    所有这些,都使得在实际交易中采用复杂输出脚本,显得困难重重。

    P2SH在2012年被作为一种新型、强大、且能大大简化复杂交易脚本的交易类型而引入,旨在使复杂脚本的运用,能与直接向比特币地址支付一样简单。

    来来来,咱们吃瓜群众就从脚本的字数来感受一下,多重签名最终的交易脚本这个非常长的程序代码吧:

    04C16B8698A9ABF84250A7C3EA7EE-
    DEF9897D1C8C6ADF47F06CF73370D74DCCA01CDCA79DCC5C395D7EEC6984D83F1F50C900A24DD47F569FD4193AF5DE762C58704A2192968D8655D6A935BEAF2CA23E3FB87A3495E7AF308EDF08DAC3C1FCBFC2C75B4B0F4D0B1B70CD2423657738C0C2B1D5CE65C97D78D0E34224858008E8B49047E63248B75DB7379BE9CDA8CE5751D16485F431E46117B9D0C1837C9D5737812F393DA7D4420D7E1A9162F0279CFC10F1E8E8F3020DECDBC3C0DD389D99779650421D65CBD7149B255382ED7F78E946580657EE6FDA162A187543A9D85BAAA93A4AB3A8F044DA-
    DA618D087227440645ABE8A35DA8C5B73997AD343BE5C2AFD94A5043752580AFA1EC-
    ED3C68D446BCAB69AC0A7DF50D56231BE0AABF1FDEEC78A6A45E394BA29A1EDF518C022DD618DA774D207D137AAB59E0B000EB7ED238F4D800 5 OP_CHECKMULTISIG
    

    (此处可以拖动滑块向右查看全部代码)
    再来看看简化之后的锁定脚本为:
    OP_HASH160 54c557e07dde5bb6cb791c7a540e0a4796f5e97e OP_EQUAL
    正如你所看到的,这个脚本比前面的长脚本简短多了。

    5.7.5.1 P2SH地址

    P2SH的另一重要特征是它能将脚本哈希编译为一个地址,隐藏了所有的复杂性,因此,运用其进行支付的人将不会看到脚本。

    还是来看前面那个个实例,迪拜的电子产品进口商Mohammed的公司,要求采用多重签名交易,顾客的任何支付都需要至少两个签名才能解锁。两个签名,一个来自Mohammed,另一个来自其合伙人或拥有备份钥匙的代理人。多重签名最终的交易脚本,这个程序代码会非常长。

    而基于Base58编码下的P2SH地址变为“39RF6JqABiHdYHkfChV6USGMe6Nsr66Gzw”。
    此时,电子产品进口商Mohammed可以将该地址发送给他的客户,这些客户可以采用任何的比特币钱包实现简单支付,就像这是一个比特币地址一样。
    以“3”为前缀,给予客户这是一种特殊类型的地址的暗示,该地址与一个脚本相对应,而非与一个公钥相对应,但是它的效果与比特币地址支付别无二致。

    5.7.5.2 P2SH的优点

    从前文就可以看到 P2SH有很多优点,在此不再赘述。(吐槽模式开启:看到这里发现,写科学文章的人,也很啰嗦啊)

    5.7.5.3 赎回脚本和标准确认

    0.9.2 之后 版本的比特币核心客户端,P2SH交易能包含任意有效的脚本,这使得P2SH标准更为灵活,也可以用于多种新的或复杂类型的交易。

    小白学习者可以跳过这句,对区块链编程学习者的提醒:请记住,不能将P2SH植入P2SH赎回脚本,因为P2SH不能自循环。也不能在赎回脚本中使用OP_RETURN,因为OP_RETURN的定义即显示不能赎回。


    第五章全部内容思维导图如下:

    明天我们开始《第6章 比特币网络》的学习。

    今天就到这里吧,明天我们继续,立秋了,夏天过去了,祝大家秋天快乐!

    288/365
    20180818首发简书


    参考文献:

    1、 知笔墨《精通比特币》中文版——第5章 交易

    2、爱莉莎:【区块链科普——课表放这里】

    3、比特币白皮书原版:Bitcoin: A Peer-to-Peer Electronic Cash System

    4、比特币白皮书——巴比特网站中译版

    5、Scalers:《比特币白皮书解析 | 从零开始区块链》a

    照搬的信念,无法抵御波动的冲击,只有行动铸就的思想体系,并在行进中不断修正,才能让我们不断变得更好。——Scalers《投资赚钱就是信念变现》

    相关文章

      网友评论

        本文标题:共读《精通比特币》第21天——5.7.5 P2SH(Pay-to

        本文链接:https://www.haomeiwen.com/subject/cqfzbftx.html