區(qū)塊鏈(blockchain)是眼下的大熱門(mén),新聞媒體大量報(bào)道,宣稱(chēng)它將創(chuàng)造未來(lái)。
其實(shí)區(qū)塊鏈也不是很難的東西,下面是一份最易懂的區(qū)塊鏈教程。看完這篇文章,您會(huì)對(duì)區(qū)塊鏈有很大的理解,明白什么是挖礦、以及挖礦越來(lái)越難等問(wèn)題。
區(qū)塊鏈的本質(zhì)
區(qū)塊鏈的本質(zhì)是一種特殊的分布式數(shù)據(jù)庫(kù)。它的主要作用是儲(chǔ)存信息。任何需要保存的信息,都可以寫(xiě)入?yún)^(qū)塊鏈,也可以從里面讀取。
其次,任何人都可以架設(shè)服務(wù)器,加入?yún)^(qū)塊鏈網(wǎng)絡(luò),成為一個(gè)節(jié)點(diǎn)。區(qū)塊鏈的世界里面,沒(méi)有中心節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都是平等的,都保存著整個(gè)數(shù)據(jù)庫(kù)。你可以向任何一個(gè)節(jié)點(diǎn),寫(xiě)入/讀取數(shù)據(jù),因?yàn)樗泄?jié)點(diǎn)最后都會(huì)同步,保證區(qū)塊鏈一致。
區(qū)塊鏈的最大特點(diǎn)
區(qū)塊鏈沒(méi)有管理員,它是徹底無(wú)中心的。如果有人想對(duì)區(qū)塊鏈添加審核,也實(shí)現(xiàn)不了,因?yàn)樗脑O(shè)計(jì)目標(biāo)就是防止出現(xiàn)居于中心地位的管理當(dāng)局。
正是因?yàn)闊o(wú)法管理,區(qū)塊鏈才能做到無(wú)法被控制。否則一旦大公司大集團(tuán)控制了管理權(quán),他們就會(huì)控制整個(gè)平臺(tái),其他使用者就都必須聽(tīng)命于他們了。
但是,沒(méi)有了管理員,人人都可以往里面寫(xiě)入數(shù)據(jù),怎么才能保證數(shù)據(jù)是可信的呢?被壞人改了怎么辦?請(qǐng)接著往下讀,這就是區(qū)塊鏈奇妙的地方。
區(qū)塊
區(qū)塊鏈由一個(gè)個(gè)區(qū)塊(block)組成。區(qū)塊很像數(shù)據(jù)庫(kù)的記錄,每次寫(xiě)入數(shù)據(jù),就是創(chuàng)建一個(gè)區(qū)塊。
每個(gè)區(qū)塊包含兩個(gè)部分。
區(qū)塊頭(Head):記錄當(dāng)前區(qū)塊的元信息
區(qū)塊體(Body):實(shí)際數(shù)據(jù)
區(qū)塊頭包含了當(dāng)前區(qū)塊的多項(xiàng)元信息。
生成時(shí)間
實(shí)際數(shù)據(jù)(即區(qū)塊體)的 Hash
上一個(gè)區(qū)塊的 Hash
...
理解Hash很重要,這樣才能很好的理解區(qū)塊鏈
計(jì)算機(jī)可以對(duì)任意內(nèi)容,計(jì)算出一個(gè)長(zhǎng)度相同的特征值。而區(qū)塊鏈的 Hash 長(zhǎng)度是256位,這就是說(shuō),不管原始內(nèi)容是什么,最后都會(huì)計(jì)算出一個(gè)256位的二進(jìn)制數(shù)字。而且可以保證,只要原始內(nèi)容不同,對(duì)應(yīng)的 Hash 一定是不同的。
Hash 的不可修改性
區(qū)塊與 Hash 是一一對(duì)應(yīng)的,每個(gè)區(qū)塊的 Hash 都是針對(duì)'區(qū)塊頭'(Head)計(jì)算的。
Hash = SHA256(區(qū)塊頭)
上面就是區(qū)塊 Hash 的計(jì)算公式,Hash 由區(qū)塊頭唯一決定,SHA256是區(qū)塊鏈的 Hash 算法。如果當(dāng)前區(qū)塊的內(nèi)容變了,或者上一個(gè)區(qū)塊的 Hash 變了,一定會(huì)引起當(dāng)前區(qū)塊的 Hash 改變。
如果有人修改了一個(gè)區(qū)塊,該區(qū)塊的 Hash 就變了。為了讓后面的區(qū)塊還能鏈到它,該人必須同時(shí)修改后面所有的區(qū)塊,否則被改掉的區(qū)塊就脫離區(qū)塊鏈了。由于后面要提到的原因,Hash 的計(jì)算很耗時(shí),同時(shí)修改多個(gè)區(qū)塊幾乎不可能發(fā)生,除非有人掌握了全網(wǎng)51%以上的計(jì)算能力。
正是通過(guò)這種聯(lián)動(dòng)機(jī)制,區(qū)塊鏈保證了自身的可靠性,數(shù)據(jù)一旦寫(xiě)入,就無(wú)法被篡改。這就像歷史一樣,發(fā)生了就是發(fā)生了,從此再無(wú)法改變。
每個(gè)區(qū)塊都連著上一個(gè)區(qū)塊,這也是'區(qū)塊鏈'這個(gè)名字的由來(lái)。
采礦
由于必須保證節(jié)點(diǎn)之間的同步,所以新區(qū)塊的添加速度不能太快。因?yàn)槊總€(gè)區(qū)塊的后面,只能跟著一個(gè)區(qū)塊,你永遠(yuǎn)只能在最新區(qū)塊的后面,生成下一個(gè)區(qū)塊。所以,你別無(wú)選擇,一聽(tīng)到信號(hào),就必須立刻同步。
區(qū)塊鏈的發(fā)明者中本聰,故意讓添加新區(qū)塊,變得很困難。他的設(shè)計(jì)是,平均每10分鐘,全網(wǎng)才能生成一個(gè)新區(qū)塊,一小時(shí)也就六個(gè)。
這種產(chǎn)出速度是設(shè)置了海量的計(jì)算。只有通過(guò)極其大量的計(jì)算,才能得到當(dāng)前區(qū)塊的有效 Hash,從而把新區(qū)塊添加到區(qū)塊鏈。計(jì)算量太大,所以快不起來(lái)。
這個(gè)過(guò)程就叫做采礦。計(jì)算 Hash 的機(jī)器就叫做礦機(jī),操作礦機(jī)的人就叫做礦工。
難度系數(shù)
讀到這里,你可能會(huì)有一個(gè)疑問(wèn),人們都說(shuō)采礦很難,可是采礦其實(shí)就是用計(jì)算機(jī)算出一個(gè) Hash,但不是任意一個(gè) Hash 都可以,只有滿(mǎn)足條件的 Hash 才會(huì)被區(qū)塊鏈接受。
因?yàn)槠錀l件苛刻,絕大部分 Hash 反復(fù)重算,所以增加了難度系數(shù)。區(qū)塊頭包含一個(gè)難度系數(shù),這個(gè)值決定了計(jì)算 Hash 的難度。
區(qū)塊鏈協(xié)議規(guī)定,目標(biāo)值難度系數(shù)越大,目標(biāo)值就越小,導(dǎo)致了采礦越來(lái)越難。由于目標(biāo)值非常小,Hash 小于該值的機(jī)會(huì)極其渺茫,可能計(jì)算10億次,才算中一次。這就是采礦如此之慢的根本原因。
總結(jié):
區(qū)塊鏈作為分布式數(shù)據(jù)庫(kù),從2009年開(kāi)始已經(jīng)運(yùn)行了8年,至今被越來(lái)越多的社會(huì)群體所接受,并且展開(kāi)應(yīng)用,國(guó)家政府也紛紛出臺(tái)扶持政策,區(qū)塊鏈的應(yīng)用和發(fā)展前景不可限量。
聯(lián)系客服