我們假想太平洋上有一個(gè)與世隔絕的海島,名叫桃花島。在桃花島上,每個(gè)家庭擁有定規(guī)模的資產(chǎn), 這些資產(chǎn)以糧食、蔬菜、日用品、房地產(chǎn)等形式存在。島上的物質(zhì)交換只在島內(nèi)居民之間進(jìn)行。所有的交易都由這個(gè)島上唯一能寫會(huì)算的人一 島主黃老邪記錄。每天隨著島內(nèi)交易的進(jìn)行,交易信息都在不斷增長,黃老邪將所有的交易信息都記錄在一本賬本中, 并由自己來保管。
但是,由黃老邪一人記賬的模式出現(xiàn)了諸多問題,隨著島上居民的交易行為日益頻繁,每天要記的賬目越來越多,黃老邪的記賬壓力也越來越大。為了緩解自己的工作壓力,黃老邪將記賬技能傳授給島上的所有居民,使他們都參與到記賬過程中來。黃老邪要求居民將交易金額及交易時(shí)間等信息都記錄下來,并且每一筆交易記錄經(jīng)交易雙方簽字后方可生效。黃老邪還為島上每一個(gè)家庭分配了各自獨(dú)立的信箱,只有該家庭的成員才能使用鑰匙打開自家的信箱,查看信箱中儲(chǔ)存的賬目信息。有了信箱以后,島上的記賬模式發(fā)生了翻天覆地的變化:當(dāng)新的交易記錄產(chǎn)生時(shí),交易人將一-頁記載了新的交易信息的記錄放入每家每戶的信箱中。這些交易信息按照放入信箱的先后順序形成了一個(gè)天然的賬本,每一戶居民都可以打開信箱進(jìn)行查看。
在這種情況下,即使有個(gè)別人將信箱中的信息進(jìn)行篡改,整體的交易記錄依舊不會(huì)出現(xiàn)偏差。居民只要拿出每個(gè)人那里保存的賬本,根據(jù)多數(shù)原則確定統(tǒng)-的交 易歷史,并糾正個(gè)別人手中錯(cuò)誤的賬本頁目,就可以在無需島主黃老邪監(jiān)管的情況下完成記賬。經(jīng)過黃老邪改變后的分布式記賬方式與我們下文所要闡述的區(qū)塊鏈有異曲同工之妙。
什么是區(qū)塊鏈
區(qū)塊鏈本質(zhì)上是一個(gè)分布式賬本技術(shù)。如果以數(shù)學(xué)函數(shù)來類比的話,我們可以將分布式網(wǎng)絡(luò)、共識(shí)機(jī)制、去中心化、加密算祛、智能合約、權(quán)限許可、價(jià)值和資產(chǎn)等要素理解為函數(shù)中的變量或因子。這些變量和因子的有機(jī)組合形成了區(qū)塊鏈有別于傳統(tǒng)技術(shù)的些新的技術(shù)特征。 在對(duì) 區(qū)塊鏈進(jìn)行更加深入的技術(shù)解 讀前,我們需要先對(duì)區(qū)塊鏈中的一些核心概念進(jìn)行梳理 。
分布式賬本技術(shù)函數(shù)見下圖
區(qū)塊鏈?zhǔn)且粋€(gè)動(dòng)態(tài)的點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)
區(qū)塊鏈的動(dòng)態(tài)點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)
上文的故事中,由黃老邪一人記賬的時(shí)期與我們?nèi)缃竦纳鐣?huì)生活類似,都是由銀行等中心化機(jī)構(gòu)來對(duì)信息進(jìn)行記錄。相對(duì)應(yīng)地,黃老邪改變記賬模式后,島上的居民都可以參與到記賬環(huán)節(jié)中,每個(gè)居民之間都可以發(fā)生交易并自行進(jìn)行記賬,這與區(qū)塊鏈點(diǎn)對(duì)點(diǎn)的特性很相似。
與傳統(tǒng)的中心化集中式架構(gòu)相比,區(qū)塊鏈弱化了中央服務(wù)器的概念。各個(gè)節(jié)點(diǎn)不再區(qū)分服務(wù)器和客戶端的關(guān)系,每個(gè)節(jié)點(diǎn)既可請(qǐng)求服務(wù)也可提供服務(wù),各個(gè)節(jié)點(diǎn)可以直接交換資源而不再需要通過服務(wù)器的橋接,用戶與用戶之間可以實(shí)現(xiàn)資源的直接分享與利用。在區(qū)塊鏈分布式網(wǎng)絡(luò)中,所有節(jié)點(diǎn)的地位都是同等的。一筆剛通過驗(yàn)證且被傳遞到區(qū)塊鏈網(wǎng)絡(luò)中任意節(jié)點(diǎn)的交易會(huì)被發(fā)送到周邊的相鄰節(jié)點(diǎn),而每一個(gè)相鄰節(jié)點(diǎn)又會(huì)將交易發(fā)送到其他的相鄰節(jié)點(diǎn)。以此類推,在短時(shí)間之內(nèi),一筆有效的交易就會(huì)傳播到網(wǎng)絡(luò)中的各個(gè)角落,直到所有連接到網(wǎng)絡(luò)的節(jié)點(diǎn)都接收到它。
區(qū)塊鏈也是一個(gè)動(dòng)態(tài)的網(wǎng)絡(luò),不斷有新節(jié)點(diǎn)的加入和原區(qū)塊鏈網(wǎng)絡(luò)中節(jié)點(diǎn)的退出。新節(jié)點(diǎn)的不斷加入為系統(tǒng)引入新的資源,整個(gè)網(wǎng)絡(luò)由此得以構(gòu)建和發(fā)展,資源的豐富性與多樣性隨之?dāng)U充,點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)的分散性、健壯性、可用性與整體性能也將隨著節(jié)點(diǎn)的數(shù)量增加而增強(qiáng)。
區(qū)塊鏈?zhǔn)且粋€(gè)分布式賬本
區(qū)塊鏈的分布式賬本結(jié)構(gòu)
在桃花島上,由黃老邪一人記賬的時(shí)期,整座島上只有一本賬本來對(duì)所有的信息進(jìn)行記錄。改變記賬模式后, 島上的每一戶人家都擁有一本賬本,這就相當(dāng)于區(qū)塊鏈這個(gè)分布式的公共賬本。
區(qū)塊鏈推翻了傳統(tǒng)的記賬模式。與傳統(tǒng)記賬模式不同,區(qū)塊鏈中的交易信息不再由單個(gè)機(jī)構(gòu)來記錄,而是由其中的每一個(gè)節(jié)點(diǎn)共同參與記賬。在這個(gè)分布式網(wǎng)絡(luò)上,每個(gè)節(jié)點(diǎn)都有賬本的完整備份。如果有人想篡改賬本上的記錄,他必須改動(dòng)各節(jié)點(diǎn)存儲(chǔ)的賬本備份,這就使篡改賬本記錄的行為難以實(shí)現(xiàn)。
區(qū)塊鏈用哈希算法實(shí)現(xiàn)信息的不可篡改
隨著新交易的不斷產(chǎn)生,桃花島每家每戶賬本里記錄的交易信息也快速增長,越來越多的記錄信息頁會(huì)保存到信箱中。類似地,在區(qū)塊鏈中,一個(gè)又一個(gè)新產(chǎn)生的區(qū)塊會(huì)不斷鏈接到現(xiàn)有區(qū)塊鏈的尾端。如何能夠保證這個(gè)記錄信息頁的每一頁,以及區(qū)塊鏈賬本中的每一個(gè)區(qū)塊都是真實(shí)準(zhǔn)確、沒有被篡改過的呢?
設(shè)想一下, 如果我們通過一種算法對(duì)賬本信息進(jìn)行加密,給區(qū)塊鏈上第一個(gè)區(qū)塊打上一個(gè)唯一的標(biāo)簽, 之后的每一個(gè)區(qū)塊也通過加密后打上一個(gè)唯一標(biāo)簽,同時(shí)又能夠包含前一個(gè)區(qū)塊鏈的標(biāo)簽。這時(shí),只要采用一種方法保證這個(gè)標(biāo)簽無法被輕易替換更改,那么就能保證這個(gè)區(qū)塊記錄的信息沒有被篡改過。
哈希算法就是上面提到的區(qū)塊鏈中保證交易信息不可篡改的單向密碼體制。該算法的思想是接收一段明文, 以一種不可逆的方式將它轉(zhuǎn)化成一段長度較短、位數(shù)固定的輸出做列。這個(gè)加密過程是不可逆的,這就意味著無法通過輸出散列的內(nèi)容推斷出任何與原文有關(guān)的信息。任何輸入信息的變化,哪怕僅僅是一~位數(shù)字的更改,都將導(dǎo)致散列結(jié)果的明顯變化。基于輸出散列與輸人原文一 一對(duì)應(yīng)的特性,哈希算法可以被用于驗(yàn)證信息是否被修改。通過哈希算法可對(duì)一個(gè)交易區(qū)塊的所有交易信息進(jìn)行加密,并把記賬內(nèi)容壓縮成一串?dāng)?shù)字和字母組成的字符串,這個(gè)字符串無法反推出原來的內(nèi)容。區(qū)塊鏈的哈希值可以唯一、準(zhǔn)確地標(biāo)識(shí)--個(gè)區(qū)塊,并且任何節(jié)點(diǎn)通過簡單地對(duì)區(qū)塊頭進(jìn)行哈希計(jì)算都可以獨(dú)立地獲取該區(qū)塊哈希值。如果想要確認(rèn)區(qū)塊的內(nèi)容是否被篡改,那么利用哈希算法重新進(jìn)行計(jì)算,記賬信息沒有變化,計(jì)算出的哈希值也將不會(huì)產(chǎn)生變化。
在區(qū)塊鏈中,通常使用SHA-256的哈希算法進(jìn)行區(qū)塊的加密,該算法的輸出長度為256位,即生成長度為32字節(jié)的隨機(jī)散列。
區(qū)塊鏈用公鑰、私鑰來標(biāo)識(shí)身份
在區(qū)塊鏈中,信息的傳播按照公鑰加私鑰的方式進(jìn)行。公鑰相當(dāng)于桃花島上每家每戶居民的信箱地址,當(dāng)別人獲知你的公鑰時(shí),可以與你通信。相應(yīng)地,私鑰相當(dāng)于信箱的鑰匙,只有擁有私鑰的人才能查看信箱中的信件信息。在區(qū)塊鏈中,數(shù)字簽名可以用于驗(yàn)證信息發(fā)送者的身份,用戶可以公布自己的公鑰,然后發(fā)送可以被公鑰所驗(yàn)證的、已經(jīng)通過私鑰加密過的信息。如果信息的接收者能夠使用公鑰解密加密過的信息,即可證明這條信息發(fā)送者的身份屬實(shí)。上述過程可以用圖3-4 表示:區(qū)塊鏈中有兩個(gè)用戶Alic和Bob,Alicc想讓Bob知道自己是真實(shí)的Alice,而不是他人冒充的。Alice 只需要使用私鑰對(duì)文件簽名并發(fā)送給Bob, Bob 使用Alice的公鑰對(duì)文件進(jìn)行簽名驗(yàn)證,如果驗(yàn)證成功,則該文件一定是使用Alice的私鑰加密的。由于Alice的私鑰只由Alice一人持有,Bob 就可以確定文件的發(fā)送者正是Alice本人。
此外,公鑰與私鑰還可以保證分布式網(wǎng)絡(luò)中點(diǎn)對(duì)點(diǎn)信息傳遞的安全。我們不妨假想這樣一個(gè)情形: Alice想在分布式網(wǎng)絡(luò)中發(fā)送一封情書給Bob。但由于分布式網(wǎng)絡(luò)的信息傳遞特性,這封情書將被發(fā)送至每一個(gè)用戶手中。Alice 不希望情書的內(nèi)容被其他用戶看到,因此Alice使用Bob的公鑰對(duì)情書進(jìn)行加密。網(wǎng)絡(luò)中除Bob外的其他用戶接收到這封經(jīng)過加密的情書,看到的只是一段密文。只有Bob可以使用自己的私鑰對(duì)密文進(jìn)行解密,得到一份情書的明文。通過這個(gè)加密與解密的過程,Alice與Bob之間實(shí)現(xiàn)了點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)傳遞。
在區(qū)塊鏈的信息傳遞過程中,信息傳遞雙方的公私鑰加密與解密往往是成對(duì)出現(xiàn)的,即信息發(fā)送方使用私鑰對(duì)信息簽名、使用信息接收方公鑰對(duì)信息加密,信息接收方使用對(duì)方公鑰驗(yàn)證信息發(fā)送方的身份、使用私鑰對(duì)加密信息解密。
區(qū)塊鏈用Merkle樹結(jié)構(gòu)簡化驗(yàn)證程序
Merkle樹是區(qū)塊鏈的基本組成部分,Merkle樹的葉子節(jié)點(diǎn)存儲(chǔ)的是數(shù)據(jù)文件的哈希值,非葉子節(jié)點(diǎn)存儲(chǔ)的是對(duì)其下面所有的葉子節(jié)點(diǎn)值的組合結(jié)果進(jìn)行哈希計(jì)算后得出的哈希值。區(qū)塊鏈利用Merkle樹這種數(shù)據(jù)結(jié)構(gòu)存放所有葉子節(jié)點(diǎn)的哈希值,并以此為基礎(chǔ)生成一個(gè)統(tǒng)一的哈希值。區(qū)塊中的任何一筆交易的發(fā)生和交易信息的變動(dòng)都會(huì)使Merkle樹發(fā)生改變。在交易信息的處理、比對(duì)及驗(yàn)證的過程中,尤其是在分布式環(huán)境下進(jìn)行比對(duì)或驗(yàn)證時(shí),Merkle 樹會(huì)大大減少數(shù)據(jù)的傳輸量和計(jì)算的復(fù)雜度。
Merkle 樹結(jié)構(gòu)圖
區(qū)塊鏈為每一筆交易蓋上時(shí)間戳
黃老邪在傳授記賬方法時(shí),要求居民將發(fā)生在桃花島上的每一筆交易都記錄下來,并且要求他們將交易發(fā)生的時(shí)間也一并記錄在賬本上,這就相當(dāng)于區(qū)塊鏈為每- -筆交易在發(fā)生時(shí)蓋上了時(shí)間戳。
在區(qū)塊鏈中,時(shí)間戳的應(yīng)用是對(duì)每一次交易記錄的認(rèn)證,它就像交易合同公證一樣,能夠顯示交易記錄的真實(shí)性。時(shí)間戳作為區(qū)塊元數(shù)據(jù)的一部分,具有天然的時(shí)間特性。從某種意義上講,區(qū)塊鏈的本質(zhì)可以被理解為構(gòu)造了一個(gè)永不停息、無堅(jiān)不摧的時(shí)間戳系統(tǒng)。
在現(xiàn)實(shí)經(jīng)濟(jì)交易中,常常會(huì)出現(xiàn)信息欺詐等虛假交易現(xiàn)象。為了減少這些不法行為給交易中誠實(shí)守信的一方帶來的損失,人們通常會(huì)尋求有公信力的第三方機(jī)構(gòu)對(duì)交易進(jìn)行核驗(yàn)。區(qū)塊鏈通過時(shí)間戳來保證分布式賬本的唯一一性, 避免雙花問題的產(chǎn)生。時(shí)間戳從區(qū)塊生成的一刻起就存在于區(qū)塊之中,它扮演了區(qū)塊鏈中的公證人的角色。與現(xiàn)有的公證機(jī)制相比,基于時(shí)間截的公證系統(tǒng)更為經(jīng)濟(jì),并且完全可信。
區(qū)塊鏈中的時(shí)間截比傳統(tǒng)的公證制度更為可信,是因?yàn)闀r(shí)間簽名是直接寫在區(qū)塊鏈上的,區(qū)塊鏈中已經(jīng)生成的區(qū)塊不能以任何方式進(jìn)行修改。一旦區(qū)塊被修改,生成的哈希值就無法匹配,操縱行為也將由此而被系統(tǒng)檢測(cè)到。區(qū)塊鏈根據(jù)分布式的協(xié)議,構(gòu)建了一個(gè)分布式的開放結(jié)構(gòu)體系,交換的信息可以通過分布式記賬的方式確定信息數(shù)據(jù)內(nèi)容,加蓋時(shí)間戳后生成區(qū)塊數(shù)據(jù),再通過分布式廣播發(fā)送給各個(gè)節(jié)點(diǎn),最終實(shí)現(xiàn)分布式存儲(chǔ)。
對(duì)數(shù)據(jù)應(yīng)用安全散列算法加蓋時(shí)間戳,并將該隨機(jī)哈希值在全網(wǎng)中進(jìn)行廣播能夠證實(shí)一組數(shù)據(jù)在某一 -時(shí)刻是真實(shí)存在的,因?yàn)閿?shù)據(jù)只有在該時(shí)刻的確存在,才能獲取相應(yīng)的隨機(jī)哈希值。每個(gè)時(shí)間戳?xí)⑶耙粋€(gè)時(shí)間戳納入其隨機(jī)哈希值之中, 每一個(gè)后面位置的時(shí)間截都會(huì)對(duì)前面的時(shí)間戳進(jìn)行增強(qiáng),這過程不斷重復(fù)、依次推進(jìn),最終形成一個(gè)完整 的鏈條。時(shí)間戳與哈希算法、Merkle樹共同作用,增強(qiáng)了區(qū)塊鏈的安全性能。
時(shí)間戳證明存在性的功能可能是區(qū)塊鏈的另一種用途,它或許會(huì)徹底改變?nèi)祟惖奈磥怼S捎趨^(qū)塊哈希值的不可偽造性,一個(gè)區(qū)塊能提供出哈希值即可證明區(qū)塊哈希值存在于該區(qū)塊生成時(shí)刻之后,就像你在一張白紙上寫下了一串?dāng)?shù)字,說明的是數(shù)字出現(xiàn)的時(shí)間晚于白紙 這也稱為時(shí)間點(diǎn)后向證明。時(shí)間點(diǎn)前向證明則需要構(gòu)造一個(gè)包含數(shù)字摘要的交易,當(dāng)該交易進(jìn)入?yún)^(qū)塊后,便可以證明你在該區(qū)塊時(shí)刻之前擁有該數(shù)字摘要。
區(qū)塊鏈?zhǔn)怪悄芎霞s成為現(xiàn)實(shí)
1994年,密碼學(xué)家尼克薩博(Nick Szabo)首次提出了智能合約的理念。 然而在過去的中心化體系下,智能合約幾乎是沒有意義的,因?yàn)楸4嬖谥行幕到y(tǒng)中的合約可以被系統(tǒng)所有者隨時(shí)修改甚至刪除。但是有了區(qū)塊鏈以后,智能合約可以被事先寫入到區(qū)塊鏈的分右式網(wǎng)絡(luò)體系中。當(dāng)合約中的某一事項(xiàng)發(fā)生時(shí), 智能合約就會(huì)被觸發(fā)并自動(dòng)執(zhí)行相應(yīng)的合約條款。在這個(gè)過程中,某一個(gè)人或者某一個(gè)機(jī)構(gòu)都不能夠修改或刪除合約,也無法阻礙智能合約的自動(dòng)執(zhí)行。
智能合約指的是一段部署在分布式賬本中的代碼,它可以處理信息,接收、儲(chǔ)存和發(fā)送價(jià)值,是一個(gè)能夠自動(dòng)執(zhí)行合約條款的計(jì)算機(jī)程序。從本質(zhì)上講,智能合約的工作原理類似于計(jì)算機(jī)程序中的if-then判斷語句,智能合約以這樣一種方式 與現(xiàn)實(shí)世界里的資產(chǎn)進(jìn)行交互。
智能合約見圖3-6。
智能合約擁有自治、自足和分布式的特點(diǎn),它由代碼定義并獨(dú)立執(zhí)行。智能合約的執(zhí)行流程從雙方達(dá)成合約協(xié)定時(shí)開始,通過將合約中的內(nèi)容進(jìn)行數(shù)字化編碼并寫入?yún)^(qū)塊鏈中實(shí)現(xiàn)對(duì)合約內(nèi)容的形式化。合約中約定的條件事項(xiàng)的發(fā)生將自動(dòng)觸發(fā)合約的執(zhí)行程序。借助區(qū)塊鏈技術(shù),智能合約可能會(huì)在未來對(duì)人們的生活帶來極大的改變。智能合約能夠使得人與人之間的價(jià)值交易過程自動(dòng)化和信任化,通過智能合約實(shí)現(xiàn)價(jià)值交易不僅節(jié)省了時(shí)間和金錢,還提高了交易的效率。在區(qū)塊鏈技術(shù)中,智能合約在分布式交易所、金融衍生品、身份認(rèn)證、醫(yī)療健康和科學(xué)發(fā)現(xiàn)等領(lǐng)域均有著廣泛的應(yīng)用。
評(píng)論
查看更多