區(qū)塊鏈是什么?
“區(qū)塊鏈”技術(shù)最初是由一位化名中本聰?shù)娜藶?a href="http://hljzzgx.com/tags/比特幣/" target="_blank">比特幣(一種數(shù)字貨幣)而設(shè)計(jì)出的一種特殊的數(shù)據(jù)庫技術(shù),它基于密碼學(xué)中的橢圓曲線數(shù)字簽名算法(ECDSA)來實(shí)現(xiàn)去中心化的P2P系統(tǒng)設(shè)計(jì)。但區(qū)塊鏈的作用不僅僅局限在比特幣上?,F(xiàn)在,人們在使用“區(qū)塊鏈”這個詞時,有的時候是指數(shù)據(jù)結(jié)構(gòu),有時是指數(shù)據(jù)庫,有時則是指數(shù)據(jù)庫技術(shù),但無論是哪種含義,都和比特幣沒有必然的聯(lián)系。
從數(shù)據(jù)的角度來看:區(qū)塊鏈?zhǔn)且环N分布式數(shù)據(jù)庫(或稱為分布式共享總賬,DistributedShared Ledger),這里的“分布式”不僅體現(xiàn)為數(shù)據(jù)的分布式存儲,也體現(xiàn)為數(shù)據(jù)的分布式記錄(即由系統(tǒng)參與者來集體維護(hù))。簡單的說,區(qū)塊鏈能實(shí)現(xiàn)全球數(shù)據(jù)信息的分布式記錄(可以由系統(tǒng)參與者集體記錄,而非由一個中心化的機(jī)構(gòu)集中記錄)與分布式存儲(可以存儲在所有參與記錄數(shù)據(jù)的節(jié)點(diǎn)中,而非集中存儲于中心化的機(jī)構(gòu)節(jié)點(diǎn)中)。
從效果的角度來看:區(qū)塊鏈可以生成一套記錄時間先后的、不可篡改的、可信任的數(shù)據(jù)庫,這套數(shù)據(jù)庫是去中心化存儲且數(shù)據(jù)安全能夠得到有效保證的。
結(jié)論:區(qū)塊鏈?zhǔn)且环N把區(qū)塊以鏈的方式組合在一起的數(shù)據(jù)結(jié)構(gòu),它適合存儲簡單的、有先后關(guān)系的、能在系統(tǒng)內(nèi)驗(yàn)證的數(shù)據(jù),用密碼學(xué)保證了數(shù)據(jù)的不可篡改和不可偽造。它能夠使參與者對全網(wǎng)交易記錄的事件順序和當(dāng)前狀態(tài)建立共識。
如今的區(qū)塊鏈技術(shù)概括起來是指通過去中心化和去信任的方式集體維護(hù)一個可靠數(shù)據(jù)庫的技術(shù)。其實(shí),區(qū)塊鏈技術(shù)并不是一種單一的、全新的技術(shù),而是多種現(xiàn)有技術(shù)(如加密算法、P2P文件傳輸?shù)龋┱系慕Y(jié)果,這些技術(shù)與數(shù)據(jù)庫巧妙地組合在一起,形成了一種新的數(shù)據(jù)記錄、傳遞、存儲與呈現(xiàn)的方式。簡單的說,區(qū)塊鏈技術(shù)就是一種大家共同參與記錄信息、存儲信息的技術(shù)。過去,人們將數(shù)據(jù)記錄、存儲的工作交給中心化的機(jī)構(gòu)來完成,而區(qū)塊鏈技術(shù)則讓系統(tǒng)中的每一個人都可以參與數(shù)據(jù)的記錄、存儲。區(qū)塊鏈技術(shù)在沒有中央控制點(diǎn)的分布式對等網(wǎng)絡(luò)下,使用分布式集體運(yùn)作的方法,構(gòu)建了一個P2P的自組織網(wǎng)絡(luò)。通過復(fù)雜的校驗(yàn)機(jī)制,區(qū)塊鏈數(shù)據(jù)庫能夠保持完整性、連續(xù)性和一致性,即使部分參與人作假也無法改變區(qū)塊鏈的完整性,更無法篡改區(qū)塊鏈中的數(shù)據(jù)。
區(qū)塊鏈技術(shù)涉及的關(guān)鍵點(diǎn)包括:去中心化(Decentralized)、去信任(Trustless)、集體維護(hù)(Collectively maintain)、可靠數(shù)據(jù)庫(ReliableDatabase)、時間戳(Time stamp)、非對稱加密(AsymmetricCryptography)等。
區(qū)塊鏈技術(shù)重新定義了網(wǎng)絡(luò)中信用的生成方式:在系統(tǒng)中,參與者無需了解其他人的背景資料,也不需要借助第三方機(jī)構(gòu)的擔(dān)?;虮WC,區(qū)塊鏈技術(shù)保障了系統(tǒng)對價值轉(zhuǎn)移的活動進(jìn)行記錄、傳輸、存儲,其最后的結(jié)果一定是可信的。
區(qū)塊鏈技術(shù)原理的來源可歸納為一個數(shù)學(xué)問題:拜占庭將軍問題。拜占庭將軍問題延伸到互聯(lián)網(wǎng)生活中來,其內(nèi)涵可概括為:在互聯(lián)網(wǎng)大背景下,當(dāng)需要與不熟悉的對手方進(jìn)行價值交換活動時,人們?nèi)绾尾拍芊乐共粫黄渲械膼阂馄茐恼咂垓_、迷惑從而做出錯誤的決策。進(jìn)一步將拜占庭將軍問題延伸到技術(shù)領(lǐng)域中來,其內(nèi)涵可概括為:在缺少可信任的中央節(jié)點(diǎn)和可信任的通道的情況下,分布在網(wǎng)絡(luò)中的各個節(jié)點(diǎn)應(yīng)如何達(dá)成共識。區(qū)塊鏈技術(shù)解決了聞名已久的拜占庭將軍問題——它提供了一種無需信任單個節(jié)點(diǎn)、還能創(chuàng)建***絡(luò)的方法。
區(qū)塊鏈技術(shù)的本質(zhì)是一種互聯(lián)網(wǎng)協(xié)議。
設(shè)想一下,如果現(xiàn)在我們想要在互聯(lián)網(wǎng)世界中建立一套全球通用的數(shù)據(jù)庫,那么我們會面臨三個亟待解決的問題,這三個問題也是設(shè)計(jì)區(qū)塊鏈技術(shù)的核心所在:
問題一:如何建立一個嚴(yán)謹(jǐn)?shù)臄?shù)據(jù)庫,使得該數(shù)據(jù)庫能夠存儲下海量的信息,同時又能在沒有中心化結(jié)構(gòu)的體系下保證數(shù)據(jù)庫的完整性?
問題二:如何記錄并存儲下這個嚴(yán)謹(jǐn)?shù)臄?shù)據(jù)庫,使得即便參與數(shù)據(jù)記錄的某些節(jié)點(diǎn)崩潰,我們?nèi)匀荒鼙WC整個數(shù)據(jù)庫系統(tǒng)的正常運(yùn)行與信息完備?
問題三:如何使這個嚴(yán)謹(jǐn)且完整存儲下來的數(shù)據(jù)庫變得可信賴,使得我們可以在互聯(lián)網(wǎng)無實(shí)名背景下成功防止詐騙?
針對這三個核心問題,區(qū)塊鏈構(gòu)建了一整套完整的、連貫的數(shù)據(jù)庫技術(shù)來達(dá)成目的,解決這三個問題的技術(shù)也成為了區(qū)塊鏈最核心的三大技術(shù)。此外,為了保證區(qū)塊鏈技術(shù)的可進(jìn)化性與可擴(kuò)展性,區(qū)塊鏈系統(tǒng)設(shè)計(jì)者還引入了“腳本”的概念來實(shí)現(xiàn)數(shù)據(jù)庫的可編程性。我們認(rèn)為,這四大技術(shù)構(gòu)成了區(qū)塊鏈的核心技術(shù)。
核心技術(shù)1:區(qū)塊+鏈
關(guān)于如何建立一個嚴(yán)謹(jǐn)數(shù)據(jù)庫的問題,區(qū)塊鏈的辦法是:將數(shù)據(jù)庫的結(jié)構(gòu)進(jìn)行創(chuàng)新,把數(shù)據(jù)分成不同的區(qū)塊,每個區(qū)塊通過特定的信息鏈接到上一區(qū)塊的后面,前后順連來呈現(xiàn)一套完整的數(shù)據(jù),這也是“區(qū)塊鏈”這三個字的來源。
區(qū)塊(block):在區(qū)塊鏈技術(shù)中,數(shù)據(jù)以電子記錄的形式被永久儲存下來,存放這些電子記錄的文件我們就稱之為“區(qū)塊(block)”。區(qū)塊是按時間順序一個一個先后生成的,每一個區(qū)塊記錄下它在被創(chuàng)建期間發(fā)生的所有價值交換活動,所有區(qū)塊匯總起來形成一個記錄合集。
區(qū)塊結(jié)構(gòu)(BlockStructure):區(qū)塊中會記錄下區(qū)塊生成時間段內(nèi)的交易數(shù)據(jù),區(qū)塊主體實(shí)際上就是交易信息的合集。每一種區(qū)塊鏈的結(jié)構(gòu)設(shè)計(jì)可能不完全相同,但大結(jié)構(gòu)上分為塊頭(header)和塊身(body)兩部分。塊頭用于鏈接到前面的塊并且為區(qū)塊鏈數(shù)據(jù)庫提供完整性的保證,塊身則包含了經(jīng)過驗(yàn)證的、塊創(chuàng)建過程中發(fā)生的價值交換的所有記錄。
區(qū)塊結(jié)構(gòu)有兩個非常重要的特點(diǎn):第一,每一個區(qū)塊上記錄的交易是上一個區(qū)塊形成之后、該區(qū)塊被創(chuàng)建前發(fā)生的所有價值交換活動,這個特點(diǎn)保證了數(shù)據(jù)庫的完整性。第二,在絕大多數(shù)情況下,一旦新區(qū)塊完成后被加入到區(qū)塊鏈的最后,則此區(qū)塊的數(shù)據(jù)記錄就再也不能改變或刪除。這個特點(diǎn)保證了數(shù)據(jù)庫的嚴(yán)謹(jǐn)性,即無法被篡改。
顧名思義,區(qū)塊鏈就是區(qū)塊以鏈的方式組合在一起,以這種方式形成的數(shù)據(jù)庫我們稱之為區(qū)塊鏈數(shù)據(jù)庫。區(qū)塊鏈?zhǔn)窍到y(tǒng)內(nèi)所有節(jié)點(diǎn)共享的交易數(shù)據(jù)庫,這些節(jié)點(diǎn)基于價值交換協(xié)議參與到區(qū)塊鏈的網(wǎng)絡(luò)中來。
區(qū)塊鏈?zhǔn)侨绾巫龅降哪??由于每一個區(qū)塊的塊頭都包含了前一個區(qū)塊的交易信息壓縮值,這就使得從創(chuàng)世塊(第一個區(qū)塊)到當(dāng)前區(qū)塊連接在一起形成了一條長鏈。由于如果不知道前一區(qū)塊的“交易縮影”值,就沒有辦法生成當(dāng)前區(qū)塊,因此每個區(qū)塊必定按時間順序跟隨在前一個區(qū)塊之后。這種所有區(qū)塊包含前一個區(qū)塊引用的結(jié)構(gòu)讓現(xiàn)存的區(qū)塊集合形成了一條數(shù)據(jù)長鏈。“區(qū)塊+鏈”的數(shù)據(jù)存儲結(jié)構(gòu)如下圖所示。
我們引用《區(qū)塊鏈:互聯(lián)網(wǎng)金融的終局》(肖風(fēng))的一段話來總結(jié)區(qū)塊鏈的基本結(jié)構(gòu):“人們把一段時間內(nèi)生成的信息(包括數(shù)據(jù)或代碼)打包成一個區(qū)塊,蓋上時間 戳,與上一個區(qū)塊銜接在一起,每下一個區(qū)塊的頁首都包含了上一個區(qū)塊的索引數(shù)據(jù),然后再在本頁中寫入新的信息,從而形成新的區(qū)塊,首尾相連,最終形成了區(qū)塊鏈?!边@個結(jié)構(gòu)的神奇之處:區(qū)塊(完整歷史)+ 鏈(完全驗(yàn)證)= 時間戳
“區(qū)塊+鏈”的結(jié)構(gòu)為我們提供了一個數(shù)據(jù)庫的完整歷史。從第一個區(qū)塊開始,到最新產(chǎn)生的區(qū)塊為止,區(qū)塊鏈上存儲了系統(tǒng)全部的歷史數(shù)據(jù)。
區(qū)塊鏈為我們提供了數(shù)據(jù)庫內(nèi)每一筆數(shù)據(jù)的查找功能。區(qū)塊鏈上的每一條交易數(shù)據(jù),都可以通過“區(qū)塊鏈”的結(jié)構(gòu)追本溯源,一筆一筆進(jìn)行驗(yàn)證。
區(qū)塊+鏈=時間戳,這是區(qū)塊鏈數(shù)據(jù)庫的最大創(chuàng)新點(diǎn)。區(qū)塊鏈數(shù)據(jù)庫讓全網(wǎng)的記錄者在每一個區(qū)塊中都蓋上一個時間戳來記賬,表示這個信息是這個時間寫入的,形成了一個不可篡改、不可偽造的數(shù)據(jù)庫。我們認(rèn)為,時間戳是區(qū)塊鏈中一項(xiàng)偉大的技術(shù)創(chuàng)新,它可以證明什么呢?
核心技術(shù)2:分布式結(jié)構(gòu)——開源的、去中心化的協(xié)議
我們有了區(qū)塊+鏈的數(shù)據(jù)之后,接下來就要考慮記錄和存儲的問題了。我們應(yīng)該讓誰來參與數(shù)據(jù)的記錄,又應(yīng)該把這些蓋了時間戳的數(shù)據(jù)存儲在哪里呢?在現(xiàn)如今中心化的體系中,數(shù)據(jù)都是集中記錄并存儲于中央電腦上。但是區(qū)塊鏈結(jié)構(gòu)設(shè)計(jì)精妙的地方就在這里,它并不贊同把數(shù)據(jù)記錄并存儲在中心化的一臺或幾臺電腦上,而是讓每一個參與數(shù)據(jù)交易的節(jié)點(diǎn)都記錄并存儲下所有的數(shù)據(jù)。
1.關(guān)于如何讓所有節(jié)點(diǎn)都能參與記錄的問題,區(qū)塊鏈的辦法是:構(gòu)建一整套協(xié)議機(jī)制,讓全網(wǎng)每一個節(jié)點(diǎn)在參與記錄的同時也來驗(yàn)證其他節(jié)點(diǎn)記錄結(jié)果的正確性。只有當(dāng)全網(wǎng)大部分節(jié)點(diǎn)(或甚至所有節(jié)點(diǎn))都同時認(rèn)為這個記錄正確時,或者所有參與記錄的節(jié)點(diǎn)都比對結(jié)果一致通過后,記錄的真實(shí)性才能得到全網(wǎng)認(rèn)可,記錄數(shù)據(jù)才允許被寫入?yún)^(qū)塊中。
2.關(guān)于如何存儲下“區(qū)塊鏈”這套嚴(yán)謹(jǐn)數(shù)據(jù)庫的問題,區(qū)塊鏈的辦法是:構(gòu)建一個分布式結(jié)構(gòu)的網(wǎng)絡(luò)系統(tǒng),讓數(shù)據(jù)庫中的所有數(shù)據(jù)都實(shí)時更新并存放于所有參與記錄的網(wǎng)絡(luò)節(jié)點(diǎn)中。這樣即使部分節(jié)點(diǎn)損壞或被黑客攻擊,也不會影響整個數(shù)據(jù)庫的數(shù)據(jù)記錄與信息更新。
區(qū)塊鏈根據(jù)系統(tǒng)確定的開源的、去中心化的協(xié)議,構(gòu)建了一個分布式的結(jié)構(gòu)體系,讓價值交換的信息通過分布式傳播發(fā)送給全網(wǎng),通過分布式記賬確定信息數(shù)據(jù)內(nèi)容,蓋上時間戳后生成區(qū)塊數(shù)據(jù),再通過分布式傳播發(fā)送給各個節(jié)點(diǎn),實(shí)現(xiàn)分布式存儲。
分布式記賬——會計(jì)責(zé)任的分散化(Distributedaccountability)
從硬件的角度講,區(qū)塊鏈的背后是大量的信息記錄儲存器(如電腦等)組成的網(wǎng)絡(luò),這一網(wǎng)絡(luò)如何記錄發(fā)生在網(wǎng)絡(luò)中的所有價值交換活動呢?區(qū)塊鏈設(shè)計(jì)者沒有為專業(yè)的會計(jì)記錄者預(yù)留一個特定的位置,而是希望通過自愿原則來建立一套人人都可以參與記錄信息的分布式記賬體系,從而將會計(jì)責(zé)任分散化,由整個網(wǎng)絡(luò)的所有參與者來共同記錄。
區(qū)塊鏈中每一筆新交易的傳播都采用分布式的結(jié)構(gòu),根據(jù)P2P網(wǎng)絡(luò)層協(xié)議,消息由單個節(jié)點(diǎn)被直接發(fā)送給全網(wǎng)其他所有的節(jié)點(diǎn)。
區(qū)塊鏈技術(shù)讓數(shù)據(jù)庫中的所有數(shù)據(jù)均存儲于系統(tǒng)所有的電腦節(jié)點(diǎn)中,并實(shí)時更新。完全去中心化的結(jié)構(gòu)設(shè)置使數(shù)據(jù)能實(shí)時記錄,并在每一個參與數(shù)據(jù)存儲的網(wǎng)絡(luò)節(jié)點(diǎn)中更新,這就極大的提高了數(shù)據(jù)庫的安全性。
通過分布式記賬、分布式傳播、分布式存儲這三大“分布”我們可以發(fā)現(xiàn),沒有人、沒有組織、甚至沒有哪個國家能夠控制這個系統(tǒng),系統(tǒng)內(nèi)的數(shù)據(jù)存儲、交易驗(yàn)證、信息傳輸過程全部都是去中心化的。在沒有中心的情況下,大規(guī)模的參與者達(dá)成共識,共同構(gòu)建了區(qū)塊鏈數(shù)據(jù)庫。可以說,這是人類歷史上第一次構(gòu)建了一個真正意義上的去中心化體系。甚至可以說,區(qū)塊鏈技術(shù)構(gòu)建了一套永生不滅的系統(tǒng)——只要不是網(wǎng)絡(luò)中的所有參與節(jié)點(diǎn)在同一時間集體崩潰,數(shù)據(jù)庫系統(tǒng)就可以一直運(yùn)轉(zhuǎn)下去。
我們現(xiàn)在已經(jīng)有了一套嚴(yán)謹(jǐn)?shù)臄?shù)據(jù)庫,也有了記錄并存儲這套數(shù)據(jù)庫的可用協(xié)議,那么當(dāng)我們將這套數(shù)據(jù)庫運(yùn)用于實(shí)際社會時,我們要解決最核心的一個問題(問題三)是:如何使這個嚴(yán)謹(jǐn)且完整存儲下來的數(shù)據(jù)庫變得可信賴,使得我們可以在互聯(lián)網(wǎng)無實(shí)名背景下成功防止詐騙?
核心技術(shù)3:非對稱加密算法
什么是非對稱加密?簡單來說,它讓我們在“加密”和“解密”的過程中分別使用兩個密碼,兩個密碼具有非對稱的特點(diǎn):(1)加密時的密碼(在區(qū)塊鏈中被稱為“公鑰”)是公開全網(wǎng)可見的,所有人都可以用自己的公鑰來加密一段信息(信息的真實(shí)性);(2)解密時的密碼(在區(qū)塊鏈中被稱為“私鑰”)是只有信息擁有者才知道的,被加密過的信息只有擁有相應(yīng)私鑰的人才能夠解密(信息的安全性)。
簡單的總結(jié):區(qū)塊鏈系統(tǒng)內(nèi),所有權(quán)驗(yàn)證機(jī)制的基礎(chǔ)是非對稱加密算法。常見的非對稱加密算法包括RSA、Elgamal、D-H、ECC(橢圓曲線加密算法)等。在非對稱加密算法中,如果一個“密鑰對”中的兩個密鑰滿足以下兩個條件:1、對信息用其中一個密鑰加密后,只有用另一個密鑰才能解開;2、其中一個密鑰公開后,根據(jù)公開的密鑰別人也無法算出另一個,那么我們就稱這個密鑰對為非對稱密鑰對,公開的密鑰稱為公鑰,不公開的密鑰稱為私鑰。在區(qū)塊鏈系統(tǒng)的交易中,非對稱密鑰的基本使用場景有兩種:1、公鑰對交易信息加密,私鑰對交易信息解密。私鑰持有人解密后,可以使用收到的價值。2、私鑰對信息簽名,公鑰驗(yàn)證簽名。通過公鑰簽名驗(yàn)證的信息確認(rèn)為私鑰持有人發(fā)出。
我們可以看出,從信任的角度來看,區(qū)塊鏈實(shí)際上是數(shù)學(xué)方法解決信任問題的產(chǎn)物。過去,人們解決信任問題可能依靠熟人社會的“老鄉(xiāng)”,政黨社會的“同志”,傳統(tǒng)互聯(lián)網(wǎng)中的交易平臺“支付寶”。而區(qū)塊鏈技術(shù)中,所有的規(guī)則事先都以算法程序的形式表述出來,人們完全不需要知道交易的對手方是“君子”還是“小人”,更不需要求助中心化的第三方機(jī)構(gòu)來進(jìn)行交易背書,而只需要信任數(shù)學(xué)算法就可以建立互信。區(qū)塊鏈技術(shù)的背后,實(shí)質(zhì)上是算法在為人們創(chuàng)造信用,達(dá)成共識背書。
核心技術(shù)4:腳本
腳本可以理解為一種可編程的智能合約。如果區(qū)塊鏈技術(shù)只是為了適應(yīng)某種特定的交易,那腳本的嵌入就沒有必要了,系統(tǒng)可以直接定義完成價值交換活動需要滿足的條件。然而,在一個去中心化的環(huán)境下,所有的協(xié)議都需要提前取得共識,那腳本的引入就顯得不可或缺了。有了腳本之后,區(qū)塊鏈技術(shù)就會使系統(tǒng)有機(jī)會去處理一些無法預(yù)見到的交易模式,保證了這一技術(shù)在未來的應(yīng)用中不會過時,增加了技術(shù)的實(shí)用性。
一個腳本本質(zhì)上是眾多指令的列表,這些指令記錄在每一次的價值交換活動中,價值交換活動的接收者(價值的持有人)如何獲得這些價值,以及花費(fèi)掉自己曾收到的留存價值需要滿足哪些附加條件。通常,發(fā)送價值到目標(biāo)地址的腳本,要求價值的持有人提供以下兩個條件,才能使用自己之前收到的價值:一個公鑰,以及一個簽名(證明價值的持有者擁有與上述公鑰相對應(yīng)的私鑰)。腳本的神奇之處在于,它具有可編程性:(1)它可以靈活改變花費(fèi)掉留存價值的條件,例如腳本系統(tǒng)可能會同時要求兩個私鑰、或幾個私鑰、或無需任何私鑰等;(2)它可以靈活的在發(fā)送價值時附加一些價值再轉(zhuǎn)移的條件,例如腳本系統(tǒng)可以約定這一筆發(fā)送出去的價 值以后只能用于支付中信證券的手續(xù)費(fèi)、或支付給政府等。
-
區(qū)塊鏈
+關(guān)注
關(guān)注
111文章
15562瀏覽量
105922
原文標(biāo)題:區(qū)塊鏈技術(shù)原理
文章出處:【微信號:C_Expert,微信公眾號:C語言專家集中營】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論