書名: 區塊鏈架構與實現:Cosmos詳解作者名: 溫隆 賈音本章字數: 997字更新時間: 2021-09-27 17:47:43
1.2.4 Cosmos-SDK
大部分的區塊鏈都會有賬戶管理、交易處理等功能,為了進一步提升區塊鏈構建的效率并縮短開發周期,Tendermint團隊構建了Cosmos-SDK,實現了區塊鏈場景中一系列的通用功能模塊,如圖1-4所示。模塊化設計的理念使得開發者既可以復用已有的功能模塊,也可以快速構建新的功能模塊,以顯著提升上層應用的開發效率。

圖1-4 Cosmos-SDK的通用功能模塊
按照模塊實現的功能,可以將Cosmos-SDK目前提供的所有模塊劃分為以下幾類。
- 基礎功能:賬戶管理與交易處理。
- auth模塊管理系統中的所有賬戶。
- bank模塊管理鏈上資產的轉移。
- 輔助功能:創世區塊管理、鏈上狀態一致性檢查等。
- genutil模塊管理鏈的創世區塊。
- supply模塊負責鏈上資產總量的管理。
- crisis模塊負責所有模塊的不變量檢查的管理。
- params模塊負責所有模塊的參數管理。
- 鏈上治理:基于提案的鏈上治理與網絡升級。
- gov模塊負責鏈上治理機制。
- upgrade模塊負責鏈的升級。
- PoS:鏈上資產抵押、鏈上懲罰和獎勵。
- staking模塊管理鏈上資產抵押。
- slashing模塊負責對驗證者的被動作惡行為進行懲罰。
- evidence模塊負責對驗證者的主動作惡行為進行懲罰。
- mint模塊負責鏈上資產的鑄造。
- distribution模塊管理區塊獎勵的分發。
- IBC協議:基于中繼機制的跨鏈協議。
- ibc/core模塊負責跨鏈通信功能。
采用模塊化設計理念的同時保證安全性是一個技術挑戰。如何防止一個模塊的狀態被另一個模塊惡意更改?遵循對象能力模型(object-capability model)的安全理念(每個模塊僅對外暴露必要的功能接口),Tendermint團隊設計了一套多樣化的存儲體系,賦予每個模塊單獨的存儲空間。在此基礎之上,Cosmos-SDK也為每個模塊設計了守護者(keeper)角色來維護和更新每個模塊的狀態。每個模塊的守護者隱藏了模塊內部的具體實現以及存儲設計,模塊之間的配合通過各個模塊的守護者之間的相互調用來完成,可以保證每個模塊內部狀態只會被本身模塊的守護者更新,也就保證了鏈上狀態的一致性。
基于Tendermint Core和Cosmos-SDK,可以按照圖1-5所示的方式快速構建應用專屬區塊鏈系統。借助于Tendermint共識協議,鏈上交易處理與確認速度也有了大幅度的提高。與以太坊上的DApp需要去競爭稀缺的公鏈資源不同,應用專屬區塊鏈系統之間無須競爭任何鏈上資源,每個應用專屬區塊鏈系統獨享鏈上的所有資源,而借助ABCI,每個應用專屬區塊鏈系統都有完整的鏈上自治權。筆者自身曾經參與過對照比特幣實現代碼重新開發比特幣現金客戶端的項目,也參與過基于Tendermint Core和Cosmos-SDK構建應用專屬區塊鏈系統的項目,每次想起解讀、修改比特幣實現代碼的“痛苦”經歷,都會感謝Tendermint團隊構建的這套區塊鏈開發框架。

圖1-5 基于Tendermint Core和Cosmos-SDK快速構建應用專屬區塊鏈系統
- Python測試開發入門與實踐
- 人臉識別原理及算法:動態人臉識別系統研究
- 深度強化學習算法與實踐:基于PyTorch的實現
- Magento 1.8 Development Cookbook
- Data Analysis with Stata
- C語言實驗指導及習題解析
- Scientific Computing with Scala
- Visual Basic語言程序設計上機指導與練習(第3版)
- Parallel Programming with Python
- Java程序性能優化實戰
- Python GUI設計tkinter菜鳥編程(增強版)
- Java王者歸來:從入門邁向高手
- Visual C++.NET(2008)典型案例
- Kotlin for Enterprise Applications using Java EE
- Visual FoxPro程序設計教程