摘要:狀態機模型區塊鏈用許多的節點共同模擬了一臺多復本的狀態機。區塊鏈共識的四個階段第一階段是加入共識加入共識階段決定了什么樣的節點可以參與共識協議。第四階段是退出共識這是常常被忽略的部分。
在接下來的秘猿科技小課堂里,我們會從技術角度、經濟模型設計角度、以及共識角度來拆解 Nervos 加密經濟網絡中,底層公鏈 CKB 的設計理念。而本文將會作為技術角度核心設計 Cell 模型的預備文章,通過本文,我們希望讀者能夠理解比特幣以狀態為中心設計的優勢!從而,能夠在接下來的幾篇文章中,更加充分的理解 Cell 模型對于比特幣/以太坊模型的傳承與突破。(PS.本文源于 2018 年初,秘猿科技在招商銀行總行舉辦的一次金融區塊鏈閉門會,公鏈 CKB 是對文中思想的具體實現。)
秘猿科技區塊鏈小課堂第 16 期
狀態機是計算機的一個基本模型,它可以分成二個部分:狀態和操作。狀態是指計算機里的數據;操作是指對數據進行的操作。如果把狀態機比喻成日常使用的數學計算器,計算器屏幕上顯示的就是狀態,按「按鍵」就是對計算器的操作。
狀態機模型
區塊鏈用許多的節點共同模擬了一臺多復本的狀態機。在許多區塊鏈或者分布式系統中,用戶發出的簽名交易包含了對狀態機的操作,節點執行共識協議對所有操作進行排序,然后按共識排好的順序執行操作,計算出新的狀態。
多復本狀態機
舉例:我們先保證所有節點初始狀態一致,就是讓每人手上的計算器開始狀態為數字 0。然后我們把要執行的操作廣播給每個操作員,這四個操作員算完后,這個計算器上的最終結果是一模一樣的。為什么會有一樣的結果?因為他們有一個相同的初始狀態。接著,我們用共識算法保證了相同的操作順序。所以最后一定有一個相同的最后狀態。
狀態機的概念在區塊鏈里面非常重要,但我們往往忽視其中的基本細節。設計區塊鏈最應該考慮的因素,是應該以狀態為中心,還是以操作為中心進行設計?這二種不同的設計理念會對整體架構產生很大影響,這也是比特幣和以太坊架構的一個根本區別:比特幣是以狀態為中心的設計,以太坊是以事件為中心的設計。
這兩者有非常大的區別。如果以事件為中心,計算是在節點上發生;以狀態為中心的話,計算是在客戶端發生。計算轉移到客戶端,節點的計算就相應減少。交易包含最后的狀態的話,節點可以很方便的判斷交易的相互依賴關系。計算在節點上發生的話,客戶端就可以很簡單。所以我們需要根據目標來權衡這個事情。其實很難說誰更好,只是看我們目標是什么。
如何設計賬本區塊鏈被稱為分布式賬本,記錄著所有者和資產之間的關系。賬本里有二個概念,一個是資產,一個是所有者。所以可以從二個方向去設計系統。
賬本設計
賬戶模型以「人」為核心建模,先建立賬戶的概念,再記錄他們的賬戶里有多少錢,以太坊、CITA 、Ripple 都是這個模型;以「資產」為核心建模,最基礎的概念是資產,比如 UTXO,在 UTXO 的基礎上去記錄所有權。以資產為核心建模,更適合并行處理,一個人所擁有的資產不再是一個字段,而是可能分成十份。我可以獨立去操作這十份資產。
RSM設計
以賬戶為核心的設計,交易并行處理更難,賬戶更改只能按照交易順序一個一個來。但是,賬戶模型可以很方便的去記錄賬戶相關的元數據,比如說這個賬戶有哪些權限。所以對于許可鏈來說,賬戶模型是非常適合的選擇。
如何選擇共識在公有鏈上,比特幣所開創的 Nakamoto 共識,在開放網絡下,引入了經濟激勵,在開放網絡下實現了對拜占庭錯誤的容忍,但也付出了性能上的代價。許可鏈中通常使用傳統拜占庭共識的變種,充分利用了分布式系統領域過去幾十年的研究成果。優點是延遲非常低、吞吐量很高。
在網絡分裂時,許可鏈是選擇網絡停止服務,等待網絡的恢復,來保證一致性;公有鏈則偏好可用性,在網絡分裂時可以容忍賬本分成二個版本,等網絡恢復之后,選擇其中一個版本作為正確的版本,廢棄掉另外一個版本。公有鏈想要的是 24 小時不間斷的服務;金融行業回滾的代價太大,想要的卻是一致性。所以選擇 C 還是選擇 A,取決于你的需求是什么。
區塊鏈共識的四個階段 第一階段是「加入共識」加入共識階段決定了什么樣的節點可以參與共識協議。比如:在比特幣中,一開始是任意節點都可以加入共識。現在則可以認為比特幣的共識加入機制變成了買礦機,有礦機才能參與共識。在 PoS 里面,則是需要持有代幣或者交保證金才能參與共識。在 DPoS 里面,代理人需要獲得足夠多的投票才能參與共識。學術界也有其他的研究,比如是加入共識也需要提供一個工作量證明。
通過加入共識階段的設計,我們可以把參與共識的節點范圍縮小。比如公有鏈上有一萬個節點,但是我們只要設計一個加入共識的機制,就可以把共識范圍縮小到 100 個節點,一旦我們可以縮小這個共識范圍,后面就可以用任意的方法去實現共識。
第二階段是「出塊」這個階段需要選擇一個節點來將交易打包,生成一個新的區塊。通常有三種方式:
1.共識節點按輪流順序出塊,比如 PoA。
2.采用隨機出塊方式,從 共識節點里隨機挑一個節點出塊,比如 PoW, NXT-PoS,DPoS。
3.在不出問題的情況下一直保持一個節點出塊,目前只有許可鏈會用這種方式。
涉及到共識投票的過程,這里的設計就非常多。現在大家經常在討論的一些新的共識方法,往往只是第二和第三階段的方案。
投票主要有用區塊投票和用消息投票兩種方式。在 Nakamoto 共識中,新制造的區塊是一張投票,下一個礦工挖出的塊是對之前一系列區塊的投票。每一個區塊都是一張票(嚴格來說票有權重,例如工作量證明),最后那條高度最長,包含的區塊(票數)最多,就是勝出的那條鏈。在許可鏈里面,常常通過節點之間交換投票消息來對新出的塊進行投票,所以在下一個塊沒有出之前就可以對這一個塊完成共識。
第四階段是「退出共識」這是常常被忽略的部分。在比特幣系統中,退出共識很簡單,停止挖礦就行了。在許可鏈中,我們本來是共識節點,現在不想做共識節點了,則需要有相應的設計,進行共識節點變更。
以上四個步驟是區塊鏈共識的一個完整流程。傳統 BFT 共識算法,發揮作用一般是在第三階段,在網絡異步的時候會涉及第二階段,基本上不討論其它兩個階段。所以我們如果要將傳統的共識算法融入到區塊鏈中,需要另外考慮的問題是非常多的。
未來我們能做什么在設計 CITA 的時候,我們是為企業級的用戶考慮的。他們擁有很好的計算資源,所以我們可以通過內部并行和分片的方式解決區塊鏈面臨的性能擴展的問題,把區塊鏈里每一個節點的能力放大一百倍,那么整個網絡的能力就會放大一百倍。這是我們 CITA 提出微服務的原由。我們把一個節點拆散,將節點內部變成一個集群是 CITA 能夠提升吞吐量的根本原因。在 CITA 里面有很多的微服務,比如 auth 服務是交易驗證的,是可以并行處理的。所以我們通過這個方式去解決性能瓶頸問題。
微服務CITA 的設計目標是多中心的區塊鏈網絡。這樣的網絡不需要太多的節點,就可以創造很高的信任。這是我們自己在某云平臺上做的一個實測。用了一個中型的云服務器,一般交易處理可以達到 15000 TPS,測試用例包括存證,合約創建和代幣轉移, 都有比較好的性能。特別指出的,CITA 這種架構對云計算很友好。我們更加傾向從架構的角度、從軟件的角度解決各種問題。盡量避免去依賴硬件。
性能對比在我們工程設計和實現中我們會遇到很多選擇,我們往往是選了一邊。有沒有可能兼得呢?我認為在一些地方是可以的。比如以太坊上的智能合約非常的輕量,通過 evm 合約構造分布式應用時,可以生成成千上萬的合約共同來完成一個使命。Fabric 上的合約可以用任意原生語言實現,執行環境比較重。CITA 則同時支持二種方式,既可以跑evm合約,又可以跑原生合約。
未來,我們還可以做什么呢?比如現在的共識算法的選擇傾向,已經很明顯的顯示出了混合共識的趨勢。我們是不是也可以做到這一點?以狀態為中心的設計還是以事件為中心的設計,是不是也能兼得?這正是我們最近在做的一些嘗試。如果能夠同時擁有魚和熊掌,我們可能能夠找到一種更好的區塊鏈,尤其是公有鏈架構。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24727.html
摘要:簡而言之,區塊鏈說的是由區塊用某種方式組織起來的鏈條。在本文中,我們說的區塊鏈技術實際上是一種分布式數據庫技術。事實上,當使用基于區塊鏈的系統時,人們對中心機構的信任轉而被對數學的信任所取代。因而,基于區塊鏈的系統是安全的。 區塊鏈是什么?我們來看一下區塊鏈在維基百科上被大家公認的官方定義: 一個區塊鏈是一個基于比特幣協議的不需要許可的分布式數據庫,它維護了一個持續增長的不可被篡改和修...
摘要:萬云專注于將區塊鏈技術應用于各個行業,促進區塊鏈在業務中的真正落地。共識算法是區塊鏈比較核心的技術之一,保證區塊一致性是其主要作用。 作者:萬云首席架構師兼產品總監李晨原文鏈接:http://mp.weixin.qq.com/s/snl...如需轉載請聯系萬云官方微信:萬云Wancloud 2018年開始,好像所有的人都在談論區塊鏈,資本、精英、草根不斷進場投身到區塊鏈的浪潮之中。在外...
摘要:維度公有鏈聯盟鏈私有鏈讓我們換一個維度,按照區塊鏈的服務對象來分公有鏈為公眾提供服務的區塊鏈。聯盟鏈私有鏈在具體實施上有不同的許可鏈選項可以是節點許可鏈出塊許可鏈或者完全許可鏈,由此也會有相應的優缺點,在此不再重復。 在我們討論區塊鏈時,分類是不可避免的一件事情。想必大家都聽說過「公有鏈、聯盟鏈、私有鏈、許可鏈、無需許可鏈」這些詞匯,雖然我們已經耳熟能詳,然而這些名詞并沒有公認的定義。...
摘要:的價值捕獲的代幣的存在是為了讓這條底層公鏈能夠抵抗攻擊。分別存在論證可以支撐的通脹率,但幾乎沒有用戶會選擇一個全球的無國界的但是每年通脹大于的貨幣。 著名區塊鏈投資機構 Multicoin Capital 近期推出《On Value Capture at Layers 1 and 2》一文,解釋了 Layer 1 和 Layer 2 的協議究竟如何捕獲價值: Layer 1 Token...
閱讀 3338·2023-04-26 03:05
閱讀 1458·2019-08-30 13:09
閱讀 1906·2019-08-30 13:05
閱讀 885·2019-08-29 12:42
閱讀 1385·2019-08-28 18:18
閱讀 3446·2019-08-28 18:09
閱讀 512·2019-08-28 18:00
閱讀 1712·2019-08-26 12:10