Challenge #3 - Truster
越来越多的借贷池提供闪电贷。在这种情况下,一个新的矿池已经启动,可以免费提供 DVT 代币的闪贷。
该池持有 100 万个 DVT 代币。你什么都没有。
要通过此挑战,请将所有令牌从池中取出。如果可能,在单个事务中。
这道题依然提供了flashLoan函数来借钱,但是在flashLoan中有这样一行代码:
我们可以通过构造data参数,对指定的方法进行调用
truster.challenge.js:
我们选择通过web3.eth.abi.encodeFunctionCall()方法来构造data,我这里选择通过yarn add下载web3-eth-abi包然后导入。
因为这里会检查借贷前后池子里的余额是否相同,所以我们不能直接调用transfer函数,但是我们可以调用approve函数,在借贷之后直接把池子中的钱转给我们。
具体关于web3.eth.abi.encodeFunctionCall()方法的使用可以参考:https://learnblockchain.cn/docs/web3.js/web3-eth-abi.html#encodefunctioncall
测试: