|
|
|
@ -250,11 +250,11 @@ rule cannotTransferMoreBatch(env e){ |
|
|
|
|
require amounts.length == 3; |
|
|
|
|
require ids[0] == idToCheck1; require amounts[0] == amountToCheck1; |
|
|
|
|
require ids[1] == idToCheck2; require amounts[1] == amountToCheck2; |
|
|
|
|
// require ids[2] == idToCheck3; require amounts[2] == amountToCheck3; |
|
|
|
|
require ids[2] == idToCheck3; require amounts[2] == amountToCheck3; |
|
|
|
|
|
|
|
|
|
safeBatchTransferFrom@withrevert(e, from, to, ids, amounts, data); |
|
|
|
|
|
|
|
|
|
assert (amountToCheck1 > balanceBefore1 || amountToCheck2 > balanceBefore2 || amountToCheck2 > balanceBefore2) => lastReverted, "Achtung! Scammer!"; |
|
|
|
|
assert (amountToCheck1 > balanceBefore1 || amountToCheck2 > balanceBefore2 || amountToCheck3 > balanceBefore3) => lastReverted, "Achtung! Scammer!"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -266,9 +266,6 @@ rule revertOfTransferBatch(env e){ |
|
|
|
|
require ids.length < 100000000; |
|
|
|
|
require amounts.length < 100000000; |
|
|
|
|
|
|
|
|
|
uint256 idTMP = ids.length; |
|
|
|
|
uint256 amountsTMP = amounts.length; |
|
|
|
|
|
|
|
|
|
safeBatchTransferFrom@withrevert(e, from, to, ids, amounts, data); |
|
|
|
|
|
|
|
|
|
assert ids.length != amounts.length => lastReverted, "Achtung! Scammer!"; |
|
|
|
@ -324,13 +321,6 @@ rule transferBatchBalanceFromEffect(env e){ |
|
|
|
|
|
|
|
|
|
require other != to; |
|
|
|
|
|
|
|
|
|
// require ids.length == 3; |
|
|
|
|
// require amounts.length == 3; |
|
|
|
|
|
|
|
|
|
// require ids[0] == id1; require ids[1] == id2; require ids[2] == id3; |
|
|
|
|
// require amounts[0] == amount1; require amounts[1] == amount2; require amounts[2] == amount3; |
|
|
|
|
// require amount1 > 0; require amount2 > 0; require amount3 > 0; |
|
|
|
|
|
|
|
|
|
uint256 otherBalanceBefore1 = balanceOf(other, id1); |
|
|
|
|
uint256 otherBalanceBefore2 = balanceOf(other, id2); |
|
|
|
|
uint256 otherBalanceBefore3 = balanceOf(other, id3); |
|
|
|
@ -357,13 +347,6 @@ rule transferBatchBalanceToEffect(env e){ |
|
|
|
|
|
|
|
|
|
require other != from; |
|
|
|
|
|
|
|
|
|
// require ids.length == 3; |
|
|
|
|
// require amounts.length == 3; |
|
|
|
|
|
|
|
|
|
// require ids[0] == id1; require ids[1] == id2; require ids[2] == id3; |
|
|
|
|
// require amounts[0] == amount1; require amounts[1] == amount2; require amounts[2] == amount3; |
|
|
|
|
// require amount1 > 0; require amount2 > 0; require amount3 > 0; |
|
|
|
|
|
|
|
|
|
uint256 otherBalanceBefore1 = balanceOf(other, id1); |
|
|
|
|
uint256 otherBalanceBefore2 = balanceOf(other, id2); |
|
|
|
|
uint256 otherBalanceBefore3 = balanceOf(other, id3); |
|
|
|
@ -623,39 +606,12 @@ rule cantMintBatchOtherBalances(env e){ |
|
|
|
|
uint256 otherBalanceAfter3 = balanceOf(other, id3); |
|
|
|
|
|
|
|
|
|
assert other != to => (otherBalanceBefore1 == otherBalanceAfter1 |
|
|
|
|
|| otherBalanceBefore2 == otherBalanceAfter2 |
|
|
|
|
|| otherBalanceBefore3 == otherBalanceAfter3) |
|
|
|
|
&& otherBalanceBefore2 == otherBalanceAfter2 |
|
|
|
|
&& otherBalanceBefore3 == otherBalanceAfter3) |
|
|
|
|
, "I like to see your money disappearing"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// rule mintRevert(env e){ |
|
|
|
|
// address operator; |
|
|
|
|
// address from; |
|
|
|
|
// address to; |
|
|
|
|
// uint256 id; |
|
|
|
|
// uint256 amount; |
|
|
|
|
// bytes data; |
|
|
|
|
// |
|
|
|
|
// require operator == e.msg.sender; |
|
|
|
|
// require from == 0; |
|
|
|
|
// |
|
|
|
|
// _doSafeTransferAcceptanceCheck@withrevert(operator, from, to, id, amount, data); |
|
|
|
|
// |
|
|
|
|
// bool acceptanceCheck = lastReverted; |
|
|
|
|
// |
|
|
|
|
// _mint@withrevert(e, to, id, amount, data); |
|
|
|
|
// |
|
|
|
|
// bool mintRevert = lastReverted; |
|
|
|
|
// |
|
|
|
|
// assert acceptanceCheck => mintRevert, "reverts are wrong"; |
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////// |
|
|
|
|
// Burn (9/9) |
|
|
|
|
///////////////////////////////////////////////// |
|
|
|
@ -814,12 +770,6 @@ rule cantBurnBatchOtherBalances(env e){ |
|
|
|
|
uint256[] ids; uint256[] amounts; |
|
|
|
|
address other; |
|
|
|
|
|
|
|
|
|
// require ids.length == 3; |
|
|
|
|
// require amounts.length == 3; |
|
|
|
|
|
|
|
|
|
// require ids[0] == id1; require ids[1] == id2; require ids[2] == id3; |
|
|
|
|
// require amounts[0] == amount1; require amounts[1] == amount2; require amounts[2] == amount3; |
|
|
|
|
|
|
|
|
|
uint256 otherBalanceBefore1 = balanceOf(other, id1); |
|
|
|
|
uint256 otherBalanceBefore2 = balanceOf(other, id2); |
|
|
|
|
uint256 otherBalanceBefore3 = balanceOf(other, id3); |
|
|
|
@ -831,7 +781,7 @@ rule cantBurnBatchOtherBalances(env e){ |
|
|
|
|
uint256 otherBalanceAfter3 = balanceOf(other, id3); |
|
|
|
|
|
|
|
|
|
assert other != from => (otherBalanceBefore1 == otherBalanceAfter1 |
|
|
|
|
|| otherBalanceBefore2 == otherBalanceAfter2 |
|
|
|
|
|| otherBalanceBefore3 == otherBalanceAfter3) |
|
|
|
|
&& otherBalanceBefore2 == otherBalanceAfter2 |
|
|
|
|
&& otherBalanceBefore3 == otherBalanceAfter3) |
|
|
|
|
, "I like to see your money disappearing"; |
|
|
|
|
} |
|
|
|
|