5. 共識機制
區塊鏈是一種去中心化的分布式賬本系統,由於點對點網路下存在較高的網路延遲,各個節點所觀察到的事務先後順序不可能完全一致。因此區塊鏈系統需要設計一種機制對在差不多時間內發生的事務的先後順序進行共識。這種對乙個時間視窗內的事務的先後順序達成共識的演算法被稱為「共識機制」。
5.1區塊鏈和分布式系統容錯的相同點
(2) 強調序列化(時間有序)。
(3) 少數服從多數原則。
(4) 分離覆蓋的問題:即長鏈覆蓋短鏈區塊,多節點覆蓋少數節點。
5.2 區塊鏈和分布式容錯的不同點
(1) 分布式系統容錯,一般不考慮拜占庭問題,即假設所有節點只發生宕機、網路故障等非人為問題,並不考慮惡意節點篡改資料的問題;
(2) 分布式系統容錯的一致性演算法是面向日誌(資料庫)的,而區塊鏈共識演算法是面向交易的,前者可以作為後者的基礎和技術保障;
(3) 區塊鏈,更多地是解決拜占庭將軍問題。
5.3拜占庭問題解決演算法
(1) pbft:投票機制,1個節點1票,少數服從多數,允許1/3的節點不可靠、但不能防止女巫攻擊行為;
(2) 區塊鏈引入獎勵機制和懲罰機制(博弈)輔助解決問題,這是工作量證明 演算法的基礎,使得作惡成本高於收益,以阻止作惡行為;
(3) 交易永遠沒有最終狀態,但有最接近最終狀態的狀態。通常經過6個區塊的發展,交易被推翻的可能性極小。
5.4 參考
拜占庭問題:指系統中的節點可能出現任何錯誤,包括有意的誤導,故意破壞系統,偽造簽名,也包括故障、超時,重複訊息等。
共識原理:當多個主機通過非同步通訊方式組成網路集群時,這種非同步網路預設是不可靠的,那麼在這些不可靠主機之間複製狀態需要採取一種機制,以保證每個主機的狀態最終達成相同一致性狀態,取得共識。根據flp原理,impossibility of distributed consensuswith one faulty process一文提出:在乙個非同步系統中我們不可能確切知道任何一台主機是否宕機了,因為我們無法分清楚主機或網路的效能減慢與主機宕機的區別,也就是說我們無法可靠地偵測到失敗錯誤。
6. 主流共識演算法
6.1 工作量證明(proof of work, pow)
(1) 工作量證明機制,使得區塊的產生具有計算性難度,以增加攻擊的成本;
(2) 從統計學角度,1筆交易在6個區塊後被認為是明確確認且不可逆的。核心開發者認為,需要120個區塊才能充分保護網路不受來自潛在更長的已將新產生的幣花掉的攻擊區塊鏈的威脅;
(3) 儘管出現更長的區塊鏈會變得不太可能,但任何擁有巨大經濟資源的人仍有可能製造乙個更長的區塊鏈來偽造交易(51%攻擊)。
6.2 股權證明機制(proof of stake,pos)
(1) 股權證明機制有很多不同變種,但基本概念是產生區塊的難度與在網路裡所佔的股權(所有權佔比)成比例;
(2) 解決pow的資源消耗問題。
6.3 瑞波共識機制(ripple consensus)
(1) 瑞波共識演算法,使一組中心化的特殊節點列表達成共識;
(2) 初始特殊節點列表就像乙個俱樂部,要接納乙個新成員,必須由51%的該俱樂部會員投票通過;
(3) 共識遵循這核心成員的51%權力,外部人員則沒有影響力。由於該俱樂部由「中心化」開始,它將一直是「中心化的」;
(4) 瑞波系統將股東們與其投票權隔開,並因此比其他系統更中心化。
6.4 授權股權證明機制(dpos)
(1) 每**東按其持股比例擁有影響力,51%股東投票的結果將是不可逆且有約束力的,這點類似pos;
(2) 每**東將其投票權授予一名代表,獲票數最多的前100位代表按既定時間表輪流產生區塊。每名代表分配乙個時間段來生產區塊;
(3) 所有代表將收到等同於乙個平均水平的區塊所含交易費的10%作為報酬;
(4) 該模式每30秒鐘產生乙個區塊。
6.5 基於交易的股權證明機制(tapos)
(1) 通常pos代表是短時間的;
(2) tapos為股東們提供了乙個長效機制來直接批准他們的代表的行為;
(3) 平均而言,51%的股東在6個月內可以直接確認每個區塊;
(4) 而交易活躍流通的股份所佔的比例,則平均10%的股東在幾天內可以直接確認區塊鏈。
7. 區塊鏈種類
區塊鏈主要公有鏈,聯盟鏈,私有鏈這幾類。
7.1公有鏈
(1) 執行在網際網路;
(2) 完全的分布式;
(3) 資料節點數量多變且不可預知;
(4) 資料是公開的;
(5) 任何人都可以匿名參與;
(6) 運維成本較高,依賴獎勵機制;
(7) 交易速度較慢。
7.2 聯盟鏈
(1) 由多機構聯盟聯合執行;
(2) 資料具有保密性;
(3) 資料節點是事先選擇的;
(4) 節點間連線速度較快;
(5) 運維成本較低;
(6) 交易速度較快,交易成本較低;
(7) 資料可以被聯盟修改。
7.3 私有鏈
實際只使用區塊鏈技術進行資料儲存和交易處理,背離區塊鏈基礎的目標。
(1) 由單個機構執行;
(2) 資料訪問和使用受限;
(3) 資料節點是事先選擇的;
(4) 節點間連線速度較快;
(5) 運維成本較低;
(6) 交易速度較快,交易成本低;
(7) 資料可以被修改。
8. 區塊鏈技術發展階段
區塊鏈技術的發展目前主要有3個階段,分別是區塊鏈1.0,區塊鏈2.0,區塊鏈3.0。
8.1 區塊鏈1.0
區塊鏈1.0是以位元幣為代表的數字貨幣應用,為了解決貨幣和支付手段的去中心化,其場景包括支付、流通等貨幣職能。
8.2 區塊鏈2.0
區塊鏈2.0就是更巨集觀的對整個市場的去中心化,利用區塊鏈技術來轉換許多不同的資產而不僅僅是位元幣,通過轉讓來建立不同資產單元的價值。最顯著的標誌是數字貨幣與智慧型合約相結合,對金融領域更廣泛的場景和流程進行優化的應用。
讓所有的金融交易都可以被改造成在區塊鏈上使用,包括**、私募股權、眾籌、債券、對沖**和所有型別的金融衍生品:**、期權等。
8.3 區塊鏈3.0
區塊鏈3.0則超出金融領域,為各種行業提供去中心化解決方案,可用於實現全球範圍內日趨自動化的物理資源和人力資產的分配,促進科學、健康、教育等領域的大規模協作。例如:自動化採購,智慧型化物聯網應用,**鏈自動化管理,虛擬資產兌換、轉移。
9.區塊鏈主流開源技術體系介紹
區塊鏈開源技術種類繁多,這裡就主流的開源技術體系進行簡要的介紹。
9.1位元幣體系(btc)
位元幣(bitcoin)是最早也是全球最廣泛使用和真正意義的去中心化區塊鏈技術,因此他的開源技術體系非常值得參考。位元幣區塊鏈的核心技術框架採用c++語言開發,共識演算法採用pow演算法,工作量(挖礦)證明獲得記賬權,容錯50%,實現全網記賬。核心技術框架採用c++語言開發,公網tps<7。
9.2以太坊(eth)
底層核心技術框架採用c++,go等語言開發,智慧型合約採用solidity語言編寫。公網tps<35,未來有望達到2000tps。
9.3ibm hyperledger fabric
ibmhyperledger,又叫 fabric,是乙個帶有可插入各種功能模組架構的區塊鏈實施方案,他的目標是打造成乙個由全社會來共同維護的乙個超級賬本。 fabric的主要框架核心開發語言是go語言,系統目標是15個驗證節點下最理想情況下可以有100ktps的效能,更適合於聯盟鏈。
9.4位元股(bitshare)
位元股(bitshares)是區塊鏈歷史上里程碑式的產品之一。它提供的bitusd等錨定資產是虛擬幣歷史上的乙個最重要變革之一,能夠極大消除虛擬貨幣被人詬病的波動性大的問題。位元股採用的是dpos共識演算法,公網tps<3000。
9.5瑞波(ripple)
瑞波(ripple)是乙個開放的支付網路,是基於區塊連的點到點全球支付網路。他的核心技術框架採用c++語言開發,公網tps<1000。
9.6小蟻(neo)
中國的世界級公鏈,neo區塊鏈通過將點對點網路、拜占庭容錯、數字證書、智慧型合約、超導交易、跨鏈互操作協議等一系列技術相結合,讓你快速、高效、安全、合法地管理你的智慧型資產。
neo的底層是採用的c#,go等語言,公網的tps<1000。
本次區塊鏈初探系列完畢,後續芯鏈社群將會繼續推出區塊鏈相關的技術分享文章,供技術愛好者參考或者學習。
區塊鏈掃盲
1.區塊鏈解決了啥問題 乙個東西有價值,一定是解決了乙個社會上的痛點。我們說人工智慧是未來的趨勢,因為它主要解決的是生產力的公升級問題,工業革命代替人的簡單體力勞動,人工智慧代替的是例如思考之類的複雜勞動。區塊鏈解決的是生產關係的問題,也就是信任的問題,想一下為什麼 需要有支付寶,因為如果沒拿到貨而...
區塊鏈掃盲
最近一年多的時間裡,區塊鏈及其應用得到了飛速的發展,尤其是數字貨幣動輒幾十倍的漲幅造就了不少財富神話。到底區塊鏈是什麼,數字貨幣與區塊鏈有什麼關係,本文將會做乙個入門式的 區塊鏈本質上來說就是乙個分布式資料庫,資料庫記錄的內容可以因應具體的業務而變化,沒有特殊的設定。網路上每乙個節點都有乙個全量的資...
區塊鏈(初探)
區塊鏈是乙個去中心化的分布式賬本系統,是基於密碼學原理而不基於信用,不需要第三方中介的參與,由分布式網路中的所有節點共同維護的系統。公鑰和私鑰是現代密碼學分支非對稱性加密裡面的名詞,公鑰和私鑰成對出現,公開的金鑰叫公鑰 只有自己知道的叫私鑰。通常都是用公鑰加密資料,用私鑰來解密資料 用私鑰加密資料 ...