基本上,我在想,它是如何知道什么时候贷款没有还清。我知道这很容易检查,但是它如何恢复事务呢?
例如,假设我借用了1万个USDT,然后在uniswap上将它交换给ETH,然后在sushiswap上再交换到USDT。最后我做空了10 right,那么交易就会恢复,对吗?
但这意味着我的单水和sushiswap的交易也会恢复吗?
因为如果不执行我的掉期,怎么能证明我无法偿还呢?有很多因素可以影响这一点,比如在我之前有人在我之前做套利,这样我就不会有同样的利润了,所以它怎么能在不执行任何交易的情况下验证这些。
这真的让我很困惑。
发布于 2021-05-30 22:21:19
通常,贷款人合同在借出所请求的资产后执行回调。偿还贷款和费用是收回的责任。
如果回调没有返回贷款,也没有支付贷款人费用,那么贷款人合同将恢复调用,取消回调所做的任何操作。
interface IBorrower {
function callback() external;
}
contract Lender {
function flashLoan(IBorrower borrower, uint256 amount) {
// Send tokens to borrower
uint balance = weth.balanceOf(address(this));
weth.transfer(address(borrower), amount);
// Execute callback
borrower.callback();
// Check loan was returned
uint returned = weth.balanceOf(address(this));
require(returned >= balance + FEES, "Callback failed");
}
}https://ethereum.stackexchange.com/questions/99938
复制相似问题