Ether
閃電貸貸方如何知道您無法償還?
基本上我想知道它怎麼知道貸款什麼時候沒有還清。我知道這很容易檢查,但它如何恢復交易?
例如,假設我借了 1M USDT,然後我將在 uniswap 上將其兌換為 ETH,然後在 sushiswap 上將其兌換回 USDT。最後我做空了10K USDT,那麼交易會恢復,對吧?
但這意味著我在 uniswap 和 sushiswap 上的交易也會恢復嗎?
因為不執行我的掉期怎麼能證明我無法償還呢?有很多因素會影響這一點,比如有人在我之前做套利,我不再有相同的利潤,那麼它如何在不執行任何交易的情況下驗證這些。
這真的讓我很困惑。
通常貸方合約在藉出請求的資產後會執行回調。支付貸款和費用是回調責任。
如果回調沒有歸還貸款也沒有支付貸方費用,那麼貸方合約將撤銷呼叫,撤消回調所做的任何操作。
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"); } }