為什么TruStory選擇基于Cosmos SDK構建以及其體系結構概述
1. 為什么選擇 COSMOS SDK?
TruStory從構建一個分布式應用開始,該應用的外觀和使用體驗和人們習慣的普通App一樣。我們不希望用戶每次執行操作時都要等待確認,也不希望用戶不得不處理未完成的交易(https://qz.com/1145833/cryptokitties-is-causing-ethereum-network-congestion/)。該App還調用了大量細顆粒度交易,它們都是基于特定時間觸發的事件。所以很快我們就發現,這不能在以太坊主網上實現。我們需要更靈敏、更健壯的東西。所以我們又覺得基于以太坊的側鏈可能有效。
我們在Loom SDK (https://loomx.io/developers/en/intro-to-loom.html)上構建了一個早期的原型,但是這個框架還不夠成熟,不能滿足我們當時的需求。然而,我們喜歡上了Tendermint (https://github.com/tendermint/tendermint),這是一個BFT共識的中間件,它可以賦能Loom。它具有快速最終性(約5秒),這對于頻繁交互的社交App的用戶體驗至關重要。
接下來,我們決定嘗試一下Cosmos SDK (https://cosmos.network),因為它是由Tendermint團隊開發的。我們欣喜地發現它有如下很好的特性:
·靜態類型的編譯編程語言(GO)
·構建良好的區塊鏈框架
·模塊化架構
·高度可配置
·內置治理
在Cosmos上我們學到的另一點是圍繞網絡構建利益相關者社區的能力。我們認為未來的網絡可以更加平等,給用戶和利益相關者更多的控制和對平臺的所有權。比如像Airbnb這樣的公司就會要求美國證券交易委員會 (https://www.cnbc.com/2018/09/21/airbnb-wants-hosts-to-own-equity-is-asking-sec-for-a-rule-change.html) 修改規則,允許房東持有該公司的股份。與傳統公司相比,未來的社交網絡很有可能更像合作企業。
用戶和利益相關者將能夠作為服務的消費者、網絡運營商(驗證人)或兼具兩種身份,按照自己意愿或多或少地參與網絡運行。此外,通證持有者將能夠將其通證委托給驗證人,并被動參與網絡。
基于Cosmos SDK開發能為我們提供實現用戶所有權和治理的天然技術能力。用戶和驗證人可以對升級和新功能進行投票,并幫助維護網絡和用戶社區的價值觀和指導方針(https://www.trustory.io/values/)。用戶被鼓勵成為好公民,并在網絡幫助協調。我們已經在第一個基于SDK主網上線的網絡Cosmos Hub (https://hub.cosmos.network)上看到了成功的區塊鏈治理。(譯者注:Cosmos生態中第一個基于SDK主網上線的網絡應該為IRIS Hub)到目前為止,幾乎所有提案 (https://hubble.figment.network/cosmos/chains/cosmoshub-2/governance) 都有超過60%的投票參與。
建立一個自我持續和自我治理的網絡可以解決當前社交網絡的許多問題。Facebook在內容審查(https://www.nytimes.com/2018/12/27/world/facebook-moderators.html) 和隱私方面存在問題,這已經不是什么秘密。
2. Staking就是Defi
TruStory的激勵機制是基于通過質押來展示內容。在內容上進行質押可以被認為是類似于 Facebook 點贊按鈕的進化。點贊是很好的表達關注的信號,但它們不會對于用戶花時間生產內容提供任何形式的獎勵。TruStory的用戶會對用戶生產的內容進行質押,這與驗證人質押ATOM (https://nylira.net/3d) 進行利益共享同時也保護Cosmos Hub類似。在此過程中,用戶以TRU(TruStory的原生代幣)的形式獲得利息。
沒有懲罰,激勵機制就不完整。TruStory的內容由已獲得足夠TRU的用戶進行調節。用戶可能會因為不良行為而被罰沒,他們會被監禁一段時間。被監禁的用戶將損失一些TRU作為懲罰。
TruStory還計劃在基礎設施級別實施Staking。也就是說,超級用戶可以運行TruStory區塊鏈的節點,也被稱為驗證人。驗證人負責通過簽署交易和在PoS網絡中提交區塊來保護TruStory區塊鏈。與TruStory用戶類似,驗證人質押TRU,并且會由于諸如下線和雙簽等不良行為而被大幅罰沒。
3. TruStory體系結構概述
TruStory (https://www.trustory.io)的第一個版本是一個基于確認和驗證內容的謝林點游戲(https://en.wikipedia.org/wiki/Focal_point_(game_theory)),但它最近在轉型為一個平臺,用于圍繞觀點進行更具建設性的辯論。Cosmos SDK在這個轉折點(https://www.trustory.io/posts/our-new-mission/) 中起到了重要作用,使我們能夠分叉我們的區塊鏈,同時將所有數據遷移到新的鏈上。
每個Cosmos鏈都被一個定義區塊鏈初始狀態的創世文件(https://cosmos.network/docs/cosmos-hub/genesis.html#what-is-a-genesis-file)引導。要分叉區塊鏈,可以使用導出當前App狀態的命令行工具創建新的創世文件。用任何可以啟動新鏈的工具對創世文件升級,就可以進行遷移。這個過程類似于迭代開發中常見的數據庫遷移 (https://github.com/cosmos/cosmos-sdk/tree/master/contrib/migrate),為區塊鏈開發帶來了更靈活的方法。
下面是TruStory基本架構的高級視圖:
TruChain Zone包含運行TruStory區塊鏈節點(TruChain)的驗證人集。TruChain是用Cosmos SDK構建并在Go中實現的部分。
TruAPI也是用Go編寫的,是一個GraphQL輕客戶端,負責查詢和向鏈廣播交易。它還與Postgres數據庫通信,以獲取客戶端特定的不需要上鏈的數據,這包括聊天日志和用戶配置文件等與TRU值無關的數據。GraphQL 使Web和移動客戶端能夠執行來自兩條鏈和數據庫無縫合并的數據查詢。
本地移動客戶端和Web客戶端分別用React Native (https://github.com/necolas/react-native-web) 和React Native for Web編寫。這允許在本地移動設備(iOS和Android)和網頁端之間進行高級別的代碼共享。它們通過TruAPI與鏈相連。
一些微服務也可以賦能TruStory,例如通過觀察Tendermint的事件來推送通知服務。推送通知與治理相結合時可以非常強大,因為用戶可以直接收到新建議的通知,并得到投票提醒。
TruChain節點圍繞幾個核心自定義模塊構建:
·claim
·staking [1]
·slashing [1]
·bank [1]
觀點模塊主要是用戶存儲觀點數據。它包含所有觀點的內容和每個觀點的高級元數據。這是一個在TruStory關于人為造成氣候變化的觀點的例子:https://beta.trustory.io/claim/755
Staking模塊提供了有關Staking參數的所有功能。Cosmos SDK的一個很好的特性是有在處理每個區塊之前和之后運行的區塊級事件。在每個區塊之后,我們檢查到期的質押并分配獎勵。
罰沒模塊對App中的不良行為實施懲罰,并獎勵用戶自發審核不良內容。例如,如果某個論點被一定數量的用戶否決,那么該論點的創建者和支持者的質押通證就會被罰沒。這有助于維持一種激勵機制,以保持社區的正常運轉。
Bank 模塊跟蹤通證供應和用戶的所有交易。它主要支持App的錢包功能。
每個TruChain節點還提供一個CLI和REST接口,驗證人將使用該接口在網絡級別進行質押。
了解生成定制模塊所需樣板文件的工具,請查看Cosmos Module Generator:https://github.com/shanev/cosmos-gen
4. 你應該在Cosmos之上進行開發嗎?
作為一個分布式技術的粉絲,我對以太坊2.0感到非常興奮。但是它仍在開發中,至少要等一年才能準備好。然而,Cosmos Hub (https://hub.cosmos.network) 已經于2019年3月啟動,有多個項目在運行測試網。IBC(區塊鏈間通信協議:https://github.com/cosmos/ics)實施后,像TruChain這樣的Cosmos鏈將能夠與Cosmos Hub對話,并最終通過peg zone (https://blog.cosmos.network/the-internet-of-blockchains-how-cosmos-does-interoperability-starting-with-the-ethereum-peg-zone-8744d4d2bc3f) 在比特幣和以太坊之間轉移資產。
大多數分布式應用不需要數千個PoW以太坊節點以保證安全性。一個由數百個甚至幾十個節點保護安全的PoS側鏈或自定義區塊鏈就足夠了。還有一個額外的好處,你可以創建一個符合你的App需求的治理結構,以一種更結構化的方式來處理與網絡未來相關的分叉、升級和決策。Cosmos SDK是最佳選擇之一。
但是,構建一個驗證人社區和運行一個主權鏈可能不適合每個項目的需求。有些人可能希望購買現有的驗證人集及其提供的安全性。例如,Parity的Polkadot (https://polkadot.network) 是圍繞共享安全模型構建的,其中每個鏈連接到中繼鏈并繼承其安全性。雖然Cosmos目前依賴于每一條鏈來提供自己的安全性,但未來仍有計劃提供共享安全性 (https://github.com/cosmos/ics/issues/27)。
定制Cosmos鏈的另一個優點是不需要以平臺代幣(如以太坊的ETH)支付gas fee。這些gas fee通常會流向與你的App或項目無關的各方。Cosmos允許gas以App的原生代幣支付,并允許驗證人控制他們想要收取的費用。
評論
查看更多