2017年是比特币暴发的一年。经过这么十多年的浮潜,比特币的产品价格突然从1000美元攀升到近2亿美元。有啥人出现改变了,变为了“货币买卖研究者信息论”。
赶上好时机吗能赚很多钱,但醒醒吧,盛宴早已散去了。
-2013年10月至2018年10月比特币产品价格走势图(来源:Coinmarketcap.com)- 虽然肾上腺素的暴发主要是市场价值的快速上升,但这一波热潮最初是由控制技术引发的。计算机程序链控制技术仍有巨大的潜力。现在是业务开发者、企业家和个人爱好者带着青春上车的时候了。但是,除了青春的涌动,首先要增进对计算机程序链控制技术的了解。
不幸的是,目前解释计算机程序链控制技术的该文或者涉及太多复杂的控制技术术语,或者太肤浅,缺乏深度。这两种类型的该文都不方便读者清楚地认知该文的内容。我该怎么办?我建议你从这篇该文已经开始。只要10分钟,你就能认知为什么计算机程序链控制技术如此具有革命性。花那些时间是值得的。祝你写作愉快。
引言
首先,计算机程序链是一种储存电子统计数据的方法。统计数据以块的形式出现,想像许多储存位数统计数据的块。
那些块镜像在一同,给其外部统计数据不变异性。当镜像到两个统计数据块时,其外部统计数据将无法更动。
除非两个块被加进到链中,里面的统计数据对任何人都是公开的。该控制技术具有非凡的创新意义,能用来历史记录几乎所有他们能想到的统计数据(如房屋产权、身份、银行存款、病历等)。同时,没有盗用历史记录的风险。假定我买了一所新房子,并把房屋产权证书的照片上传到计算机程序链,我能证明我当时享有这所新房子的所有权。
除非镜像到这个信息,就没有人能出现改变它(嗯,还是有办法出现改变的,这里有两个先进的写作材料,我建议你以后写作)。
因而,计算机程序链是一种储存统计数据并保证统计数据不被盗用的方法。
这听起来不错,但随之而来的问题是:他们是如何实现这种控制技术的?
第一阶——买卖统计数据
让他们以比特币计算机程序链为例。比特币计算机程序链是现存历史最悠久的计算机程序链。在比特币计算机程序链上,每一计算机程序的大小不一约为1MB。截止截止日期,该链已累积52.5万块块,链上储存的统计数据总量约为52.5万MB。(校订注:其实远不如52.5万MB,因为早期很多计算机程序都没有赢下1MB。另外,截止今天(2019年4月)
24日,积累了57.3万个计算机程序,数目约250GB。)
比特币的买卖统计数据只储存在比特币计算机程序链上。它就像两个巨大的买卖历史记录库,能追溯到首笔比特币买卖。在本文中,他们假定有两个计算机程序链储存买卖统计数据,就像比特币计算机程序链一样。
第二阶——镜像计算机程序(通过基元演算)
想像有四个计算机程序储存买卖统计数据(如图1右图)。
这四个计算机程序都有一些买卖统计数据。没什么特别的。就像四个独立的word文件格式,描述了买卖的内容和银行存款的变动。文件格式1将按时间顺序从首笔买卖已经开始历史记录,直至统计信息量达至1MB,接着在文件格式2中历史记录,直至统计信息量达至1MB,等等。那些文件格式是统计数据块。它们两个接两个地联系在一同(镜像)。因而,每一块将依照其外部统计数据串聚合两个特殊的(位数)亲笔签名。如果沙尔霍罗德区中的统计数据出现任何变动,即便只有两个位数出现改变,沙尔霍罗德区的亲笔签名也会出现改变。这是如何实现的?欲了解详情,请写作关键步骤3中的基元演算部分。
(校订注:如上所述,前述情况下的块并不接近块大小不一的上限。前述统计数据大小不一取决于包装在链条中的矿工历史记录了啥买卖,他们不会等到1MB买卖统计数据已经开始。前述情况)
假定多笔买卖历史记录在计算机程序1中,即买卖1和买卖2。这多笔买卖的数目达至1MB(事实上,两个计算机程序中包涵的买卖数量远不止那些)。依照该计算机程序中的统计数据串聚合亲笔签名。假定亲笔签名是“X32”。如下表所示图右图:
请记住,即便计算机程序1中储存的统计数据出现改变了两个位数,也会得到两个完全不同的亲笔签名!只要将计算机程序1的亲笔签名加进到计算机程序2中,就能将计算机程序1的统计数据与计算机程序2相连起来。计算机程序1的亲笔签名也包涵在计算机程序2的统计数据串中,因而与计算机程序2中的其他统计数据一样,该亲笔签名已成为计算机程序2亲笔签名的统计数据基础。如下表所示图右图:
正是那些亲笔签名将计算机程序镜像在一同,形成了计算机程序链。现在加上计算机程序3,整个链如下表所示图右图:
假定计算机程序1中的统计数据早已出现了变动。例如,Damian和George间的买卖出现了变动。Damian向George推送了500个比特币,而不是100个比特币。由于计算机程序1中的统计数据串出现了变动,其亲笔签名也出现了相应的变动。更动统计数据后,计算机程序1的亲笔签名不再是“X32”,而是变为了“W10”,如下表所示图右图:
-请访问r/blockchainSchol查看更多关于计算机程序链的宣传教育-
这样,计算机程序1的新亲笔签名“W10”之前加进到计算机程序2统计数据串的旧亲笔签名“X32”产生冲突。计算机程序1和计算机程序2间的镜像断裂。该链上的浏览者将知道计算机程序1中的统计数据早已出现改变。为了保持计算机程序链的不变异性,浏览者将拒绝同步更动买卖信息,并保持原始买卖历史记录(即向George推送100BTC)不变,整个链仍然完整。这意味着,要盗用买卖,要用新亲笔签名代替计算机程序2统计数据串中计算机程序1的旧亲笔签名。但是,除非计算机程序2中的统计数据串出现改变,计算机程序2的亲笔签名也会出现改变。假定计算机程序2的亲笔签名从“9BZ”变为了“PP4”。接着计算机程序2和计算机程序3间的镜像就断了!
每一人都能看到计算机程序链上的计算机程序。因而,如果盗用者吗想盗用买卖,他们要保证盗用后的块仍然相连在一同(否则很容易发现哪个块与其他块没有相连,接着判断块早已被更动)。换句话说,更动两个块要为后续的所有块计算捷伊亲笔签名。这几乎是不可能的,但要认知为什么,请看下面。
第三阶——聚合亲笔签名(基元值)
接着,他们以计算机程序1为例,再画两个示意图。假定计算机程序1只历史记录一笔买卖,即Thomas将100BTC推送到David。亲笔签名需要依照这个统计数据串聚合。这个亲笔签名是通过信息论基元函数在计算机程序链上聚合的。信息论基元函数是两个极其复杂的数学公式:以任何统计数据串作为输入值代入公式,能获得独特的64位输出值。例如,你能“Jinglebells”两个词代入这个基元函数(基元函数有很多种,这只是其中之一),输出为:
761A7D9CAFE34C7CDE6C1270E17F73025A61E51A56F700D415F3E19986
只要输入中的两个字符出现改变,包括出现改变大小不一写或增加空间和标点符号,就会得到完全不同的输出。如果你在这个输入后面加两个句号“Jinglebells.”,获得的输出变为:
B9B324E2F987CDE8819C05132766D4071ED72D98E01980198040958FEC
如果他们删除句号,他们仍然能得到与以前相同的输入:
761A7D9CAFE34C7CDE6C1270E17F73025A61E51A56F700D415F3E19986
对于相同的信息论基元函数,相同的输入将获得相同的输出,不同的输入将获得不同的输出。比特币计算机程序链使用基元函数聚合计算机程序亲笔签名,输入计算机程序中的统计数据,输出是计算机程序亲笔签名。让他们来看看计算机程序1示意图,它只包涵两个买卖(Thomas向David推送100BTC)。
假定计算机程序1中的统计数据串如下表所示:
Block1Thomas-100David+10000
将此统计数据串输入基元函数,输出(亲笔签名)如下表所示右图:
BAB5924FC47BA57F461523DBC5675AB29E0FF85D0CAD1CAFFF
这个亲笔签名将被加进到计算机程序2中。假定David现在早已将100BTC转移到Jimi,这笔买卖早已包涵在计算机程序2中。如下表所示图右图:
计算机程序2的统计数据串如下表所示:
Block2David-100Jimi+100BAB5924FC47BA57F4615230DBC5675A8AB29E2E0FF85D0CA1CA
将此统计数据串输入基元函数,输出(亲笔签名)如下表所示右图:
25DBE2650D7BC095D3712B146608E096F060E32CEC72222E222E22EA526A3E5
这是计算机程序2的亲笔签名。每一计算机程序将通过这个信息论习基元函数聚合两个位数亲笔签名。基元函数种类繁多,SHA-256基元算法用于比特币计算机程序链。
然而,(仅上述措施显然还不够)如果有人想盗用块中的统计数据,TA能在盗用后聚合捷伊亲笔签名,插入下两个块,接着逐个聚合捷伊亲笔签名,那些变动块或形成链,其他人无法区分统计数据早已出现改变。如何防止这种情况?
答案是计算机程序链只能接受符合特定要求的基元值(亲笔签名)。这是第四步介绍的采矿。
第四阶——什么是合格的亲笔签名?谁来签计算机程序?
并非所有亲笔签名都符合要求。计算机程序链协议将提前确定一些要求。例如,在比特币计算机程序链中,只有连续零开头的位数亲笔签名对应的块才能上链。例如,只有当位数亲笔签名连续不少于10个零开头时,相应的块才能上链。
然而,从第三节能看出,每一统计数据串对应的基元值是唯一的。如果两个块的亲笔签名(基元值)开头小于10个零呢?为了获得合格的计算机程序亲笔签名,需要反复更动输入的统计数据串,直至连续10个零已经开始聚合亲笔签名。然而,由于买卖统计数据和元统计数据(块号、时间戳等)需要保持原始(否则意义将出现改变),每一块还加进了两个特定长度和可更动的统计数据。当人们想要将计算机程序加进到链中时,能不断地更动统计数据,直至找到合格的亲笔签名,接着确定统计数据的具体值。这个统计数据是计算机程序的nonce。nonce不是两个预先确定的统计数据,而是一系列完全随机的位数(注:图中显示的其他统计数据能由任何字符组成,nonce只能由位数组成)。
综上所述,计算机程序包括:1)买卖统计数据;2)上两个计算机程序的亲笔签名;3)nonce。通过反复更动noncee、基元演算计算机程序统计数据,寻找合格亲笔签名的过程称为挖矿,即矿工所做的。在找到合格的亲笔签名(输出)之前,矿工投入大量电力,转化为计算能力,不断代入nonce进行基元计算。矿工掌握的计算能力越多,基元的计算速度就越快,先找到合格亲笔签名的可能性就越高。这是两个反复试错的过程,如下表所示图右图:
-注:nonce要是位数(详情请写作r/blockchainSchol上的解释)- 计算机程序链网络上的任何用户都能通过下载和启动挖掘软件来参与挖掘。事实上,这是用他们的硬件计算能力来计算计算机程序的nonce。以Block#521和477为例:
-来自计算机程序链浏览器blockchainin.com-
能看出,该计算机程序的基元值(亲笔签名)和上两个计算机程序的基元值以相同数量的零已经开始。找到这样的基元值并不容易,需要付出大量的计算能力和时间,或运气。
是的,有时候运气好的矿工几分钟就能算出合格的亲笔签名,花的算力也很少。Block#523034就是两个极其罕见的例子。
两个计算能力很小的小矿工很快就找到了合格的亲笔签名,而其他矿工的计算能力加起来是他的7万亿倍。相比之下,赢得Powerball彩票头奖的概率是2.92亿分之一,而幸运儿挖矿的概率是中头奖的1/24000。
不要低估那些零。本节的重点是很难找到合格的亲笔签名。
第五阶——如何实现计算机程序链的不变异性?
正如第三阶所述,更动两个块会导致其亲笔签名变更,与后续块历史记录不匹配,从而断开与后面块的镜像。为了让网络中的其他参与者接受更动后的块,将其与后面的块重新相连起来。换句话说,两个块的亲笔签名早已出现改变了,所有后面块的亲笔签名都应该出现改变,以便让其他人觉得这是两个一致的链。
你想到什么了吗?
如第四节所述,亲笔签名要符合要求!虽然更动所有块的亲笔签名似乎是可行的,但它需要大量的成本和时间,因而被认为是不可能的,原因如下表所示:
假定一名矿工恶意盗用了某个计算机程序中的买卖,接着依照基元计算,该计算机程序与其后面的所有计算机程序一同聚合了捷伊亲笔签名,以便网络中的其他参与者能够接受被盗用的买卖。问题是,网络中的其他矿工也不断为原链上的新计算机程序计算亲笔签名。随着新计算机程序不断上链,作恶的矿工要重新计算那些计算机程序的亲笔签名。他要保证所有计算机程序镜像在一同,包括不断加进到链上的新计算机程序。除非矿工的计算能力超过了整个网络中其他人的计算能力,否则他永远无法赶上其他矿工。
(校订注:本段的前述意义是,只要矿工在他们看到的最长的计算机程序链上挖掘,所有的计算能力都会随着时间的推移自然地聚集在主链上,攻击者只能创建两个比当前主链更长的链,以成功地出现改变共同认可的买卖历史记录。这种以最长链为主链(有效链)的原则,就是所谓的“最长链规则”,是NakamotoConcensus(中本聪共识机制)的一部分。此外,并非所有计算机程序链都采用了中本聪共识。)
如今,数百万用户在比特币计算机程序链上挖掘,能推断恶意参与者或实体的计算能力不能超过整个网络的剩余计算能力。这意味着网络中的其他参与者不能接受计算机程序链的任何修改,从而实现计算机程序链的不变异性。除非统计数据加进到计算机程序链中,就不能再修改了。
只有两个例外,恶意参与者的计算能力确实超过了整个网络中其他人的计算能力总和。理论上,在这种情况下,有可能盗用计算机程序链(即出现改变共同认可的历史历史记录)。这被称为51%攻击(我写了另一篇该文来解释这种情况)。过去,许多计算机程序链都遭受过这种攻击。
(校订注:到目前为止,遭受51%攻击的著名计算机程序链有bitGold、Verge、EthereumClassic。)
事实上,对比特币计算机程序链发动51%攻击的收益远远低于高昂的攻击成本。如果你想获得足够的计算能力,你不仅要承担硬件、冷却设备和储存空间的成本,还要承担成千上万人指出的风险。更重要的是,它将对被攻击计算机程序链的生态系统造成巨大损害,攻击收入将大幅贬值。51%的攻击前述上是对抗计算机程序链上的浏览者。这就是为什么参与采矿的用户越多,整个链的安全性就越高。
恭喜你又进了一步!现在,你应该明白为什么(大型)计算机程序链被认为是不可出现改变的。但现在还有两个非常重要的问题:如何防止矿工向计算机程序链加进伪造的买卖统计数据?这在控制技术上是不可能的。有关计算机程序链买卖的详细解释,请参阅本文。
(校订注:只有私钥控制器才能在相应的地址上花钱,矿工不知道你的私钥,其他人只能通过你的公钥来验证你是否发起了一笔买卖。因而,伪造买卖是不可行的)
第六阶——如何管理计算机程序链?谁决定规则?
……计算机程序链协议自动以最长链上的买卖历史记录为准,将该链视为代表绝大多数参与者的链。构建最长链需要消耗整个网络的大部分计算能力。被盗用的块与最长链断开镜像,因而它将被整个网络的绝大多数节点自动拒绝。
在比特币计算机程序链上,所有的买卖历史和钱包银行存款都是公开的(blockchain.info)。任何人都能查看任何钱包的银行存款,或者从(2009年1月3日)首笔买卖的所有买卖历史记录。虽然任何人都能检查钱包的银行存款,但那些钱包的所有者大多是未知的。比如两个钱包里有6.9万个比特币,截稿时价值约5亿美元。这个钱包在2015年4月用过一次,之后再也没有买卖过。
(校订注:这部分其实没有回答:“谁决定规则”这个问题只能大致解释“该控制技术能依照现有规则实现”。公链治理是两个复杂的问题,超出了本文需要解释的范围。)
第七阶——那些对信息论货币有什么意义?
密码货币本质上是比特币的变体。绝大多数加密货币是依照自己的计算机程序链协议建立的,遵循不同于比特币的规则。比特币应该被归类为一种货币,也就是说,它显然具有货币功能。门罗币也是一种具有相同功能的加密货币,但其计算机程序链协议增加了一些规则来增强隐私(增加买卖可追溯性的难度)。
然而,计算机程序链发行的资产能被赋予许多不同的用途,这是由发行人决定的。这样发行的资产通常被称为“代币”。那些代币能给所有人一些权利,如赌博许可证、社交媒体渠道、水电等。所有那些资产买卖都历史记录在不同的计算机程序链上,并能通过货币安全等买卖所进行在线买卖。
代币前述上是一种新型的互联网货币,可能会影响一些行业,其中两个典型的例子就是股市。未来,公司股份等房屋产权很可能以代币的形式储存在计算机程序链中。计算机程序链不仅以代币的形式代表实物价值,还能安全历史记录病历、身份、历史历史记录、纳税历史记录等统计数据。这就是计算机程序链控制技术的伟大之处,更不用说计算机程序链的另两个重要特征:分散化。
以上是计算机程序链小白进阶:7步进阶计算机程序链的详细内容。有关7步进阶计算机程序链的更多信息,请关注脚本之家的其他相关该文!
投资有风险,进入市场要谨慎,以上内容仅供参考。