沈夢(mèng)姣,張厚軍
(嘉興職業(yè)技術(shù)學(xué)院,浙江 嘉興 314036)
相較于區(qū)塊鏈技術(shù),人們最先認(rèn)識(shí)的是基于區(qū)塊鏈技術(shù)而誕生的比特幣。比特幣的歷史可追溯到2008年11月1日,中本聰在P2P foundation網(wǎng)站上發(fā)布了白皮書《比特幣:一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)》[1],比特幣是一種新型的虛擬數(shù)字貨幣,由網(wǎng)絡(luò)節(jié)點(diǎn)的計(jì)算生成,任何人通過(guò)一臺(tái)連接在互聯(lián)網(wǎng)的電腦,都可以挖掘、買賣比特幣。2017年12月17日,比特幣達(dá)到歷史最高價(jià)19 850美元,飛速攀登的市值成功地讓金融、醫(yī)療、物流等各行業(yè)的相關(guān)人士開(kāi)始關(guān)注比特幣背后的實(shí)現(xiàn)技術(shù)—區(qū)塊鏈。區(qū)塊鏈技術(shù)正在迅速得到全世界的認(rèn)可,是學(xué)術(shù)研究中的前沿領(lǐng)域。
區(qū)塊鏈不是一種單一全新的技術(shù),而是數(shù)學(xué)、密碼學(xué)、互聯(lián)網(wǎng)和計(jì)算機(jī)編程等多學(xué)科融合的技術(shù)。這些學(xué)科技術(shù)與數(shù)據(jù)庫(kù)相結(jié)合,可以有效地對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證、存儲(chǔ)、生成、更新、傳輸、訪問(wèn)等操作,所謂有效即可以保證數(shù)據(jù)的一致性、連續(xù)性、完整性,數(shù)據(jù)是難以被篡改的,且由于區(qū)塊是通過(guò)去中心化和去信任的方式集體維護(hù)一個(gè)可靠數(shù)據(jù)庫(kù),所以也被稱為分布式賬本。其中,去中心化是區(qū)塊鏈最顯著的特征,所謂去中心化,就是說(shuō)不依賴于中心節(jié)點(diǎn)來(lái)進(jìn)行記賬,網(wǎng)絡(luò)中所有節(jié)點(diǎn)地位平等,共同來(lái)管理系統(tǒng)中的數(shù)據(jù)。這種數(shù)據(jù)管理是基于塊鏈結(jié)構(gòu)來(lái)驗(yàn)證與存儲(chǔ)數(shù)據(jù),利用共識(shí)算法生成與更新數(shù)據(jù),利用密碼學(xué)方式傳輸與保護(hù)數(shù)據(jù),網(wǎng)絡(luò)上的每個(gè)節(jié)點(diǎn)共同監(jiān)督,所以不需要第三方信任機(jī)構(gòu)的背書。傳統(tǒng)的中心化方式進(jìn)行數(shù)據(jù)管理,存在中心節(jié)點(diǎn)易于被攻擊的問(wèn)題,而區(qū)塊鏈去中心化的特征,使得攻擊者需要對(duì)整個(gè)網(wǎng)路節(jié)點(diǎn)進(jìn)行控制和破壞,顯然比集中攻擊一個(gè)節(jié)點(diǎn)要難得多。去信任實(shí)際上就是將信任人轉(zhuǎn)換為信任機(jī)器,即所有參與者對(duì)共識(shí)機(jī)制的認(rèn)同。區(qū)塊鏈技術(shù)可以通過(guò)去中心化和去信任的方式集體維護(hù)一個(gè)可靠數(shù)據(jù)庫(kù),其實(shí)現(xiàn)的最基本原理可以簡(jiǎn)單概括為區(qū)塊數(shù)據(jù)存儲(chǔ)、區(qū)塊成鏈和挖礦。
區(qū)塊鏈具有獨(dú)特的數(shù)據(jù)存儲(chǔ)方式[3],是以“塊”的概念保存數(shù)據(jù)的。比如比特幣在區(qū)塊鏈上存儲(chǔ)的是比特幣的交易數(shù)據(jù),以塊為單位進(jìn)行存儲(chǔ),一塊的大小在1 MB左右。數(shù)據(jù)按產(chǎn)生的先后順序?qū)懭雺K中,一個(gè)塊的數(shù)據(jù)寫滿之后(到達(dá)1 MB大小),再開(kāi)一個(gè)新的塊存儲(chǔ)數(shù)據(jù)。每個(gè)區(qū)塊可以根據(jù)職能分為區(qū)塊頭和區(qū)塊體兩個(gè)部分,其中,區(qū)塊體主要用來(lái)存放交易數(shù)據(jù),而區(qū)塊頭存放區(qū)塊的元數(shù)據(jù)。
(1)區(qū)塊體:交易數(shù)據(jù)是以默克爾樹(shù)(Merkle)[1]結(jié)構(gòu)進(jìn)行存儲(chǔ)的,即數(shù)據(jù)被存儲(chǔ)在默克爾樹(shù)的葉節(jié)點(diǎn)上,葉節(jié)點(diǎn)的交易數(shù)據(jù)產(chǎn)生的哈希值被存放在該葉節(jié)點(diǎn)的父親節(jié)點(diǎn)上,至于其他非葉節(jié)點(diǎn),是存放在該節(jié)點(diǎn)的兩個(gè)子節(jié)點(diǎn)哈希值兩兩合并之后的新哈希值上。具體的默克爾樹(shù)結(jié)構(gòu)存儲(chǔ)交易數(shù)據(jù)情況如圖1所示。

圖1 區(qū)塊體交易數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)
(2)區(qū)塊頭:可以說(shuō)是整個(gè)區(qū)塊的核心,存放的是區(qū)塊的元數(shù)據(jù)。元數(shù)據(jù)包含的數(shù)據(jù)類型很多,包括Hash值、父Hash,Merkle根、版本號(hào)、區(qū)塊高度、時(shí)間戳、Nonce、難度目標(biāo)等,具體數(shù)據(jù)類型和有關(guān)說(shuō)明如表1所示。

表1 區(qū)塊頭數(shù)據(jù)字段
在區(qū)塊鏈中,區(qū)塊和區(qū)塊之間形成了一個(gè)鏈表的存儲(chǔ)結(jié)構(gòu)[2]。在上述區(qū)塊數(shù)據(jù)存儲(chǔ)中,提到過(guò)當(dāng)前區(qū)塊的哈希值,也就是區(qū)塊的數(shù)字簽名,是根據(jù)區(qū)塊的內(nèi)部數(shù)據(jù),用哈希算法生成的一個(gè)特殊的(數(shù)字)簽名。哈希算法是一個(gè)極其復(fù)雜的數(shù)學(xué)公式,將任意字符串代入公式,都會(huì)輸出一個(gè)獨(dú)一無(wú)二的64位字符串,可以作為區(qū)塊的唯一標(biāo)識(shí),是區(qū)塊身份的認(rèn)證。哈希函數(shù)種類繁多,比特幣區(qū)塊鏈用的是其中一種著名的SHA-256哈希算法。在上述區(qū)塊數(shù)據(jù)存儲(chǔ)中,也提到了每一個(gè)區(qū)塊都會(huì)保存其上一個(gè)區(qū)塊的哈希值,有效地保障了鏈上的數(shù)據(jù)不被篡改。假設(shè)有3個(gè)區(qū)塊,如圖2所示。Block1生成的哈希值是Hash1,Block2是Hash2,Block3是Hash3,且Block2中保存了Hash1,Block3中保存了Hash2。如果Block1中的數(shù)據(jù)被篡改了,其對(duì)應(yīng)的哈希值也會(huì)改變,假設(shè)變化為Hash1_1,此時(shí)Block1和Block2之間的鏈條就斷了。區(qū)塊一旦斷鏈,就意味著該區(qū)塊被篡改了。也可以繼續(xù)去篡改Block2中保留的Hash1為Hash1_1,但是同時(shí)Block2的哈希值也不能再是Hash2了。也就是說(shuō),改掉一個(gè)區(qū)塊上的數(shù)據(jù),必須為該區(qū)塊后續(xù)的所有區(qū)塊重新去計(jì)算哈希值,被認(rèn)為是幾乎不可能實(shí)現(xiàn)的。

圖2 區(qū)塊成鏈
在上述區(qū)塊成鏈中,說(shuō)到了一種篡改區(qū)塊數(shù)據(jù)的想法,就是將篡改后的區(qū)塊生成的新哈希值塞入下一個(gè)區(qū)塊,然后逐個(gè)將之后的區(qū)塊生成新的哈希值,從而使得區(qū)塊鏈保持完整的鏈條。然而這種想法是很難實(shí)現(xiàn)的,因?yàn)閰^(qū)塊鏈協(xié)議對(duì)于哈希值是有特殊要求的,只有生成了符合要求的哈希值的區(qū)塊才能入鏈。在區(qū)塊數(shù)據(jù)存儲(chǔ)中,提到過(guò)區(qū)塊頭中有一個(gè)Nonce字段,是一個(gè)隨機(jī)的數(shù)字,人們需要去找出一個(gè)Nonce,使得區(qū)塊最終得到的哈希值是符合區(qū)塊鏈協(xié)議要求的哈希值,這個(gè)過(guò)程就是眾所周知的“挖礦”。假設(shè)有人惡意篡改了一個(gè)區(qū)塊上的數(shù)據(jù),區(qū)塊的哈希值改變?cè)斐蓴噫湣榱穗[瞞數(shù)據(jù)被篡改的事實(shí),篡改者需要不斷去通過(guò)“挖礦”來(lái)為該區(qū)塊后續(xù)的區(qū)塊們計(jì)算出新的符合區(qū)塊鏈協(xié)議要求的哈希值。那么其他的用戶也在不斷地通過(guò)“挖礦”為區(qū)塊鏈添加新的區(qū)塊。這意味著一個(gè)礦工所擁有的算力需要超過(guò)全網(wǎng)其他礦工的總算力,“以一敵眾”往往是不現(xiàn)實(shí)的。
區(qū)塊鏈在設(shè)計(jì)之初就從不同的維度保障數(shù)據(jù)進(jìn)行驗(yàn)證、存儲(chǔ)、生成、更新、傳輸、訪問(wèn)等操作,盡管區(qū)塊鏈技術(shù)以其獨(dú)有的共識(shí)機(jī)制、防篡改機(jī)制、共監(jiān)管機(jī)制、可追溯機(jī)制等原生優(yōu)勢(shì)極大地保障、維護(hù)了一個(gè)可靠數(shù)據(jù)庫(kù),但是隨著區(qū)塊鏈規(guī)模的逐漸擴(kuò)大和被廣泛應(yīng)用到教育、物聯(lián)網(wǎng)、供應(yīng)鏈、醫(yī)療等全新的領(lǐng)域,同時(shí)也面臨著很多隨之而來(lái)的中心化、效率、隱私和安全等方面的問(wèn)題。盡管區(qū)塊鏈并不完美,但仍然無(wú)法阻止各領(lǐng)域優(yōu)秀的企業(yè)、專家、研究者對(duì)其進(jìn)行不斷的鉆研。況且技術(shù)總是不斷發(fā)展的,區(qū)塊鏈作為一種技術(shù)創(chuàng)新,在未來(lái)必定能得到進(jìn)一步改善。