摘要:年,包括分層的網絡以及一個作為共同知識庫的區塊鏈,都已經成熟。是一個在設計上非常不同的公有鏈協議,也是網絡中的基礎層,是整個加密經濟網絡的信任引擎。主要指責是記錄和更新本地累計工作量最高的鏈,并維護鏈上數據的索引。
說到“猿”起,這些心里的想法能追溯到 2016 年,甚至更早。2017 年,包括分層的網絡以及一個作為共同知識庫(Common Knowledge Base)的區塊鏈,都已經成熟。因此 2018 年元旦一過秘猿科技的技術團隊就迫不及待的行動了起來,聚集在一間小小的辦公室,進行了 CKB 想法的第一次分享,第一次整理了開發計劃,在 1 月 23 日寫下了第一行代碼。從那時起到現在已經過去了 300 多個日日夜夜,經歷了多個迭代和沖刺,CKB 的版本終于來到了 0.1.0。設計框架基本成型,包括共識、Cell 模型、虛擬機以及網絡協議在內的組件都已經實現,開源的準備都已經完成。現在,我們終于可以說一句,Hello CKB!
我們朝著心中的加密經濟網絡邁進了歷史性的一步!
秘猿科技區塊鏈小課堂第 15 期
CKB 開源倉庫Nervos 網絡是一個分層架構的分布式應用網絡。CKB 是一個在設計上非常不同的公有鏈協議,也是 Nervos 網絡中的基礎層,是整個加密經濟網絡的信任引擎。CKB 從分層架構的角度出發,目標是成為資產存儲層和上層協議的仲裁層。
CKB 的開源倉庫如下:https://github.com/nervosnetw... - CKB 主倉庫
https://github.com/nervosnetw... - CKB 虛擬機倉庫。CKB 虛擬機是我們專門為區塊鏈設計的,使用 RISC-V 指令集[1],用來執行CKB上智能合約的虛擬機。
CKB 的編程模型由 Cell 模型和 CKB-VM 組成,在 CKB 上運行的 DApp 都有計算和驗證兩個部分[2],計算在鏈外運行,驗證在鏈上由 CKB-VM 執行。由于這是一種新的編程模型,我們通過如下三個倉庫提供了合約代碼及 SDK 示例:
https://github.com/nervosnetw...
https://github.com/nervosnetw...
https://github.com/nervosnetw...
請注意,CKB 還在快速開發迭代中,這里只是提供簡單的示例參考,CKB 的 API、編程模型和其它設計在未來都有可能發生變化。
作為一個開放的網絡,Nervos 通過 RFC (Request for Comments) 流程來定義規范和改進協議。我們歡迎社區通過RFC流程來和我們一起推動 Nervos 網絡的發展。Nervos RFCs 倉庫位于:
https://github.com/nervosnetw...
使用 Rust 作為主要開發語言 通過不同的功能模塊實現一個緊湊,完整的區塊鏈底層系統 基于 Cell 模型來擴展 UTXO
模型并支持存儲通用狀態 基于 Cell 模型和 CKB-VM 實現智能合約,合約計算驗證分離,計算發生在鏈下,驗證則在鏈上
支持智能合約的代碼邏輯和狀態分離 CKB-VM 使用 RISC-V 指令集,支持使用如 Ruby,Python 等高級語言來編寫智能合約
使用 Flatbuffer 實現數據結構的序列化,無需解析直接訪問序列化數據以及基于 Zero-copy 的高效內存使用效率
系統內部基于消息和 Channel 實現模塊通訊機制,在高性能,以及底層存儲訪問和索引訪問使用共享內存加鎖實現 安全的 P2P
網絡實現,具有更好的網絡安全性,對 DoS 和日蝕攻擊等有更好的抵抗性 更高效的節點間發現,同步協議
CKB P2P Network 示意圖 CKB 主要模塊SRC 模塊
存儲了 Main 函數,是整個項目的編譯入口模塊。
CORE 模塊
用于保存 CKB 的核心數據結構的定義,包括 Block,Cell,Transaction 等核心數據結構。
SPEC 模塊
鏈的共識配置,該配置會寫入創世塊。不同配置的節點直接無法通信。
SHARED 模塊
用于保存各個模塊公用的邏輯和代碼。
DB 模塊
封裝了底層的數據持久化層,CKB 底層存儲使用的是 KV 數據存儲,對應的實現有兩種,一種是基于 RocksDB 的實現,利用 RocksDB 將數據持久化到磁盤。另外一種實現是基于內存的模擬持久化實現,主要用于測試和開發等場景。
CHAIN 模塊
實現了區塊鏈數據結構。使用 DB 模塊進行持久化。Chain 主要指責是記錄和更新本地累計工作量最高的鏈,并維護鏈上數據的索引。在更新鏈時需要進行驗證,并同時更新索引。
POOL 模塊
Pool 模塊的主要功能是實現交易池,CKB 的 Pool 的特點是根據網絡狀況動態調整出塊時間,這樣會更合理的利用網絡資源和帶寬。交易池的設計和實現的最大挑戰是要同時兼顧多個目標并取得平衡。包括考慮交易的排序,依賴關系,以及整體性能,尤其是降低節點之間需要同步的數據并且合理的使用緩存。
PROTOCOL 模塊
用于存放節點間消息的結構定義,以及消息體的 Builder。消息使用 Flatbuffers 序列化。
NETWORK 模塊
點對的通訊的底層實現相關代碼,對 Rust-libp2p 進行了封裝,并將一些基礎協議通過服務的方式暴露出來。通過對 Libp2p 的抽象實現未來可定制的 Libp2p 更加方便。
SYNC 模塊
實現了 CKB 的網絡同步協議,包括兩個協議,分別是 Synchronizer 協議和 Relayer 協議。Synchronizer 協議的工作方式是 Head-first,更高效的利用網絡帶寬提升區塊下載效率,用于節點之間高速下載區塊數據。Relayer 協議是節點之間用來處理廣播和轉發新的交易。Sync 模塊在 Bitcoin 的 Head-first 同步,Compact Block 等協議的基礎上,結合了交易提交區,叔伯快統計等功能。
CKB-VM 模塊
CKB-VM 是一個獨立的實現。從實現角度,CKB-VM 是 RISC-V 的硬件 CPU 指令集的實現,所有的實現完全遵循 RISC-V 的標準。所以可以將 CKB-VM 當作一個 General Sandbox Runtime Module,CKB-VM 在項目中的作用是驗證狀態和執行智能合約,讓整個系統的計算層保持了最大限度的靈活性,如通過更新 Cell 中存儲的系統合約可以實現添加新的加密算法或其他功能等,并且 CKB-VM 的 Sandbox 的隔離性設計為執行合約提供了強大的運行安全保障。
MINER 模塊
通過可插拔實現了不同的共識算法替換,目前為了開發方便,實現了 CPU 和 Cuckoo 兩套內置共識算法,并且可方便增加外部實現的共識算法,如 ProgPow 算法。
NOTIFY 模塊
是一套用于內部模塊之間消息通訊的 Pub/Sub 模塊。
DEVTOOLS 模塊
包含用 Ruby 實現的腳本,用于開發過程中方便向區塊鏈發送測試數據。
閱讀代碼需要具備一些基礎知識,比如對 Rust 語言和生態,以及一些基礎的數據結構和算法熟悉,對區塊鏈的基礎概念如共識協議,智能合約等概念有一定的理解。
建議可以通過三條路徑來閱讀代碼:
數據同步,這部分的邏輯跟網絡相關,會涉及到網絡協議,協議的實現等,主要看 Protocol,Network,Sync 三個模塊。
數據存儲,可以了解數據結構設計和數據持久化實現,主要看 Core,DB,Chain,Pool 等模塊。
共識協議,需要對共識算法有一定的概念理解,主要看 Spec,PoW,Sync,Chain 等模塊。
Nervos CKB 仍然處于非常活躍的開發階段,代碼還沒有經過生產環境驗證,功能,模塊可能在未來還有較大調整,所以項目狀態和說明請以 GitHub 上最新源碼為準。
開發者鏈接開發者論壇:talk.nervos.org
Nervos RFC 入口:t.me/nervos_rfcs
Nervos CKB Dev Telegram:t.me/nervos_ckb_dev
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/24728.html
摘要:雙管齊下的發行政策在基礎發行結束之前,礦工的收入是這樣基礎發行二級發行手續費,與比特幣有著類似的發行曲線。在前個減半周期中,網絡會發出絕大部分的區塊獎勵,與比特幣不同的是,當基礎發行完全結束后,仍然有二級發行擔任出塊獎勵的角色。 在 31/32 期秘猿科技小課堂中,我們從經濟模型角度分析了現有區塊鏈的問題,以及狀態爆炸的問題。Nervos CKB 的經濟模型為了解決現有問題,提出了創新...
摘要:自我保障協議與加密經濟加密經濟是區塊鏈發展多年以后形成的全新經濟體。根證書頒發機構為互聯網創造信任,它們是整個互聯網信任體系的引擎。的信任引擎區塊鏈是創造信任的機器,是一個不依賴任何第三方的由算法和經濟激勵維護的的網絡。 在上一篇中,我們暢想了區塊鏈的未來。秘猿科技在行業內有著豐富的工程實踐經驗,在多年的實踐中,我們不禁思考:區塊鏈技術到底能用來干什么?區塊鏈是要像以太坊一樣成為世界計...
摘要:對于什么是區塊鏈,每個人都有自己的看法。不是將區塊鏈技術神化,就是一味的宣傳區塊鏈無用論。如果網絡是一輛汽車,區塊鏈就是發動機。沒有流動性就不是資產那么區塊鏈首先將會顛覆游戲行業。 對于什么是區塊鏈,每個人都有自己的看法。但是,如何通俗易懂的理清楚、說明白區塊鏈到底是什么?真正能夠做什么?恐怕少之又少。不是將區塊鏈技術神化,就是一味的宣傳區塊鏈無用論。秘猿科技從事區塊鏈基礎技術與工具研...
摘要:比特幣和以太坊像兩座最早出現的虛擬城市。下面我們先來分析比特幣和以太坊這兩個最大加密經濟體的經濟模型,我們經過研究發現它們在可持續性上都存在各自的問題。狀態爆炸比特幣與智能合約平臺,都 公鏈的競爭是慘烈的,這個戰場里的玩家要想生存下來,既要有絕活,還得沒短板。在構建加密經濟網絡上,在技術實現和共識協議部分,我們為大家分享了CKB 的絕活,即: 與時俱進的 Cell 模型 用 RIS...
摘要:秘猿科技區塊鏈小課堂第期的技術目標是設計一個分層的加密經濟網絡。換句話說,從分層的角度來看,現有的區塊鏈設計方式都是過時的。 從分層的角度來看,現有的區塊鏈在設計時考慮的是特定的功能(例如支付,或者是運行 DApp),并希望在運行一段時間后,讓上層協議來適應自己。然而區塊鏈并不天然是 Layer 1,Layer 1 是需要設計的。在分層的大框架下,上層協議和分層網絡分別有著怎樣的需求?...
閱讀 2904·2021-11-11 16:55
閱讀 952·2021-09-28 09:36
閱讀 3803·2021-09-22 15:22
閱讀 2232·2021-09-06 15:12
閱讀 1766·2021-08-19 10:55
閱讀 2894·2019-08-30 12:52
閱讀 501·2019-08-29 14:03
閱讀 1209·2019-08-29 12:27