成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

區塊鏈共識機制分析——論PoW,PoS,DPos和DAG的優缺點

區塊鏈 其他數據庫
作為第一批區塊鏈技術的實現,傳統比特幣與以太坊在共識機制、存儲機制、智能合約機制、跨鏈通訊機制等領域并沒有非常嚴密的設計,從而引發了一些在數據庫與存儲領域比較常見的問題,導致其數據規模無法無限增加,吞吐量極為有限,使其不可能適應通用分布式數據存儲或通用結算體系的要求。

近期,隨著區塊鏈技術在社區中的聲音越來越大,業界已經開始從技術角度對區塊鏈進行全方位的解讀。作為第一批區塊鏈技術的實現,傳統比特幣與以太坊在共識機制、存儲機制、智能合約機制、跨鏈通訊機制等領域并沒有非常嚴密的設計,從而引發了一些在數據庫與存儲領域比較常見的問題,導致其數據規模無法無限增加(當前僅幾百GB就產生了嚴重的性能瓶頸,幾乎不可能到達上百TB規模),吞吐量極為有限,使其不可能適應通用分布式數據存儲或通用結算體系的要求。

[[222332]]

作為數據庫內核行業十幾年的老兵,筆者將會從共識、存儲、智能合約、多鏈、快速檢索、以及通用接口等幾個維度對區塊鏈技術進行闡述,并會與數據庫及大數據分布式計算技術進行橫向對比。

區塊鏈的本質即分布式多活數據庫。

從產品功能的角度看,當前的區塊鏈產品與數據庫相比存在極大的差距。尤其是對于在業界存在了幾十年的關系型數據庫,其主要核心功能包括增刪改查,而主要結構則包括SQL解析、日志、數據管理、以及索引管理幾大模塊。

而大數據技術興起后,業界開始使用PC服務器替代傳統小型機,為了避免服務器掉電導致的數據頁損壞,分布式數據庫或存儲普遍使用三副本對數據進行冗余保存。

盡管從功能上看,當前區塊鏈技術僅僅是數據庫的一個微小子集,但是其一系列設計機制,與傳統數據庫的內核理念極為相似。譬如,從其傳輸和存儲的數據結構上來看,區塊鏈的鏈式結構來源于傳統數據庫的事務日志。任何數據庫的DBA都知道,數據庫的事務日志本質上就是不可更改的鏈式結構,事務中的每一條操作記錄都會有一個反向指針指向該事務中的上一條記錄。因此,區塊鏈的鏈式結構本質上脫胎于數據庫事務日志,同時增加了區塊之間的反向哈希值作為指針,且引入了默克爾樹結構進行快速數據校驗。因而,我們可以安全地進行認為:區塊鏈的鏈式結構在存儲體系中等價于數據庫的事務日志。本質上數據庫的任何操作同樣是不可篡改的,只不過當前大部分數據庫不會對外暴露事務日志的解析工具,僅保存每一條記錄的最終狀態而已。

區塊鏈共識機制分析——論PoW,PoS,DPos和DAG的優缺點

(圖1:數據庫體系結構,黃色部分代表區塊鏈同樣包含的組建)

 

1.1 一致性原理對比

在分布式數據庫中,當前普遍采用PAXOS或RAFT算法進行數據多份冗余的一致性協商。一般來說,在分布式數據庫體系中,每個數據分片由至少3個互相冗余備份的節點構成,而在正常運行時的數據庫每個分片都會存在一個主節點與兩個從節點。其中主節點負責數據的讀寫操作,從節點進行只讀操作。當主節點寫入數據時,其事務日志會被實時同步給其他從節點進行回放,以達到主從節點之間數據一致性的目標。

區塊鏈共識機制分析——論PoW,PoS,DPos和DAG的優缺點

(圖2:數據庫主從節點同步)

那么對比區塊鏈的體系,可以認為數據庫領域的主節點即日志生成節點,其每次生成事務日志的功能,與區塊鏈中每次出塊時礦工的功能完全等價。唯一不同的是,數據庫在每次操作時對日志實時廣播到從節點中,并且在事務提交時進行一致性判斷。而區塊鏈則采用檢查點方式,每個節點接收自己的交易請求,并將請求廣播到其他節點中,而每一次出塊操作即產生一個檢查點,該檢查點包含的信息即出塊節點向區塊中寫入的所有記錄。這些記錄被發送到其他節點后,每個節點對數據塊中的記錄進行驗證并永久寫入自身的交易日志(即區塊文件)。

區塊鏈共識機制分析——論PoW,PoS,DPos和DAG的優缺點

(圖3:區塊鏈節點互相對等)

但是,區塊鏈和數據庫在一致性選擇上最大的不同在于哪個節點成為檢查點發起的節點。數據庫由于采用了主從機制,主節點永遠是日志的發起節點,而從節點永遠是日志回放與驗證節點。但是區塊鏈則不同,其采用某些算法(例如PoW、PoS、DPoS等)在多個參與節點之間定期選取一個節點進行檢查點確認,這也是區塊鏈號稱自身安全的一個理由所在:在全網大量的節點中攻擊者無法確定下一個檢查點確認的節點是誰(當然,就算攻擊者確定了下一個出塊節點,還有一系列的數字簽名機制保障事務不被偽造和篡改)。

因此我們可以安全地認為,從檢查點節點選擇的領域來看,傳統分布式數據庫確定主節點生成事務日志的機制,是區塊鏈共識機制的一種簡單實現。也就是說,如果區塊鏈共識機制每次都選取同一個節點作為出塊節點,其機制基本等價于分布式數據庫的主從復制原理(數據庫按照事務提交進行一致性驗證,區塊鏈不存在事務的概念,因此按照數據塊進行一致性驗證)。

區塊鏈共識機制分析——論PoW,PoS,DPos和DAG的優缺點

(圖4:數據庫以提交回滾操作作為檢查點,區塊鏈以生成區塊作為檢查點)

 

1.2 共識算法

由于區塊鏈體系中并不存在某個節點永久作為檢查點確認的節點,而是每個參與節點都有機會被選舉成為該角色,因此在每個節點都能夠進行讀寫操作時,整個區塊鏈體系從功能上等價于一個不支持事務機制的多活數據庫。而具體使用哪種算法選擇出塊節點(PoW與PoS之爭)、哪些節點在接收到數據塊時該如何驗證(PoS與DPoS之爭)、節點之間的數據以什么方式進行傳播(DAG與鏈式結構之爭)、以及如何確保一條交易被大多數參與節點所接受(PBFT、Paxos、RAFT、以及各種分叉解決方案等算法之爭,Hyperledger 1.0甚至直接使用中央Kafka做排序也是醉了),則是區塊鏈共識算法需要回答的問題。不同的解決方式制約著區塊鏈的一致性、性能、吞吐量、以及可靠性。

1.2.1 挖礦

挖礦是來自于比特幣的一種說法,其本質在于多個節點通過PoW算法選舉出一致性檢查節點。關于PoW的說明業界已有無數文章分析,這里筆者不再贅述細節。實際上,從數據管理的角度來看,PoW是一種效率極為低下的暴力機制,通過不停地循環生成隨機數并進行散列,通過網絡預先廣播的規則(復雜度),讓每個參與的節點自證明其是否符合成為檢查點的資格。

對比分布式數據庫的Paxos或RAFT算法,每個參與節點默認自身有資格成為主節點,在原本的主節點無法連通的情況下通過最新事務號或其他原則相互投票,從而選舉出新的主節點。而由于競爭節點過多,區塊鏈作為一個擁有幾萬甚至幾十萬復制節點的多活數據庫,繼續采用Raft或Paxos算法一方面復雜度太高,另一方面無法解決拜占庭問題,因此比特幣采用PoW機制,通過大家公認的某種機制,讓每個參與節點首先自己判斷是否符合要求(即生成了隨機數后自己進行散列并驗證)。當節點自身認為符合條件后,將之前生成的隨機數以及打包好的日志(數據塊)廣播給集群中其他節點,從而大幅度減少了節點間相互投票所需的復雜度。

節點通過循環生成隨機數并自我驗證的過程,即PoW中所謂的“挖礦”階段。

因此,如果把挖礦的概念擴展,不論是PoS、PoW或DPoS算法中,節點間競爭成為檢查點的過程即挖礦過程。

1.2.2 PoW與PoS的選擇

PoW是一種極為粗暴原始,但卻又及其有效防止惡意攻擊的選舉算法。該算法與計算機內核中多線程協作的自旋鎖有異曲同工之處,自旋鎖的原理在于通過線程自身不停循環判斷一個內存地址狀態,直到該狀態設置為空閑后,通過CPU原子操作將其置為鎖定狀態,以此和其他線程進行互斥的機制。這種機制和PoW極為相似。

而PoS更傾向于類似Raft投票機制,通過固定時間協調所有節點參與投票,根據某種規則(例如持有代幣數量、或提供存儲空間大小等)判斷每個節點的權重,最后選取權重最高的節點作為檢查點節點。而在數據庫一致性選擇的Raft算法中,普遍會根據最新事務號作為權重,多個節點之間優先選擇包含最新事務記錄的節點作為主節點。

因此,可以看到PoW與PoS最大的區別在于,PoW在算法復雜度足夠高的前提下,基本不需要太多的節點間互相通訊和確認,對代碼的實現要求極低。而PoS對于多節點間一致性驗證、防偽等要求較高,但是很大程度上可以沿用傳統一致性選舉的思路進行一定程度的優化即可。

區塊鏈共識機制分析——論PoW,PoS,DPos和DAG的優缺點

(圖5:PoW與PoS流程對比)

但是PoW的缺點與自旋鎖一樣,對于計算資源的要求極高。一個被錯誤應用的自旋鎖可以輕易消耗掉計算機中所有的CPU資源,同樣PoW當前被人們詬病的最大問題也在于資源消耗。PoS在這方面則沒有任何問題。

1.2.3 PoS與DPoS的選擇

類似Paxos與Raft,集群內參與的節點越多則效率越慢。一個典型的分布式數據庫,使用單副本的效率可能會是三副本的兩倍,而三副本的效率則又是七副本的兩至三倍。因此,為了滿足足夠的吞吐量,使用PoS在進行選舉時務必不能在成千上萬個節點之間進行投票選舉,而是應當在有限的集合范圍內進行投票驗證。這就是DPoS的核心原理。

DPoS給出一種思路,將成千上萬個PoS節點,通過某種機制(例如持有代幣的數量)選舉出若干(奇數個)節點,在這幾個節點之間進行投票選舉(在一些實現中甚至會在這些節點間以令牌環的方式進行輪詢,進一步減少投票開銷)出每次的檢查點(出塊)節點,而不用在網絡中全部節點之間進行選擇。

這種機制能夠大幅度提升選舉效率。在幾十個最多上百節點之間進行一致性投票一般來說可以在秒級完成并達到共識,因此DPoS機制可以將檢查點(事務確認時間)提升到秒級,通過減少投票節點的數量或采用令牌環機制甚至可以降低到毫秒級。

區塊鏈共識機制分析——論PoW,PoS,DPos和DAG的優缺點

(圖6:PoS對比DPoS)

但是,DPoS的性能無法無限提升。在一個完美的軟件實現中,其性能與吞吐量則物理制約于節點間通訊的網絡帶寬。一般來說,對于公網環境中兩個節點之間的帶寬能夠維持在上下行均5MB/s(50兆帶寬)則相當優秀了,大部分情況下遠遠無法達到該數值。而如果每條交易日志需要100字節,由于網絡即需要廣播交易也需要廣播日志,則網絡帶寬消耗加倍,因此在兩個節點的單鏈中最大吞吐量不超過2.5萬每秒(5MB/100字節/2=25000),假設集群中包含更多節點,則最大吞吐量需要根據其使用的P2P同步機制成比例縮減。如果需要進一步提升則需要進行分鏈(類似于數據庫分片的概念),該主題將會在下面的章節詳細討論。

1.2.4 DAG與鏈式結構的選擇

DAG與鏈式結構的本質區別在于異步與同步通訊。在前文中已經討論過鏈式結構的本質等同于數據庫事務日志,而出塊操作則為檢查點操作,那么鏈式結構體系可以看做是定期同步檢查點的數據庫事務同步機制。

而DAG則通過將事務操作進行異步處理來增加網絡吞吐量,采用謠言傳播算法在節點間發送操作日志,并通過某種機制(IOTA每次驗證前兩條交易,并計算一個PoW代表權重)將一個權重賦給該操作。

相比起同步操作的鏈式結構,DAG結構與任何異步機制一樣,能夠帶來的提升在于吞吐量(真的么?后文會有描述),但是產生的問題則在于無法有效預測交易被確認的時間與周期。

而IOTA架構對于DAG的實現機制更會導致幾個額外問題:

  1. 在對歷史交易驗證時采用隨機方式,而沒有任何先后規則,那么有可能產生某些交易在極端情況下沒有任何其他節點對其驗證,從而永遠不會被確認;
  2. 為了追蹤每一筆交易與之前交易的關系,整個DAG圖譜需要被隨時檢索和訪問。在一個較大規模的系統中其交易圖譜溯源會非常復雜,同時幾乎不可能被全部保存在內存中以進行實時更新。而如果將這些數據保存在磁盤上,那么實時刷新每個Tangle的權重會造成大量隨機I/O(也許可以通過大量部署SSD解決),導致極大的性能問題;
  3. 由于采用謠言傳播的方式將每一筆交易廣播到網絡中的其他節點,隨著網絡中節點數的增加(IOTA結構中可能會有百億級別的設備節點,而非鏈式結構中幾萬個全賬本節點),整個網絡中的通訊量會程指數級上升。因此,IOTA宣稱其異步機制能夠大幅度提升網絡流量,但是忽略了該體系需要在網絡中傳播的數據量遠超鏈式結構,因此在一個具有大量節點的網絡中是否還能夠達到優秀的傳輸速度需要仔細評估;
  4. IOTA宣稱每個設備節點即作為驗證節點又作為交易的發起節點,會對接入IOTA的設備硬件處理能力要求較高。一般來說,類似智能電表、高速公路線圈等設備使用LoRa等LPWAN協議進行通訊,設備本身基本不具備任何計算能力。因此,IOTA才嘗試通過軟硬件一體化的方式(號稱3進制的設備)將這些復雜邏輯寫入芯片,并與其它設備進行集成。

如今從DAG衍生出一些其他數據結構(例如哈希樹等),基本上只是從存儲方式上有一些特定的優化,但是整體上與DAG所帶來的問題保持一致。

筆者認為,DAG的異步數據分發思路完全可以與鏈式結構相輔相成。在一些完全可以接受部分數據丟失或最終一致性的非支付類業務中,采用受限(避免出現網絡風暴)的謠言傳播算法能夠有效提升吞吐量,但是其無法滿足類似支付結算等需要實時性與一致性較高的業務場景。

 

1.3 結論

在區塊鏈的共識機制中,其本質與分布式數據庫的一致性算法存在極多的相似之處。拜占庭問題的引入僅僅從算法和選舉節點數量上對網絡結構做出一些調整,但是并不從本質上改變分布式系統一致性選舉的機制。

區塊鏈共識機制分析——論PoW,PoS,DPos和DAG的優缺點

(圖7:區塊鏈共識機制對比)

PoW采用簡單粗暴但極為有效的方式,通過節點首先自證其資質后才進行廣播的方式,大幅度減少了網絡間的通訊壓力,但與之帶來的問題則在于自證資質的計算資源消耗極大。

PoS采用與傳統分布式一致性驗證類似的機制,通過代幣數量(或存儲容量等指標)作為權重依據,使用某種分布式算法選舉出每次的檢查點節點。這種機制的好處在于沒有消耗計算資源的自證資質過程,但是帶來的問題在于每次選舉時在大量節點的網絡中對網絡壓力極大。

DPoS作為PoS的變形,通過縮小選舉節點的數量以減少網絡壓力,是一種典型的分治策略:將所有節點分為領導者與跟隨者,只有領導者之間達成共識后才會通知跟隨者。該機制能夠在不增加計算資源的前提下有效減少網絡壓力,在優秀的軟件實現中將會具有較強的應用價值。

DAG則采用異步機制替代鏈式檢查點的同步策略,在優秀的軟件實現中如果能夠有效控制網絡風暴帶來的帶寬需求指數增加,其不失為一種對最終一致性場景有較好應用前景的算法。但是DAG的局限性也極為明顯,其體系無法被利用在需要進行同步操作或一致性要求較高的操作中(例如支付結算等)。 

責任編輯:龐桂玉 來源: 今日頭條
相關推薦

2019-05-28 15:20:17

2019-04-30 14:26:58

區塊鏈POWPOS

2022-10-13 08:32:26

區塊鏈共識機制

2021-02-10 16:53:56

區塊鏈加密貨幣數字貨幣

2022-04-26 13:41:16

區塊鏈比特幣數據庫

2018-08-19 11:00:05

2021-07-17 21:49:15

區塊鏈加密貨幣賬本

2022-09-05 14:18:55

比特幣以太坊區塊鏈

2020-11-10 17:10:44

區塊鏈共識算法

2018-05-03 20:55:47

區塊鏈分布式數據庫

2022-04-11 13:34:07

區塊鏈比特幣安全

2018-02-09 11:08:49

區塊鏈算法主流

2021-12-13 16:12:50

區塊鏈比特幣技術

2021-09-09 13:53:08

區塊鏈加密貨幣技術

2022-09-14 08:00:00

區塊鏈加密貨幣挖礦

2018-09-17 14:30:40

2024-03-28 12:20:17

2022-09-20 11:34:15

以太坊PoS共識機制攻擊

2022-06-14 23:23:29

區塊鏈比特幣數據庫

2022-03-13 23:15:58

區塊鏈比特幣加密貨幣
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久99精品久久久久婷婷 | 蜜桃精品在线 | 成人免费一区二区三区视频网站 | 日韩久久综合 | 色网在线看 | 欧美涩涩网 | 亚洲成网 | 国产一级片网站 | 亚洲高清免费视频 | 午夜激情影院 | 成人久久久久久久久 | 国产精品久久久久久久久久久免费看 | 日本不卡一区二区三区在线观看 | 国产一区二区三区免费观看在线 | 日本不卡在线观看 | 国产片一区二区三区 | 在线播放国产一区二区三区 | 久久高清 | 成人在线中文字幕 | 一区二区三区四区视频 | 日韩精品一区二区三区在线观看 | 欧美成人一区二区 | k8久久久一区二区三区 | 国产精品久久久久久久一区二区 | 日韩在线精品 | 欧美久久电影 | 高清视频一区二区三区 | 国产精品自拍av | 婷婷五月色综合 | 亚洲欧美一区二区在线观看 | 中文字幕综合 | 久久久av | 一级毛片在线播放 | 人人做人人澡人人爽欧美 | 国产99久久久国产精品 | 日本精品一区二区三区在线观看视频 | 日韩av免费在线观看 | 日本污视频 | 一道本不卡视频 | 日韩成人一区 | 国产精品美女在线观看 |