美文网首页共读《精通比特币》
共读《精通比特币》第20天——第5章5.7 标准交易

共读《精通比特币》第20天——第5章5.7 标准交易

作者: 且听风吟闲翻书 | 来源:发表于2018-08-17 09:05 被阅读8次

    外面没有别人,只有自己。——张德芬

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

    一起来读《精通比特币》,全面了解比特币的工作原理,从而理解其他数字货币,走向数字货币新旅程。

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

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

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

    简单的说比特币世界里的钱,是一串数字签名链条。我们把这一串数字签名链条,叫做一个数字货币。一个数字货币,也就是一串数字签名链条,也可以通俗地理解为一个巨大的活页账本。

    活页账本的第一页写的是『中本聪的钱』;第二页写的是『中本聪把钱给张3啦』和中本聪的亲笔签名;第三页写的是『张3把钱给李4啦』和『张3』的签名……

    每次交易,都会在这个活页账本再加上一页,钱的上一个主人,会写上把钱给了谁,再附加上自己的签名,这使得数字货币得以流转起来。

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

    比特币交易验证,通过运行脚本语言来实现。今天我们继续学习第7节标准交易。

    第七节大部分内容都是程序代码,对于本小白教程来说,会跳过大部分内容。

    想要学习区块链编程的同学们,请自行阅读原文内容 知笔墨中文版,第5章 交易

    5.7 标准交易

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

    5.7.1 P2PKH(Pay-to-Public-Key-Hash)

    比特币网络上的大多数交易,都是P2PKH交易。
    P2PKH交易,都含有一个锁定脚本,由公钥哈希,实现阻止输出功能。
    由P2PKH脚本锁定的输出,可以通过键入公钥和由相应私钥创设的数字签名,得以解锁。回顾之前使用过的Alice向Bob咖啡馆支付的案例:

    Alice下达了向Bob咖啡馆的比特币地址支付0.015比特币的支付指令,该笔交易的输出内容为以下形式的锁定脚本:

    OP_DUP OP_HASH160 <Cafe Public Key Hash> OP_EQUAL OP_CHECKSIG

    脚本中的Cafe Public Key Hash是咖啡馆的比特币地址。

    锁定脚本的解锁版脚本是:

    <Cafe Signature> <Cafe Public Key>

    将两个脚本结合起来是:

    <Cafe Signature> <Cafe Public Key> OP_DUP OP_HASH160
    <Cafe Public Key Hash> OP_EQUAL OP_CHECKSIG
    

    当解锁版脚本与锁定版脚本的设定条件,相匹配时,执行组合有效脚本时才会显示结果为真。即只有当解锁脚本得到了咖啡馆的有效签名,交易执行结果才会被通过。该有效签名,是从与公钥哈希相匹配的咖啡馆的私钥中所获取的。


    注意:比特币地址,不是基于Base58Check编码的。大多数比特币地址都显示为十六进制码,而不是大家所熟知的以1开头的基于Bsase58Check编码的比特币地址。

    5.7.2 P2PK(Pay-to-Public-Key)

    与P2PKH相比,P2PK模式更为简单。
    与P2PKH模式含有公钥哈希的模式不同,在P2PK脚本模式中,公钥本身已经存储在锁定脚本中,而且代码长度也更短。
    P2PKH是由Satoshi创建的,主要目的一方面为使比特币地址更简短,另一方面也使之更方便使用。
    P2PK目前在Coinbase交易中最为常见,Coinbase交易由老的采矿软件产生,目前还没更新至P2PKH。

    5.7.3 多重签名

    多重签名脚本设置了一个条件:
    假如记录在脚本中的公钥个数为N,则至少需提供其中的M个公钥才可以解锁。

    例如,对于一个2-3多重签名组合而言,存档公钥数为3个,至少同时使用其中2个或者2个以上的公钥时,才能生成激活交易的签名,通过验证后才可使用这笔资金。

    5.7.4 数据输出(OP_RETURN操作符)

    比特币的分发和时间戳账户机制(也即区块链),其潜在运用已大大超越支付领域。许多开发者试图充分发挥其安全性和可恢复性优势,将其运用于电子公证服务、证券认证和智能协议等领域。

    运用比特币区块链,存储与比特币支付不相关数据的做法,是一个有争议的话题。

    那些反对非支付相关应用的开发者,认为这样做将引致“区块链膨胀”,因为所有的区块链节点都将以消耗磁盘存储空间为成本,负担存储此类数据的任务。

    此类交易,仅将比特币地址当作自由组合的20个字节而使用,进而会产生不能用于交易的UTXO。这样的做法,使得内存中的UTXO不断增加,而且这些不能被用于交易的数据同样也不能被移除,因此比特币节点将永久性地担负这些数据,这无疑是代价高昂的。

    在0.9版的比特币核心客户端上,通过采用OP_Return操作符最终解决这一问题。OP_Return操作符,允许开发者在交易输出上,增加40字节的非交易数据。并且,与伪交易型的UTXO不同,OP_Return创造了一种明确的可复查的非交易型输出,此类数据无需存储于UTXO集。

    OP_Return输出,被记录在区块链上,会消耗磁盘空间,也会导致区块链规模的增加,但它们不存储在UTXO集中,因此也不会使得UTXO内存膨胀,更不会以消耗代价高昂的内存为代价,使全节点都不堪重负。

    OP_RETURN脚本的样式:OP_RETURN <data>

    “data”部分被限制为40字节,且多以哈希方式呈现,且许多应用都在其前面加上前缀以辅助认定。例如,电子公正服务的证明材料采用8个字节的前缀“DOCPROOF”,在十六进制算法中,相应的ASCII码为44f4350524f4f46。


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

    明天我们开始《5.7.5 P2SH(Pay-to-Script-Hash)》的学习。

    今天就到这里吧,明天我们继续,祝大家秋天快乐!七夕快乐!

    287/365
    20180817首发简书


    参考文献:

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

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

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

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

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

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

    相关文章

      网友评论

        本文标题:共读《精通比特币》第20天——第5章5.7 标准交易

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