对于我们来说,使用前一部分最简单的方法是使用Truffle来部署和验证合约。我们需要对其进行验证,以便我们可以轻松地在浏览器中执行它。
首先,为此项目创建一个文件夹
mkdir flashloan && cd flashloan
接下来,调用这个truffle(在编写本文时,我的版本是v5.1.40)命令为我们创建一个flash loan合约
truffle unbox aave/flashloan-box
我们的flash loan合约在ontracts/Flashloan.sol .sol. 这里没什么奇怪的,它看起来和上一部分的完全一样。
为了能够将智能合约部署到Ropsten网络,我们需要确保我们的以太坊地址(我们使用Metamask浏览器扩展为我们提供地址)具有足够的以太币余额用于部署和交易执行。要获得一些测试的eth,请转到水龙头。
一旦有了以太币,我们需要做的最后一件事。如果转到truffle-config.js,您会注意到这里有很多配置,我们需要注意。为了进行部署,我们需要设置两个环境变量。
(i)我们的Metamask助记符(您应该在创建帐户时写下来,或者只需转到Metamask设置即可显示出来)。这进入DEPLOYMENT_ACCOUNT_KEY
(ii)Infura API密钥(Infura允许我们与以太坊客户端通信,而无需运行自己的客户端)。这进入INFURA_API_密钥中。
一旦您在终端中设置了这些,我们将添加一个truffle插件,以便在部署后验证智能合约。我们需要这样做,以便我们可以在Etherscan上查看智能合约代码,并可以直接通过浏览器执行其功能。
要添加插件运行(像以前一样在flashloan目录内部)
yarn add -D truffle-plugin-verify
我写这篇文章时的版本是1.22.4
现在我们需要将插件添加到truffle-config.js
在truffle-config.js中附加“ plugins”和“ api_keys”
plugins: [“truffle-plugin-verify”],
api_keys: {
etherscan: process.env.ETHERSCAN_API_KEY,
},
注意,我们需要另一个API密钥,这次请转到Etherscan。你需要在他们那里有一个帐户,所以一定要注册。
最后一件事,我保证。我们需要在Flashloan合约中添加license字段。这是我们成功核实合约所必需的。去看contracts/Flashloan.sol并在文件顶部添加这一行
// SPDX-License-Identifier: MIT
我们已经准备好部署Flashloan.sol!
运行以下命令(您必须在同一终端窗口中执行所有操作,以便在部署时可以使用之前设置的环境变量)
truffle console –network ropsten
然后(当你在truffle控制台中时,应该说truffle(ropsten)>)
migrate –reset
你应该看到这样的东西
要获得可理解的代码,我们需要进行验证。在同一终端窗口中运行
.exit
这将退出truffle控制台(应该还有一个控制台命令),现在
truffle run verify Flashloan –network ropsten –license MIT
如果你不明白这一点
如果您返回https://ropsten.etherscan.io/address/0x1bd39Dd799C046EEDce91b35b2056754CeF08aE9,“Contract”标签现在将允许您与自己在Ropsten上运行的Flashloan合约进行交互
Ropsten DAI。前往https://ropsten.etherscan.io/address/0xf80a32a835f79d7787e8a8ee5721d0feafd78108#writeContract
在mint函数下,写2。这将铸成我们2个DAI
现在将此DAI发送到flashloan智能合约,在我的情况下为0x1bd39Dd799C046EEDce91b35b2056754CeF08aE9。现在智能合约的余额为2 DAI,我们可以向银行借贷1 DAI。您可能已经注意到我们的合约说1 ether,那么ether确实代表1e18 wei,因此,如果我们使用ERC20令牌,则仅表示该令牌的1e18。由于测试的DAI也有18位小数,所以一切都很好。
我听到你的声音,为什么要借贷需要DAI?好吧,我们需要偿还贷款的服务费。我们本来可以在DAI中估算出服务成本,它也可以起作用
现在回到已部署的合约
https://ropsten.etherscan.io/address/0x1bd39Dd799C046EEDce91b35b2056754CeF08aE9。转到write部分,用我们想要flash loan的资产的地址点击flashloan write按钮,即。
0xf80a32a835f79d7787e8a8ee5721d0feafd78108
这是我的一份不同合约的flashloan