Merge pull request #4 from Certora/certora/erc1155ext
fix erc1155supply vacuity, change CI solc version to 8.4pull/3480/head
commit
b90f4d285e
File diff suppressed because it is too large
Load Diff
@ -1,14 +1,61 @@ |
||||
import "../../munged/token/ERC1155/extensions/ERC1155Supply.sol"; |
||||
|
||||
|
||||
contract ERC1155SupplyHarness is ERC1155Supply { |
||||
constructor(string memory uri_) |
||||
ERC1155(uri_) |
||||
{} |
||||
address public owner; |
||||
constructor(string memory uri_) ERC1155(uri_) { |
||||
owner = msg.sender; |
||||
} |
||||
|
||||
// workaround for problem caused by `exists` being a CVL keyword |
||||
function exists_wrapper(uint256 id) public view virtual returns (bool) { |
||||
return exists(id); |
||||
} |
||||
|
||||
// These rules were not implemented in the base but there are changes in supply |
||||
// that are affected by the internal contracts so we implemented them. We assume |
||||
// only the owner can call any of these functions to be able to test them but also |
||||
// limit false positives. |
||||
|
||||
modifier onlyOwner { |
||||
require(msg.sender == owner); |
||||
_; |
||||
} |
||||
|
||||
function burn( address from, uint256 id, uint256 amount) public virtual onlyOwner { |
||||
_burn(from, id, amount); |
||||
} |
||||
function burnBatch( |
||||
address from, |
||||
uint256[] memory ids, |
||||
uint256[] memory amounts |
||||
) public virtual onlyOwner { |
||||
_burnBatch(from, ids, amounts); |
||||
} |
||||
|
||||
function mint( |
||||
address to, |
||||
uint256 id, |
||||
uint256 amount, |
||||
bytes memory data |
||||
) public virtual onlyOwner { |
||||
_mint(to, id, amount, data); |
||||
} |
||||
|
||||
function mintBatch( |
||||
address to, |
||||
uint256[] memory ids, |
||||
uint256[] memory amounts, |
||||
bytes memory data |
||||
) public virtual onlyOwner { |
||||
_mintBatch(to, ids, amounts, data); |
||||
} |
||||
|
||||
// In order to check the invariant that zero address never holds any tokens, we need to remove the require |
||||
// from this function. |
||||
function balanceOf(address account, uint256 id) public view virtual override returns (uint256) { |
||||
// require(account != address(0), "ERC1155: address zero is not a valid owner"); |
||||
return _balances[id][account]; |
||||
} |
||||
} |
||||
|
||||
|
@ -1,7 +1,7 @@ |
||||
certoraRun \ |
||||
certora/harnesses/ERC1155/ERC1155BurnableHarness.sol \ |
||||
--verify ERC1155BurnableHarness:certora/specs/ERC1155Burnable.spec \ |
||||
--solc solc8.2 \ |
||||
--solc solc8.4 \ |
||||
--optimistic_loop \ |
||||
--loop_iter 3 \ |
||||
--msg "ERC1155 Burnable verification all rules" |
||||
|
@ -1,7 +1,7 @@ |
||||
certoraRun \ |
||||
certora/harnesses/ERC1155/ERC1155PausableHarness.sol \ |
||||
--verify ERC1155PausableHarness:certora/specs/ERC1155Pausable.spec \ |
||||
--solc solc8.2 \ |
||||
--solc solc8.4 \ |
||||
--optimistic_loop \ |
||||
--loop_iter 3 \ |
||||
--msg "ERC1155 Pausable verification all rules" |
||||
|
@ -1,7 +1,7 @@ |
||||
certoraRun \ |
||||
certora/harnesses/ERC1155/ERC1155SupplyHarness.sol \ |
||||
--verify ERC1155SupplyHarness:certora/specs/ERC1155Supply.spec \ |
||||
--solc solc8.2 \ |
||||
--solc solc8.4 \ |
||||
--optimistic_loop \ |
||||
--loop_iter 3 \ |
||||
--msg "ERC1155 Supply verification all rules" |
||||
|
Loading…
Reference in new issue