我區塊鏈筆記的整理

1 初識區塊鏈

1.1 區塊鏈的各類定義

(沒有統一的定義,下面的定義五花八門,分別來源於不同的文獻資料)

定義1:區塊鏈是一種按照時間順序將數據區塊以鏈條的方式組合形成的特定數據結構,並以密碼學方式保證其不可篡改和不可僞造的去中心化、去信任化的分佈式共享總賬系統。

定義2:區塊鏈是以比特幣爲代表的數字加密貨幣體系的核心支撐技術。區塊鏈技術的核心優勢是去中心化,能夠通過運用數字加密、時間戳、分佈式共識和經濟激勵手段,在節點無需互相信任的分佈式系統中實現基於去中心化信用的點對點交易、協調與協作,從而爲解決中心化機構普遍存在的高成本、低效率和數據存儲不安全等問題提供瞭解決方案。

定義3:區塊鏈是一種去中心化、不可篡改、可追溯、多方共同維護的分佈式數據庫。區塊鏈通過集成P2P協議、非對稱加密、共識機制、塊鏈結構等多種技術,解決了數據的可信問題。

定義4:區塊鏈是一種分佈式數據庫,是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了一次比特幣網絡交易的信息,用於驗證其信息的有效性(防僞)和生成下一個區塊。

定義5:區塊鏈技術是一項新技術,但不是一種創新技術。它是將許多已有的跨領域的學科整合到一起,涉及數學、密碼學、計算機科學等領域,從而形成的一種技術。比特幣是第一個採用區塊鏈技術作爲底層技術構建的系統,它是一個實現了去中心化、去信任化、安全、可靠的電子現金系統。

定義6:區塊鏈是一種多方共同維護,使用密碼學保證傳輸和訪問安全,能夠實現數據一致存儲、難以篡改、防止抵賴的記賬技術,也稱爲分佈式賬本技術。

定義7:區塊鏈技術是一種去中心化、去信任化的分佈式數據庫技術方案。該數據庫由參與系統的所有節點集體維護,具有去中心化化、不可篡改、透明、安全等特性。

定義8:區塊鏈是利用加密鏈式區塊結構來驗證與存儲數據、利用分佈式節點共識算法來生成和更新數據、利用自動化腳本代碼(智能合約)來編程和操作數據的一種全新的去中心化基礎架構與分佈式計算範式。

1.2 三種類型的區塊鏈

基於時間戳的鏈式區塊結構、分佈式節點的共識機制、基於共識算力的經濟激勵和靈活可編程的智能合約是區塊鏈技術最具有代表性的創新點。

區塊鏈有三種類型,分爲公有鏈、私有鏈和聯盟鏈。

1.2.1 公有鏈

公有鏈爲來自不同組織和背景的人們提供了一個開放平臺,任何人都可以加入、交易和挖礦,沒有限制。只要接入公有鏈就可以在鏈上發送交易,並且交易能獲得該區塊鏈的有效確認,任何人都可以參與共識過程,每個參與者都有權閱讀和編寫交易,或隨時查看區塊鏈的任何部分。公有鏈是開放透明的,並沒有特定的驗證節點。所有用戶都可以收集交易並從挖礦開始以獲得挖礦獎勵。公有鏈是完全去中心化的。

1.2.2 私有鏈

建立私有鏈以促進單個組織或多個組織之間的私人共享和數據交換,其中挖礦由一個組織或選定的個人控制。私有鏈僅僅使用區塊鏈技術進行記賬操作,不對外公開。私有鏈使得網絡更傾向於集中化,一旦節點成爲網絡的一部分,它們就有助於運行分佈式網絡,每個節點都維護賬本並協作更新數據。使用私有鏈的對象可以是一個公司也可以是個人,而公司或個人單獨擁有該私有鏈的寫入權限(或者會對外開放有一定限制的讀寫權限)。

現在有衆多企業在研究自己的私有區塊鏈,既應用到區塊鏈的特性,又能保證安全。私有鏈有完全限制的寫入權限和高度受限的讀寫權限,很適合用於保護個人隱私的應用。

1.2.3 聯盟鏈

聯盟鏈由一組預設節點負責共識和區塊驗證,預選節點決定哪些節點可以成爲網絡的一部分以及哪些節點可以挖礦。對於區塊驗證,使用多重簽名方案,其中區塊僅由這些節點簽名時才被視爲有效。

聯盟鏈指共識過程受到某些預選節點控制的區塊鏈。由使用聯盟鏈的行業集體內部首先指定多個預選節點作爲記賬節點,區塊的生成由所有的預選節點共同決定(即由預選節點決定區塊鏈的共識),其他節點只能進行交易,不參與共識。聯盟鏈被認爲是部分去中心化的,它結合了公有鏈的完全開放和私有鏈的高度集中,提供了一種混合折中的模式。聯盟鏈結合了公有鏈的完全開放和私有鏈的高度集中,提供了一種混合折中的模式。

1.3 區塊鏈的數據結構

區塊鏈系統由數據層、網絡層、共識層、激勵層、合約層和應用層組成。

網絡層封裝了區塊鏈系統的組網形式、網絡傳播協議和數據驗證機制等要素。

按照節點存儲數據量的不同,可以分爲全節點和輕量級節點。前者保存有自創世區塊到當前最新區塊爲止的完整區塊鏈數據,並且通過實時參與區塊數據的校驗和記賬來實時更新主鏈。全節點的優勢在於不依賴其他節點而能獨立實現任意區塊數據的校驗、查詢和更新,劣勢是維護全節點的空間成本很高。輕節點僅保存一部分數據,通過簡易支付驗證方式向其相鄰節點請求所需的數據來完成數據校驗。

區塊是一種數據結構,包含兩部分——區塊頭和區塊體。前者記錄的是區塊的相關元數據信息,後者記錄的是從上一區塊產生到此區塊創建之間所發生的所有交易。區塊元數據包含區塊大小、區塊頭和交易計數器3部分。如下圖:

在這裏插入圖片描述

1.3.1 區塊頭結構

區塊頭由兩組元數據組成,一組與挖礦有關,包括時間戳、難度目標及Nonce值;另一組與區塊本身有關,包括鏈接父區塊的字段、版本號及Merkle樹的根。

將區塊中所有交易記錄都進行兩次哈希運算之後,將結果作爲Merkle樹的葉子節點,然後遞歸兩個相鄰節點的哈希值,直到得到最後一個哈希結果,這個結果就是Merkle根。難度目標Bits是一種特殊的浮點編碼類型,佔4Byte,首字節是指數,僅用其中的最低5位,後3個字節是尾數,它能夠表示256位的數。一個區塊頭的SHA256哈希值必須小於或等於Bits難度目標,這樣才能被其他節點認可,難度目標Bits越小,產生一個新區塊的難度就越大,即目標值越小,得到正確結果的區間就越小,難度就越大。Nonce字段是指隨機數,各個區塊頭的值往往不同,但它是從0開始嚴格按線性方式增長的隨機數,每次計算都會增長。挖礦就是尋找一個滿足難度目標的Nonce值。

比特幣網絡可以動態調整PoW共識過程的難度值,【最先找到正確隨機數解Nonce並且經過其他所有礦工驗證】的礦工將獲得當前區塊的記賬權。區塊體包括當前區塊的交易數量以及經過驗證的、區塊創建過程中生成的所有交易記錄,這些交易記錄通過Merkle樹的哈希過程後生成唯一的【Merkle根】並計入區塊頭。

1.3.2 區塊標識符

每個區塊都有兩種標識符:區塊頭哈希值和區塊高度。但是這兩個字段都沒有被真正記錄下來,因爲這兩個字段可以直接被計算出來。

1.4 區塊鏈的編程語言

比特幣平臺提供了處理交易的簡單腳本,這些腳本是基於棧的一組指令,爲了避免可能的漏洞與攻擊,所以沒有設計循環指令和系統函數,因而比特幣腳本不是圖靈完備的程序語言,比特幣平臺不存在嚴格意義上的智能合約。

以太坊自定義了solidity,serpent等圖靈完備的腳本語言來開發智能合約,自定義腳本語言是爲了實現特殊的合約功能。

Hyperledger fabric可基於go和java高級語言開發智能合約,這些高級語言不但圖靈完備,編譯技術成熟,而且也可以減輕合約編程者的學習門檻。

1.5 區塊鏈進化過程

  1. 區塊鏈1.0——【數字貨幣】:以可編程數字加密貨幣體系爲主要特徵
  2. 區塊鏈2.0——【數字資產與智能合約】:以可編程金融系統爲主要特徵
  3. 區塊鏈3.0——【從DAO,DAC(分佈式自治組織、分佈式自治公司)到區塊鏈社會(科學、醫療、教育等)】:以可編程社會爲主要特徵

1.6 區塊鏈特性

區塊鏈技術的核心優勢是能夠在決策權高度分散的去中心化系統中使得各節點高效地針對區塊數據的有效性達成共識。

  • 可靠開放性
  • 信息透明性(任意節點都可以查看整個區塊鏈賬本)
  • 不可更改性
  • 不可逆轉性
  • 開放共識
  • 去中心化
  • 去信任
  • 匿名性
  • 可追溯性
  • 可編程性

2 區塊鏈基礎技術

2.1 哈希算法

哈希(也稱爲散列)算法將任意長度的輸入值映射爲較短的固定長度的二進制值。如SHA256算法將任意長度的輸入映射爲長度爲256的固定長度輸出,這個二進制值稱爲哈希值(或稱爲散列值),事實上,產生的結果爲16位進制的一個值,它的長度爲64位。數據的哈希值可以檢驗數據的完整性,一般用於快速查找和加密算法。

哈希算法廣泛應用於區塊鏈中,區塊鏈通常不保存原始數據,而是保存該數據的哈希值,Merkle樹中的葉子節點是由交易信息的兩次SHA256哈希運算得到的。簽名頻繁應用於區塊鏈中,由私鑰和需要被簽名的數據經哈希運算而成。

區塊鏈通常並不直接保存原始數據或交易記錄,而是保存其哈希函數值,即將原始數據編碼爲特定長度的由數字和字母組成的字符串後計入區塊鏈。通過哈希輸出幾乎不能反推輸入值(單向性),不同長度輸入的哈希過程消耗大約相同的時間(定時性)且產生固定長度的輸出(定長性),即使輸入僅相差一個字節也會產生顯著不同的輸出值(隨機性)等。比特幣使用雙SHA256哈希函數,即將任意長度的原始數據經過兩次SHA256哈希運算後轉換爲長度爲256位(32字節)的二進制數字來統一存儲和識別。SHA256算法還具有巨大的散列空間(2256)和抗碰撞(避免不同輸入值產生相同的哈希值)等特性,可以滿足比特幣的任何相關標記需要而不會出現衝突。

2.2 Merkle樹

Merkle樹是一種基於數據的哈希值所構建的樹:其數據結構是一顆樹,一般爲二叉樹,也可以是多叉樹;葉子節點是數據塊(如文件或文件集合)的哈希值;非葉子節點是其所有子節點的哈希值。

Merkle樹在驗證、文件對比中應用較多,特別是在分佈式環境下,Merkle樹會大大減小數據的傳輸量和計算的複雜度。

區塊鏈中的每個區塊都包含了記錄於該區塊的所有交易,區塊鏈系統採用二叉樹型的Merkle樹對這些交易進行歸納表示,同時生成該交易集合的數字簽名。Merkle樹支持快速地歸納和校驗區塊中交易的完整性與存在性。

Merkle樹通常包含區塊體的底層交易數據庫、區塊頭的根哈希值(即Merkle根)以及所有沿底層區塊數據到根哈希的分支。Merkle樹運算過程一般是將區塊體的數據進行分組哈希,並將生成的新哈希值插入到Merkle樹根中,如此遞歸直到只剩最後一個根哈希值並記爲區塊頭的Merkle根。

Merkle樹有諸多優點:首先是極大地提高了區塊鏈的運行效率和可擴展性,使得區塊頭只需包含根哈希值而不必封裝所有底層數據,這使得哈希運算可以高效地運行在智能手機甚至物聯網設備上;其次是Merkle樹可支持簡化支付驗證協議,即在不運行完整區塊鏈網絡節點的情況下,也能夠對交易數據進行檢驗。

2.3 時間戳

區塊鏈要求獲得記賬權的節點必須在當前數據區塊頭中加蓋時間戳,表明區塊數據的寫入時間。因此,主鏈上各區塊是按照時間順序以此排列的。時間戳技術在區塊鏈中的應用是具有主要意義的創新:時間戳可以作爲區塊數據的存在性證明(proof of existence),有助於形成不可篡改和不可僞造的區塊鏈數據庫,從而爲區塊鏈應用於公證、知識產權註冊等時間敏感的領域奠定了基礎。更爲重要的是,時間戳爲未來基於區塊鏈的互聯網和大數據增加了時間維度,使得通過區塊鏈數據和時間戳來重現歷史成爲可能。

2.4 P2P網絡技術

P2P網絡技術又稱爲點對點技術,它是一個沒有中心服務器、依靠用戶羣交換信息的互聯網體系。P2P網絡由於沒有中心化服務器,使得它具有耐攻擊、高容錯的優點;並且各個節點地位平等,服務分散在各個節點上進行,因此部分節點或網絡遭到攻擊對整個系統幾乎沒有影響。比特幣系統應用P2P技術,使各個節點獨立地參與系統,每一個節點都是一個獨立的個體,單獨節點宕機或者遭到攻擊都不會對系統造成影響。

2.5 非對稱加密技術

非對稱加密中有一對密鑰——私鑰和公鑰。公鑰公開,私鑰保密。私鑰加密的信息只有對應的公鑰才能解開,公鑰加密的信息只有對應的私鑰才能解密,即公鑰加密,私鑰解密;私鑰簽名,公鑰驗證。在比特幣中,公鑰由私鑰通過橢圓曲線加密算法生成;交易信息中必須要有正確的數字簽名才能驗證交易有效。

非對稱加密是爲了滿足安全性需求和所有權驗證需求而集成到區塊鏈中的加密技術。常見的算法包括RSA、ECC(橢圓曲線加密算法)等。非對稱密鑰對具有兩個特點:1、用其他一個密鑰(公鑰或私鑰)加密信息後,只有用另外一個對應的密鑰才能解開;2、公鑰可向他人公開、私鑰則不公開,無法通過該公鑰推算出相應的私鑰。

非對稱加密技術在區塊鏈的應用場景主要包括信息加密數字簽名登錄認證等。下面是對三種應用場景的簡單敘述:1、信息加密:由信息發送者(記爲A)使用接受者(記爲B)的公鑰將信息加密後再發送給B,B可以利用自己的私鑰將信息解密;2、數字簽名:由發送者A採用自己的私鑰加密信息後發送給B,B使用A的公鑰(A的公鑰是公開的)將信息解密,從而可確保信息是由A發送的;3、登錄認證:由客戶端使用私鑰加密登錄信息後發送給服務器,服務器接收後採用該客戶端的公鑰解密並認證登錄信息。

2.6 共識機制

所有節點應該就該賬本的共同內容更新協議達成一致,並且如果某個區塊未經多數節點同意,則不能將此區塊作爲區塊鏈的一部分接受。這就是共識機制,通過該機制創建新區塊並將其添加到現有賬本以供將來使用。區塊鏈的共識算法必須運行於更復雜、開放和缺乏信任的互聯網環境下,節點數量更多且可能存在惡意拜占庭節點。

區塊鏈共識算法分爲選舉類、證明類、隨即類、聯盟類和混合類共5種類型:

1、選舉類共識:礦工節點在每一輪共識過程中通過投票選舉的方式選出當前輪次的記賬節點,首先獲得半數以上選票的礦工節點將會獲得記賬權。如,Paxos和Raft。
2、證明類共識:礦工節點在每一輪共識過程中必須證明自己具有某種特定的能力,證明方式通常是競爭性地完成某項難以解決但易於驗證的任務,在競爭中勝出的礦工節點將獲得記賬權,共識算法是基於礦工的算力或者權益來完成隨機數搜索任務,以此競爭記賬權。如,PoW和PoS。
3、隨即類共識:礦工節點根據某種隨機方式直接確定每一輪的記賬節點。如,Algorand和PoET。
4、聯盟類共識:礦工節點基於某種特定方式首先選舉出一組代表節點,而後由代表節點以輪流或選舉的方式以此取得記賬權。如,DPoS。
5、混合類共識:礦工節點採用多種共識算法的混合體來選擇記賬節點。

2.6.1 經典共識算法

1 工作量證明(POW)
工作量證明是中本聰爲比特幣實現一致性和安全性而提出的第一個分佈式共識協議。比特幣網絡中的節點競爭計算下一個區塊的哈希值,該哈希值應該小於由共識規則確定的動態變化的目標值。在將區塊添加到現有區塊鏈之前,完成計算的節點要等待其他節點的確認。
如果多個節點找到正確的計算結果,則可能會生成多個有效塊,導致網絡臨時分叉。在這種情況下,這些區塊都是可以接受的,礦工接受離他更近的節點,並將此計算的結果轉發給其他節點。在任何時候接受最長鏈,可以避免後期的衝突。
比特幣利用POW機制使系統各節點最終達成共識,進而得到新區塊。工作量證明的“工作”是指找到一個合理的區塊哈希值,它需要不斷地進行大量的計算,計算時間取決於當前目標的難度和機器的運算速度。當一個節點找到這個值之後,就可以表明該節點確實經過了大量的計算。由於驗證只需對結果值進行一次哈希運算,因此POW的驗證效率很高。
POW共識的核心思想是通過引入分佈式節點的算力競爭來保證數據一致性和共識的安全性。各節點基於各自的計算機算力相互競爭來共同解決一個求解複雜但是驗證容易的SHA256數學難題(即挖礦),最快解決該難題的節點將獲得區塊記賬權和系統自動生成的比特幣獎勵。該數學難題爲:根據當前難度值,通過搜索求解一個合適的隨機數(Nonce),使得區塊頭各元數據的雙SHA256哈希值小於或等於目標哈希值。比特幣系統通過靈活調整隨機數搜索的難度值來控制區塊的平均生成時間爲10分鐘左右。
不足之處:1、算力浪費,大量算力被用於無意義的hash計算。2、交易確認效率低,需要生成6個區塊,即約1h後才能確認成交。3、性能瓶頸,每個區塊大小限制在1MB,每秒最多處理15筆交易,效率太低。

2 權益證明(POS)
權益證明的提出克服了比特幣中工作量證明過度耗電的缺點。以太坊利用權益證明來達成共識。權益證明不像工作量證明那樣進行嚴格的哈希計算以獲得資源,而是建議購買加密貨幣並使用其用作網絡中的權益。權益的佔比與能否進行區塊驗證的可能性成正比。爲了達成共識,區塊驗證者是隨機選擇的,並且不是預先確定的。生成有效塊的節點獲得激勵,但是,若節點生成的區塊不包含在現有區塊鏈中,那麼這些節點也會損失一定數量的權益。
相比POW浪費大量的算力,權益證明僅僅需要少量的計算就能維持區塊鏈的正常運轉。這種機制根據貨幣持有量和時間來分配相應的利息。但是這種機制存在一點不足,即區塊的產生沒有消耗大量算力,導致這種機制下的貨幣價值來源難以確定,因爲任何區塊鏈系統都可以實現。
POS是爲解決POW的資源浪費和安全性缺陷而提出的替代方案,是採用權益證明來代替基於哈希算力的工作量證明,是由系統中具有最高權益而非最高算力的節點獲得新區塊的記賬權。權益體現爲節點對特定數量貨幣的所有權,稱爲幣齡。幣齡是特定數量的幣與其最後一次交易的時間長度的乘積,每次交易都會消耗掉特定數量的幣齡。
缺陷:不確定性高,依賴代幣,安全性脆弱。
POS共識算法中難度與交易輸入的幣齡

3 實用拜占庭算法(PBFT)
在區塊鏈中,PBFT致力於在參與節點之間建立共識:節點保持其當前狀態,當接收到新消息時,將當前狀態和消息一起饋送(饋送???)進行計算以幫助節點做出決定,然後將該決定廣播到網絡。
PBFT對節點的數量有要求,系統需要最少3N+1個節點,N爲允許失效節點個數,只要收到2N個節點確認就是交易確認。

4 委託權益證明(DPOS)
DPOS的思路類似於董事會決策,即系統中每個股東節點可以將其持有的股份權益作爲選票授予一個代表,獲得票數最多且願意成爲代表的前101個節點將進入董事會,按照既定的時間表輪流對交易進行打包結算並且簽署(即生產)一個新區塊。每個區塊被簽署之前,必須先驗證前一個區塊已被受信任的代表節點所簽署。董事會的授權節點可以從每筆交易的手續費中獲得收入,同時要成爲授權代表節點必須繳納一定量的保證金,其金額相當於生產一個區塊收入的100倍。授權代表節點必須對其他股東節點負責,如果其錯過簽署相對應的區塊,則股東將會收回選票從而將該節點投出董事會。因此,授權代表節點通常必須保證99%以上的在線時間以實現盈利目標。與POW共識機制必須信任最高算力節點和POS共識機制必須信任最高權益節點不同的是,DPOS共識機制中每個節點都能夠自主決定其信任的授權節點且由這些節點輪流記賬生成新區塊,因而大幅減少了參與驗證和記賬的節點數量,可以實現快速共識驗證。
DPOS將全網節點分爲普通節點和中介代理節點,只有代理節點擁有記賬權,普通節點投票選出固定數量的代理節點,由代理節點隊列按順序輪流產生區塊,普通節點放棄挖礦獎勵從而獲得高效的交易處理能力,而代理節點在享受挖礦獎勵利益的同時,需要付出大量工作以維護代理節點的信任和系統穩定的責任。
缺陷:逐漸拋棄了去中心化概念,但無法有效進行中介代理節點管理,難以用於商業領域。

2.6.2 新型共識算法

1 瑞波共識協議(RCP)
瑞波共識協議(Ripple Consensus Protocol,RCP)使一組節點能夠基於特殊節點列表達成共識。初始特殊節點列表就像一個俱樂部,要接納一個新成員,必須由一定比例的該俱樂部會員投票通過。
工作原理如下:
1.驗證節點接收存儲待驗證交易。首先驗證節點接收待驗證交易,將其存儲在本地;其次本輪共識過程中新到的交易需要等待,在下次共識時再確認。
2.活躍信任節點發送提議:首先,信任節點列表是驗證池的一個子集,其信任節點來源於驗證池的一個子集,其信任節點來源於驗證池;其次,參與共識過程的信任節點須處於活躍狀態,驗證節點與信任節點存在保活機制,長期不活躍節點將被從信任節點列表刪除;最後,信任節點根據自身掌握的交易雙方額度、交易歷史等信息對交易做出判斷,並加入到提議中進行發送。
3.本驗證節點檢查收到的提議是否來自信任節點列表中的合法信任節點,若是則存儲,否則丟棄。
4.驗證節點根據提議確定認可交易列表的步驟如下:首先,令信任節點列表中活躍的信任節點個數爲M(比如5個),本輪中交易認可閾值爲N(百分比,比如50%),則每一個超過M*N個信任節點認可的交易將被本驗證節點認可;其次,本驗證節點生成認可交易列表。系統爲驗證節點設置一個計時器,如果計時器時間已到,本信任節點需要發送自己的認可交易列表。
5.賬本共識達成的步驟如下:首先,本驗證節點仍然在接收來自信任節點列表中信任節點,並持續更新認可交易列表;其次,驗證節點認可列表的生成並不代表最終賬本的形成以及共識的達成,賬本共識只有在每筆交易都獲得至少超過一定閾值(比如80%)的信任節點列表認可才能達成,如果賬本中每筆交易都獲得至少超過一定閾值的信任節點列表認可,則共識達成,交易驗證結束,否則繼續上述過程。
6.共識過程結束後,已經形成最新的版本。將上輪剩餘的待確認交易以及新交易納入待確認交易列表,開始新一輪共識過程。

2 行動證明(POA)
行動證明協議(proof of action)建立在比特幣協議的基礎上,將工作量證明與權益證明相結合。
基本流程是:類似於POW協議,礦工構造出一個符合難度要求的塊頭,根據塊頭計算衍生出N個幣的編號,從區塊鏈中追溯可以得到這幾個幣目前所述的參與者。礦工將這個塊頭髮送給者N個參與者,其中前N-1個參與者對這個塊進行校驗和簽名,最後第N個參與者校驗並將交易加入到該塊中,將這個區塊發佈出去,即完成新區塊的出塊。

2.6.3 共識算法的改進方向

1.去中心化能力。從比特幣開始,針對共識算法的專業挖礦設備層出不窮,如何保障普通節點參與共識,防止中心化威脅是共識算法改進的重點方向。細分爲:1)對POW的改進,增加計算量之外的限制條件,如以太坊共識算法增加了對內存空間的要求,增加專業設備成本,降低中心化挖礦收益;2)創新共識算法模式。突破POW基於工作量限制的創新如POS算法的權益證明模式,降低專業挖礦設備存在的必要性;3)多種共識算法融合,既保留POW共識算法的優勢,又通過其他算法抵禦專業挖礦設備。

2.激勵機制。良好的激勵機制可以保持區塊鏈系統的參與度與節點的穩定性。1)激勵內容創新。如激勵普通用戶挖礦獎勵的創新,普通用戶由於沒有設備、算力的優勢,通常參與挖礦也無法獲得共識獎勵,所以如何激勵普通用戶參與是未來共識機制的改進方向之一;2)激勵方式創新。共識算法除挖礦代幣獎勵外,能否通過其他激勵機制如廣告權、優先交易權等方式激勵也是吸引用戶參與的創新方向;3)激勵模式創新。改進共識算法獎勵條件,對參與節點挖礦外其他行爲如鏈解節點數量、在線時間等多種模式進行獎勵,激勵節點用戶參與熱情。

3.交易處理效率。區塊鏈處理交易的效率限制了其應用場景,爲了提高效率可在以下方面進行改進:1)提高出塊速度,提升區塊容量、提高單位時間內交易數量;2)限制節點數量,有限的共識節點可以不受限於公鏈網絡同步時效性問題,可以快速達成共識;3)多種方案組合,平衡去中心化與交易效率的關係。

2.7 智能合約

智能合約是運行在區塊鏈上的一段計算機程序,智能合約擴展了區塊鏈的功能,豐富了區塊鏈的上層應用,依照商業邏輯編寫完智能合約代碼後,需要將其發佈到區塊鏈網絡節點上。這些智能合約的工作原理與編程語言中的if-then語句類似,當滿足一個預先編好的條件時,智能合約就被觸發執行相應的條款。其設計初衷是希望通過將智能合約內置到物理實體來創造各種靈活可控的智能資產。

區塊鏈的出現重新定義了智能合約。智能合約是區塊鏈的核心構成要素(位於合約層),是由事件驅動的、具有狀態的、運行在可複製的共享區塊鏈數據賬本上的計算機程序,能夠實現主動或被動的處理數據,接受、存儲和發送價值,以及控制和管理各類鏈上智能資產等功能。智能合約作爲一種嵌入式程序化合約,可以內置在任何區塊鏈數據、交易、有形或無形資產上,形成可編程控制的軟件定義的系統、市場和資產。智能合約不僅爲傳統金融資產的發行、交易、創造和管理提供了創新性的解決方案,同時能夠在社會系統中的資產管理、合同管理、監管執法等事務中發揮重要作用。

智能合約是存儲在區塊鏈上的且能夠自動運行的腳本,具有強制自動執行的特點。

3 區塊鏈的應用

資產管理
該領域旨在安全地在商業網絡中傳輸資產。資產可以是物理資產,如計算機或筆記本電腦;或無形資產,如軟件和服務。區塊鏈提供共享賬本的功能,這意味着商業網絡中端到端的完全可見性。區塊鏈從序列化到部署都在底層使用,它只關注5個關鍵事件:製造資產序列化以啓動區塊鏈、資產的接受與確認、資產資本化、擔保激活、資產安裝。

房地產
房地產交易既繁瑣又不透明,而且成本高昂,這主要是由於各種中間商的參與,如經紀人、政府財產數據庫、產權公司等。區塊鏈使任何地方的每一處房產都有一個對應的數字地址,該地址包含佔用、財務、法律、建築性能和永久傳遞並維護所有歷史交易的物理屬性。

金融
國際貨幣交易是一個非常重要的過程,由於存在不必要的中間人而變得相當昂貴和緩慢。在收取資金之前需要幾家銀行(和貨幣)的轉運。區塊鏈可以加快和簡化這個過程,減少不必要的中間人,使匯款更實惠。區塊鏈將成本降低到總金額的2-3%,並提供跨境保證的實時交易。

除此之外,還有:數字貨幣、跨境支付與結算、票據與供應鏈金融服務、證券發行與交易、客戶徵信與反欺詐、存在性證明、智能合約、身份驗證、預測市場、電子商務、社交通訊、文件存儲等。

4 區塊鏈的挑戰

4.1 可擴展性問題

共識和區塊驗證需要存儲整個區塊鏈,即所有發生的交易,因此需要大量存儲。區塊大小的限制在一些情況下會導致可擴展問題。由於限制了1MB的塊大小和延遲的共識流程,一秒平均只能確認7筆交易,交易費用很高。但是增加塊的大小會通過減慢塊傳播來產生額外的延遲。

4.1.1 解決方案

分片
以太坊應用了分片(sharding)的解決方案,以太坊依據賬戶地址將全網劃分爲多個相對獨立的分片,每個分片內維護一條獨立的子鏈,用戶可自行選擇在哪個分片執行自己的交易,每個節點根據自身的計算和存儲能力選擇加入一到多個分片,並處理和存儲這些分片上的交易。

多通道
Hyperledger fabric1.0提出了多通道的方案,基於交易規則將整個區塊鏈網絡劃分爲多個邏輯上的通道,每個節點根據自己需要參與的交易來選擇加入相應的通道。

4.2 安全問題

4.2.1 51%攻擊問題

節點通過掌握全網超過51%的算力就有能力成功篡改和僞造區塊鏈數據。雖然實際情況中掌握全網51%算力所需的成本投入遠超成功實施攻擊後的收益,但是51%攻擊的安全性威脅始終存在。

隨着量子計算機的發展,非對稱加密算法具有一定的可破解性,是一個潛在的安全威脅。

4.2.2 女巫攻擊

Sybil Attack是在對等網絡中,單一節點具有多個身份標識,通過控制系統的大部分節點來削弱冗餘備份的作用。

POW、POS解決了女巫攻擊問題。(???)

4.2.3 雙花(double spending attack)

雙重支付問題又稱爲“雙花”,即利用貨幣的數字特性兩次或多次使用“同一筆錢”完成支付。

區塊鏈解決了雙花問題。區塊鏈技術的貢獻是在沒有第三方機構的情況下,通過分佈式節點的驗證和共識機制解決了去中心化系統的雙重支付問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章