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