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