​使用 Cosmos IBC 和 Band Protocol Oracle 构建 DeFi 的指南

Cosmoslinjm12272020-05-02 00:14:53  阅读 -评论 0  阅读原文

原文链接:请点击文末阅读原文

原文作者:Paul Nattapatsiri

本文是与 Jack Zampolin (前 Tendermint 产品总监)和 Peter Haymond (Tendermint 合作伙伴) 合作撰写的

今年早些时候,开放金融已经从一个小众市场爆炸式增长为一个价值超过10亿美元的行业,出现了新的用例和垂直领域,如稳定币、加密货币抵押贷款、无信任保证金交易和去中心化交易所。然而,如果没有跨链流动性和安全的预言机解决方案,DeFi 的全球流动性将仅限于以太坊。DeFi 协议的安全性取决于其预言机设计,我们最近已经看到 bZx, Synthetix, 和 MakerDAO 在多种情况下利用了这一设计。

bZx:

https://www.theblockcrypto.com/post/56207/bzx-atta...

Synthetix:

https://blog.synthetix.io/update-on-xag-pricing-in...

MakerDAO:

https://blog.makerdao.com/the-market-collapse-of-m...

智能合约在没有预言机的情况下本质上无法访问自身区块链网络之外的数据,预言机是一项中间服务,允许智能合约连接到外部数据和 API,以指示和控制应用程序的行为。因此,解决跨链和预言机问题将使这个新兴行业实现指数级增长。

以连接分布式应用为使命,Cosmos 开发了区块链跨链通讯协议(IBC),提出了区块链之间的数据和通证交换标准。通过 IBC,开发者和企业可以解锁原生链之间的高值数据交换,并为私有链联盟链中的分布式应用带来互操作性。

IBC 的介绍

Cosmos 跨链通讯协议 (IBC) 是任何基于 Cosmos-SDK 的区块链之间进行通讯的可靠、安全的协议。从根本上讲,IBC 负责将"数据包"从一个区块链中继到另一个区块链,同时简化维护连接、数据完整性和来自应用程序开发人员的实时通信的复杂性。最近,Cosmos 发布了 IBC 规范、中继层的实现和构建跨链应用程序的示例代码。

IBC:

https://github.com/cosmos/ics/tree/master/ibc

IBC 规范:

https://github.com/cosmos/ics

中继层的实现:

https://github.com/iqlusioninc/relayer

构建跨链应用程序的示例代码:

https://github.com/cosmos/gaia/tree/ibc-alpha

虽然 IBC 规范充满了技术概念和术语,但您不需要了解 IBC 是如何在协议层实现的 - Cosmos IBC 应用已经简化了大部分复杂的内容。事实上,应用程序开发人员只需了解两个关键组件即可使用 IBC:

1. 数据包

具有与序列相关的元数据(由 IBC 规范定义)和作为数据包数据的不透明价值字段 (具有由应用层定义的语义,例如通证和面额)。

2. 中继层进程

中继层进程是一个离链进程,负责通过扫描两台或多台机器的状态和提交事务,在两台或多台机器之间中继 IBC 数据包数据和元数据。

在 Cosmos 生态上构建 DeFi

本指南旨在为开发人员逐步介绍 BandChain & IBC 的最新开发和发布,使他们能够使用 Band Protocol 提供的安全价格构建跨链兼容的 DeFi 应用程序。

Band Protocol 是一个构建在 Cosmos-SDK 之上的跨链数据预言机平台,它将现实世界的数据和 API 聚合并连接到智能合同。区块链智能合约非常适合不可变的存储和确定、可验证的计算 - 然而,它们仍然无法访问区块链网络以外的数据和 API。Band Protocol 使智能合同应用程序能够完全灵活地构建在链上,开发人员可以指定他们的数据类型、数据源和聚合方法,而不依赖于单点故障或集中的预言机系统。

Band Protocol:

https://docs.bandprotocol.com/

以下是您可以使用 IBC 和 Band 协议构建 DeFi 应用程序的一些示例:

  • 稳定币
  • 借贷平台
  • 衍生通证 (其他资产的镜像价格)
  • 融资融券
  • 去中心化交易所
  • 预测市场

应用程序示例:合成黄金

为了探索 IBC 的实际如何运用的,我们构建一个简化的合成黄金应用程序(我们将其命名为Goldchain),该应用程序满足以下要求:


规范:


  1. 该应用程序支持创建 GOLD 通证,每个通证代表 1 盎司黄金。
  2. 它允许用户将 ATOM 从 Gaia 转移到 Goldchain 上,并将其作为抵押品铸造新的 GOLD 通证。
  3. 铸造 GOLD 时,质押 ATOM 的价值必须大于铸造 GOLD 的 125%。

为简单起见,我们在本指南中不会使用 CDP 清算机制,而是主要侧重于演示 IBC 功能。

应用程序架构

GoldChain 的生态系统由 4个不同的组件组成:

  1. Goldchain - 我们正在构建一个基于 Cosmos SDK 的区块链。
  2. Gaia (Cosmos Hub) - 托管 ATOM 通证的区块链。它为在 Goldchain 上铸造的 GOLD 通证提供了潜在价值。
  3. BandChain - 分布式数据预言机的区块链。它使 Goldchain 能够消耗 XAU (黄金交易代码)和来自外部的 ATOM 价格。
  4. 中继层 - 在多个区块链之间中继数据包的第三方软件。它们允许多个区块链以安全和无需信任机制的方式进行互操作。

正如您将在以下各节中看到的那样,每个部分在创建安全的合成黄金的应用程序方面,都扮演着重要的角色。

UX 流程

这里介绍了用户应如何在 Goldchain 中创建 CDP。

  1. 用户通过 IBC 将 ATOM 转移到 Goldchain。
  2. 用户在 Goldchain上创建买入交易,将 ATOM 作为抵押品。
  3. Goldchain 向 BandChain 寻求 ATOM 和黄金的现货价格,并为用户铸造 GOLD 通证。

构建 GoldChain:分步示范

您可以在 GoldChain repository 中找到完整的代码。

https://github.com/bandprotocol/goldcdp

本教程旨在提供一个循序渐进的指南,告诉您如何从 boilerplate repository 样板存储库开始编写代码,直到获得完整的 Goldchain。

https://github.com/bandprotocol/band-consumer

步骤1:启动并运行新的 Goldchain

你可以从复制 Cosmos Gaia,ibc-alpha 分支开始,以此为起点开发自己的带 IBC 支持 的区块链。然而,在本教程中,我们将使用 Gaia 中 Band Protocol 的分支,它已经集成了 Band Protocol 的 oracle 模块作为我们的样板。

ibc-alpha:

https://github.com/cosmos/gaia/tree/ibc-alpha

让我们从将存储库复制到我们的机器开始。

$ git clone https://github.com/bandprotocol/band-consumer<code><span class="code-snippet_outer"></span>

提示:您还可以按照本教程来学习:

https://github.com/bandprotocol/goldcdpand。立即运行完整的教程,而且不必自己编写任何 Go 代码。

确保您已安装 Go 1.14+,并按照安装指南进行操作:

https://github.com/bandprotocol/band-ibc-hackathon...

现在,在我们可以启动和运行区块链之前,我们需要先设置几个参数。

让我们进入新复制的存储库并启动它。

要设置新的验证人节点,我们首先初始化一个新的 Genesis。

请注意,在本教程中,我们将互换使用名称 band-Consumer 和 Goldchain,因为这两个名称都指的是我们在本地运行的链。

<code><span class="code-snippet_outer"><span class="code-snippet__meta">{replace71}lt;/span> bcd init validator --chain-id band-consumer</span>

在本教程中,我们需要3个帐户:


  1. 验证人:验证区块的主帐户。
  2. 用户:我们将向用户请求铸 GOLD 通证的帐户。
  3. 水龙头:我们将用来充值中继层余额的账户。

现在我们已经建立了帐户,我们将在创始时将余额添加到这些帐户中。

然后,我们需要进行快速设置,以使我们的 CLI 客户端更易于使用。

最后,创建一个 Genesis 交易并创建 Genesis 文件。

真相揭晓的时刻就要到了。让我们第一次运行本地节点!

$ bcd start --rpc.laddr=tcp://0.0.0.0:26657 --pruning=nothing

当你看到正在制作的区块时,恭喜你!您已经启动并运行了区块链 - 准备继续进入下一阶段。


让它保持运行:这样就可以继续创建区块。

步骤2:设置中继层并在 Gaia 和 Goldchain 之间建立连接

我们将在 gaia-ibc-hackathon.node.bandchain.org

上运行的 Gaia 测试网将 ATOM 传输到我们刚刚建立的 Goldchain。这将是我们第一次从 Cosmos Gaia 到 GoldChain 的跨链转移。

我们将从设置中继层开始。我们需要安装中继层代码。请注意,务必确保 Gobin 和 GOPATH 设置正确,否则安装将失败。

一旦完成:您就可以在 GOBIN 中使用 Cosmos IBC 中继层的 rly 命令了。

下一步,我们需要添加一些配置文件,以便中继层知道如何与 Gaia 测试网和 Goldchain 通信。获取配置文件的最简单方法是从 GoldChain repository 下载它们。

https://github.com/bandprotocol/goldcdp/tree/ibc-a...

一旦您创建或下载了goldchain.json 和 gaia.json,我们就可以开始初始化中继层,并从前面提到的配置文件中添加两个链。


接下来,我们需要为中继层创建新帐户,我们将为每个链创建一个帐户。这些账户将用于将数据包(发送交易)中继到其对应的区块链。

现在我们需要将帐户分配给中继层。

重要提示:我们要确保我们的中继账户有足够的余额支持 Goldchain 和 Gaia 上的交易。否则,中继层将不能发送中继数据包。

在 GoldChain 上,我们已经在我们的水龙头账户上的 genesis 铸造了质押代币。我们要继续把它发送给我们的中继层 - Goldchain。

<code><span class="code-snippet_outer" data-redactor-tag="span">$ bccli tx <span class="code-snippet__keyword" data-redactor-class="code-snippet__keyword">send</span> faucet $(rly <span class="code-snippet__keyword">keys</span> show band-consumer) \ </span> <span class="code-snippet_outer" data-redactor-tag="span"><span class="code-snippet__number">10000000000000</span>stake</span>

在 Gaia 测试网上,我们将使用中继层测试网水龙头功能。

<code><span class="code-snippet_outer"><span class="code-snippet__meta">{replace99}lt;/span> rly testnets request band-cosmoshub relayer-gaia</span>

如果我们检查两条链上的余额,我们应该会看到一些余额。

<code><span class="code-snippet_outer" data-redactor-tag="span"><span class="code-snippet__meta" data-redactor-class="code-snippet__meta">{replace101}lt;/span> rly q bal band-consumer </span> <span class="code-snippet_outer" data-redactor-tag="span"><span class="code-snippet__meta">$</span> rly q bal band-cosmoshub</span>

现在我们准备好初始化轻客户端了。

<code><span class="code-snippet_outer" data-redactor-tag="span"><span class="code-snippet__meta" data-redactor-class="code-snippet__meta">{replace103}lt;/span> rly lite init band-consumer -f </span> <span class="code-snippet_outer" data-redactor-tag="span"><span class="code-snippet__meta">$</span> rly lite init band-cosmoshub -f</span>

接下来,我们从 Goldchain 的传输和 Gaia 的传输生成新路径的标识符,并将其命名为 Transfer Path。

<code><span class="code-snippet_outer" data-redactor-tag="span"><span class="code-snippet__meta" data-redactor-class="code-snippet__meta">{replace105}lt;/span> <span class="code-snippet__string">rly pth gen \ </span></span> <span class="code-snippet_outer" data-redactor-tag="span">band-consumer transfer \

</span><span class="code-snippet_outer" data-redactor-tag="span">band-cosmoshub transfer \

</span><span class="code-snippet_outer" data-redactor-tag="span">transfer</span>

然后,我们可以在为传输路径配置的两条链之间创建客户端、连接和通道。

<code><span class="code-snippet_outer"><span class="code-snippet__meta">{replace107}lt;/span> rly tx link transfer</span>

这将需要几秒钟的时间,因为中继层在 Goldchain 和 Gaia 上都注册了。一旦完成,最后一行应该显示这样一条线。

Important: 查看 channel id:

<goldchain_transfer_channel> = pwlpjyneba

<gaia_transfer_channel> = zijixuhhrf

记住这些我们可以开始下一步。

最后,我们可以在传输路径上启动中继层。

<code><span class="code-snippet_outer"><span class="code-snippet__meta">{replace116}lt;/span> rly st transfer</span>

保持其运行:否则,现在将跨链发送 IBC 数据包。

步骤 3:将 ATOM 从 Gaia 转移到 Goldchain

让我们通过从 Gaia 向 Goldchain 发送一些通证来测试我们的中继层是否工作。我们将首先创建一个名为 user-gaia 的新帐户,并从水龙头里领取通证为其充值。

现在让我们创建第一个从 Gaia 到 Goldchain 的 ATOM 转移。我们将使用先前建立的<gaia_transfer_channel> 将 5000000000uatom (5000 ATOM)发送给帐户用户。

检查余额,您会发现我们现在的 Goldchain 上有 ATOM 通证。

步骤 4:添加 CDP 并架构 Band Protocol oracle

接下来,我们将添加对抵押债务 (CDP)的支持,类似于 MarkerDAO 允许用户抵押 Ether和铸造新的 DAI 通证。维持 GOLD 币价值的主要条件是每个铸造的 GOLD 币的 ATOM 锁定值。Band Protocol 使 Goldchain 能够访问 XAU 和 ATOM 对美元的价格。

要做到这一点,我们需要的是:

  • 通过 IBC 建立连接 Goldchain 和 Band Protocol的中继层。
  • 创建用于存储默认 Gaia 和 BandChain 通道的处理程序。这有助于应用程序的用户体验。
  • 创建用于购买 GOLD 的处理程序,该处理程序通过 IBC 向 BandChain 发送有关 ATOM 和 XAU 价格的请求,并将购买交易存储 - 有效地停止交易并等待价格从 BandChain 返回。
  • 创建另一个处理程序,用于接收从 BandChain 返回的结果,根据价格计算要铸造的 GOLD,并为用户铸造 GOLD。

因为把所有的代码都放在这个帖子里太长了。以下的 Github 链接是我们对于如何使用上面的概来修补当前代码的介绍。

您可以通过在 GitHub 上创建帐户,为 band protocol/goldcdp 开发做出贡献:

https://github.com/bandprotocol/goldcdp/compare/69...

假设您已经添加了使用 Band 协议实现 CDP 的代码(或者您从完整的 Goldchain 代码开始),让我们继续,在 Goldchain 和 BandChain 之间启动并运行中继层,这样我们最终可以铸造我们的第一个合成 GOLD 通证。

这一次,我们将快速初始化中继层,因为大多数步骤将与我们刚刚设置的 Goldchain<>Gaia 之间的中继层相同。

首先,也是最重要的,让我们为 BandChain 中继层创建一个配置文件 bandchain.json。

然后启动并运行 GoldChain<>BandChain 的中继层。

重要提示:记住下一步要使用的渠道

时刻保持中继层在运行中:否则,预言机将不起作用

中继层启动后,现在我们将使用 BandChain 预言机设置使用 GOLD 和 ATOM 创建 CDP 的默认通道。

步骤5:使用转移的 ATOM 作为抵押品铸造 GOLD 通证

现在,我们已经设置了使 CDP 创建正常工作所需的原材料。鉴于 XAU 的价格约为 1700 美元,撰写本文时的汇率约为 800 ATOM/XAU。由于我们要求 125% 的抵押品比率,每 1000 个ATOM 抵押品将产生 1 个 GOLD。

让我们试着用 2000000000 uatom (2,000 个 ATOM)抵押品来买 GOLD。

我们现在可以检查用户帐户现在是否将拥有大约 2 个 GOLD 通证。

$ bccli query bank balances $(bccli keys show -a user)

GOLD 通证可以转移到 Cosmos 生态系统中支持 IBC 通证转移的任何 DEX,并以保证的价值进一步交易。

下一步是什么呢?

我们已经介绍了足够的功能来演示 IBC 的强大功能。为了让 GoldChain 能够投入生产,还有许多其他任务需要完成:

  • 再加上卖黄金以及返还抵押的 ATOM
  • 增加清算机制
  • 加强安全措施

祝贺您!

在这个简单的教程中,我们探索了如何通过 IBC 发送和接收通证,以及如何使用 Band Protocol 的安全分布式预言机从现实市场查询加密通证和商品的实时价格。这个例子可以很容易地扩展到任何其他资产类别,如股票、债券和大宗商品,以实现此类货币工具的全球信赖交易。

有了这些关于如何运用 IBC 架构和 Band Protocol 的安全数据点的新知识,您现在就可以开始构建您的第一个 IBC 应用程序了!

要做到这一点,最好的方法是与 Agric、Cosmos 和 Band Protocol 团队一起参加即将举行的跨链黑客松,他们将为有机会赢得超过24K美元奖金的开发者提供研讨会、实况流和技术支持!

疫情期间在家的话,就请加入我们的 Gitcoin 黑客松,来赢得奖品吧:

blog.cosmos.network

如果您对Cosmos IBC 或频带协议集成有任何问题,请随时告诉我们,我们很乐意为您提供帮助。加入我们 Discord 频道的讨论吧。

https://discordapp.com/invite/cr7N47p

黑客松将于 4月20日至 5月11日举行,我们期待着您将构建的所有应用程序。

在此我们要感谢 Soravis Srinawakoon 和 Peter Haymond。


来源:COSMOS

声明:链世界登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。此文如侵犯到您的合法权益,请联系我们kefu@lianshijie.com

参与讨论 (0 人参与讨论)

相关推荐

Tendermint 的 IRIS 通证使用计划——支持 IRISnet 生态发展

Tendermint 的 IRIS 通证使用计划——支持 IRISnet 生态发展

亲爱的 IRISnet 社区伙伴们,早在 2018 年,IRISnet 主网启动之前,Tendermint 就已经与 IRISnet 的核心开发团队边界智能(Bianjie.AI)建立了合作关系。Tendermint 和 Bianjie 两个团队始终保持着紧密共生的伙伴关系——借由 Bianjie 帮助推动 Cosmos/Tendermint 技术和应用在中国落地实践;另一方面,Tendermin

亦来云联合创始人韩锋: DeFi 兴起的意义和其代表的未来

亦来云联合创始人韩锋: DeFi 兴起的意义和其代表的未来

近期,由 Biyong 主办,金色财经、币世界等联合举办的中韩区块链周在 Biyong 社群如约举行,亦来云联合创始人韩锋受邀在活动中进行了分享。韩锋先生在分享中和大家交流了 DeFi 兴起的意义和其代表的未来,以及亦来云会布局的 DeFi 方向等内容。以下是韩锋先生分享的详细内容。大家好,首先特别感谢这次中韩区块链周的邀请,让我有一个机会和大家分享和交流。那么,今天就主要谈谈最近很热的一个话题,

STOwhite怀特:以太坊 DeFi 的“九死一生”

STOwhite怀特:以太坊 DeFi 的“九死一生”

在过去几个月中,去中心化金融—以" DeFi "广为人知—看起来已经成为了以太坊的杀手级用例。今年早些时候,锁定在 DeFi 应用程序中的资产价值超过了 10 亿美元,而促进基于以太坊的金融生态的智能合约活动也呈现出了强劲的涨势。这种增长大部分与这些协议提供的诱人的高利率有关。在向 Compound 和 dYdX 协议注入 200 万美元的流动性后,Coinbase 盛赞 DeFi "是开放式金融

在竞争的Ethereum和Cosmos DeFi代币中寻找交易窍门

在竞争的Ethereum和Cosmos DeFi代币中寻找交易窍门

据加密研究公司Messari的分析师Ryan Watkins表示,随着围绕Cosmos(ATOM)网络出现的去中心化金融(DeFi)生态系统不断增长,基于与基于Ethereum(ETH)的DeFi代币的估值差异,存在着有吸引力的投资机会。他在最近的一个Twitter帖子中表示,"在过去一年中,许多最好的投资 "是针对Cosmos生态系统中不知名代币与其在以太坊网络上的竞争对手之间的估值差异。根据W

Cosmos 生态协议 Kira 计划三个月内启动测试网,将流动性质押引入 DeFi 领域

Cosmos 生态协议 Kira 计划三个月内启动测试网,将流动性质押引入 DeFi 领域

Kira 在完成 220 万美元种子轮融资后计划于三个月内启动测试网,将流动性质押引入 DeFi 领域。 分布式金融技术公司 Kira 在两周前完成了 220 万美元种子轮融资,得到了私募股权公司 Ascensive Asset Management 和 Alphabit Fund 的支持,由 BTC12 Capital 领投,TRG Capital、NGC Ventures 和 Origin C

BHP2.0小课堂丨什么是Cosmos?

BHP2.0星空测试网(https://bhpnet.io)于2020年8月28日正式启航。BHP2.0是基于Cosmos的Tendermint机制以及Cosmos SDK进行构建的开源区块链公链。与目前的BHP相比,BHP2.0有了很大的改变与不同,为了让大家能够率先了解BHP2.0的方方面面,我们特别推出了「BHP2.0小课堂」系列专题。今天先来为大家讲解一下什么是Cosmos?cosmos介

BHP2.0小课堂丨BHP2.0如何通过Cosmos实现跨链交互

昨天的推文《BHP2.0小课堂丨什么是Cosmos?》中,我们简单介绍了什么是Cosmos,Cosmos解决的问题以及BHP2.0为什么选择加入Cosmos 生态。今天我们来讲讲BHP2.0要如何通过Cosmos实现跨链交互。要理解如何通过 Cosmos实现跨链,最关键的是了解 IBC协议。IBC 是 Cosmos围绕 Cosmos 网络 和 Tendermint 共识而设计的 跨链通信协议 ,也

比特币有什么缺点?

1.交易平台的脆弱性。比特币网络很健壮,但比特币交易平台很脆弱。交易平台通常是一个网站,而网站会遭到黑客攻击,或者遭到主管部门的关闭。2.交易确认时间长。比特币钱包初次安装时,会消耗大量时间下载历史交易数据块。而比特币交易时,为了确认数据准确性,会消耗一些时间,与p2p网络进行交互,得到全网确认后,交易才算完成。3.价格波动极大。由于大量炒家介入,导致比特币兑换现金的价格如过山车一般起伏。使得比

麦妖榜
更新日期 2019-09-03
排名用户贡献值
1牛市来了30910
2BitettFan24187
3等待的宿命23810
4区块大康20369
5六叶树20310
6linjm122719429
7天下无双16192
8lizhen00215280
9让时间淡忘14586
10yelanyi050511349
返回顶部 ↑