Figure1.Event-focusedvs.State-focusedDesign.png
Overview
NervosCKB(以下簡稱CKB)是一個以通用共同知識庫(Appendix:CommonKnowl-edgeBase)為設計目標的區塊鏈。CKB網絡由存檔節點、共識節點和輕節點組成:
存檔節點:CKB全節點,對新的區塊和交易進行驗證,中繼傳播區塊和交易,保存CKB上所有的交易歷史。存檔節點能提高整個網絡的健壯性,為CKB上的應用提供歷史查詢。共識節點:參與共識協議的CKB節點。共識節點接收新的交易,將交易打包成塊,并對新生成的區塊產生共識。共識節點不需要保存所有的交易歷史。輕節點:用戶通過輕節點使用CKB網絡,輕節點只保存非常少量的數據,可以運行在桌面電腦或者是移動設備上。CKB節點通過點對點網絡協議組成一個分布式網絡,對區塊和交易數據進行轉發和廣播。共識節點運行混合共識協議,以一定的時間間隔產生新的區塊并形成共識,新區塊會被所有節點承認并追加到區塊鏈尾部,新區塊中的交易會更新CKB的狀態。
ANewDAppParadigm
CKB提出一種全新的分布式應用范式,該范式由以下五種元素組成:
CellTypeValidatorGeneratorIdentity通過這五種元素,我們將分布式應用徹底解耦成計算、存儲和身份三個方面。在此基礎上,計算進一步分化為生成(Generator)和驗證(Validator)兩個步驟,存儲(Cell)也進一步通用化,可以支持任意結構化(Type)的數據。CKB中的分布式應用,可以使用Type定義合適的數據結構,將應用數據存放在多個Cells中;應用的執行邏輯由Generator實現,狀態驗證邏輯由Validator實現;Generator在客戶端運行,用戶進行操作時生成新的應用狀態,新狀態被打包在交易中發送到全網;網絡中的節點先驗證交易發送者的身份,然后使用Validator對交易中新狀態的有效性進行驗證,驗證通過后將新狀態保存到CKB中。
CKB以狀態為核心設計數據流及經濟激勵,交易中包含的是新的狀態,而不是觸發狀態機的事件。因此,CKB區塊鏈中直接保存了狀態數據,狀態隨著區塊一起同步,無需額外的狀態同步協議,降低了系統復雜度,提高了系統可用性。分布式應用的狀態被剝離到Cells中保存,Validator和Generator內部沒有任何狀態,計算結果完全依賴輸入,因此都是確定性的純函數(Purefunction),容易組合形成更復雜的邏輯。CKB分布式應用使用的是一種近似LambdaCalculus的計算范式,能夠實現與圖靈機相同的計算能力。
表1將Bitcoin、Ethereum和NervosCKB進行了比較。
StateGenerationandValidation
在CKB中狀態生成和驗證分離,兩個階段可以既可以使用不同的算法,也可以使用相同的算法。
對于一般的場景,目前還沒有通用且高效的簡化驗證算法的方法。在這種情況下,我們使用相同的算法進行狀態生成和驗證:客戶端使用該算法生成新的狀態,節點利用交易中記錄的依賴狀態作為輸入,執行同樣的算法,對比輸出的狀態是否與交易中記錄的新狀態相同,相同則驗證通過。在使用相同算法的情況下,狀態生成和驗證只有執行環境的差別,沒有計算復雜度的差別。將生成和驗證分離,生成轉移到客戶端執行的好處是:
確定性:交易的確定性是分布式應用的核心訴求之一。交易時延的確定性(HybridConsensus)已經得到了廣泛的重視,但交易結果(即由交易產生的新狀態)的確定性卻往往被忽視。如果狀態在節點生成,用戶在發起狀態生成請求時無法完全確定請求被執行時的環境,由此可能產生用戶不希望的執行結果。在CKB中,由于新的狀態由用戶生成,由用戶完全確定新狀態之后再廣播,交易所能觸發的狀態變更用戶可以完全確定。要么交易通過驗證,由用戶生成并確認的新狀態被接受,要么交易沒有通過驗證,不造成任何狀態改變(圖2)。可并行性:如果狀態在節點生成,節點在處理交易前無法判斷該交易依賴哪些狀態,也就無法判斷交易的相關性。在CKB中,由于交易顯式地包含了交易依賴的舊狀態以及生成的新狀態,節點可以直接判斷交易之間的相關性(Transaction)。無相關性的交易可以通過各種方式并行處理,包括多核并行及分片。并行處理交易是解決區塊鏈性能擴展問題的關鍵。計算分布式程度高:充分利用客戶端計算資源,減輕節點計算負擔,整體效率更高。客戶端更靈活,容易與客戶端所在平臺集成:雖然使用相同的算法,但是生成和驗證可以使用不同的方法實現。客戶端可以靈活選擇合適的編程語言來實現生成算法,計算效率可以更高,生成程序可以無縫集成到運行平臺中,提供最好的用戶體驗。對于許多特定類型的場景,我們可以找到計算復雜度遠低于生成算法的驗證算法,最典型的例子是UTXO賬本和非對稱簽名。一個很有趣的例子是涉及排序和搜索的算法:平均復雜度最好的排序算法QuickSort的計算復雜度是O(NlogN),而驗算排序的復雜度總是只有O(N);如果要搜索一個元素在數組中的位置,在數組已經排好序的情況下計算復雜度為O(logN),而驗算的復雜度是O(1)。對于越復雜的場景,出現生成與驗算復雜度不對稱情況的概率更高。
Nervos Grants 項目黑曜石實驗室正式發布Web 版CKB Studio IDE:據官方消息,Nervos Grants 項目黑曜石實驗室正式發布Web 版CKB Studio IDE,開發者可直接使用基于AWS 等云服務的Nervos節點,在網頁端開發 CKB dApp。
Nervos Grants 團隊黑曜石實驗室(Obisidian Labs)今天正式發布了基于 AWS 等云架構的 Web 端 CKB Studio IDE。云端 IDE 實現了和桌面端 IDE 同樣強大的功能,包括完整的代碼編輯器、交易構造器、云編譯器、密鑰管理、區塊瀏覽器等模塊。目前,CKB Studio 已經完整支持 Mac OS、Windows、Linux 等全部主流操作系統及 Web 云端,并在 GitHub 上開源。
黑曜石實驗室(Obsidian Labs)成立于美國硅谷,旗下的 IDE 系列產品是世界各國區塊鏈開發者最常使用的開發環境工具。[2020/12/1 22:44:33]
在可以利用這種不對稱性的情況下,節點處理效率會有極大的提升,更多的計算細節只存在于客戶端,也更有利于算法保護和隱私保護。隨著密碼學技術的發展,我們可能會發現為通用問題設計非對稱生成和驗證算法的方法,例如通用的非交互式零知識證明。CKB的狀態生成與驗證分離架構也能夠為其提供恰到好處的支持。
Figure2.Non-deterministicvs.DeterministicStateGeneration.png
下文將對CKB的Cell數據模型及交易數據結構作示意性的描述,目的是更好的解釋CKB的功能。在CKB的具體實現中,需要考慮包括激勵一致、執行效率在內的其它因素,數據結構會更為復雜,相關細節將在專門的技術文檔中描述。
Cell
CKB中數據的可信度來源有兩種,一種是數據可以客觀驗證,一種是數據經過特定身份用戶的背書。因此,CKB中數據的最小單元必須包含以下要素:
數據本身數據的驗證方法數據提交者的身份Cell是CKB中的最小數據單元,可以存放任意的數據。Cell包含以下基本內容:
type:Cell的數據類型。capacity:Cell容量,可存放數據的最大字節數。data:Cell實際存儲的二進制數據,可以為空。包含data在內,cell占用的字節數總是小于等于capacity。owner_lock:通過腳本表示的Cell所有者。Cell所有者可以轉讓Cell。Cell一旦創建無法更改,是一種不可更改(immutable)的數據單元。對Cell的更新,實質上是通過創建所有權相同的新Cell來實現。用戶通過交易提交包含新數據的新Cell,同時使老的Cell失效(見LifeCycle)。因此,CKB也可以看作是一個支持版本的數據倉庫,最新的Cells代表了數據倉庫的當前版本,已經失效的Cells代表了數據倉庫的歷史。
對Cell的操作權分為兩種,所有權和使用權。Cell的owner_lock規定了所有權,即轉讓Cellcapacity的權利;Cell的data_lock規定了使用權,即創建新的Cell來更新Cell內容的權利。Cellcapacity可以一次全部轉讓,也可以部分轉讓,部分轉讓會創建新的Cell(比如一個capacity為10的cell變成兩個capacity各為5的cell)。Cellcapacity的增長速度由共識參與度及流動投票決定。
Cell的lock腳本由CKB支持的虛擬機執行,用戶在更新Cell數據或是轉讓Cell時需要提供相應的證明作為lock腳本輸入,如果lock腳本執行結果為True則證明用戶具有相應的權限,可以進行操作。
lock腳本表達了Cell的操作權限,可以代表單用戶,也可以是門限簽名或者更復雜的權限。Cell具有很好的隱私性,用戶通過使用不同的lock腳本,可以很輕松地使用不同的假名(Pseudonomy)來管理自己的Cells。Cell的所有者和使用者可以是相同的用戶,也可以是不同的用戶,這也意味著CKB使用者不需要擁有Cell就可以使用CKB,使用門檻低。
LifeCycle
Cell生命周期有兩個階段,新創建的Cell處于第一個階段P1。Cell是不可變數據對象,一旦被創建其內容不能被修改,Cell的更新通過Transaction實現:Transaction以需要被更新的P1Cell作為輸入,以Generator產生的包含新狀態的P1Cell作為輸出。
Nervos生態項目Portal?Wallet將上線COFFEE:據官方消息,Nervos生態項目Portal?Wallet將上線COFFEE?Token。COFFEE可在Portal?Wallet內兌換任意種類的星巴克咖啡券,用戶憑券可在星巴克門店內兌換咖啡。為紀念CKB主網“Lina”于2019年11月16日正式啟動,COFFEE將限量發行1116枚,無任何販售或增發,COFFEE?Token僅通過Nervos的線上、線下活動或見面會進行發放。[2020/11/16 20:57:28]
一個P1Cell只能被使用一次,不能被用作兩個不同Transaction的輸入。P1Cell被使用后進入第二個階段P2,P2Cell不能再用作Transaction輸入。我們把所有的P1Cells形成的集合稱為P1CellSet(P1CS),P1CS中存儲了CKB當前所有的共同知識;所有的P2Cells形成的集合稱為P2CellSet(P2CS),P2CS中存儲了CKB所有的歷史狀態。
CKB網絡上的全節點只需要P1CS就可以驗證Transaction,P2CS可以按照一定的策略清理。P2CS可以保存在存檔節點(ArchiveNode)或者是分布式存儲網絡上。CKB輕節點只需要保存區塊頭和特定的Cells,不需要保存完整的P1CS和P2CS。
Type
CKB為Cell提供了類型系統,用戶可以創建自定義的Cell類型。通過類型系統,我們可以在CKB中定義不同結構的共同知識以及相應的生成驗證規則。
創建新的Cell類型需要定義DataSchema和Validator兩個要素:
DataSchema:定義新類型的數據結構。Validator:定義新類型的驗證程序。DataSchema和Validator的定義也是一種共同知識,存放在Cell中。每一個Cell都有一個且僅僅一個類型,多個Cell可以屬于同一個類型,也可以屬于不同的類型。
DataSchema提供該類型的數據結構定義,使Validator可以理解和使用Cell中保存的數據。Validator為驗證程序,由每一個節點使用CKB支持的虛擬機執行,以交易的Deps,Inputs和Outputs作為程序輸入(Transaction),能夠通過驗證就返回True,不能則返回False。Cell的創建、更新和銷毀可以使用不同的驗證規則。
Index
用戶在定義DataSchema時可以設置索引,添加了索引的數據字段能夠獲得額外的支持,包括能夠在Validator或是owner_lock/data_lock中使用的條件查詢指令以及聚合函數。例如,眾籌發起方可以生成一個IdentityCell(Identity),在其data_lock中利用條件查詢和聚合函數判斷屬于這個identity的代幣總數是否已經達到眾籌目標,實現有上限的眾籌。
Identity
Identity是一種系統類型,用戶可以任意創建屬于自己的IdentityCell。IdentityCell可以作為Celldata_lock/owner_lock使用,Cell更新或者轉讓時,需要提供對應IdentityCelldata_lock的解鎖腳本(圖3)。
Identity是廣義的身份,Identity可以對應個人或者機器實體的任何身份側面。Identity是Nervos網絡中分布式身份協議NIP(詳見NervosIdentityProtocolPaper)的基礎。通過NIP,Nervos網絡引入CA證書,可以兼容現有的PKI體系,用戶可以表達自己的社會身份,分布式應用可以基于身份構建。IdentityCell中可以存放公開身份信息,或者是身份信息摘要,由用戶在必要時與分布式應用交互,提供所需的詳細信息。
Figure3.IdentityCell.png
相對于UTXO或是賬戶,Cell是一種更加通用的存儲模型。UTXO模型和賬戶模型都可以表達資產和所有者之間的關系:UTXO以資產為基礎定義所有權(鎖腳本),賬戶則以所有者為基礎記錄資產(賬戶余額)。UTXO模型中的帳目變動更清晰,但顯式賬戶概念的缺乏使表達能力本就欠缺的腳本更加難以使用,也無法記錄權限等賬戶元信息。賬戶模型容易理解,可以很好的支持身份和權限系統,卻有交易難并發的問題。支持類型和Identity的Cell設計集成了這兩種模型的優點,創造了一種更加通用的數據模型。
現場 | Nervos基金會聯合創始人呂國寧:區塊鏈需要互操作性2.0:金色財經現場報道,由Web3基金會主辦的Web3大會10月29日在上海舉行。Nervos基金會聯合創始人兼COO呂國寧在會上表示,區塊鏈需要互操作性2.0,互操作性2.0要求,用戶能夠使用任意的錢包和地址和所有的區塊鏈交互;開發者一種代碼能運行在各種鏈上;資產能夠在多條鏈之中自由流通。互操作性2.0未來甚至兼容互聯網協議,直接把互聯網用戶引入區塊鏈世界。[2020/10/29]
Transaction
Transaction表達了Cells的轉讓和更新。在一個Transaction里面用戶可以轉讓Cell,或是更新一個或者多個Cell的內容。Transaction包括以下基本內容:
deps:依賴集合,對交易進行驗證所依賴的只讀數據,只能是P1Cells的引用或者用戶輸入。inputs:輸入集合,包含需要被轉讓/更新的Cells,只能是P1Cells的引用及相應的解鎖腳本。outputs:輸出集合,包含新產生的P1Cells。由于Cell的不可變更性,更新Cell時不會直接修改舊的Cell,而是會產生一個新版本的Cell,這些Cell版本可以前后銜接在一起,形成Cell的“版本鏈”:某一次Cellcapacity轉讓時創建了這個Cell的第一個版本,對Cell的后續更新形成了這個Cell的一系列歷史版本,在版本鏈的最后(Head)是Cell的最新版本。CKB是所有Cell版本鏈的集合,所有CellHeads的集合是CKB的當前版本。
CKBTransaction中包含的deps和inputs使節點可以方便地判斷交易間的依賴關系,對交易進行并行驗證(圖4)。Transaction中可以混合多種類型的Cell,可以方便的實現跨類型的原子性操作。
CKBCell模型和Transaction的設計使CKB對輕節點更友好。由于所有的狀態都在區塊中,區塊同步協議也支持了狀態同步。輕節點只需要同步區塊,不需要計算(生成狀態),就可以獲得新的狀態。如果區塊中只保存事件,則需要全節點支持額外的狀態同步機制。在缺乏激勵的情況下,區塊鏈協議之外的額外機制很難大范圍的部署。在區塊鏈協議內同步狀態,使輕節點與全節點之間的地位更平等,系統更加健壯和去中心化。
Figure4.TransactionParallelismandConflictDetection.png
Generator
Generator是生成程序,用來生成符合類型定義的新的Cells。Generator在發起交易的客戶端本地執行,以用戶的輸入以及現有的Cells作為輸入,生成包含新狀態的Cells作為輸出。Generator用到的輸入以及產生的輸出共同構成一個Transaction(圖5)。
Validator和Generator可以使用相同的算法,也可以使用不同的算法(Overview)。Generator可以接受一個或者多個相同或者不同類型的Cell引用作為輸入,可以產生一個或者多個相同或者不同類型的新Cells作為輸出。
通過定義DataSchema,Validator和Generator,我們可以在CKB中實現任意共同知識的驗證和存儲。例如,我們可以定義一個AlpacaCoin的新類型:
DataSchema={amount:“uint”}//pseudocodeofcheckercheck()://1.檢查inputs列表中的項都有正確的解鎖數據//2.計算inputs列表中AlpacaCoin的amount之和IN//3.計算outputs列表中的AlpacaCoin的amount之和OUT//4.比較IN和OUT是否相等,并返回結果Validator=validate(contextctx,inputs,outputs)//pseudocodeofgeneratorgen()://1.查找用戶能夠花費的,屬于AlpacaCoin類型的Cells//2.根據用戶輸入的轉賬地址和金額,生成類型為AlpacaCoin的屬于收款人的Cell和找零Cell//3.返回被使用的Cells列表,以及新生成的Cells列表,這些Cells將用于構造交易Generator=gen(contextctx,addressto,uintamount,...)
Nervos將集成Chainlink預言機 以確保鏈外連接的安全性:8月17日,公鏈項目Nervos宣布與Chainlink集成,將去中心化預言機解決方案引入Nervos網絡,以借助Chainlink獨立安全節點運營商集合和高質量的數據資源,確保鏈外連接的安全性。[2020/8/17]
Figure5.TransactionandCellGeneration:Validation.png
LayeredNetwork
在Nervos網絡中,CKB和Generator構成上下層的關系,CKB是共同知識層,而Generator是生成層。CKB只關心Generator產生的新狀態,不關心狀態產生的具體方式,因此Generator的具體實現形式是非常多樣化的(圖6)。
分層架構將數據與計算分離,使每層都可以獲得各自的靈活性與可擴展性,使用不同的共識協議。CKB作為最底層,擁有最廣泛的共識,是整個Nervos網絡的基礎。不同的應用所需要的共識范圍不同,強制所有應用都在最廣泛的共識下進行會導致效率低下。在Nervos網絡中,業務參與方可以根據自己所需的共識范圍選擇合適的Generator,只在需要與局部共識范圍外的其他服務交互時,將局部狀態提交到CKB上,使其獲得更廣泛的認同。
Generator可以包括(但不限于)以下幾種形式:
客戶端在用戶設備上直接運行Generator生成新狀態。通過輕客戶端提供的接口或是客戶端程序庫,生成算法可以用任何編程語言實現。狀態服務用戶使用中心化服務,由服務器執行生成算法,生成新狀態。目前所有的互聯網服務都可以通過狀態服務的方式使用CKB,使服務狀態數據獲得更大的信任和流動性。例如,游戲公司可以使用狀態服務架構,在中心化服務中執行游戲邏輯,生成道具信息;在CKB中定義道具類型和總量等規則,將生成的道具登記并確權。結合NervosIdentityProtocol,信息發布機構提供基于身份的可信Oracle,為Nervos網絡中的其他服務提供必要的信息。狀態通道兩名或多名用戶使用點對點網絡連接通信,共同生成新的狀態。狀態通道的參與者可以通過CKB登記和獲取參與者信息,建立通道連接。參與者可以在CKB上提供保證金,使其它參與者相信通道能夠順利運行。狀態通道參與者之間可以使用共識協議或是多方安全計算技術來生成新狀態。生成鏈一個用于生成CKB新狀態的區塊鏈。生成鏈可以是公有鏈(例如任何使用EVM的區塊鏈),也可以是許可鏈(例如CITA以及HyperledgerFabric)。使用許可鏈可以將狀態計算限定在一定參與范圍內,保護計算隱私,同時獲得很好的性能。在應用鏈中,參與者共同執行狀態生成并相互驗證計算過程,在狀態需要更廣泛共識時,將其提交到CKB中,使之成為接受度更高的共同知識。
Figure6.LayeredStructure.png
HybridConsensus
共識算法追求在網絡延遲和各類節點故障存在的情況下實現兩個目標:正確性和性能。正確性又包括一致性,指分布式系統中每一個節點的數據副本完全相同,以及可用性,指分布式系統能夠在有限的時間內響應用戶的請求。性能也包括兩個方面,一是交易延遲,即從客戶端提交Transaction到客戶端獲得確定性結果所需要的時間,越短越好;二是吞吐量,即系統每秒中可以處理多少筆交易。
公有鏈運行在開放的分布式網絡中,節點可以自由的加入和退出,在線節點不固定且變更頻繁,這些都是傳統BFT共識算法很難處理的問題。SatoshiNakamoto巧妙的引入經濟激勵以及概率性共識應對這些難點,因此要保證正確性需要額外的開放性與公平性。開放性使共識節點的加入退出無阻礙,無論是有100000個節點還是1個節點,公有鏈都能正常工作;公平性使共識節點可以獲得與所付出的努力成比例的回報。公有鏈共識算法的性能指標除延遲和吞吐量外,還需要考慮運行開銷。
以比特幣工作量證明(ProofofWork)為代表的Nakamoto共識擁有極佳的開放性和可用性,比特幣網絡中的節點可以任意的加入和退出,網絡性能隨著共識節點數量的增加能夠保持不變。但Nakamoto共識吞吐量低,以比特幣7筆交易每秒的處理速度,難以消化商業場景的日常需求。即使通過次級通道技術(例如閃電網絡)將大部分交易轉移到鏈下,通道的建立與關閉依然受到鏈上處理速度的制約,在網絡擁堵時甚至會影響到次級通道的安全性。Nakamoto共識以區塊投票,交易確認速度慢,通常需要10分鐘到一個小時,用戶體驗不佳。在分區的情況下,比特幣網絡能夠繼續提供服務,但交易是否被完全確認無法保證,無法滿足對交易確定性要求較高的商業場景。
動態 | Monero礦工利用RADMIN和MIMKATZ傳播惡意軟件:據scmagazine報道,Monero礦工正在利用RADMIN和MIMKATZ等工具,針對中國內地、中國臺灣、意大利和中國香港等地行業中的特定系統進行惡意軟件傳播。[2019/2/21]
經歷了30年發展的傳統拜占庭容錯(ByzantineFaultTolerance)共識可以實現媲美中心化系統的吞吐量和交易確認速度,但其開放性不佳,節點動態增減難度大,網絡性能隨參與共識的節點數量增加而迅速下降。傳統BFT共識對故障的容忍能力較低,在網絡分區時節點無法達成一致,網絡無法正常提供服務,難以滿足公有鏈對可用性的要求。
在研究和實踐中我們認識到,傳統BFT算法在正常路徑下邏輯簡單,但需要以復雜的邏輯應對故障情況;Nakamoto共識則以不變應萬變,無論是正常還是故障情況都是同樣的邏輯,但也因此影響了正常路徑下的系統性能。如果將Nakamoto和傳統拜占庭容錯兩類共識協議有機的結合在一起,新的混合共識在一致性、可用性、公平性及運行開銷等方面可以形成最佳組合。
CKB將按照混合共識的思路,設計并實現自己的混合共識算法,為交易提供見證。通過將Nakamoto共識和傳統BFT共識結合,我們既可以保留開放性和可用性,又可以在正常路徑下獲得傳統BFT共識的優秀性能,將交易時延降到最低,最大程度的提升系統吞吐量。
CKB以CellCapacity作為參與共識的條件。想要參與共識的節點需要抵押一定數量的CellCapacity作為保證金,用于確定共識節點的投票和獎勵分配權重。如果某個共識節點作惡,觀察到作惡行為的其它共識節點可以將證據提交到鏈上,導致作惡節點的保證金被系統罰沒。保證金機制能增加共識節點作惡的成本,提高共識的安全性。
CKB混合共識的詳細設計請參考CKBConsensusPaper。
Economics
經濟模型是公有鏈的靈魂。通過引入經濟激勵,比特幣第一次解決了開放網絡上的共識難題。每一個區塊鏈網絡都是一個通過經濟激勵結合在一起的自治共同體。一個優秀的經濟激勵制度應該引導區塊鏈的參與者為這個自治共同體作出貢獻,最大化區塊鏈的效用。
CKB經濟模型應該能夠激勵用戶、開發者和節點運行者合力為共同知識的形成與保存貢獻力量。CKB的經濟模型同樣以狀態為核心進行設計,通過CellCapacity增發和手續費兩部分獎勵產生激勵。
CKB狀態的形成與存儲都需要一定的成本。狀態的形成需要節點驗證,消耗計算資源,狀態的存儲則需要節點持續提供存儲空間。現有的公有鏈經濟模型只在處理交易時收取一次性手續費,一旦數據上鏈成為共同知識,則可以無需再付出任何成本,永久占用所有節點的本地空間。
在CKB中,Cell是狀態的存儲單元。未被占用的CellCapacity可以轉讓,具有流動性,但是被占用的Capacity不能被轉讓,失去流動性。因此,Cell的使用者需要為狀態的存儲支付流動性作為成本。Cell的使用時間越長,需要付出的流動性成本越高。通過使用流動性成本而不是預付費的方式,避免了預付費用完導致Cell被強制回收的問題。
CellCapacity的價格是對CKB中共同知識價值的直接度量。需要注意的是,Cell的使用者和所有者可能是不同的,所有者可以幫使用者支付流動性成本。更新Cell中的數據或是轉讓CellCapacity則需要支付手續費。共識節點可以設置自己愿意接受手續費水平,交易手續費高低是由市場決定的。手續費也可以由Cell所有者代替使用者支付。
當前主流用戶難以使用區塊鏈的一個重要原因是,交易手續費必須以原生代幣進行支付,由此要求用戶在使用服務之前自行尋找方法先獲取原生代幣,提高了使用門檻。另一方面,用戶已經習慣了基本服務免費,增值服務收費的商業模式,無論做什么都要收費也不符合主流用戶習慣。CKB通過允許Cell所有者代替用戶付費的設計解決了這兩個問題,為應用開發者提供了更多的商業模式選項。
系統手續費收入的大部分由出塊節點獲得,剩余的部分將用于支持Nervos網絡的開發、研究、運營等工作,以保證網絡的持續良性發展。手續費分配比例由流動投票(流動投票)決定。
除了用于支付共同知識的形成和存儲成本,CellCapacity還可以被用在共識抵押、流動投票等多個場景中。CKB的安全程度與共識節點抵押的代幣數量息息相關。共識抵押代幣越多,節點作惡成本越高,整個系統也更加安全。CKB的CellCapacity增發調節的目標之一是保證一定的共識保證金抵押水平,以此保證系統安全。通過調節增發比例,調節共識參與者可以獲得的無風險收益比例,進而調節共識的參與度。
CKB經濟模型的細節請參考NervosCKBEconomicPaper.
治理機制
作為Nervos網絡的基礎設施,CKB必須能夠與其所承載的生態同步進化,在不間斷運行的同時進行調整運行參數,或是進行更深程度的網絡升級。從區塊鏈發展歷史中我們能夠看到,社區達成共識或是網絡升級的成本過高將會阻礙創新,使網絡難以進化,無法生態發展的需求。
因此,CKB內置了流動投票和熱部署機制,使CKB成為一個能夠自我進化的分布式網絡。
流動投票
CKB的運行依賴一組系統參數,其中有一些能夠自動調節,有一些需要進行投票達成共識;CKB的代碼中可能會有bug,修復方案有可能需要投票共識;隨著Nervos生態的發展,CKB的功能需要持續升級,實現和部署新的功能也需要投票共識。因此,投票工具是CKB長期穩定運行必不可少的組件之一。
CKB支持流動投票(圖7)。每一位Cell所有者都可以參與到與CKB發展有關的決策中來,投票權重由用戶所持有的CellCapacity決定。在流動投票中,用戶可以設置自己的投票代表,由其進行代理投票。投票代表也可以設置自己的投票代表。考慮到提案專業度和參與激勵的問題,不同的提案可以設置不同的接受條件,例如參與率和支持率。
值得注意的是,CKB流動投票是Nervos社區共識的表達工具,不是共識形成工具。在投票之前,社區應該利用各種溝通工具對提案進行細致的考察,事先形成粗略共識。CKB流動投票細節請參考NervosGovernancePaper。
Figure7.LiquidVoting.png
Neuron
得益于Cell數據模型的抽象性,CKB的功能模塊可以利用Cell來實現和存放。我們把承擔CKB系統功能的Cell稱為Neuron,Neuron實質上是一種特殊的Cell類型,其使用者是CKB自身。
在功能變更/升級提案被實現為Neuron之后,社區使用流動投票對是否部署進行表決。在獲得社區共識后,新的Neuron將被部署到鏈上,修復系統bug或是提供新的系統功能。細粒度的Neuron升級能夠大大降低CKB的進化難度。
輕客戶端
節點完全對等的區塊鏈架構已經受到了嚴重的挑戰。公有鏈網絡上節點性能參差不齊,對等節點架構不僅對用戶硬件要求越來越高,也無法充分發揮高性能節點的潛力。越來越多的用戶放棄運行全節點,轉而使用輕客戶端以及中心化客戶端。全節點需要對所有區塊和交易數據進行驗證,對信任依賴最小,但開銷最大,使用非常不便。中心化客戶端則完全信任中心服務器提供的數據,放棄了驗證。輕客戶端則通過稍微增加對全節點的信任,大大降低了驗證開銷,對用戶體驗有很大的提升。
同時,移動設備已經成為人們日常使用互聯網服務的主要設備,原生應用也越來越流行。因此,對移動設備友好是CKB的設計原則之一,Nervos應用應該能夠流暢的運行在移動設備上,與移動平臺無縫的銜接。
CKB支持輕客戶端。CKB使用可證數據結構組織區塊頭,可以極大地加快輕客戶端的同步速度。得益于CKB以狀態為中心的設計,輕客戶端無需重復計算就能夠方便地直接同步到最新的狀態(P1CS)。使用本地保存用戶關心的少量P1Cells及網絡帶寬,輕客戶端可以提供更好的分布式應用體驗。
Summary
NervosCKB為一個全新的分布式應用網絡提供了共同知識層。NervosCKB以狀態為中心設計,采用更為通用的存儲模型,更好的平衡了激勵機制,得到了一個更具可擴展性的分布式應用范式。
Appendix.CommonKnowledgeBase
我們所掌握的共同知識是社會協作形成的基礎。我們在漫長的發展歷程中逐漸形成并認同的一系列概念,包括民族、宗教、國家、貨幣、企業、身份、信用等等,共同搭建了今天的社會結構。共同知識的形成和傳遞是人類社會的關鍵問題。如果我們能夠改進共同知識的形成和傳遞效率,哪怕僅僅是百分之一,也會對社會發展產生巨大的推進作用。
區塊鏈或許是一個新的答案。在區塊鏈網絡中機器接手了人的任務,實現了自動化的共識過程和可靠的知識傳遞,將共同知識的生產工業化。我們認為區塊鏈是一種可稱之為共同知識庫(CommonKnowledgeBase)的新技術。促進共同知識的形成和傳遞是區塊鏈的核心價值,也是區塊鏈上能產生代幣模式(Token)和密碼經濟學(Cryptoeconomics)的原因。
CommonKnowledge
共同知識(CommonKnowledge)是被一個群體共同接受的數據,群體的參與者不僅自己接受該知識,還知道群體中的其他人同樣接受該知識。一般的,我們可以根據形成方式將共同知識分為三種:
一種是依賴其“可獨立驗證性”來被參與者接受的。例如,“11897是一個質數”這個論斷的提出者如果可以同時提交一份如何驗證一個數字是質數的算法,就可以在不需要信任的前提下取得他人對這個論斷的共識,進而促成交易(比如用來確認對于某數字是否為質數的對賭)。在抽象的數學范疇內這樣的例子很多。
在更需要觀察實驗和經驗性依據的科學領域里,共同知識的產生依賴發現者在提交新發現的同時提交獨立驗證的方法,在經過科學社區獨立驗證后,承認并把該發現作為領域共同知識的一部分。大眾則是通過對科學方法和科學社區的信任而建立對這條共同知識的信任。
在商業場景中,共同知識是以信任和聲譽為基點的,因而存在共同知識提交方信任和聲譽能輻射到的范圍。也就是說,商業場景中的一則數據如果能夠成為交易參與者都能接受的共同知識從而促成交易,交易的參與者必須對該數據產生者有足夠的信任。共同知識是促成交易發生的必要條件。
比如說在中心化交易所的場景里,交易是基于對交易所本身的信任,以及由此推及的報價數據的準確性和交易的公平性而產生的。在信用卡境外消費的場景里,消費者和商家完成交易的前提是雙方對包括雙方銀行和信用卡公司等中間機構的信任。
共同知識有各種類型和存在形式,我們把能夠自動化共同知識的形成,存儲共同知識及相關證明的技術稱為共同知識庫。
BlockchainsareCommonKnowledgeBases
過去,共同知識需要群體內的個體之間進行各種繁雜的交流和相互確認才能形成,之后分散記錄在個體的大腦中。今天,基于密碼學和分布式技術的區塊鏈使得共同知識的產生和保存發生了質的變化。人們不再需要反復溝通以確保新知識在人群中達成一致,也不再需要將知識記錄在空間有限的大腦中。區塊鏈世界中的每一條數據,包括數字資產和智能合約都是共同知識,他們經過了全體節點的一致共識,以極低的成本在區塊鏈中不斷的形成和沉淀,卻比一般的數據蘊含了更大的價值。
區塊鏈是共同知識庫。加入一個區塊鏈網絡意味著共同驗證并認可網絡中的知識。交易經過節點驗證之后,與相關的證明一起被保存在區塊鏈中。區塊鏈的每一位使用者都能夠確信區塊鏈中的交易有效,也能夠確信其他使用者認可區塊鏈中的交易有效。
比特幣賬本是一種共同知識,比特幣網絡是第一個基于區塊鏈技術的共同知識庫。比特幣賬本記錄了從創世塊之后的所有被包括開發者、礦工和使用者在內的比特幣社區認可的用戶轉賬交易。
以太坊上的智能合約是另外一個共同知識的例子:以太坊支持圖靈完備并且擁有狀態的智能合約,能夠實現各種業務規則。智能合約的使用者知道智能合約的執行邏輯,并且知道合約的其他參與者也知道這一點。
GeneralPurposeCommonKnowledgeBase
讓我們考慮一個適用于形成和存放任何類型共同知識的通用共同知識庫(GeneralPurposeCommonKnowledgeBase)。它應該具有以下特征:
以狀態為核心,而非以事件為核心(Figure1)。數據模型足夠抽象和通用,允許用戶自定義業務數據模型。共同知識的驗證引擎足夠抽象和通用,允許用戶自定義數據驗證規則。如果說分布式賬本是數字資產的“結算層”,通用共同知識庫則可認為是各種類型共同知識的“結算層”。NervosCKB的目標是成為一個通用共同知識庫,作為整個Nervos網絡的公共狀態層,為上層應用提供狀態與信任基礎。
本文來源:Nervos官網
—END—
Tags:CKB區塊鏈IdentityCKB價格CKB幣區塊鏈工程專業學什么區塊鏈存證怎么弄區塊鏈技術發展現狀和趨勢Identity幣是什么幣
馬拉維這個東南部非洲的內陸小國,國土面積11.8萬平方公里,同我國的福建省差不多,人口1800萬。與國家同名的湖——馬拉維湖是非洲第三大湖,風光秀美。馬拉維是世界最不發達國家之一,極度貧困.
1900/1/1 0:00:00談區塊鏈是逃不開比特幣的,這里我們統一梳理一下貨幣、比特幣、加密貨幣、數字貨幣和貨幣數字化等概念知識的區分.
1900/1/1 0:00:0010月25日下午,現任盛大網絡旗下ActozSoft(亞拓士)董事長兼CEO、大幣網Dcoin交易所天使投資人郭海濱做客鏈節點ChainNode進行AMA.
1900/1/1 0:00:00隨著比特幣等加密貨幣在全球范圍內的關注度日益增長,頭部交易平臺的寡頭逐漸形成,占據了主流幣幣幣交易、合約交易的成交量及深度的80%以上,新興的數字資產交易平臺很難占有一席之地.
1900/1/1 0:00:00近幾年,隨著我國互聯網和移動支付高速普及,人們對“無現金消費”已經普遍接受,同時也對真正的“數字貨幣時代”產生無限遐想,紙幣有可能真正退出歷史.
1900/1/1 0:00:00無無害?健康戒煙? 揭開電子煙的“天使”面具國家煙草專賣局、國家市場監督管理總局近日對外發布通告要求,不得向未成年人銷售電子煙,不得通過互聯網銷售電子煙,不得通過互聯網發布電子煙廣告.
1900/1/1 0:00:00