|
@@ -1,7 +1,7 @@
|
|
|
import "erc20.spec"
|
|
|
|
|
|
methods {
|
|
|
- onFlashLoan(address, address, uint256, uint256, bytes) => HAVOC_ALL // HAVOC_ECF
|
|
|
+ onFlashLoan(address, address, uint256, uint256, bytes) => HAVOC_ALL
|
|
|
|
|
|
_burn(address account, uint256 amount) returns(bool) => specBurn(account, amount);
|
|
|
}
|
|
@@ -13,19 +13,11 @@ function specBurn(address account, uint256 amount) returns bool { // retuns ne
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-// ghost to save args that were passed to burn function
|
|
|
-// summarize burn
|
|
|
-// assert ghost == amount + fee
|
|
|
|
|
|
-
|
|
|
-// STATUS - in progress
|
|
|
-// HAVOC_ALL - everything is havoced => violation
|
|
|
-// HAVOC_ECF - verified
|
|
|
-// https://vaas-stg.certora.com/output/3106/8795450b626f2ca53a2b/?anonymousKey=dd774da10cc595e4e38357af9e4f50bf2c0cb02a
|
|
|
+// STATUS - verified
|
|
|
// fee + flashLoan amount is burned
|
|
|
rule letsWatchItBurns(env e){
|
|
|
address receiver; address token; uint256 amount; bytes data;
|
|
|
- require amount > 0;
|
|
|
|
|
|
uint256 feeBefore = flashFee(e, token, amount);
|
|
|
|