了解如何执行闪电贷

  • 0chandan
  • 发布于 2023-02-02 23:35
  • 阅读 32

本文介绍了 DeFi 中的闪电贷概念,并通过一个使用 Aave 协议借贷 USDC 的智能合约示例,详细展示了如何在 BuildBear 测试网上部署和测试闪电贷合约。文章还对比了在本地节点和公共测试网上进行开发和测试的优劣,突出了 BuildBear 在提供 Mainnet fork、Faucet、交易调试和状态共享等方面的优势。

什么是闪电贷?

在传统金融中,借款人必须存入抵押品并通过信用审查才能获得贷款。但是,通过 Defi,借款人无需提供抵押品即可获得贷款。这种贷款方式称为闪电贷。

闪电贷是 DeFi 领域中一种无需抵押的短期贷款。闪电贷通常是高风险活动,允许用户在没有前期抵押品的情况下借用加密货币。这些贷款通过智能合约执行,并且有效期很短。

如果你想了解更多关于闪电贷的信息,请阅读这篇文章 learn-how-to-perform-flashloan-using-aave

那么,事不宜迟,让我们开始吧。

步骤 1:开发智能合约

1.1. 我们将开发一个简单的智能合约,该合约将从 Aave 协议借用 USDC,然后连同所需溢价(即佣金)一起偿还。

1.2. 以下是我们将要阅读的示例合约(可在此处获取 👉 GitHub Link):

Flashloan 智能合约

1.3. 深入研究代码:

createFlashLoan() 函数:

  • 此函数用于启动闪电贷。
  • 它接受要借入的资产的地址和要借入的金额作为参数。在我们的示例中,我们将使用 USDC0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174
  • 接收者地址设置为当前合约地址,使用 address(this),因为我们希望将借入的资金发送到我们将要部署的合约的地址,然后从同一合约偿还我们的贷款
  • 该函数还创建一个名为“params”的空字节内存变量,该变量可用于存储其他数据。此数据传递回 address(this) 以供进一步执行。在一个复杂的交易中,此数据作为参数传递给 createFlashLoan 函数
  • 它将推荐代码设置为 0,因为此交易的执行没有中间人。
  • 然后,它使用接收者地址、资产地址、金额、参数和推荐代码作为参数调用 POOL 合约的 flashLoanSimple 函数。

executeOperation() 函数:

  • 当启动闪电贷时,Aave 协议会调用此函数。
  • 它接受多个参数:资产地址、请求借入的金额、溢价(借款要偿还的费用)、发起者(执行闪电贷的地址)以及存储在“params”变量中的任何其他数据。

步骤 2:启动部署和测试智能合约所需的基础设施

现在,按照“设置”惯例,你应该将上述合约部署在本地区块链节点(例如:Hardhat 或 Truffle)或公共测试网(如 Goreli 测试网)上。虽然这没问题,但存在以下痛点:

关于 Goreli 测试网:

  • 它不是 Polygon 主网 😞,这意味着它不具有与 token 相同的状态,或者对于最重要的 ‼️ Aave 网络的状态,因为我需要这样才能确保我的合约在 Polygon 主网上以完全相同的方式工作
  • 水龙头:我需要解释更多吗? 😤
  • 我在哪里可以获得 USDC 来偿还佣金? 🤔

关于本地节点:

  • 主网分叉:选中 ✅
  • 水龙头:选中 ✅
  • 获取 USDC:为了能够支付佣金,我们将必须编写额外的脚本来模拟一个帐户(“富人”),然后获得一些 USDC 才能偿还佣金。😕
  • 轻松调试我的合约:遗憾的是,并非易事(是的,我可以使用一些 console.logs,但主要就是这样)。😢
  • 与我的朋友/导师分享我的交易状态以获得一些反馈:嗯,它被称为 localhost 是有原因的!所以别想了。😭

2.1. 这就是BuildBear的用武之地。它以某种方式结合了两个世界的优势:

  1. 主网分叉:选中 ✅
  2. 水龙头:选中 ✅
  3. USDC(ERC20 Token 水龙头):选中 ✅
  4. 调试我的交易:选中 ✅ [自带内置交易跟踪器]
  5. 与我的朋友/导师分享我的交易状态以获得一些反馈:选中 ✅。它是团队的私有测试网,因此,我有能力邀请我的朋友/导师加入我自己的测试网并审查我的交易

请看这里:本地主机失败的地方使用 BuildBear 测试网的分析赢得 Web3 黑客马拉松** ](https://buildbear.io/)。一旦你使用你的 Github 或 Google 帐户登录,你将看到一个类似于下面添加的图像的页面:

BuildBear 仪表板

2.3. 创建你的私有节点,从 Polygon 主网分叉:选择 Polygon 主网的原因是 AaveV3(在撰写本文时)尚未部署在 Ethereum 主网上。

根据 Aave 社区的最新治理投票,AaveV3 也将部署在 Ethereum 主网上

2.4. 使用“添加到 Metamask”按钮将你的私有测试网添加到你的 MetaMask 钱包:

2.5. 从水龙头(使用水龙头 URL)铸造你的 Native 和 USDC:

2.5.1. 铸造 Token

步骤 3:部署智能合约

3.1. 导航到 Remix Online IDE 网站并接受条款和条件。* ](https://miro.medium.com/v2/resize:fit:700/1jIJJX7V6J7Yex33Xm5m0BA.png)

Remix

3.2. 创建一个新合约并粘贴智能合约代码,可在此处获取 👉 GitHub Link

3.3. 使用以下图标和详细信息,使用 Solidity 版本 0.8.10 编译智能合约:

请注意,合约的 ABI 仅在合约编译后才可用。你可以在上图中看到可以复制的 ABI。请随身携带。我们一会儿就需要它。

3.4. 选择“部署和运行交易”选项卡:并按如下方式部署合约:

  • 确保将环境更新为“Injected provider — MetaMask” | 关键,
  • 合约是“SimpleFlashLoan”,并且
  • 提供者(在部署字段中)是 0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb

3.5. 单击“transact”按钮以将合约部署到你的私有节点网络;完成后,你将看到类似于以下内容:

3.6. 复制合约的地址并访问你个人分叉测试网的区块链浏览器(链接可在 home.buildbear.io 上的仪表板页面上找到)并找到你的合约。

3.6.1. 提交合约的 ABI 以方便交互

你可以访问 BuildBear 的区块链浏览器上的合约页面,然后访问合约选项卡。你应该看到类似于以下内容:

提交我们从步骤 3.3 复制的 ABI;完成后,你应该在“合约页面”上看到“读取合约”和“写入合约”按钮:

步骤 4:进行闪电贷,然后连同佣金一起偿还

6.1. 访问 Write Contract 选项卡并连接你的钱包:

6.2. 你必须只调用 createFlashLoan

6.3. 在 createFlashLoan 的“Arguments”字段中,输入你要借入的 token 地址(确保此 token 已在 Aave 上列出)和你要借入的金额。由于我们从水龙头铸造了 USDC,我们将使用 USDC 地址并借入 10,000,000.000000 [一千万](请注意,USDC 有 6 位小数,因此请注意零的数量)

6.3. 单击该按钮后,MetaMask 应该会出现,提示你批准该交易。确认交易后,你应该会看到一条成功消息。要在区块链上验证交易,请转到你的 Buildbear 仪表板并单击“打开资源管理器”。从那里,单击“显示所有交易”,你应该会看到你的交易已列出。

结论

我们成功地编写了闪电贷的智能合约!我们能够从资金池中借用 USDC,支付闪电贷费用,然后在一次交易中偿还借入的金额。你刚刚在没有抵押品的情况下借了钱!

这只花了大约 15 分钟

如果你欣赏我们所做的工作,请在TwitterLinkedIn上关注我们,如果你尚未加入 加入 Telegram 群组。

如果你喜欢我们的工作,请给我们一个掌声 👏。

作者:chandanDipesh

顺便说一句,如果你认识任何人有兴趣与 BuildBear 合作。请查看这里

  • 原文链接: medium.com/buildbear/lea...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
0chandan
0chandan
江湖只有他的大名,没有他的介绍。