首頁 > 常見問題 > 主體

區塊鏈的原理和特徵是什麼

angryTom
發布: 2019-07-22 16:27:33
原創
20376 人瀏覽過

區塊鏈的原理和特徵是什麼

推薦教學:Python教學

區塊鏈的概念和特徵

  區塊鏈(Blockchain)是一系列現有成熟技術的有機組合,它對帳本進行分散式的有效記錄,並且提供完善的腳本以支持不同的業務邏輯。在典型的區塊鏈系統中,資料以區塊(block)為單位產生和存儲,並按照時間順序連成鍊式(chain)資料結構。所有節點共同參與區塊鏈系統的資料驗證、儲存和維護。新區塊的創建通常需得到全網多數(數量取決於不同的共識機制)節點的確認,並向各節點廣播實現全網同步,之後不能更改或刪除。

從外部來看,區塊鏈系統應具備以下特徵:

#● 多方寫入,共同維護

  此處的多方僅指記帳參與者,不包含使用區塊鏈的客戶端。區塊鏈的記帳參與者應由多個利益不完全一致的實體組成,並且在不同的記帳週期內,由不同的參與者主導發起記帳(輪換方式取決於不同的共識機制),而其他的參與者將對主導方發起的記帳資訊進行共同驗證。

● 公開帳本

  區塊鏈系統記錄的帳本應處於所有參與者被允許存取的狀態,為了驗證區塊鏈記錄的資訊的有效性,記帳參與者必須有能力存取資訊內容和帳本歷史。但是公開帳本指的是可訪問性的公開,並不代表資訊本身的公開,因此,業界期望將許多隱私保護方面的技術,如零知識證明、同態加密、門限加密等,應用到區塊鏈領域,以解決透過密文操作就能驗證資訊有效性的問題。

● 去中心化

  區塊鏈應為不依賴單一信任中心的系統,在處理僅涉及鏈內封閉系統中的數據時,區塊鏈本身能夠創造參與者之間的信任。但是在某些情況下,如身份管理等場景,不可避免的會引入外部數據,並且這些數據需要可信第三方的信任背書,此時對於不同類型的數據,其信任應來自不同的可信第三方,而不是依賴單一的信任中心。在這種情況下,區塊鏈本身不創造信任,而是作為信任的載體。

● 不可竄改

  作為區塊鏈最為顯著的特徵,不可竄改性是區塊鏈系統的必要條件,而不是充分條件,有許多基於硬體的技術同樣可以實現資料一次寫入,多次讀取且無法竄改,典型的例子如一次性刻錄光碟(CD-R)。區塊鏈的不可篡改基於密碼學的雜湊演算法,以及多方共同維護的特性,但同時由於這個特性,區塊鏈的不可篡改並不是嚴格意義上的,稱之為難以篡改更為合適。

區塊鏈的核心技術

#1.分散式帳本

#  分散式帳本技術DLT (Distributed Ledger Technology)本質上是一種可以在多個網路節點、多個實體位址或多個組織構成的網路中進行資料分享、同步和複製的去中心化資料存儲技術。相較於傳統的分散式儲存系統,分散式帳本技術主要具備兩種不同的特徵:

  傳統分散式儲存系統執行受某一中心節點或權威機構控制的資料管理機制,分散式帳本往往基於一定的共識規則,採用多方決策、共同維護的方式進行資料的儲存、複製等操作。面對網路資料的爆炸性成長,目前由單一中心組織建構資料管理系統的方式正受到更多的挑戰,服務方必須持續追加投資建構大型資料中心,不僅帶來了運算、網路、儲存等各種龐大資源池效率的問題,不斷推升的系統規模和複雜度也帶來了愈加嚴峻的可靠性問題。然而,分散式帳本技術去中心化的資料維護策略恰恰可以有效減少系統臃腫的負擔。在某些應用場景,甚至可以有效利用網路中大量零散節點所沉澱的龐大資源池。

  傳統分散式儲存系統將系統內的資料分解成若干片段,然後在分散式系統中進行存儲,而分散式帳本中任何一方的節點都各自擁有獨立的、完整的一份資料存儲,各節點之間彼此互不干涉、權限等同,透過相互之間的週期性或事件驅動的共識達成資料儲存的最終一致性。經過數十年的發展,傳統業務體系中的高度中心化資料管理系統在資料可信任、網路安全方面的短板已經日益受到人們的關注。普通用戶無法確定自己的資料是否被服務商竊取或篡改,在受到駭客攻擊或產生安全洩漏時更加顯得無能為力,為了應對這些問題,人們不斷增加額外的管理機製或技術,這種情況進一步推高了傳統業務系統的維護成本、降低了商業行為的運作效率。分散式帳本技術可以在根本上大幅改善這一現象,由於各個節點均各自維護了一套完整的資料副本,任意單一節點或少數叢集對資料的修改,均無法對全局大多數副本造成影響。換句話說,無論是服務提供者在無授權情況下的蓄意修改,或是網路駭客的惡意攻擊,均需要同時影響到分散式帳本叢集中的大部分節點,才能實現對已有資料的竄改,否則系統中的剩餘節點將很快發現並追溯到系統中的惡意行為,這顯然大大提升了業務系統中資料的可信度和安全保證。

  這兩種特有的系統特徵,使得分散式帳本技術成為一種非常底層的、對現有業務系統具有強大顛覆性的革命性創新。

2. 共識機制

  區塊鏈是一個歷史可追溯、不可竄改,解決多方互信問題的分散式(去中心化)系統。分散式系統必然面臨一致性問題,而解決一致性問題的過程我們稱之為共識。

  分散式系統的共識達成需要依賴可靠的共識演算法,共識演算法通常解決的是分散式系統中由哪個節點發起提案,以及其他節點如何就這個提案達成一致的問題。我們根據傳統分散式系統與區塊鏈系統間的區別,將共識演算法分為可信節點間的共識演算法與不可信節點間的共識演算法。前者已經被深入研究,並且在現在流行的分散式系統中廣泛應用,其中 Paxos 和 Raft及其相應變種演算法最為著名。對於後者,雖然也早被研究,但直到近年來區塊鏈技術發展如火如荼,相關共識演算法才得到大量應用。而根據應用場景的不同,後者又分為以PoW(Proofof Work)和PoS(Proof of Stake)等演算法為代表的適用於公鏈的共識演算法和以PBFT( Practical ByzanTIne Fault Tolerance)及其變種演算法為代表的適用於聯盟鍊或私有鏈的共識演算法。

  工作量證明 POW 演算法是比特幣系統採用演算法,該演算法於 1998 年由 W. Dai 在 B-money的設計中提出。以太坊系統目前同樣採用PoW 演算法進行共識,但由於以太坊系統出塊更快(約15 秒),更容易產生區塊,為了避免大量節點白白陪跑,以太坊提出了叔(Uncle)區塊獎勵機制。 PoS(Proof of Stake)演算法最早由Sunny King 在2012 年8 月發布的PPC(PeerToPeerCoin 點點幣)系統中首先實現,而以太坊系統也一直對PoS 抱有好感,計劃後續以PoS 代替PoW 作為其共識機制。 PoS 及其變種演算法可以解決 PoW 演算法一直被詬病的浪費算力問題,但本身尚未經過足夠驗證。 PBFT 演算法最早由 Miguel Castro(卡斯楚)和Barbara Liskov(利斯科夫)在 1999 年的 OSDI99 會議上提出,該演算法相較原始拜占庭容錯演算法具有更高的運作效率。假設系統中共有 N 個節點,那麼 PBFT 演算法可以容忍系統中存在F 個惡意節點,且 3F 1 不大於 N。 PBFT 共識演算法雖然隨著系統中節點數增多而可以容忍更多的拜占庭節點,但其共識效率卻是以極快的速率下降,這也是我們能看到的應用PBFT做共識演算法的系統中很少有超過100 個節點的原因。

  無論是 PoW 演算法或 PoS 演算法,其核心思想都是透過經濟激勵來鼓勵節點對系統的貢獻和付出,透過經濟懲罰來阻止節點作惡。公鏈系統為了鼓勵更多節點參與共識,通常會發放代幣(token)給對系統運作有貢獻的節點。而聯盟鏈或私鏈與公鏈的不同之處在於,聯盟鏈或私鏈的參與節點通常希望從鏈上獲得可信數據,這相對於透過記帳來獲取激勵而言有意義得多,所以他們更有義務和責任去維護系統的穩定運行,並且通常參與節點數較少,PBFT 及其變種演算法恰好適用於聯盟鏈或私鏈的應用場景。

3. 智能合約

● 什麼是智能合約?

  智能合約(Smart contract )是一種旨在以資訊化方式傳播、驗證或執行合約的電腦協定。智能合約允許在沒有第三方的情況下進行可信賴交易。這些交易可追蹤且不可逆轉。其目的是提供優於傳統合約方法的安全,並減少與合約相關的其他交易成本。

  智能合約概念可追溯至 20 世紀 90 年代,由電腦科學家、法學家及密碼學家尼克·薩博(Nick Szabo)首次提出。他對智能合約的定義如下:「一個智能合約是一套以數位形式定義的承諾,包括合約參與者可以在上面執行這些承諾的協議。」尼克·薩博等研究學者,希望能夠借助密碼學及其他數位安全機制,將傳統的合約條款的製定與履行方式,置於電腦技術之下,降低相關成本。然而,由於當時許多技術尚未成熟,缺乏能夠支持可程式合約的數位化系統和技術,尼克 薩博關於智慧合約的工作理論遲遲沒有實現。

  隨著區塊鏈技術的出現與成熟,智慧合約作為區塊鏈及未來網路合約的重要研究方向,得以快速發展。基於區塊鏈的智慧合約包括事件處理和保存的機制,以及一個完備的狀態機,用於接受和處理各種智慧合約,資料的狀態處理在合約中完成。事件資訊傳入智能合約後,觸發智能合約進行狀態機判斷。如果自動狀態機中某個或某幾個動作的觸發條件滿足,則由狀態機根據預設資訊選擇合約動作的自動執行。因此,智能合約作為一種電腦技術,不僅能夠有效地對資訊進行處理,而且能夠保證合約雙方在不必引入第三方權威機構的條件下,強制履行合約,避免了違約行為的出現。

● 智能合約的優點與風險

  隨著智能合約在區塊鏈技術中的廣泛應用,其優點已被越來越多的研究人員與技術人員認可。整體來講,智能合約具備以下優點:

  a. 合約制定的高時效性:智能合約在製定中,不必依賴第三方權威機構或中心化代理機構的參與,只需合約各方透過電腦技術手段,將共同約定條款轉化為自動化、數位化的約定協議,大大減少了協議制定的中間環節,並提高了協議制定的回應效率。

  b. 合約維護的低成本性:智能合約在實現過程中以電腦程式為載體,一旦部署成功後,由電腦系統按照合約中的約定監督、執行,一旦發生毀約可按照事前約定由程序強制執行。因此,極大降低了人為監督與執行的成本。

  c. 合約執行的高準確性:智能合約的執行過程中,由於減少了人為參與的行為,因此利益各方均無法幹預合約的具體執行,計算機系統能夠確保合約正確執行,有效提高了合約的執行準確性。

  雖然智能合約較傳統合約有明顯的優點,但對智能合約的深入研究與應用仍在不斷探索中,我們不能忽略這種新興技術潛在的風險。

  2017 年,多重簽署的以太坊錢包Parity 宣布了一個重大漏洞,這個關鍵漏洞會使多重簽名的智能合約無法使用,該漏洞導致了價值超過1.5 億美元的以太坊資金被凍結。無獨有偶,2018 年2 月,新加坡國立大學、新加坡耶魯大學學院和倫敦大學學院的一組研究人員發布了一份報告聲稱,他們運用分析工具Maian,分析基於以太坊的近100 萬個智能合約,發現有34,200 個合約含有安全漏洞,予駭客可趁之機,可竊取以太幣或是凍結資產、刪除合約。

  安全風險事件的發生值得我們反思,但不管怎樣,業內人士普遍認為,區塊鏈技術及智能合約將成為未來IT 技術發展的一個重要方向,目前的風險是新技術成熟所必然經歷的過程。

● 智能合約的應用

  目前,智慧合約作為區塊鏈的一項核心技術,已經在以太坊、Hyperledger Fabric 等影響力較強的區塊鏈項目中,廣泛應用。

  a. 以太坊的智慧合約應用:以太坊的一個智慧合約就是一段可以被以太坊虛擬機器執行的程式碼。以太坊支援強大的圖靈完備的腳本語言,允許開發者在上面開發任意應用,這些合約通常可以由高級語言(例如:Solidity、Serpent、LLL 等)編寫,並透過編譯器轉換成字節碼( byte code) 儲存在區塊鏈上。智能合約一旦部署就無法被修改。用戶透過合約完成帳戶的交易,實現對帳戶的貨幣及狀態進行管理與操作。

  b. Hyperledger Fabric 的智慧合約應用:在 Hyperledger Fabric 專案中,智慧合約的概念及應用被更廣泛的延伸。作為無狀態的、事件驅動的、支援圖靈完備的自動執行程式碼,智慧合約在 Fabric 中部署在區塊鏈網路中,直接與帳簿進行交互,處於十分核心的位置。和以太坊相比,Fabric 智慧合約和底層帳本是分開的,升級智慧合約時並不需要遷移帳本資料到新智慧合約當中,真正實現了邏輯與資料的分離。 Fabric的智慧合約稱為鏈碼(chaincode),分為系統鏈碼和使用者鏈碼。系統鏈碼用來實現系統層面的功能,負責 Fabric 節點本身的處理邏輯,包括系統配置、背書、校驗等工作。用戶鏈碼實現用戶的應用功能,提供了基於區塊鏈分散式帳本的狀態處理邏輯,由應用程式開發者編寫,對上層業務進行支援。用戶鏈碼運行在隔離的鏈碼容器中。

4. 密碼學

  資訊安全及密碼學技術,是整個資訊技術的基石。在區塊鏈中,也大量使用了現代資訊安全和密碼學的技術成果,主要包括:雜湊演算法、對稱加密、非對稱加密、數位簽章、數位憑證、同態加密、零知識證明等。本章從安全的完整性、機密性、身分認證等維度,簡單介紹區塊鏈中安全及密碼學技術的應用。

● 完整性(防篡改)

  區塊鏈採用密碼學雜湊演算法技術,保證區塊鏈帳本的完整性不會被破壞。雜湊(雜湊)演算法能將二進位資料映射為一串較短的字串,並具有輸入敏感特性,一旦輸入的二進位數據,發生微小的篡改,經過哈希運算得到的字串,將發生非常大的變化。此外,優秀雜湊演算法還具有衝突避免特性,輸入不同的二進位數據,得到的雜湊結果字串是不同的。

  區塊鏈利用雜湊演算法的輸入敏感和衝突避免特性,在每個區塊內,產生包含上一個區塊的雜湊值,並在區塊內產生驗證過的交易的Merkle 根部雜湊值。一旦整個區塊鏈某些區塊被篡改,都無法得到與篡改前相同的雜湊值,從而保證區塊鏈被篡改時,能夠被迅速識別,最終保證區塊鏈的完整性(防篡改) 。

●  機密性

  加解密技術從技術構成上,分為兩大類:一類是對稱加密,一類是不對稱加密。對稱加密的加解密金鑰相同;而非對稱加密的加解密金鑰不同,一個被稱為公鑰,一個被稱為私鑰。公鑰加密的數據,只有對應的私鑰可以解開,反之亦然。

  區塊鏈尤其是聯盟鏈,在全網傳輸過程中,都需要 TLS(Transport Layer Security)加密通訊技術,來確保傳輸資料的安全性。而TLS 加密通信,正是非對稱加密技術和對稱加密技術的完美組合:通信雙方利用非對稱加密技術,協商生成對稱密鑰,再由生成的對稱密鑰作為工作密鑰,完成數據的加解密,從而同時利用了非對稱加密不需要雙方共享金鑰、對稱加密運算速度快的優點。

● 身份認證

  單純的TLS 加密通信,僅能保證資料傳輸過程的機密性和完整性,但無法保障通信對端可信(中間人攻擊)。因此,需要引入數位憑證機制,驗證通訊對端身份,進而保證對端公鑰的正確性。數位證書一般由權威機構進行簽發。通訊的一側持有權威機構根CA(CerTIficaTIon Authority)的公鑰,用來驗證通訊對端憑證是否被自己信任(即憑證是否由自己頒發),並根據憑證內容確認對端身分。在確認對端身分的情況下,取出對端憑證中的公鑰,完成非對稱加密過程。

  此外,區塊鏈中也應用了現代密碼學最新的研究成果,包括同態加密、零知識證明等,在區塊鏈分散式帳本公開的情況下,最大限度地提供隱私保護能力。這方面的技術,還在不斷發展與完善中。

  區塊鏈安全是一個系統工程,系統配置及使用者權限、元件安全性、使用者介面、網路入侵偵測和防攻擊能力等,都會影響最終區塊鏈系統的安全性和可靠性。區塊鏈系統在實際建置過程中,應在滿足使用者要求的前提下,在安全性、系統建置成本以及易用性等維度,取得合理的平衡。

以上是區塊鏈的原理和特徵是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板