区块链?比特币?矿工?一篇文章让你明白什么是区块链技术!

关注技术咖,成为生活中的技术大咖!

区块链

区块链是为了解决这么

区块链?比特币?矿工?一篇文章让你明白什么是区块链技术!

一个问题:如何建立一个不受中央控制的记录方式

首先,我们明确两点:

(1) 区块链不是比特币,只是比特币将这个概念普及了世人。

(2) 区块链只是一种记录方式。人类最早的记录方式有结绳,而后有了羊皮、木片,后来又有了笔和纸,到了现代又有了电脑、数据库,究其本质,区块链只是人类记录方法的演变到现在的一个新形态,它依然是一种记录数据的方法。

以下,节点代表某个人、某个机构、某台电脑等一切具有计算能力的个体。

区块链要解决的问题是让这个记录方式能被所有节点共享的同时不被任何节点所控制,所谓控制,意味着拥有随意添加、修改、删除记录的能力。而一旦任何存储的数据拥有了这个属性,则就有了很多想象空间。譬如说大家的账本记到一块儿,谁也没法赖账。

以下,我们着重用通俗易懂的方式解释区块链如何具备“不被任何节点所控制”的属性。

大家都知道超级计算机的概念,正如F1方程式赛车一样,超级计算机的榜单就是很多国家或者企业秀自己计算能力肌肉的地方。

拥有超级计算能力意味着什么?大家都听说过邓稼先那个年代造原子弹演算出来的草稿纸都是一屋子一屋子的。而拥有超级计算能力意味着可以更快地模拟原子弹爆炸、大飞机制造中的空气动力等等很多“大场景”,从而更快地得到计算结果并进行下一步工程迭代。

任何一个国家、企业、组织的计算能力都是有限的,要不然,大家还比什么比?

既然世界上的国家、企业、组织等的数目是有限的,那么这个计算能力的总和也是有限的

那么,我们总有办法创造一道足够难的"算术题",使得这道“算术题”不能很快被全球的所有节点解开。因为“算术题”可以任意难度,而全球的计算能力是有限的。大家解题的速度快了,咱就提升题目难度,如此反复。硬件的发展速度再快,也跟不上调整题目难度的速度,毕竟这个调整只是参数的改变。

提升算术的复杂度是件简单事,那么有没有办法使得这个难度提升的过程是可控的呢?

如果有,那么意味着,如果全网算出上个题的时间是5分钟,若想下一个题解出的时间变为10分钟,参数一改即可。当然,10分钟是个预估的时间,毕竟你无法保证是不是某个节点突然运气变好,或是网络上又加入了新的节点。

答案,有。

区块链?比特币?矿工?一篇文章让你明白什么是区块链技术!

让题目难度可控还有另一个要素,即:每个节点都得苦苦计算才能得到正解,运气成分降到最低。毕竟一个题预估10分钟完成但是因为各种因素的影响全网算力只花了9分钟是可以容忍的,但是因为某个节点的运气变得“过好”而变成1分钟或者几秒钟那就不能接受了。

运气成分降到最低换做另一句话就是:“随机性最大”。

稍微懂点密码学常识的人知道,密码学是构建在随机性理论基础上的密码学的基石是单向函数(One-Way Function)。所谓单向函数是指一个方程Y=F(X),若知道X,能很快算出Y;但知道了Y,确很难算出X。而若要反推X,只能靠“死算”。

密码学的一切都是假设单向函数的存在,而应用密码学的通用办法是构造一个“非常靠近”单向函数的函数,“非常靠近”即指当前没有任何人能通过Y很快知道X,但是谁也无法保证将来有没有人能。

MD5、SHA1、SHA2都是这样的函数。在密码学发展的各个时期充当了单向函数的使命,他们都曾经无法破解,而后因为巧妙的数学方法及算力的提升得到破解(MD5 和 SHA-1 不是已经早被王小云破解了吗,为什么现在仍然通行?)。

下面回到正题。

单向函数因为无法反推,只能靠死算,故而在区块链上充当了这个“算术题”的使命。那么算术的难度如何规定的呢?

假设单向函数Y=F(X),Y的取值范围是0-99999,考虑下面两道题的难度大小:

(1) 寻找X,使得Y落到范围0-99内

(2) 寻找X,是的Y落到范围0-9内

两道题谁更难?答案 (2)

难度相差多少?因为从X反推Y是不可能的,只能随机挑选X来计算Y。从期望上来说题(2)是题(1)难度的十倍。

区块链即为一个个用这样的计算力保障的数据块链条。从第一块开始,每一个区块依照一定规则收集数据,然后将这些数据附上一个值,使得形成的数据块经过类似的单向函数计算后的结果落到一定范围内。通过估算全网的算力以及控制结果范围的大小,来保障符合要求数据块在足够长的时间内才能被找到。这个计算结果会被下一个区块包含,而这样形成的链式数据结构则称为区块链。

为何这样的记录方式很难被篡改呢?

就具体一个区块来说,因为该区块经由庞大的计算网络一起计算得出,背后有强大的算力保障。因为区块链讲究“先到先得”,谁先算到区块,谁就决定区块。任何一个想篡改数据的节点必须至少拥有同样大小的计算力。所以篡改不是没有可能,你要干得过所有加入网络的计算节点,当这个网络越来越庞大,篡改的难度就越大。

另外一个,当区块形成链式,并被当前计算网络接受。此时,越是想篡改旧的区块,难度越大。因为你得把后面计算的区块一并计算掉,因为区块链除了“先到先得”,还遵循“越长越好”,因为越长的链条得到的算力保障越大,也就越不容易被推翻掉,也就越安全。

至于如果网络上的区块链出现分叉,如何抉择出谁是主干,谁是分支,这就是后话,本文不想绕晕大家,而是想告诉大家:区块链没有什么神秘性,仅仅是记录数据的一种方法,它的出现是为了让记录的数据更加安全,而这个安全性是由密码学来保障的,所以用区块链构建的货币系统又称密码学币。

区块链?比特币?矿工?一篇文章让你明白什么是区块链技术!


分享到:


相關文章: