區(qū)塊鏈本身是面向數(shù)據(jù)安全的,因?yàn)樗鎸Φ木褪强煽啃畔⒌拇鎯?chǔ)與處理。為了數(shù)據(jù)安全,它采用了數(shù)字簽名,對數(shù)據(jù)進(jìn)行封裝,就好像我們把信紙放到了信封里一樣,別人不能隨便打開,也改變不了其中的內(nèi)容。為了防止數(shù)據(jù)丟失,以及在時(shí)間順序上被篡改,它又使用了哈希指針這種鏈?zhǔn)浇Y(jié)構(gòu),也就是說數(shù)據(jù)塊又被哈希指針穿起來形成鏈?zhǔn)浇Y(jié)構(gòu)。這與三國時(shí)侯龐統(tǒng)給曹操獻(xiàn)的連環(huán)計(jì)類似,一條船是很容易受風(fēng)浪影響的,把大船都連在一塊,它就會(huì)相對平穩(wěn)一些。區(qū)塊鏈也是這個(gè)思想,這些封裝好的、單個(gè)的數(shù)據(jù)塊通過哈希的指針連成一條鏈,這也是區(qū)塊鏈名字的來由,說的就是這種數(shù)據(jù)結(jié)構(gòu)。如果你想單獨(dú)的改變?nèi)魏我粋€(gè)數(shù)據(jù)塊,實(shí)際上你需要付出的努力是攻擊或破壞整個(gè)鏈?zhǔn)浇Y(jié)構(gòu),因此大大的提高了攻擊成本。
另一方面,為了數(shù)據(jù)可靠的存儲(chǔ),區(qū)塊鏈采取了分布式記賬和冗余備份的形式,也就是說,每個(gè)人存一部分或所有的區(qū)塊數(shù)據(jù),它就要求存儲(chǔ)和讀取數(shù)據(jù)必須支持分布式的結(jié)構(gòu)。分布式的存儲(chǔ)自然會(huì)涉及到數(shù)據(jù)同步的問題,也就是數(shù)據(jù)的一致性問題。我一份數(shù)據(jù)在很多地方都存,如果這個(gè)數(shù)據(jù)被破壞,那么以哪一塊的為準(zhǔn);或者說一份數(shù)據(jù)存了很多份,如何確保第一,大家存的都一樣;第二,恢復(fù)的時(shí)候,能恢復(fù)出那份正確的,這個(gè)派生了共識(shí)機(jī)制。共識(shí)機(jī)制是一種算法,保證數(shù)據(jù)的一致性,很著名的拜占庭算法或者其他的算法,都是分布式系統(tǒng)很經(jīng)典的算法和結(jié)論。
一般公有鏈都要求P2P網(wǎng)絡(luò),需要每個(gè)節(jié)點(diǎn)都連通,事實(shí)上,不見得非要P2P,傳統(tǒng)的一些互聯(lián)網(wǎng)絡(luò)照樣可以滿足我們的要求。
再者,所有的人要記錄很大的數(shù)據(jù),需要冗余備份來提高可靠存儲(chǔ)。如何去激勵(lì)讓別人的數(shù)據(jù)在我這里存,我自己又不感到吃虧呢?這就派生出了密碼貨幣。每個(gè)記賬的人,或者記賬的節(jié)點(diǎn),系統(tǒng)自動(dòng)生成了一些密碼貨幣給他,這樣記賬的節(jié)點(diǎn)就可以心安理得去做公益事業(yè),做好事是有獎(jiǎng)賞的,獎(jiǎng)勵(lì)就是密碼貨幣。
以上區(qū)塊鏈簡單地說明,密碼貨幣是區(qū)塊鏈的一個(gè)副產(chǎn),并不是為了密碼貨幣,而產(chǎn)生了區(qū)塊鏈技術(shù)。恰恰相反,密碼貨幣是一種激勵(lì)機(jī)制,它是希望所有的節(jié)點(diǎn)做好事,共同來維護(hù)數(shù)據(jù)的可靠存儲(chǔ)與處理。如果我們能夠達(dá)到這樣分布式的信息存儲(chǔ)與處理,那么這個(gè)區(qū)塊鏈就可以作為更復(fù)雜的、更艱巨的、大的系統(tǒng)的底層技術(shù)設(shè)施,這是我對區(qū)塊鏈的認(rèn)知。
區(qū)塊鏈與云計(jì)算的異同
除了區(qū)塊鏈,還有云計(jì)算。云計(jì)算也是兩千零幾年產(chǎn)生的技術(shù),現(xiàn)在我們知道什么叫云計(jì)算,滴滴打車,它的數(shù)據(jù)中心是云計(jì)算,淘寶的信息處理也是云計(jì)算支撐的。當(dāng)時(shí),大家并不很清楚,云計(jì)算把所有的計(jì)算資源整合起來放在數(shù)據(jù)中心里,數(shù)據(jù)中心里有很多臺(tái)服務(wù)器,構(gòu)成服務(wù)器集群;它采用虛擬化的技術(shù),采用Hadoop HDFS這樣一些特有的,支持?jǐn)?shù)據(jù)中心來做集中操作的技術(shù),或者是系統(tǒng)來支持大規(guī)模的處理能力。仔細(xì)來看看云計(jì)算,云計(jì)算的內(nèi)部實(shí)際上也是分布式并行的,Hadoop系統(tǒng)不外乎是規(guī)劃并且維護(hù)了并行進(jìn)程之間是如何協(xié)同的。簡單地,非常抽象地來看,Hadoop也就是集中把一個(gè)大的數(shù)據(jù)的操作、請求先合并,然后又把大量的數(shù)據(jù)請求分配到各臺(tái)服務(wù)器,后期維護(hù)進(jìn)程,如果有一個(gè)進(jìn)程失敗了,則重新分配任務(wù),然后合并,最后得出統(tǒng)一的正確答案。云計(jì)算在外邊看來,它是集中處理的,但深入的看,內(nèi)部是并行的,也就是分布式的,因?yàn)橛卸鄠€(gè)線程來處理同一件事情。
與此相同,區(qū)塊鏈也是這樣的分布式存儲(chǔ)方式,但是,它的處理方式和云計(jì)算不太一樣。云計(jì)算總是有主從節(jié)點(diǎn)之分,主要的MapReduce處理方式,有Map,還有一個(gè)Reduce,他們相互之間的作用不是等價(jià)的。區(qū)塊鏈?zhǔn)橇硪环N分布式,它是每個(gè)節(jié)點(diǎn)的處理能力也許不同,但是他們在整個(gè)網(wǎng)絡(luò)中的地位是類似的,可以是相同的。類似,我在投票的時(shí)候,我個(gè)人不論是很弱還是很強(qiáng)大,均只能投一票。這樣體現(xiàn)出在計(jì)算上,網(wǎng)絡(luò)上的平等。
在實(shí)際處理問題上,區(qū)塊鏈用共識(shí)機(jī)制代替了某些云計(jì)算,比如Hadoop中任務(wù)的調(diào)度,確定誰來做哪一塊,或者簡單地,我們就是一個(gè)分布式賬本,誰來記錄哪一塊。如果這么看,云計(jì)算實(shí)際上和區(qū)塊鏈在最低層的技術(shù)上有不同,理念上也有不同。
云計(jì)算也講究彈性,邊緣可發(fā)可收,那么我們是否可以大膽地去設(shè)想一下,如果云計(jì)算的邊緣收回來了,前端是什么,有人說是霧計(jì)算,還有人說是海計(jì)算。不知道區(qū)塊鏈可不可以作為云計(jì)算的邊沿和延申,在云計(jì)算效果不是很好的地方,區(qū)塊鏈會(huì)有它的發(fā)揮空間,并且在區(qū)塊鏈特別擅長的領(lǐng)域,區(qū)塊鏈有其它的計(jì)算方式。
我又想到三國演義另外一句話,天下之大,合久必分,分久必合。云計(jì)算產(chǎn)生的前提恰好都是分布式,80年代個(gè)人PC的產(chǎn)生,你可以看成是一個(gè)個(gè)孤立的,互聯(lián)網(wǎng)的產(chǎn)生使這些孤立的計(jì)算機(jī)連成了一個(gè)大的網(wǎng)絡(luò),云計(jì)算又大量整合了這些計(jì)算機(jī)資源,形成了集中式的信息處理。而區(qū)塊鏈在2008年登場,恰好又是希望把計(jì)算分布式,所以我很佩服羅貫中在很早的時(shí)候就說了天下之大,分久必合,合久必分,對這樣場景的描述。
區(qū)塊鏈的登場與生俱來就有一個(gè)神秘的光環(huán),它采用的很多技術(shù)沒有被大眾所熟知,比如剛才提到的密碼技術(shù),分布式系統(tǒng)中非常底層的拜占庭將軍容錯(cuò)的算法,還有我們的P2P通信技術(shù),分布式存儲(chǔ)的技術(shù)。但是,我想隨著時(shí)間的推移,大家對區(qū)塊鏈的理解會(huì)更為深入,對它擅長的領(lǐng)域以及技術(shù)的限度,大家會(huì)更加清楚。