区块链研究实验室|如何使用JavaScript为DeFi协议提供资产数据

  • 时间:
  • 浏览:62
  • 来源:区块链技术网

DeFi已经成为以太坊生态系统中一个非常流行的用例。在撰写本文时,有超过10亿美元被锁定在DeFi协议中。以开放、分布式的替代方案取代现有金融产品的前景,迄今已证明非常受欢迎。

这些DeFi平台之所以伟大,是因为它们易于开发人员使用。由于它们的开源代码的性质,任何愿意学习如何使用它们的人都可以使用它们。

其中最大的一个是Compound金融,已锁定价值约为1.15亿美元。任何人都可以向他们的协议提供资产,并从中赚取利息,但这个过程是如何工作的?

Compound金融是如何运作?

Compound目前在这九个市场发挥作用:BAT、DAI、ETH、REP、SAI、USDC、USDT、WBTC、ZRX。这些是你可以赚取利息的数字资产。

让我们以DAI为例。你为Compound协议提供DAI后,该值将被协议锁定,直到您决定撤回它为止。同时您同意该协议可以借出该代币的价值,从而赢得整个资金池的利益,所以你可将其视为一个储蓄帐户。

存入其中后,您可以随时查看有多少DAI,当前利率是多少,借用其他资产等。

让我们从技术上讲讲

从技术角度来看,这个供应过程是什么样的?

该协议将ERC20兼容合约用于每个受支持的市场,它们称为cToken。它们每个都有一个外部函数:mint,将提供的值发送到该处。此函数接收提供的值,根据汇率计算等效数量的cToken,然后将其交换为提供的值。

例如,如果汇率为1:1,则提供一个ETH,那么发送方将会收到一个cETH。

与mint相反的是一个名为redeme的函数。当用户想要提取其锁定值时,使用所需数量的cETH代币调用redeme将根据当前汇率返回ETH的等价值。

注意:还有一个redeemUnderlyinging函数,该函数使用基础资产单位而不是cToken单位作为输入。

编写代码

先决条件:本演练假定您基本了解JavaScript、Web3和Ethereum智能合约。

我们将按照以下步骤供应ETH并将其兑换成Compound金融:

1. 加载cETH合约。

2. 通过调用mint,锁定ETH和接收cETH令牌来提供ETH。

3. 读取我们的cETH余额。

4. 读取我们锁定的ETH余额。

5. 通过提供cETH从协议中兑换我们的ETH。

步骤1:加载cETH合约

每个令牌智能合约在每个网络上都有一个不同的地址。cToken合约的ABI可从https://compound.finance/docs/abi/<network>/<cToken>公开获得。

在我们的场景中,使用cETH和Kovan testnet,我们的URL是https://compound.finance/docs/abi/kovan/cETH。

在Compound的官方文档中可以找到每个网络上每个合约的地址。

使用web3,我们初始化合约实例如下:

constcEthInstance=newweb3.eth.Contract(cEthABI,addr);

步骤2:提供ETH

图1显示了使用web3的send函数mint cTokens是多么容易:

cEthInstance.methods.mint().send({from:account,value:supplyValue}).once('transactionHash',(hash)=>{//Transactionhash}).on('confirmation',(number,receipt)=>{//Numberofconfirmations}).on('error',(error)=>{console.log(error);});

在此阶段,我们的ETH将开始根据当前利率赚取利息(也可以使用数学公式来计算)。

步骤3:读取我们的cETH余额

由于cToken合约符合ERC20,因此它们提供了一个称为balanceOf的函数。我们可以通过调用并向其传递帐户地址来检查我们的cETH余额:

letb=awaitcEthInstance.methods.balanceOf(account).call();

第四步:读取我们锁定的ETH余额

cToken合约还提供了一个名为balanceOfUnderlying的函数,该函数使用其拥有的cToken和当前汇率返回帐户的基础资产价值:

letu=awaitcEthInstance.methods.balanceOfUnderlying(account).call();

步骤5:从协议中赎回我们的ETH

将步骤4中的值u用作图2中的redeemAmount,我们可以调用redeemUnderlying来赎回我们的以太币:

cEthInstance.methods.redeemUnderlying(redeemAmount).send({from:account}).once('transactionHash',(hash)=>{//TransactionHash}).on('confirmation',(number,receipt)=>{//Numberofconfirmations}).on('error',(error)=>{console.log(error);})

或者我们可以使用redeem代替redeemUnderlying并将第3步中的值b作为redeemAmount传递。

结论

随着DeFi变得越来越容易使用并为许多人所接受,在任何开发人员的工具箱中,学习如何与这些协议进行交互都是一种宝贵的工具。

-----------------------------------

原文作者:Alex Roan

原文链接:https://medium.com/better-programming/how-to-supply-assets-to-defi-protocols-using-javascript-df6c6d31e58d

译者:链三丰

---------------------------------

相关文章阅读:

区块链研究实验室|如何从DeFi协议获取交易数据

区块链研究实验室|如何使用algotrade编写比特币的高级趋势跟踪策略

猜你喜欢

大幅度提高ETH生态隐私性的思考

目前以太坊生态上混币业务主要是依赖于tornado.cash这种混币合约,但tornado.cash有一个大问题,但凡参与过混币的地址都是全网公开的。你只要参与混币,就可以给你的输入和输出地址都打上一个标签。虽然大家不知道具体的输入和输出地址的对应关系,但只要将全网所有和tornado.cash交互过的地址全部打上混币的标签,这也是对隐私性的极大威胁。

2022-01-10

BTC、ETH、LTC的最小单位是什么?

比特币的创始人名为中本聪(Satoshi Nakamoto),比特币的最小单位是聪(Satoshi,简称 SAT)。1 个比特币等于 1 亿聪,这个单位换算是 BitcoinTalk 论坛上的用户们在 2011 年讨论后商定下来的。

2022-01-06

区块链红利吃饱后,这个巨头又想"征服"元宇宙?

据12月26日消息,百度与英伟达(NVIDIA)已达成协议,双方合作共建AI元宇宙。另外,在今日举行的百度AI开发者大会上,英伟达全球副总裁暨亚太区总裁 Raymond Teh将受邀出席,并发表主题演讲。

2021-12-27

2021年,区块链股权融资发生了怎么样的演变

过去一年,区块链行业融资井喷,在科技领域中独树一帜,A16z、红杉、老虎基金等等这些顶级机构在 2021 年的区块链行业肆意驰骋,在 DeFi、NFT、Metaverse 等领域扶持了一众创业项目。

2021-12-23

两个元宇宙的世界观,以及和区块链的关系

“元宇宙”这个名词音好听但义很难传达准确,想要更准确地理解义,取名为平行宇宙、竞争宇宙、山寨宇宙,更好。对应的,我们现在肉身所处的宇宙,我们称之为“肉身宇宙”。

2021-12-22