區塊鏈技術原理

來源:互聯網
上載者:User
區塊鏈是什麼。

    “區塊鏈”技術最初是由一位化名中本聰的人為比特幣(一種數字貨幣)而設計出的一種特殊的資料庫技術,它基於密碼學中的橢圓曲線數位簽章演算法(ECDSA)來實現去中心化的P2P系統設計。但區塊鏈的作用不僅僅局限在比特幣上。現在,人們在使用“區塊鏈”這個詞時,有的時候是指資料結構,有時是指資料庫,有時則是指資料庫技術,但無論是哪種含義,都和比特幣沒有必然的聯絡。

    從資料的角度來看:區塊鏈是一種分散式資料庫(或稱為分布式共用總賬,DistributedShared Ledger),這裡的“分布式”不僅體現為資料的分布式儲存,也體現為資料的分布式記錄(即由系統參與者來集體維護)。簡單的說,區塊鏈能實現全球資料資訊的分布式記錄(可以由系統參與者集體記錄,而非由一個中心化的機構集中記錄)與分布式儲存(可以儲存在所有參與記錄資料的節點中,而非集中儲存於中心化的機構節點中)。

    從效果的角度來看:區塊鏈可以產生一套記錄時間先後的、不可篡改的、可信任的資料庫,這套資料庫是去中心化儲存且資料安全能夠得到有效保證的。

    結論:區塊鏈是一種把區塊以鏈的方式組合在一起的資料結構,它適合儲存簡單的、有先後關係的、能在系統內驗證的資料,用密碼學保證了資料的不可篡改和不可偽造。它能夠使參與者對全網交易記錄的事件順序和目前狀態建立共識。

    如今的區塊鏈技術概括起來是指通過去中心化和去信任的方式集體維護一個可靠資料庫的技術。其實,區塊鏈技術並不是一種單一的、全新的技術,而是多種現有技術(如密碼編譯演算法、P2P檔案傳輸等)整合的結果,這些技術與資料庫巧妙地組合在一起,形成了一種新的資料記錄、傳遞、儲存與呈現的方式。簡單的說,區塊鏈技術就是一種大家共同參與記錄資訊、儲存資訊的技術。過去,人們將資料記錄、儲存的工作交給中心化的機構來完成,而區塊鏈技術則讓系統中的每一個人都可以參與資料的記錄、儲存。區塊鏈技術在沒有中央控制點的分布式對等網路下,使用分布式集體運作的方法,構建了一個P2P的自組織網路。通過複雜的校正機制,區塊鏈資料庫能夠保持完整性、連續性和一致性,即使部分參與人作假也無法改變區塊鏈的完整性,更無法篡改區塊鏈中的資料。

    區塊鏈技術涉及的關鍵點包括:去中心化(Decentralized)、去信任(Trustless)、集體維護(Collectively maintain)、可靠資料庫(ReliableDatabase)、時間戳記(Time stamp)、非對稱式加密(AsymmetricCryptography)等。

    區塊鏈技術重新定義了網路中信用的產生方式:在系統中,參與者無需瞭解其他人的背景資料,也不需要藉助第三方機構的擔保或保證,區塊鏈技術保證了系統對價值轉移的活動進行記錄、傳輸、儲存,其最後的結果一定是可信的。

    區塊鏈技術原理的來源可歸納為一個數學問題:拜占庭將軍問題。拜占庭將軍問題延伸到互連網生活中來,其內涵可概括為:在互連網大背景下,當需要與不熟悉的對手方進行價值交換活動時,人們如何才能防止不會被其中的惡意破壞者欺騙、迷惑從而做出錯誤的決策。進一步將拜占庭將軍問題延伸到技術領域中來,其內涵可概括為:在缺少可信任的中央節點和可信任的通道的情況下,分布在網路中的各個節點應如何達成共識。區塊鏈技術解決了聞名已久的拜占庭將軍問題——它提供了一種無需信任單個節點、還能建立共識網路的方法。

    區塊鏈技術的本質是一種互連網協議。

    設想一下,如果現在我們想要在互連網世界中建立一套全球通用的資料庫,那麼我們會面臨三個亟待解決的問題,這三個問題也是設計區塊鏈技術的核心所在:

    問題一:如何建立一個嚴謹的資料庫,使得該資料庫能夠儲存下海量的資訊,同時又能在沒有中心化結構的體系下保證資料庫的完整性。

    問題二:如何記錄並儲存下這個嚴謹的資料庫,使得即便參與資料記錄的某些節點崩潰,我們仍然能保證整個資料庫系統的正常運行與資訊完備。

    問題三:如何使這個嚴謹且完整儲存下來的資料庫變得可信賴,使得我們可以在互連網無實名背景下成功防止詐騙。

    針對這三個核心問題,區塊鏈構建了一整套完整的、連貫的資料庫技術來達成目的,解決這三個問題的技術也成為了區塊鏈最核心的三大技術。此外,為了保證區塊鏈技術的可進化性與可擴充性,區塊鏈系統設計者還引入了“指令碼”的概念來實現資料庫的可程式化性。我們認為,這四大技術構成了區塊鏈的核心技術。     核心技術1:區塊+鏈

    關於如何建立一個嚴謹資料庫的問題,區塊鏈的辦法是:將資料庫的結構進行創新,把資料分成不同的區塊,每個區塊通過特定的資訊連結到上一區塊的後面,前後順連來呈現一套完整的資料,這也是“區塊鏈”這三個字的來源。

    區塊(block):在區塊鏈技術中,資料以電子記錄的形式被永久儲存下來,存放這些電子記錄的檔案我們就稱之為“區塊(block)”。區塊是按時間順序一個一個先後產生的,每一個區塊記錄下它在被建立期間發生的所有價值交換活動,所有區塊匯總起來形成一個記錄合集。

    區塊結構(BlockStructure):區塊中會記錄下區塊產生時間段內的交易資料,區塊主體實際上就是交易資訊的合集。每一種區塊鏈的結構設計可能不完全相同,但大結構上分為塊頭(header)和塊身(body)兩部分。塊頭用於連結到前面的塊並且為區塊鏈資料庫提供完整性的保證,塊身則包含了經過驗證的、塊建立過程中發生的價值交換的所有記錄。

    區塊結構有兩個非常重要的特點:第一,每一個區塊上記錄的交易是上一個區塊形成之後、該區塊被建立前發生的所有價值交換活動,這個特點保證了資料庫的完整性。第二,在絕大多數情況下,一旦新區塊完成後被加入到區塊鏈的最後,則此區塊的資料記錄就再也不能改變或刪除。這個特點保證了資料庫的嚴謹性,即無法被篡改。

    顧名思義,區塊鏈就是區塊以鏈的方式組合在一起,以這種方式形成的資料庫我們稱之為區塊鏈資料庫。區塊鏈是系統內所有節點共用的交易資料庫,這些節點基於價值交換協議參與到區塊鏈的網路中來。

    區塊鏈是如何做到的呢。由於每一個區塊的塊頭都包含了前一個區塊的交易資訊壓縮值,這就使得從創世塊(第一個區塊)到當前區塊串連在一起形成了一條長鏈。由於如果不知道前一區塊的“交易縮影”值,就沒有辦法產生當前區塊,因此每個區塊必定按時間順序跟隨在前一個區塊之後。這種所有區塊包含前一個區區塊引述的結構讓現存的區塊集合形成了一條資料長鏈。“區塊+鏈”的資料存放區結構如下圖所示。

    我們引用《區塊鏈:互連網金融的終局》(肖風)的一段話來總結區塊鏈的基本結構:“人們把一段時間內產生的資訊(包括資料或代碼)打包成一個區塊,蓋上時間 戳,與上一個區塊銜接在一起,每下一個區塊的頁首都包含了上一個區塊的索引資料,然後再在本頁中寫入新的資訊,從而形成新的區塊,首尾相連,最終形成了區塊鏈。”這個結構的神奇之處:區塊(完整曆史)+ 鏈(完全驗證)= 時間戳記

    “區塊+鏈”的結構為我們提供了一個資料庫的完整曆史。從第一個區塊開始,到最新產生的區塊為止,區塊鏈上儲存了系統全部的曆史資料。

    區塊鏈為我們提供了資料庫內每一筆資料的尋找功能。區塊鏈上的每一條交易資料,都可以通過“區塊鏈”的結構追本溯源,一筆一筆進行驗證。

    區塊+鏈=時間戳記,這是區塊鏈資料庫的最大創新點。區塊鏈資料庫讓全網的記錄者在每一個區塊中都蓋上一個時間戳記來記賬,表示這個資訊是這個時間寫入的,形成了一個不可篡改、不可偽造的資料庫。我們認為,時間戳記是區塊鏈中一項偉大的技術創新,它可以證明什麼呢。     核心技術2:分布式結構——開源的、去中心化的協議

    我們有了區塊+鏈的資料之後,接下來就要考慮記錄和儲存的問題了。我們應該讓誰來參與資料的記錄,又應該把這些蓋了時間戳記的資料存放區在哪裡呢。在現如今中心化的體系中,資料都是集中記錄並儲存於中央電腦上。但是區塊鏈結構設計精妙的地方就在這裡,它並不贊同把資料記錄並儲存在中心化的一台或幾台電腦上,而是讓每一個參與資料交易的節點都記錄並儲存下所有的資料。

    1.關於如何讓所有節點都能參與記錄的問題,區塊鏈的辦法是:構建一整套協議機制,讓全網每一個節點在參與記錄的同時也來驗證其他節點記錄結果的正確性。只有當全網大部分節點(或甚至所有節點)都同時認為這個記錄正確時,或者所有參與記錄的節點都比對結果一致通過後,記錄的真實性才能得到全網認可,記錄資料才允許被寫入區塊中。

    2.關於如何儲存下“區塊鏈”這套嚴謹資料庫的問題,區塊鏈的辦法是:構建一個分布式結構的網路系統,讓資料庫中的所有資料都即時更新並存放於所有參與記錄的網路節點中。這樣即使部分節點損壞或被駭客攻擊,也不會影響整個資料庫的資料記錄與資訊更新。

    區塊鏈根據系統確定的開源的、去中心化的協議,構建了一個分布式的結構體系,讓價值交換的資訊通過分布式傳播發送給全網,通過分布式記賬確定資訊資料內容,蓋上時間戳記後產生區塊資料,再通過分布式傳播發送給各個節點,實現分布式儲存。

    分布式記賬——會計責任的分散化(Distributedaccountability)

    從硬體的角度講,區塊鏈的背後是大量的資訊記錄儲存器(如電腦等)組成的網路,這一網路如何記錄發生在網路中的所有價值交換活動呢。區塊鏈設計者沒有為專業的會計記錄者預留一個特定的位置,而是希望通過自願原則來建立一套人人都可以參與記錄資訊的分布式記賬體系,從而將會計責任分散化,由整個網路的所有參與者來共同記錄。

    區塊鏈中每一筆新交易的傳播都採用分布式的結構,根據P2P網路層協議,訊息由單個節點被直接發送給全網其他所有的節點。

    區塊鏈技術讓資料庫中的所有資料均儲存於系統所有的電腦節點中,並即時更新。完全去中心化的結構設定使資料能即時記錄,並在每一個參與資料存放區的網路節點中更新,這就極大的提高了資料庫的安全性。

    通過分布式記賬、分布式傳播、分布式儲存這三大“分布”我們可以發現,沒有人、沒有組織、甚至沒有哪個國家能夠控制這個系統,系統內的資料存放區、交易驗證、資訊傳輸過程全部都是去中心化的。在沒有中心的情況下,大規模的參與者達成共識,共同構建了區塊鏈資料庫。可以說,這是人類曆史上第一次構建了一個真正意義上的去中心化體系。甚至可以說,區塊鏈技術構建了一套永生不滅的系統——只要不是網路中的所有參與節點在同一時間集體崩潰,資料庫系統就可以一直運轉下去。

    我們現在已經有了一套嚴謹的資料庫,也有了記錄並儲存這套資料庫的可用協議,那麼當我們將這套資料庫運用於實際社會時,我們要解決最核心的一個問題(問題三)是:如何使這個嚴謹且完整儲存下來的資料庫變得可信賴,使得我們可以在互連網無實名背景下成功防止詐騙。     核心技術3:非對稱式加密演算法

    什麼是非對稱式加密。簡單來說,它讓我們在“加密”和“解密”的過程中分別使用兩個密碼,兩個密碼具有非對稱的特點:(1)加密時的密碼(在區塊鏈中被稱為“公開金鑰”)是公開全網可見的,所有人都可以用自己的公開金鑰來加密一段資訊(資訊的真實性);(2)解密時的密碼(在區塊鏈中被稱為“私密金鑰”)是只有資訊擁有者才知道的,被加密過的資訊只有擁有相應私密金鑰的人才能夠解密(資訊的安全性)。

    簡單的總結:區塊鏈系統內,所有權驗證機制的基礎是非對稱式加密演算法。常見的非對稱式加密演算法包括RSA、Elgamal、D-H、ECC(橢圓曲線密碼編譯演算法)等。在非對稱式加密演算法中,如果一個“金鑰組”中的兩個密鑰滿足以下兩個條件:1、對資訊用其中一個祕密金鑰加密後,只有用另一個密鑰才能解開;2、其中一個密鑰公開後,根據公開的密鑰別人也無法算出另一個,那麼我們就稱這個金鑰組為非對稱金鑰對,公開的密鑰稱為公開金鑰,不公開的密鑰稱為私密金鑰。在區塊鏈系統的交易中,非對稱金鑰的基本使用情境有兩種:1、公開金鑰對交易資訊加密,私密金鑰對交易資訊解密。私密金鑰持有人解密後,可以使用收到的價值。2、私密金鑰對資訊簽名,公開金鑰驗證簽名。通過公開金鑰簽名驗證的資訊確認為私密金鑰持有人發出。

    我們可以看出,從信任的角度來看,區塊鏈實際上是數學方法解決信任問題的產物。過去,人們解決信任問題可能依靠熟人社會的“老鄉”,政黨社會的“同志”,傳統互連網中的交易平台“支付寶”。而區塊鏈技術中,所有的規則事先都以演算法程式的形式表述出來,人們完全不需要知道交易的對手方是“君子”還是“小人”,更不需要求助中心化的第三方機構來進行交易背書,而只需要信任數學演算法就可以建立互信。區塊鏈技術的背後,實質上是演算法在為人們創造信用,達成共識背書。

    核心技術4:指令碼

    指令碼可以理解為一種可程式化的智能合約。如果區塊鏈技術只是為了適應某種特定的交易,那指令碼的嵌入就沒有必要了,系統可以直接定義完成價值交換活動需要滿足的條件。然而,在一個去中心化的環境下,所有的協議都需要提前取得共識,那指令碼的引入就顯得不可或缺了。有了指令碼之後,區塊鏈技術就會使系統有機會去處理一些無法預見到的交易模式,保證了這一技術在未來的應用中不會過時,增加了技術的實用性。

    一個指令碼本質上是眾多指令的列表,這些指令記錄在每一次的價值交換活動中,價值交換活動的接收者(價值的持有人)如何獲得這些價值,以及花費掉自己曾收到的留存價值需要滿足哪些附加條件。通常,發送價值到目標地址的指令碼,要求價值的持有人提供以下兩個條件,才能使用自己之前收到的價值:一個公開金鑰,以及一個簽名(證明價值的持有人擁有與上述公開金鑰相對應的私密金鑰)。指令碼的神奇之處在於,它具有可程式化性:(1)它可以靈活改變花費掉留存價值的條件,例如指令碼系統可能會同時要求兩個私密金鑰、或幾個私密金鑰、或無需任何私密金鑰等;(2)它可以靈活的在發送價值時附加一些價值再轉移的條件,例如指令碼系統可以約定這一筆發送出去的價 值以後只能用於支付中信證券的手續約、或支付給政府等。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.