黑龙江新闻频道

若何使用Aave举行闪电贷

admin 2021年09月19日 科技 40 1

皇冠APP下载

www.huangguan.us)是一个开放皇冠即时比分、皇冠官网注册的平台。皇冠注册平台(www.huangguan.us)提供最新皇冠登录,皇冠APP下载包含新皇冠体育代理、会员APP。

,


Aave,以前称为 ETHLender,现在是 DeFi 领域的前沿应用。Aave 是该领域中第一个提出闪电贷[4]观点的人。在闪电贷之前,你必须用一个超额抵押的资产来借贷另一个资产。例如,若是我想借一个[DAI](https://en. *** .org/wiki/Dai_(cryptocurrency "DAI")),我将不得不存入另一个跨越该价值的加密钱币。换句话说,你必须有钱才气借到钱。闪电贷打破了这种想法。他们为一个新的贷款系统打开了大门,而且做到了这一点「dian」,允许用户在不提供任何器械作为抵押的情形下乞贷。

在本教程中,你将领会到闪电贷[5]是若何实现的,以及若何自己实现执行一笔闪电贷。

关于 Aave

摘自Aave 官网[6]:Aave 是一个 *** 化的非托管流动性市场协议,用户可以作为存款人或乞贷人介入。储户向市场提供流动性,以赚取被动收入,而乞贷人能够以过分抵押(永远)或不足抵押(单块流动性)的方式乞贷。

这个界说完全准确的,但若是你不熟悉 DeFi 行业的行话,你可能并不明晰它的寄义。你可以把 Aave 看成是一个 *** 化的伪银行。Aave 没有一个验证所有生意的中央银行,而是行使智能合约,以自动化的方式完成所“suo”有这些事情。存款人将他们的代币放入 Aave,并最先为 wei[他们的存款赚取利息。另一方面,乞贷人会做相反的事情。他们从 Aave 中取出钱,并最先对所借的金额计息。不外他们必须超额抵押[7]才气借到钱。

对于那些不想把钱存入 Aave,而只想乞贷的人来说,尚有一种方式。这就是我们前面提到的闪电贷。

关于闪电贷(Flash Loan)

之条件到的闪电贷是一种在区〖qu〗块链上借入资产的新方式。最初由 Aave 实现,其他趋势性的 DeFi 协‘xie’议,如dYdX[8]迅速跟进,增添了这个新功效。所有以太坊生意的一个特征,使闪电贷成为可能。而这个要害特征就是[原子性](https://en. *** .org/wiki/Atomicity_(database_systems "原子性")#:~:text=一个原子生意就是,直接拒绝整个系列。)。

一个生意的操作系列是不能支解和不能消减的,它就是原子的。简朴来说就是:要么所有执行,要么什么都没有发生。没有中央状态! 闪电贷行使原子性,允许用户在不提交抵押品的情形下先举行乞贷。首先,每当你在闪电贷中借入一项资产时,你必须支付贷款金额的 0.09%的用度。其次,你必须在借贷的统一生意中归还贷款。虽然这种能力很好,但它的用途却有些局限。闪电贷主要用于资产间套利[9]

Remix 设置

为了简朴起见,我们将使用Remix IDE[10]。Remix 是一个基于浏览器的 IDE。也被称为集成开发环境。Remix 具有编写、调试、部署和操作以太坊智能合约[11]的能力。浏览器中加载 Remix 后,你会看到这个菜单:

pasted image 0

这里不会对 IDE 举行深入的研究(你可以阅读跟我学 Solidity :开发环境[12]),由于本教程“cheng”的重点是闪电贷。不外,你需要领会一下上图的四个部门:主面板、侧边面板、图标面板和终端面板。

在我们最先编写智能合约之前,我们要下载一个浏览器插件,现在最盛行的是MetaMask[13],使我们能够与以太坊区块链对接。

MetaMask 安装

若何安装 MetaMask:

  1. 点击你新安装的扩展程序,并赞成条款和条件。

  2. 确立一个平安的密码!

  3. 备份助记词,它应该物理存在,不应该保留在『zai』你的电脑上的任何地方。

若是上述四个步骤都完成了,你就可以最先编写你的第一个智能合约了!

智能合约

智能合约允许我们通过执行确定性的程序来读写区块链的数据。我们使用一种名为Solidity[14]的编程语言编写以太坊智能合约。Solidity 文件以.sol 扩展名末端。

迎接订阅周全掌握 Solidity 智能合约开发[15]

你可以在第一次启动 Remix 时删除事情区中可能存在的任何文件。然后确立几个文件:

  1. FlashLoan.sol

  2. **FlashLoanReceiverBase.sol **

  3. ILendingPoolAddressesProvider.sol

  4. IFlashLoanReceiver.sol

  5. ILendingPool.sol

  6. Withdrawable.sol

  7. 下面的代码片断是**FlashLoan.sol.**的实{shi}现。

    这个闪电贷将借入 1 [DAI](https://en. *** .org/wiki/Dai_(cryptocurrency "DAI"))。

pragma solidity ^0.6.6;
import "./FlashLoanReceiverBase.sol";
import "./ILendingPoolAddressesProvider.sol";
import "./ILendingPool.sol";

contract FlashloanV1 is FlashLoanReceiverBaseV1 {

    constructor(address _addressProvider) FlashLoanReceiverBaseV1(_addressProvider) public{}

 /**
   Flash loan 1000000000000000000 wei (1 ether) worth of `_asset`
 */
 function flashloan(address _asset) public onlyOwner {
        bytes memory data = "";
        uint amount = 1 ether;
        ILendingPoolV1 lendingPool = ILendingPoolV1(addressesProvider.getLendingPool());
        lendingPool.flashLoan(address(this), _asset, amount, data);
    }


    /**
  This function is called after your contract has received the flash loaned amount
     */
    function executeOperation(
        address _reserve,
        uint256 _amount,
        uint256 _fee,
        bytes calldata _params
    )
        external
        override
    {
        require(_amount <= getBalanceInternal(address(this), _reserve), "Invalid balance, was the flashLoan successful?");
       //
        // Your logic goes here.
        // !! Ensure that *this contract* has enough of `_reserve` funds to payback the `_fee` !!
        //

        uint totalDebt = _amount.add(_fee);
        transferFundsBackToPoolInternal(_reserve, totalDebt);
    }

}

总而言之,我们首先要‘yao’导入执行闪电贷所需的依赖。其中一些依赖关系被称为抽象合约[16])。一个抽象合约至少有个函数没有实现。你可以把它想象成一个屋子的图纸。一个修建商使用这个图纸来制作屋子。然而,在我们的比喻中,图纸是一个抽象合约,你是制作者,而屋子是派生合约。

在我们的案例中,闪电贷合约使用的是一个名为FlashLoanReceiverBaseV1的抽象合约,它提供了需要的实现细节,如闪电贷的归还。

现在来逐行解读代码:

#1 首先,我们必须界说 solidity 编译器的版本。在这个例子中,它是 0.6.6。

#2-4 为智能合约导入依赖项 #6 FlashLoanV1 合约是继续自 FlashLoanReceiverBaseV1 合约。

#8 通报了 Aave 的一个借贷池提供者的地址。在这个例子中,我们提供的是 DAI 借贷池的地址。

#13 界说了一个叫做 flashLoan 的函数。参数是想要闪电贷的资产地址。在这种情形下,该资产是 DAI。

#14 由于这里不需要任何闪电贷的数据,以是我们通报一个空字符串。

#15. 界「jie」说我们想要借出的 DAI 的数目(以 10^18 的 Wei 为单元)。

#16. 通过 Aave 提供『gong』的 ILendingPoolV1 初始化 LendingPool 接口,这样我们就可以(yi)挪用 flashLoan 函数。#17. 最后,挪用 flashLoan 函数。该函数需要 4 个主要参数。首先,通报将吸收贷款的地址。在我们的例子中,它是当前合约。其次,我们通报《bao》资产的地址。在我们的例子中,它是 Kovan 网络中 DAI 的地址。第三,通报资产的数目,在我们的案例中,它是 1 个 ether 单元(或 10^18 的 wei单元)的数目。第四,通报分外的空数据。

#24-31. 接下来第二个函数 executeOperation。这就是我们行使闪电贷的地方。它在 flashLoan 函数乐成执行后被内部挪用。它需要 4 个主要参数,划分是:

1). 必须归还贷款的贮备资产地址。2). 资产的数额 3). 协议书所收取的用度 4). 分外的参数「shu」,由函数内部使用。

#33. 检查我们是否收到了适当的贷款金额,否则它将抛出一个错误信〖xin〗息。

#34. 在这里,可以凭证你自己的使用场景,定制自己的实现逻辑(例如去 DEX 中套利)。

#40. 我们通过使用 SafeMaths 库提供的 add 函数,将用度和贷款金额加在一起。

#41.最后,把总的债务或贷款金额还给贷款人。

部署合约

  1. 首先,打开你的 MetaMask,将你的网络设置为 Kovan测试网络

Kovan测试网络
  1. 使用这个 gist 代码来界说 flashloan 智能(neng)合约的依赖关系。点击每个链接并将代码粘贴到你之前确立的响应的 Solidity 文件中:a. ILendingPool[17]b. IFlashLoanReceiver[18]c. ILendingPoolAddressesProvider[19]d. FlashLoanReceiverBase[20]e. Withdrawable[21]

Solidity文件
  1. 切换到 Solidity Compiler标签。将编译器设置为 0.6.6 并点击 compile FlashLoan.sol

  1. 你应该看到一些忠言,但没有错误信息。

  2. 现在,我们已经准备好将合约部署到 Kovan 网络。切换到 Deploy & Run Transctions标签。把部署环境(ENVIRONMENT),从 JavaScript VM 改为 Injected Web3。这应该会打开 MetaMask 询问你的权限。

部署环境
  1. 确保合约『yue』选择的是 FlashLoan.sol。在“zai”部署按钮旁边的文本字段‘duan’中提供 LendingPool 的地址。在我们的例子中,它将是0x506B0B2CF20FAA8f38a4E2B524EE43e1f4458Cc5。然后点击 Deploy(部署),它应该会打开 MetaMask。

注重。所有已部署的合约地址列表可在这里[22]找到。在那里,你可以找到 Aave 支持的种种借贷池的地址。虽然每个代币的地址都差异,但程序是相同的。

  1. 点击 确认(Confirm)。这样做后,你应该看到 MetaMask 发出的乐成通知。之后侧边栏应该有一个 “已部署的合约(Deployed Contracts)”。

为闪电贷准备资金

在新的 已部署合约标签下,可以复制已部署合约的地址。我们稍后会回到这一步;与此同时,我们需要给闪电贷合约添加一些 DAI。这是由于闪电贷需要合约中的资金才气乐成执行。为此,你可以跳转到水龙头[23]链接,获得一些 DAI 代币(请确保毗邻到右上角有小 KAave v2市场)。点击 Faucet,粘贴你的 MetaMask 钱包地址,然后守候确认。

获得确认后,我们将把 DAI 代币添加到 MetaMask 中。为此〖ci〗,打开你的 MetaMask。点击底部的 Add Token。在 代币合约地址(Token Contract Address)栏输入 0xF795577d9AC8bD7D90Ee22b6C1703490b6512FD。这是 Kovan 的 DAI 的合约地址。点击 下一步后,它应该显示你先前从水龙头(Faucet)获得的 DAI。

img

接下来,点击 DAI 代币。点击 发送,它应该打开一个类似于下图的窗口:

输入我们的闪电贷的合约地址,之前已经〖jing〗复制了该地址。输入我们要发送的金额。在我们的案例中,发送 10DAI。然后点击 下一步。点击 ji[ 确认!你现在已经乐成地给你的闪电贷合约发送了 10DAI。

执行闪电贷

回到 Remix,在部署的闪电贷合约下,尚有一个 flashloan 函数。这个函数需要一个我们想使用的资产的合约地址。在我们的例子中,它是 Kovan 测试网的 DAI 合约,是 0xF795577d9AC8bD7D90Ee22b6C1703490b6512FD。准确填写该字段后,你现在可以点击 生意(transact)按钮,如下图所示:

新二皇冠最新手机登录

新二皇冠最新手机登录(www.hgw8888888.com)实时更新发布最新最快最有效的新二皇冠最新手机登录网址,包括新2手机网址,新2备用网址,皇冠最新网址,新2足球网址,新2网址「zhi」大全。

点击按钮后,MetaMask 会弹出生意确认。确认生意后,你应该收到一条乐成信息。在 Remix 的终端,你应该看到一个 URL。点《dian》击后会跳转到 Etherscan。

remix

代币转移(Tokens Transferred)下,你应该看到三个差其余转账:

红色的箭头强调了从 LendingPool 转移 1 个 DAI 到我们的合约。橙色的箭头示意将 1 个 DAI 连同用度一起返还给 Landing pool。蓝色的箭头示意发生利息的 DAI。

小结

我们乐成地编写了闪电贷的智能合约, 它能够从资金池中借入 DAI,支付闪电贷用度『du』,然后在一次生意中归还所借金额。不需要没有任何抵押物就借到了钱!

黑龙江新闻频道声明:该文看法仅代表作者自己,与黑龙江新闻频道无关。转载请注明:若何使用Aave举行闪电贷
发布评论

分享到:

usdt支付平台(www.caibao.it):拉杜利察23+12+10赵岩昊24+8+6 广厦轻取天津
1 条回复
  1. ug610登陆(www.ugbet.us)
    ug610登陆(www.ugbet.us)
    (2021-09-19 00:00:39) 1#

    ug环球会员开户www.ugbet.us)开放环球UG代理登录网址、会员登录网址、环球UG会员注册、环球UG代理开户申请、环球UG电脑客户端、环球UG手机版下载等业务。
    有一点点心动

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。