為什么TruStory選擇基于Cosmos SDK構(gòu)建以及其體系結(jié)構(gòu)概述
1. 為什么選擇 COSMOS SDK?
TruStory從構(gòu)建一個(gè)分布式應(yīng)用開始,該應(yīng)用的外觀和使用體驗(yàn)和人們習(xí)慣的普通App一樣。我們不希望用戶每次執(zhí)行操作時(shí)都要等待確認(rèn),也不希望用戶不得不處理未完成的交易(https://qz.com/1145833/cryptokitties-is-causing-ethereum-network-congestion/)。該App還調(diào)用了大量細(xì)顆粒度交易,它們都是基于特定時(shí)間觸發(fā)的事件。所以很快我們就發(fā)現(xiàn),這不能在以太坊主網(wǎng)上實(shí)現(xiàn)。我們需要更靈敏、更健壯的東西。所以我們又覺得基于以太坊的側(cè)鏈可能有效。
我們?cè)贚oom SDK (https://loomx.io/developers/en/intro-to-loom.html)上構(gòu)建了一個(gè)早期的原型,但是這個(gè)框架還不夠成熟,不能滿足我們當(dāng)時(shí)的需求。然而,我們喜歡上了Tendermint (https://github.com/tendermint/tendermint),這是一個(gè)BFT共識(shí)的中間件,它可以賦能Loom。它具有快速最終性(約5秒),這對(duì)于頻繁交互的社交App的用戶體驗(yàn)至關(guān)重要。
接下來,我們決定嘗試一下Cosmos SDK (https://cosmos.network),因?yàn)樗怯蒚endermint團(tuán)隊(duì)開發(fā)的。我們欣喜地發(fā)現(xiàn)它有如下很好的特性:
·靜態(tài)類型的編譯編程語(yǔ)言(GO)
·構(gòu)建良好的區(qū)塊鏈框架
·模塊化架構(gòu)
·高度可配置
·內(nèi)置治理
在Cosmos上我們學(xué)到的另一點(diǎn)是圍繞網(wǎng)絡(luò)構(gòu)建利益相關(guān)者社區(qū)的能力。我們認(rèn)為未來的網(wǎng)絡(luò)可以更加平等,給用戶和利益相關(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)公司相比,未來的社交網(wǎng)絡(luò)很有可能更像合作企業(yè)。
用戶和利益相關(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開發(fā)能為我們提供實(shí)現(xiàn)用戶所有權(quán)和治理的天然技術(shù)能力。用戶和驗(yàn)證人可以對(duì)升級(jí)和新功能進(jìn)行投票,并幫助維護(hù)網(wǎng)絡(luò)和用戶社區(qū)的價(jià)值觀和指導(dǎo)方針(https://www.trustory.io/values/)。用戶被鼓勵(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) 都有超過60%的投票參與。
建立一個(gè)自我持續(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的激勵(lì)機(jī)制是基于通過質(zhì)押來展示內(nèi)容。在內(nèi)容上進(jìn)行質(zhì)押可以被認(rèn)為是類似于 Facebook 點(diǎn)贊按鈕的進(jìn)化。點(diǎn)贊是很好的表達(dá)關(guān)注的信號(hào),但它們不會(huì)對(duì)于用戶花時(shí)間生產(chǎn)內(nèi)容提供任何形式的獎(jiǎng)勵(lì)。TruStory的用戶會(huì)對(duì)用戶生產(chǎn)的內(nèi)容進(jìn)行質(zhì)押,這與驗(yàn)證人質(zhì)押ATOM (https://nylira.net/3d) 進(jìn)行利益共享同時(shí)也保護(hù)Cosmos Hub類似。在此過程中,用戶以TRU(TruStory的原生代幣)的形式獲得利息。
沒有懲罰,激勵(lì)機(jī)制就不完整。TruStory的內(nèi)容由已獲得足夠TRU的用戶進(jìn)行調(diào)節(jié)。用戶可能會(huì)因?yàn)椴涣夹袨槎涣P沒,他們會(huì)被監(jiān)禁一段時(shí)間。被監(jiān)禁的用戶將損失一些TRU作為懲罰。
TruStory還計(jì)劃在基礎(chǔ)設(shè)施級(jí)別實(shí)施Staking。也就是說,超級(jí)用戶可以運(yùn)行TruStory區(qū)塊鏈的節(jié)點(diǎn),也被稱為驗(yàn)證人。驗(yàn)證人負(fù)責(zé)通過簽署交易和在PoS網(wǎng)絡(luò)中提交區(qū)塊來保護(hù)TruStory區(qū)塊鏈。與TruStory用戶類似,驗(yàn)證人質(zhì)押TRU,并且會(huì)由于諸如下線和雙簽等不良行為而被大幅罰沒。
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è)過程類似于迭代開發(fā)中常見的數(shù)據(jù)庫(kù)遷移 (https://github.com/cosmos/cosmos-sdk/tree/master/contrib/migrate),為區(qū)塊鏈開發(fā)帶來了更靈活的方法。
下面是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編寫的,是一個(gè)GraphQL輕客戶端,負(fù)責(zé)查詢和向鏈廣播交易。它還與Postgres數(shù)據(jù)庫(kù)通信,以獲取客戶端特定的不需要上鏈的數(shù)據(jù),這包括聊天日志和用戶配置文件等與TRU值無關(guān)的數(shù)據(jù)。GraphQL 使Web和移動(dòng)客戶端能夠執(zhí)行來自兩條鏈和數(shù)據(jù)庫(kù)無縫合并的數(shù)據(jù)查詢。
本地移動(dòng)客戶端和Web客戶端分別用React Native (https://github.com/necolas/react-native-web) 和React Native for Web編寫。這允許在本地移動(dòng)設(shè)備(iOS和Android)和網(wǎng)頁(yè)端之間進(jìn)行高級(jí)別的代碼共享。它們通過TruAPI與鏈相連。
一些微服務(wù)也可以賦能TruStory,例如通過觀察Tendermint的事件來推送通知服務(wù)。推送通知與治理相結(jié)合時(shí)可以非常強(qiáng)大,因?yàn)橛脩艨梢灾苯邮盏叫陆ㄗh的通知,并得到投票提醒。
TruChain節(jié)點(diǎn)圍繞幾個(gè)核心自定義模塊構(gòu)建:
·claim
·staking [1]
·slashing [1]
·bank [1]
觀點(diǎn)模塊主要是用戶存儲(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ì)。
罰沒模塊對(duì)App中的不良行為實(shí)施懲罰,并獎(jiǎng)勵(lì)用戶自發(fā)審核不良內(nèi)容。例如,如果某個(gè)論點(diǎn)被一定數(shù)量的用戶否決,那么該論點(diǎn)的創(chuàng)建者和支持者的質(zhì)押通證就會(huì)被罰沒。這有助于維持一種激勵(lì)機(jī)制,以保持社區(qū)的正常運(yùn)轉(zhuǎn)。
Bank 模塊跟蹤通證供應(yīng)和用戶的所有交易。它主要支持App的錢包功能。
每個(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)行開發(fā)嗎?
作為一個(gè)分布式技術(shù)的粉絲,我對(duì)以太坊2.0感到非常興奮。但是它仍在開發(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ì)話,并最終通過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)化的方式來處理與網(wǎng)絡(luò)未來相關(guān)的分叉、升級(jí)和決策。Cosmos SDK是最佳選擇之一。
但是,構(gòu)建一個(gè)驗(yàn)證人社區(qū)和運(yùn)行一個(gè)主權(quán)鏈可能不適合每個(gè)項(xiàng)目的需求。有些人可能希望購(gòu)買現(xiàn)有的驗(yàn)證人集及其提供的安全性。例如,Parity的Polkadot (https://polkadot.network) 是圍繞共享安全模型構(gòu)建的,其中每個(gè)鏈連接到中繼鏈并繼承其安全性。雖然Cosmos目前依賴于每一條鏈來提供自己的安全性,但未來仍有計(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)目無關(guān)的各方。Cosmos允許gas以App的原生代幣支付,并允許驗(yàn)證人控制他們想要收取的費(fèi)用。
評(píng)論
查看更多