1703865633
1703865634
这种改变称为硬分叉,它使得原先的链分裂了。网络上的所有节点会根据其所运行的协议版本去扩展两条不同的区块链,当然,这两个分叉再也不会合并。那些老节点只要不更新版本,就被永远地排除在了另一条链之外,这是比特币社区所不能接受的。
1703865635
1703865636
软分叉
1703865637
1703865638
另一种修订是加入新的特性,让现有的核验规则更加严格。那样老的节点依然会接收所有的区块,而新的节点会拒绝一些。这样的改变叫作“软分叉”。这可以避免硬分叉所造成的永久分裂。
1703865639
1703865640
我们如果引入可以产生软分叉的新版协议,会有什么后果呢?运行新版协议的节点会使用一些更严格的规则,现在,假定绝大部分节点都更新了新版协议并执行新的规则(这是产生软分叉的关键,因为老节点不会执行新规则,新节点的数量要足够多才能够竞争最长的链)。这种情况下,老节点可能会挖到一些无效的区块——因为这些区块中包含一些在新规则下无法核验通过的交易,然后,老节点会知道它们核验有效的区块不被别的节点接受(即使它们并不知道原因),这使得老节点的矿工会去更新协议。而且,如果新节点用它们的区块扩展了老节点的分支,那么,老节点也会转而扩展这个分支,原因是新节点核验通过的区块,老节点也必定能核验通过。这样就没有硬分叉了,只是会有很多临时的小型分叉而已。
1703865641
1703865642
本章3.2节提到的“支付给脚本的哈希值”就是软分叉的一个经典例子。第一版比特币协议里并没有P2SH。P2SH之所以造成软分叉,是因为对老节点而言,一个有效的P2SH交易也可以核验通过——它只验证这个哈希值跟前一笔交易输出哈希值是不是一样而已,它并不知道还要进一步检验脚本是否合法。我们依赖新版节点去进行这项核验:脚本本身真的可以获取到前一个交易输出的币。
1703865643
1703865644
那我们到底可以通过软分叉为比特币协议添加哪些特性呢?P2SH是成功的,也许添加新的密码算法也可以通过软分叉实现。我们也可以通过软分叉在元数据的币基参数中添加更多的信息实现,目前,币基参数可以是任何数值,但未来我们也许可以限定币基参数的格式。已经有人提出,可以在币基参数里放入一个梅克尔树根,其中包含所有未被消费的比特币的信息。这种做法只会造成软分叉,因为老节点核验通过的区块,在新节点上可能无法核验通过。但随着区块链的延长,很快老版本就会转而去扩展最长的区块链分支。
1703865645
1703865646
其他的一些改变可能就会产生硬分叉了,比如在比特币里添加新的功能操作代码、改变区块大小和交易规模,甚至其他一些修复性的改动。本章3.2节提到过MULTISIG指令存在一个缺陷,它会推送给堆栈一个莫名其妙的值,要修复这个缺陷,也会产生硬分叉。这就是为什么尽管这个缺陷很烦人,但也一直没有修复,因为和硬分叉相比,保留一个缺陷还是可以忍受的。有些修订非常有意义,但目前比特币环境不太可能接受硬分叉。但许多优秀想法都在其他的竞争币中得到了测试而且成功运行,因为那些竞争币系统是从头开始建立的,硬分叉不会产生严重的后果。我们会在第10章进行更多的讨论。
1703865647
1703865648
1703865649
比特币区块大小的难题
1703865650
1703865651
因为比特币变得越来越受欢迎,到2016年年初,已经开始经常发生区块被交易写满的情况,尤其是当区块在超过10分钟后还没有被矿工挖出来时(因为挖矿的随机性,确实有些区块在10分钟后还没有被挖到),这使得有些交易不得不排队等待被写进区块链。但要改变区块大小,就需要硬分叉。
1703865652
1703865653
究竟是否要改变,以及如何改变区块大小,在比特币社区里有热烈的讨论。这些讨论几年前就开始了,但一直进展缓慢,无法达成共识,近来讨论日趋激烈。我们在后面第7章会讨论比特币的社区、政治与管理。
1703865654
1703865655
随着区块大小问题得到共识解决方案,本章的一些细节有可能就会过时。提高比特币交易处理能力的一些技术细节很有意思,我们鼓励读者可以通过网络阅读更多的资料。
1703865656
1703865657
到了这里,你一定对比特币的技术机制有了一定程度的了解,也知道比特币节点是如何工作的。但是我们自身并不是一个比特币节点,你不会在大脑里运行比特币节点程序。那我们到底如何和网络进行交互,从而使比特币可以成为一种货币呢?如何让一个节点通知你交易信息呢?如何使用现金来交换比特币呢?又如何储存比特币呢?对于如何创造一种可被人们使用的货币(而不仅仅是一个软件)来说,这些问题至关重要,我们将会在下一章回答这些问题。
1703865658
1703865659
延伸阅读
1703865660
1703865661
在这一章中我们讨论了很多技术细节,你也许很难一次消化。作为本章的补充读物,你可以上网查阅一些我们讨论过的资料。网上有许多网站能让你看到区块和交易到底是什么样子的。比如有一个“区块链浏览器”,网址是:blockchain.info。
1703865662
1703865663
1703865664
1703865665
还有一本比特币开发手册也很好地讲述了一些技术细节(尤其是其中的第五、第六和第七章):
1703865666
1703865667
Antonopoulos,Andreas M. Mastering Bitcoin
:Unlocking Digital Cryptocurrencies . Newton,MA
:O’Reilly Media,2014.
1703865668
1703865669
1703865670
1703865671
1703865673
区块链技术驱动金融:数字货币与智能合约技术 第4章 如何储存和使用比特币
1703865674
1703865675
1703865676
1703865677
1703865678
本章主要讨论实际应用中如何储存和使用比特币。
1703865679
1703865680
1703865681
1703865682
[
上一页 ]
[ :1.703865633e+09 ]
[
下一页 ]