原作者:靈魂機器由于FLPImposibility原理,Nocompletelyasynchronousconsensusprotocolcantolerateevenasingleunannouncedprocessdeath因此不要浪費時間為純異步網絡設計共識算法。解決辦法就是,要么加強對網絡的要求,要求網絡是Synchronous或者PartiallySynchronous的,或者放松對finality的要求,不要求Deterministicfinality,只要求Probabilisticfinality即可。兩者同時進行也可以。表1各種共識算法比較下面詳細講解一下上面表格中的內容。Finality
Finality看起來和Safety,Consistency很相似,又似乎有所不同,非常容易讓人困惑。簡單的理解,你可以認為Finality,Safety,Consistency是同義詞,即Finality=Safety=Consistency。更深入理解,我認為Finality是一個綜合體,Finality>Safety>Consistency。Consistency適用于所有分布式系統的,包括可信環境例如Hadoop和不可信環境例如Bitcoin;Safety適用于拜占庭環境下;Finality是在區塊鏈這個場景下的術語,區塊鏈是拜占庭場景下的一個子集。Consistency是CAP理論中的C,更加general,要求沒有Finality那么多。Finality包含的含義比Consistency更多更強。Finality包含了下面所有含義:所有節點的數據應是一致的。客戶端發出一個讀操作到任意一個節點,得到的結果應該是一樣的。這個就是CAP里所說的Consistency.這個術語是適用于所有的分布式系統的,包括可信環境例如Hadoop和不可信環境例如Bitcoin。所有節點要確保不進入互相沖突,分裂的狀態,即safety。這個術語是適用于Byzantinefaulttolerance這個領域的,在拜占庭這種開放環境里,有惡意節點會廣播兩個互相沖突的消息,導致全網所有節點陷入分裂狀態,達不成一直,這就破壞了Safety這個性質。所有拜占庭下的共識算法,都需要處理好惡意節點的問題,保證全網的safety。交易一旦進入區塊,應該不可撤銷,即Immutability。在區塊鏈場景下,要保證Safety,不僅需要處理好惡意節點發出雙花交易這種問題,而且還要防止惡意節點撤銷已經打包進區塊的交易。因為區塊鏈是一個單鏈表,是一個線性結構,惡意節點理論上可以從舊的一個區塊出發,分叉處一個更長的新鏈,把自己已經發出去的交易全部撤銷掉,把自己的錢再花一遍綜上,Finality=Consistency+Safety+Immutability。Liveness
何一:10億美元“復蘇計劃”正在推進兩筆比較大的交易,涉及兩家交易平臺:1月10日消息,Binance聯合創始人兼CMO、Binance Labs 負責人何一參與 POW'ER 2023香港Web3創新者峰會在線對談時表示,10億美元“復蘇計劃”不是慈善計劃,還要回歸商業。她補充說,目前“復蘇計劃”正在推進兩筆比較大的交易,涉及兩家交易平臺。[2023/1/10 11:04:15]
Liveness可以認為與CAP中的Availability等價。當網絡出現partition時,比如海底光纜斷裂,將全球互聯網分割成兩個部分,整個區塊鏈系統是否能正常寫入新的交易?喜歡Finality的共識算法,這時候會選擇無限等待,新的transaction無法寫入,直到海底光纜修復,兩邊的互聯網互通;喜歡Availabilty的共識算法,這時候兩邊網絡會獨立運作,數據分家了,兩邊的全節點中的數據變得不一致。比如Tendermint就是這類,犧牲Liveness追求DeterministicFinality。假設海底光纜斷裂將網絡分為兩邊,那么每一邊都有一半的validator,于是在vote和commit階段,每一邊的所有validator,100%全部投票贊成某個proposalblock,最多只能收到50%的投票,達不到2/3,于是整個區塊鏈網絡會無限等待,直到收集到2/3投票為止。在這個等待期間,無法出下一個塊,新的交易也無法寫入,整個網絡陷入癱瘓。比特幣在碰到這種網絡分割的時候,兩部分的比特幣系統會繼續向前走,依舊可以寫入新的transaction,產生新的區塊,當海底光纜修復后,兩邊互聯網連通后,再選擇合并。在海底光纜沒斷之前,全球所有全節點的狀態是一致的,如下圖:當海底光纜斷裂后,全球網絡被分割為兩部分,兩個部分都會獨立出塊,這時候兩邊已經不一致了,但是兩邊各自是感知不到的,以為自己依舊是一條線性的區塊鏈,如下圖:左邊和右邊,雖然依舊每10分鐘挖出一個新塊,但是左邊的block07和右邊的block07,blockhash是不相等的。這時候比特幣網絡還是available的,只是Finality破壞了。當海底光纜修復后,這時候,兩邊互相同步block,會意識到出現了分叉,如下圖:現在全球所有全節點的狀態,變成上圖,有分叉了,由于兩邊的高度都是8,無法決定哪個分叉是正確的,這時候,就看礦工支持哪邊了,哪邊的算力高,哪邊先出了新塊,那么哪邊就勝出了,短的那條鏈會被拋棄,比如假設右邊搶先新出了一個塊,那么右邊勝出,左邊分叉被拋棄,所有全節點中的數據又變成一條線性區塊鏈,達成一致了,如下圖:其實即使海底光纜不斷,網絡沒有partition,也會經常發生兩個miner各自同時挖出一個新塊的情況,這時候就比拼誰運氣好,下一個新塊繼承哪一個分叉哪一個就勝出。也就說比特幣理論上永遠沒有一個確定性的一致性狀態,分叉隨時會在任意高度上出現,因此比特幣犧牲了一點Finality,換取更強的Liveness。NetworkAssumption
V神:DeFi實現zk-rollups比較困難:以太坊創始人V神剛剛發推稱,為DeFi實現zk-rollups比較困難,因為所有的DeFi需要支持SNARK內部的通用計算。[2020/9/1]
所有分布式共識算法都對網絡有一個隱含的假設前提。先說一下網絡的分類:同步:消息一定會在某個的時間T內被送達,這個上限(upperbound)的值T,是已知的常量,所有節點都是知道的。如果消息在T時間內沒有送達,就不對這個消息作指望了,節點認為該消息已經丟失,不會繼續等它。所有節點都有條不紊的,每經過一個時間T,就往前進一步,非常整齊。半同步:消息一定會在某個的時間T內被送達,但這個T的值,不是固定的值,而是動態變化的,例如是根據網絡狀況動態計算出來的。所有節點異步:消息會在任意時間到達,可能很快,也可能很慢,總之沒有一個明確的上限(upperbound)甚至無限期延遲,無論多晚到達,節點都要接受并處理這個消息,不能簡單的因為超時就丟棄消息比特幣對網絡的假設就是網絡是同步的,時間上限是10分鐘左右,一個Miner挖出一個block后,向全網廣播,這時候整個比特幣系統,期望就是這個block在10分鐘內會被所有在線的全節點fullnode收到,意思就是說每隔10分鐘,所有全節點都會整整齊齊地往前走一步,即往自己的區塊鏈尾部追加一個block。即使網速很快,例如3分鐘不到,這個新block已經被所有全節點收到了,比特幣還是會每隔10分鐘往前走一步(出一個新塊)。以太坊類似,不過時間上限是15秒。Tendermint在propose階段假設網絡是半同步的,因為在這一步會有一個超時時間,如果超過時間還沒收到一個proposal新塊,那么其他validator就會認為proposer節點已經掛了,于是出一個空塊,直到round-robin到下一個proposer。Tendermint在prevote和precommit都需要收集超過2/3的投票,是無限等待的,也就是在這兩個階段是假設網絡是異步的。最終,Tendermint對網絡的要求是半同步的。pBFT在pre-prepare,prepare,commit三個階段全部是異步的,既然是異步的,沒有超時機制,那怎么往前進展呢?收集到了超過2/3就能繼續往前進。不過所有節點在收到一個客戶端的請求,都會啟動一個定時器,如果在某個時間內該請求還沒有執行完畢,就會觸發ViewChange。ViewChange這個部分是半同步的。在這里可以體會到Tendermint相比pBFT的簡化之處了。Tendermint把超時機制挪動到了propose階段,如果proposer在規定時間內,廣播出了一個proposalblock,那么就前進到下一步,如果超時了,也前進到下一步,不過這個是proposalblock是一個空塊。也就是無論如何,propose階段都會往前進入到下一步。但是Tendermint的pre-prepare是異步的,有可能永遠卡主。pBFT把超時機制挪動到了ViewChange這一部分,因此pBFT就多出來一個ViewChange步驟,比Tendermint復雜了一些。Tendermint通過提交空塊和round-robin更換proposer節點,而pBFT則是通過ViewChange來更換primary節點。Tendermint消除了復雜的ViewChange這一步驟。除了消除ViewChange這一點,Tendermint還在另一個地方有所簡化,Tendermint的所有信息都存儲在blockchain里。而pBFT是1999年提出來的,那時候還沒有blockchain這個東西,因此pBFT的所有節點雖有有一致的數據,但數據是分散存放的。pBFT的每個節點的數據包括:Thestateofeachreplicaincludesthestateoftheservice,amessagelogcontainingmessagesthereplicahasaccepted,andanintegerdenotingthereplica’scurrentview.Blockchain就是一個分布式數據庫,好比在MySQL這類DBMS數據庫沒出現之前,人們都是把數據寫入文件然后存在硬盤上,發明出各種奇怪的文件格式和組織方式。有了MySQL后,管理數據就方便多了。同理,Tendermint把數據全部存入blockchain,pBFT沒有blockchain這樣一個分布式數據庫,所有節點需要自己在硬盤上管理數據,比如為了壓縮消息日志,丟棄老的消息,節省硬盤空間,引入了checkpoint的概念。Tendermint和pBFT關系類似于Raft和Paxos的關系,Tendermint是pBFT的簡化版,是針對blockchain這個場景下的簡化版pBFT下圖是Tendermint的算法流程圖:下圖是pBFT的算法流程圖:未完待續。。。參考資料
現場 | 比原鏈鐘立飛:公鏈還是處于比較初級的階段:金色財經現場報道,4月11日,比原鏈技術運營總監鐘立飛在由金色財經主辦的金色沙龍深圳站第二期圓桌論壇環節表示,公鏈還是處于比較初級的階段,整個行業肯定是處于泡沫破滅期的低谷,但拋開Token,單純從區塊鏈技術上說,區塊鏈的熱度遠比不上AI或者大數據。同時,他表示,當前除了公鏈在金融以及游戲領域有諸多常識之外,還是遠遠達不到大規模商用的進展。不管是技術成熟度還是應用成熟度,都還是處于比較初級的階段,還需要時間。[2019/4/11]
1999.Castro.PracticalByzantineFaultToleranceTendermint:ByzantineFaultToleranceintheAgeofBlockchainsConsensusCompare:Caspervs.TendermintAProofofStakeoverviewComparedwithtraditionalPBFT,whatadvantagedoesTendermintalgorithmhas?Synchronous,partiallysynchronousandasynchronousconsensusalgorithmsGRANDPABlockFinalityinPolkadot:AnIntroduction(Part1)FinalityinBlockchainConsensus
百人圓桌 鈦云科技鄢傲:DPoS是一種比較符合國情和人性的機制:在金色財經百人圓桌EOS系列問題上,對于“更看好哪一種共識機制?給DPoS機制打多少分(滿分10分)”的問題,鈦云科技/招股科技鄢傲表示:我更看好DPoS,這是一種比較符合國情和人性的機制,沒有絕對的多中心化。一個高效、穩定的網絡一定需要一些強有力的見證者和參與者,出塊節點和備選節點機制可能比較符合政府監管的需求,將來商用的區塊鏈極有可能采取這種方式。首先,機制很環保,其次,能夠加入主權節點用于監管和宏觀管理,符合國情需要。我給9分。[2018/6/20]
金色財經數據播報 美元、USDT的比特幣交易貨幣占比較一個月前相比均出現下跌現象:據cryptocompare數據顯示,在比特幣的交易貨幣占比中,美元交易占比目前為18.19%,交易額為4.27億美元,與一個月前的6.98億美元相比,交易額下跌了2.71億美元;USDT目前的交易占比為17.23%,交易額為4.02億美元,與一個月前的4.87億美元相比,交易額下跌了0.85億美元。[2018/5/21]
本文來自Bibox,Odaily星球日報經授權轉載。:給債券插上區塊鏈的翅膀 錢的響動在哪里 最近數字資產市場最熱的當屬“STO”.
1900/1/1 0:00:00編者按:本文來自白話區塊鏈,作者:孫副社長,星球日報經授權發布。在今天的文章開始之前,各位讀者不妨先問自己一個問題:“對自己來說,阿里意味著什么?”答案可能是多種多樣的:普通用戶會說,阿里意味著.
1900/1/1 0:00:00編者按:本文來自 哈希派 ,作者:不碎,星球日報經授權發布。!webp\"data-img-size-val=\"800,450\"\u002F\\>西非經共體議會將舉行會議討論加密貨幣:西非國.
1900/1/1 0:00:00本周,國內發布報告,要求進一步整治區塊鏈項目。在區塊鏈技術方面有許多鼓勵政策,并創立區塊鏈產業試驗區.
1900/1/1 0:00:00本文來自:區塊律動BlockBeats,作者:區塊律動0x22,星球日報經授權轉發。上周二的早晨,想要像往常一樣打開區塊鏈媒體平臺的人們發現,又一波封號潮來臨了.
1900/1/1 0:00:0011月6日,比特幣礦商Bitfury宣布了其8000萬美元的最新融資。該輪融資由歐洲風險投資基金KorelyaCapital牽頭,韓國互聯網巨頭NaverGroup,亞洲機構MacquarieC.
1900/1/1 0:00:00