首页 > 阿童木(Cosmos) > 正文

如何用Cosmos SDK构建DApp?

Cosmos互联链 2019-08-22 19:00

  为什么TruStory选择基于Cosmos SDK构建以及其体系结构概述

  原文作者:Shane Vitarana

  原文链接:https://blog.cosmos.network/building-a-decentralized-app-with-cosmos-sdk-3c535cdc6a6a

  

  为什么选择Cosmos SDK?

  01

  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) 修改规则,允许房东持有该公司的股份。与传统公司(https://a16z.com/2019/03/02/cooperatives-cryptonetworks/) 相比,未来的社交网络很有可能更像合作企业。

  用户和利益相关者将能够作为服务的消费者、网络运营商(验证人)或兼具两种身份,按照自己意愿或多或少地参与网络运行。此外,通证持有者将能够将其通证委托给验证人,并被动参与网络。

  基于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) 和隐私方面存在问题,这已经不是什么秘密。

  Staking就是DeFi

  02

  TruStory的激励机制是基于通过质押来展示内容。在内容上进行质押可以被认为是类似于 Facebook 点赞按钮的进化。点赞是很好的表达关注的信号,但它们不会对于用户花时间生产内容提供任何形式的奖励。TruStory的用户会对用户生产的内容进行质押,这与验证人质押ATOM (https://nylira.net/3d) 进行利益共享同时也保护Cosmos Hub类似。在此过程中,用户以TRU(TruStory的原生代币)的形式获得利息。

  

  Zaki Manian在跨链会议上

  没有惩罚,激励机制就不完整。TruStory的内容由已获得足够TRU的用户进行调节。用户可能会因为不良行为而被罚没,他们会被监禁一段时间。被监禁的用户将损失一些TRU作为惩罚。

  TruStory还计划在基础设施级别实施Staking。也就是说,超级用户可以运行TruStory区块链的节点,也被称为验证人。验证人负责通过签署交易和在PoS网络中提交区块来保护TruStory区块链。与TruStory用户类似,验证人质押TRU,并且会由于诸如下线和双签等不良行为而被大幅罚没。

  TruStory体系结构概述

  03

  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基本架构的高级视图:

  

  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

  你应该在Cosmos之上进行开发吗?

  04

  作为一个分布式技术的粉丝,我对以太坊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的原生代币支付,并允许验证人控制他们想要收取的费用。

  关于Cosmos是如何工作的更多细节,请看Preethi Kasireddy的这两部分系列:

  第一部分:Cosmos是如何运作的,与比特币和以太坊有什么区别?

  第二部分:https://www.preethikasireddy.com/posts/how-does-cosmos-work-part2

  ???? 通过beta.trustory.io (http://beta.trustory.io) 加入TruStory beta。

  请继续关注我们的公共测试网的发布

  [1]TruStory的staking、slashing和bank模块不同于同名的Cosmos SDK模块。

  

阅读更多

上一篇:Cosmos双周报(8.5~8.18)

下一篇:柏林区块链周:来自Cosmos核心开发者的五场必看会谈

您可能喜欢:

关于我们联系我们作者投稿
Copyright © 2013 比特巴手机版
币圈人都爱上的网站,新闻行情教程人物测评资讯大全