区块链网站|NFTS BTC教学指南 比特币教程的数据一致性

比特币教程的数据一致性

广告位

比特币教程之数据一致性问题

比特币是一个分布式数据库,它的数据可以存在任何人的电脑里,只要你的电脑联网,有足够的磁盘空间容纳它。关于数据库的体积,我们可以算出目前块高在50w左右,每个块大小的上限是1M,那么数据库体积的上限就是500G,一个普通的移动硬盘就够了。实际数据库的体积远小于这个数字,因为比特币早期几乎没有人交易,块大小也只有215字节左右。目前这个体积在70 g左右。

既然有这么多份数据,算法如何保证这些数据完全一致?如果有人想篡改数据,会不会不太安全?

为了解决数据库的安全性和一致性,比特币使用了两个重要的机制。我们的数据安全机制可以用一个简单的习语来描述,就是【牵一发而动全身】,我们的数据一致性机制也可以用一个简单的原则来概括,就是【大多数人都是好的】。

采矿很难。

区块链是一个分布式数据库。全世界的人都在查询这个数据库,但是只有矿工负责把数据写入数据库。矿工的操作就是构造一个区块,让这个区块满足一定的算法条件,然后就可以加入到全球区块链数据库中,然后矿工就可以获得巨大的回报。

问题是矿工们已经在他们自己的采矿机器上建造了一个区块。这个区块是如何与整个世界同步的?它采用的是P2P的广播机制,可以理解为“打花撒鼓”。首先,矿工将该块添加到本地区块链,然后通过路由器将该块的信息传输到互联网。互联网上所有监控的设备都可以读取这个块的信息,然后检查这个块的信息,看这个块是否满足算法定义的苛刻条件。如果满足算法条件,这个块将被添加到自己的区块链中,新的块信息将继续向外界传播。

如果挖矿容易,不仅赚不到钱,还会在网上引起P2P播放风暴。算法对区块施加了什么条件使得挖掘如此困难?

让我们来看一个街区头。

图中hash字段是当前块的hash值,prev_block是前一块的hash值。块通过哈希值串在一起形成一个区块链。Hash值是将前一个块的hash值与当前块头的内容信息拼接,进行两次sha256哈希得到的十六进制字符串。

我们发现这些哈希值前面有很多零,那么为什么会有这么多零呢?也就是sha256哈希算法得到的哈希值应该是很随机的,那么hash的前缀怎么会有那么多零呢?

正是这些零让挖掘变得如此困难。

挖掘者应该随机选择适当的nonce值,以便由sha256散列两次的值的前缀在它能够被算法接受之前包含至少N个零。假设前缀的第一个数字中出现零的概率是1/16,为了散列满足条件的散列值,有必要对16的n次方的nonce值进行平均。图中有17个零,16的17次方是个可怕的数字。

该算法还规定,随着块高度的增加,所需的n值也越大。

让我们来看看创世积木,这是中本聪老师挖的第一块积木。

这个块的哈希前缀只有10个零,现在挖掘难度足足增加了16的7倍。如果矿工想继续赚取采矿利润,他们必须扩大他们的矿井并升级他们的计算硬件。这也是比特币被环保主义者诟病的原因之一,因为做这些【无意义】的计算消耗了太多的能量。

未来,挖掘的难度还会继续加大。计算机的计算能力是否会遇到瓶颈,挖矿的收入是否会难以填补能源成本,我们不得而知,只能继续观察。

区块链分叉

有一种可能是两个矿工几乎同时挖出一个区块,然后广播到网上建议其他节点接受自己的区块。当节点接收到这两个块时,会觉得很困惑。它应该接受哪个区块?矛盾了怎么办?可以随便接受一个吗?不,如果每个节点都是随机的,全球区块链数据库将是不一致的。

所以区块链简单地分叉,分成两个分支,然后等待这两个分支不断生长。看谁的树枝长得更长,最后选谁。算法规定首先保留长度较长的链。随着区块链的不断发展,相对较短和较弱的分支链将被放弃,因此全球数据库将保持一致。两个支链会永远一样长吗?有可能,但概率太小,不可能发生。俗话说,一山不容二虎。最后只有一个霸王。那些因为分支长度太短而被淘汰的分支块是无效的,辛辛苦苦挖出来这些分支块的矿工不会得到任何奖励,因为这些分支块上的内容不会被识别。

锻造块

在区块链注册的BTC非常吸引人。能不能把链上的UTXO记录换成自己的账号地址,这样就可以毫不费力的拿到很多BTC,直接成为世界首富?

上述块的散列串是前一个块的散列加上作为整体的当前块的内容的结果。如果改变了前一个块的内容,前一个块的hash也会改变,然后后续块节点的hash字符串也会改变并传递,所以需要改变指定块的所有后续块节点。

假设你在本地数据库中修改了这个区块链,你需要通过互联网广播这些修改后的块,这样其他节点才能接受。这是一个问题。收到块的节点做的第一件事就是检查块是否合法,即块的哈希值是否满足前导N个零的苛刻条件。合法后,它会将块连接到适当的位置,引出一个分支,这个分支不会比当前最长的链位置低6层,因为算法规定落后6层的分支将被丢弃。这意味着你不能在6楼之前的任何积木上做手脚,因为灰尘已经在6楼之前的积木上沉淀了。

如果计算能力足够强,可以找到最后6块的目标nonce值,确实可以达到串联改变数据库的目的。但这样的篡改其实等同于挖矿。你所做的就是争取最长的区块链,并在树枝争夺长度时尽可能多地获胜。

日本[虚拟货币女孩]偶像团体

多看相关文章,关注头条【代码洞】

广告位
本文来自网络,不代表区块链网站|NFTS立场,转载请注明出处:https://www.qklwz.com/btb/btbjiaoxue/17354.html
上一篇
下一篇

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

返回顶部