From 8738322022a257fc2b0e5e7699f4d6fd9d7d845a Mon Sep 17 00:00:00 2001 From: Vectorized Date: Mon, 18 Mar 2024 22:44:56 +0000 Subject: [PATCH] T --- .gas-snapshot | 150 +++++++----------- test/Bench.t.sol | 394 ----------------------------------------------- 2 files changed, 59 insertions(+), 485 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index d540f32..b812701 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -3,103 +3,71 @@ BaseInvariantTest:invariantMirror721BalanceSum() (runs: 30, calls: 450, reverts: BaseInvariantTest:invariantMirrorAndBaseRemainImmutable() (runs: 30, calls: 450, reverts: 0) BaseInvariantTest:invariantTotalReflectionIsValid() (runs: 30, calls: 450, reverts: 0) BaseInvariantTest:invariantUserReflectionIsValid() (runs: 30, calls: 450, reverts: 0) -BenchTest:testMintAndTransferDN404_01() (gas: 208935) -BenchTest:testMintAndTransferDN404_02() (gas: 215100) -BenchTest:testMintAndTransferDN404_03() (gas: 221224) -BenchTest:testMintAndTransferDN404_04() (gas: 227415) -BenchTest:testMintAndTransferDN404_05() (gas: 255440) -BenchTest:testMintAndTransferDN404_06() (gas: 261586) -BenchTest:testMintAndTransferDN404_07() (gas: 267701) -BenchTest:testMintAndTransferDN404_08() (gas: 273900) -BenchTest:testMintAndTransferDN404_09() (gas: 345702) -BenchTest:testMintAndTransferDN404_10() (gas: 351894) -BenchTest:testMintAndTransferDN404_11() (gas: 358060) -BenchTest:testMintAndTransferDN404_12() (gas: 364163) -BenchTest:testMintAndTransferDN404_13() (gas: 392252) -BenchTest:testMintAndTransferDN404_14() (gas: 398358) -BenchTest:testMintAndTransferDN404_15() (gas: 404503) -BenchTest:testMintAndTransferDN404_16() (gas: 410626) -BenchTest:testMintAndTransferDN420_01() (gas: 135802) -BenchTest:testMintAndTransferDN420_02() (gas: 138913) -BenchTest:testMintAndTransferDN420_03() (gas: 141992) -BenchTest:testMintAndTransferDN420_04() (gas: 145095) -BenchTest:testMintAndTransferDN420_05() (gas: 148180) +BenchTest:testMintAndTransferDN404_01() (gas: 208984) +BenchTest:testMintAndTransferDN404_02() (gas: 215086) +BenchTest:testMintAndTransferDN404_03() (gas: 221232) +BenchTest:testMintAndTransferDN404_04() (gas: 227379) +BenchTest:testMintAndTransferDN404_05() (gas: 255470) +BenchTest:testMintAndTransferDN404_06() (gas: 261593) +BenchTest:testMintAndTransferDN404_07() (gas: 267731) +BenchTest:testMintAndTransferDN404_08() (gas: 273863) +BenchTest:testMintAndTransferDN404_09() (gas: 345754) +BenchTest:testMintAndTransferDN404_10() (gas: 351835) +BenchTest:testMintAndTransferDN404_11() (gas: 358046) +BenchTest:testMintAndTransferDN404_12() (gas: 364126) +BenchTest:testMintAndTransferDN404_13() (gas: 392173) +BenchTest:testMintAndTransferDN404_14() (gas: 398385) +BenchTest:testMintAndTransferDN404_15() (gas: 404533) +BenchTest:testMintAndTransferDN404_16() (gas: 410678) +BenchTest:testMintAndTransferDN420_01() (gas: 135827) +BenchTest:testMintAndTransferDN420_02() (gas: 138887) +BenchTest:testMintAndTransferDN420_03() (gas: 141970) +BenchTest:testMintAndTransferDN420_04() (gas: 145073) +BenchTest:testMintAndTransferDN420_05() (gas: 148157) BenchTest:testMintAndTransferDN420_06() (gas: 151239) -BenchTest:testMintAndTransferDN420_07() (gas: 154364) -BenchTest:testMintAndTransferDN420_08() (gas: 157384) -BenchTest:testMintAndTransferDN420_09() (gas: 160510) -BenchTest:testMintAndTransferDN420_10() (gas: 163550) +BenchTest:testMintAndTransferDN420_07() (gas: 154276) +BenchTest:testMintAndTransferDN420_08() (gas: 157361) +BenchTest:testMintAndTransferDN420_09() (gas: 160466) +BenchTest:testMintAndTransferDN420_10() (gas: 163572) BenchTest:testMintAndTransferDN420_11() (gas: 166634) -BenchTest:testMintAndTransferDN420_12() (gas: 169760) -BenchTest:testMintAndTransferDN420_13() (gas: 172800) -BenchTest:testMintAndTransferDN420_14() (gas: 175904) -BenchTest:testMintAndTransferDN420_15() (gas: 179031) -BenchTest:testMintAndTransferDN420_16() (gas: 182050) -BenchTest:testMintAndTransferPandora_01() (gas: 190474) -BenchTest:testMintAndTransferPandora_02() (gas: 306408) -BenchTest:testMintAndTransferPandora_03() (gas: 422308) -BenchTest:testMintAndTransferPandora_04() (gas: 538173) -BenchTest:testMintAndTransferPandora_05() (gas: 654075) -BenchTest:testMintAndTransferPandora_06() (gas: 770009) -BenchTest:testMintAndTransferPandora_07() (gas: 885872) -BenchTest:testMintAndTransferPandora_08() (gas: 1001792) -BenchTest:testMintAndTransferPandora_09() (gas: 1117673) -BenchTest:testMintAndTransferPandora_10() (gas: 1233575) -BenchTest:testMintAndTransferPandora_11() (gas: 1349489) -BenchTest:testMintAndTransferPandora_12() (gas: 1465390) -BenchTest:testMintAndTransferPandora_13() (gas: 1581309) -BenchTest:testMintAndTransferPandora_14() (gas: 1697172) -BenchTest:testMintAndTransferPandora_15() (gas: 1813072) -BenchTest:testMintAndTransferPandora_16() (gas: 1928974) -BenchTest:testMintDN404_01() (gas: 123564) -BenchTest:testMintDN404_02() (gas: 126608) -BenchTest:testMintDN404_03() (gas: 129721) -BenchTest:testMintDN404_04() (gas: 132839) -BenchTest:testMintDN404_05() (gas: 157828) -BenchTest:testMintDN404_06() (gas: 160878) -BenchTest:testMintDN404_07() (gas: 164034) -BenchTest:testMintDN404_08() (gas: 167062) -BenchTest:testMintDN404_09() (gas: 213997) -BenchTest:testMintDN404_10() (gas: 217092) -BenchTest:testMintDN404_11() (gas: 220159) -BenchTest:testMintDN404_12() (gas: 223231) -BenchTest:testMintDN404_13() (gas: 248268) -BenchTest:testMintDN404_14() (gas: 251336) -BenchTest:testMintDN404_15() (gas: 254448) -BenchTest:testMintDN404_16() (gas: 257542) -BenchTest:testMintDN420_01() (gas: 94520) -BenchTest:testMintDN420_02() (gas: 95953) -BenchTest:testMintDN420_03() (gas: 97377) -BenchTest:testMintDN420_04() (gas: 98827) -BenchTest:testMintDN420_05() (gas: 100237) -BenchTest:testMintDN420_06() (gas: 101686) -BenchTest:testMintDN420_07() (gas: 103112) -BenchTest:testMintDN420_08() (gas: 104521) -BenchTest:testMintDN420_09() (gas: 105971) +BenchTest:testMintAndTransferDN420_12() (gas: 169759) +BenchTest:testMintAndTransferDN420_13() (gas: 172843) +BenchTest:testMintAndTransferDN420_14() (gas: 175926) +BenchTest:testMintAndTransferDN420_15() (gas: 178987) +BenchTest:testMintAndTransferDN420_16() (gas: 182049) +BenchTest:testMintDN404_01() (gas: 123546) +BenchTest:testMintDN404_02() (gas: 126639) +BenchTest:testMintDN404_03() (gas: 129707) +BenchTest:testMintDN404_04() (gas: 132802) +BenchTest:testMintDN404_05() (gas: 157836) +BenchTest:testMintDN404_06() (gas: 160907) +BenchTest:testMintDN404_07() (gas: 163998) +BenchTest:testMintDN404_08() (gas: 167114) +BenchTest:testMintDN404_09() (gas: 213961) +BenchTest:testMintDN404_10() (gas: 217055) +BenchTest:testMintDN404_11() (gas: 220168) +BenchTest:testMintDN404_12() (gas: 223238) +BenchTest:testMintDN404_13() (gas: 248231) +BenchTest:testMintDN404_14() (gas: 251322) +BenchTest:testMintDN404_15() (gas: 254456) +BenchTest:testMintDN404_16() (gas: 257528) +BenchTest:testMintDN420_01() (gas: 94501) +BenchTest:testMintDN420_02() (gas: 95950) +BenchTest:testMintDN420_03() (gas: 97333) +BenchTest:testMintDN420_04() (gas: 98804) +BenchTest:testMintDN420_05() (gas: 100181) +BenchTest:testMintDN420_06() (gas: 101663) +BenchTest:testMintDN420_07() (gas: 103090) +BenchTest:testMintDN420_08() (gas: 104476) +BenchTest:testMintDN420_09() (gas: 105904) BenchTest:testMintDN420_10() (gas: 107377) -BenchTest:testMintDN420_11() (gas: 108826) -BenchTest:testMintDN420_12() (gas: 110255) +BenchTest:testMintDN420_11() (gas: 108803) +BenchTest:testMintDN420_12() (gas: 110210) BenchTest:testMintDN420_13() (gas: 111640) BenchTest:testMintDN420_14() (gas: 113114) -BenchTest:testMintDN420_15() (gas: 114497) +BenchTest:testMintDN420_15() (gas: 114496) BenchTest:testMintDN420_16() (gas: 115948) -BenchTest:testMintPandora_01() (gas: 133912) -BenchTest:testMintPandora_02() (gas: 203394) -BenchTest:testMintPandora_03() (gas: 272897) -BenchTest:testMintPandora_04() (gas: 342394) -BenchTest:testMintPandora_05() (gas: 411951) -BenchTest:testMintPandora_06() (gas: 481434) -BenchTest:testMintPandora_07() (gas: 550959) -BenchTest:testMintPandora_08() (gas: 620442) -BenchTest:testMintPandora_09() (gas: 689967) -BenchTest:testMintPandora_10() (gas: 759469) -BenchTest:testMintPandora_11() (gas: 828952) -BenchTest:testMintPandora_12() (gas: 898457) -BenchTest:testMintPandora_13() (gas: 967961) -BenchTest:testMintPandora_14() (gas: 1037506) -BenchTest:testMintPandora_15() (gas: 1106967) -BenchTest:testMintPandora_16() (gas: 1176451) -BenchTest:test__codesize() (gas: 39186) +BenchTest:test__codesize() (gas: 29036) DN404CustomUnitTest:testInitializeCorrectUnitSuccess() (gas: 129992) DN404CustomUnitTest:testInitializeWithUnitTooLargeReverts() (gas: 33824) DN404CustomUnitTest:testInitializeWithZeroUnitReverts() (gas: 13897) diff --git a/test/Bench.t.sol b/test/Bench.t.sol index 6603a66..8a90936 100644 --- a/test/Bench.t.sol +++ b/test/Bench.t.sol @@ -6,382 +6,20 @@ import {DN404, MockDN404Slim} from "./utils/mocks/MockDN404Slim.sol"; import {DN420, MockDN420Slim} from "./utils/mocks/MockDN420Slim.sol"; import {DN404Mirror} from "../src/DN404Mirror.sol"; -abstract contract Ownable { - event OwnershipTransferred(address indexed user, address indexed newOwner); - - error Unauthorized(); - error InvalidOwner(); - - address public owner; - - modifier onlyOwner() virtual { - if (msg.sender != owner) revert Unauthorized(); - - _; - } - - constructor(address _owner) { - if (_owner == address(0)) revert InvalidOwner(); - - owner = _owner; - - emit OwnershipTransferred(address(0), _owner); - } - - function transferOwnership(address _owner) public virtual onlyOwner { - if (_owner == address(0)) revert InvalidOwner(); - - owner = _owner; - - emit OwnershipTransferred(msg.sender, _owner); - } - - function revokeOwnership() public virtual onlyOwner { - owner = address(0); - - emit OwnershipTransferred(msg.sender, address(0)); - } -} - -abstract contract ERC721Receiver { - function onERC721Received(address, address, uint256, bytes calldata) - external - virtual - returns (bytes4) - { - return ERC721Receiver.onERC721Received.selector; - } -} - -/// @notice ERC404 -/// A gas-efficient, mixed ERC20 / ERC721 implementation -/// with native liquidity and fractionalization. -/// -/// This is an experimental standard designed to integrate -/// with pre-existing ERC20 / ERC721 support as smoothly as -/// possible. -/// -/// @dev In order to support full functionality of ERC20 and ERC721 -/// supply assumptions are made that slightly constraint usage. -/// Ensure decimals are sufficiently large (standard 18 recommended) -/// as ids are effectively encoded in the lowest range of amounts. -/// -/// NFTs are spent on ERC20 functions in a FILO queue, this is by -/// design. -/// -abstract contract ERC404 is Ownable { - // Events - event ERC20Transfer(address indexed from, address indexed to, uint256 amount); - event Approval(address indexed owner, address indexed spender, uint256 amount); - event Transfer(address indexed from, address indexed to, uint256 indexed id); - event ERC721Approval(address indexed owner, address indexed spender, uint256 indexed id); - event ApprovalForAll(address indexed owner, address indexed operator, bool approved); - - // Errors - error NotFound(); - error AlreadyExists(); - error InvalidRecipient(); - error InvalidSender(); - error UnsafeRecipient(); - - // Metadata - /// @dev Token name - string public name; - - /// @dev Token symbol - string public symbol; - - /// @dev Decimals for fractional representation - uint8 public immutable decimals; - - /// @dev Total supply in fractionalized representation - uint256 public immutable totalSupply; - - /// @dev Current mint counter, monotonically increasing to ensure accurate ownership - uint256 public minted; - - // Mappings - /// @dev Balance of user in fractional representation - mapping(address => uint256) public balanceOf; - - /// @dev Allowance of user in fractional representation - mapping(address => mapping(address => uint256)) public allowance; - - /// @dev Approval in native representation - mapping(uint256 => address) public getApproved; - - /// @dev Approval for all in native representation - mapping(address => mapping(address => bool)) public isApprovedForAll; - - /// @dev Owner of id in native representation - mapping(uint256 => address) internal _ownerOf; - - /// @dev Array of owned ids in native representation - mapping(address => uint256[]) internal _owned; - - /// @dev Tracks indices for the _owned mapping - mapping(uint256 => uint256) internal _ownedIndex; - - /// @dev Addresses whitelisted from minting / burning for gas savings (pairs, routers, etc) - mapping(address => bool) public whitelist; - - // Constructor - constructor( - string memory _name, - string memory _symbol, - uint8 _decimals, - uint256 _totalNativeSupply, - address _owner - ) Ownable(_owner) { - name = _name; - symbol = _symbol; - decimals = _decimals; - totalSupply = _totalNativeSupply * (10 ** _decimals); - } - - /// @notice Initialization function to set pairs / etc - /// saving gas by avoiding mint / burn on unnecessary targets - function setWhitelist(address target, bool state) public onlyOwner { - whitelist[target] = state; - } - - /// @notice Function to find owner of a given native token - function ownerOf(uint256 id) public view virtual returns (address owner) { - owner = _ownerOf[id]; - - if (owner == address(0)) { - revert NotFound(); - } - } - - /// @notice tokenURI must be implemented by child contract - function tokenURI(uint256 id) public view virtual returns (string memory); - - /// @notice Function for token approvals - /// @dev This function assumes id / native if amount less than or equal to current max id - function approve(address spender, uint256 amountOrId) public virtual returns (bool) { - if (amountOrId <= minted && amountOrId > 0) { - address owner = _ownerOf[amountOrId]; - - if (msg.sender != owner && !isApprovedForAll[owner][msg.sender]) { - revert Unauthorized(); - } - - getApproved[amountOrId] = spender; - - emit Approval(owner, spender, amountOrId); - } else { - allowance[msg.sender][spender] = amountOrId; - - emit Approval(msg.sender, spender, amountOrId); - } - - return true; - } - - /// @notice Function native approvals - function setApprovalForAll(address operator, bool approved) public virtual { - isApprovedForAll[msg.sender][operator] = approved; - - emit ApprovalForAll(msg.sender, operator, approved); - } - - /// @notice Function for mixed transfers - /// @dev This function assumes id / native if amount less than or equal to current max id - function transferFrom(address from, address to, uint256 amountOrId) public virtual { - if (amountOrId <= minted) { - if (from != _ownerOf[amountOrId]) { - revert InvalidSender(); - } - - if (to == address(0)) { - revert InvalidRecipient(); - } - - if ( - msg.sender != from && !isApprovedForAll[from][msg.sender] - && msg.sender != getApproved[amountOrId] - ) { - revert Unauthorized(); - } - - balanceOf[from] -= _getUnit(); - - unchecked { - balanceOf[to] += _getUnit(); - } - - _ownerOf[amountOrId] = to; - delete getApproved[amountOrId]; - - // update _owned for sender - uint256 updatedId = _owned[from][_owned[from].length - 1]; - _owned[from][_ownedIndex[amountOrId]] = updatedId; - // pop - _owned[from].pop(); - // update index for the moved id - _ownedIndex[updatedId] = _ownedIndex[amountOrId]; - // push token to to owned - _owned[to].push(amountOrId); - // update index for to owned - _ownedIndex[amountOrId] = _owned[to].length - 1; - - emit Transfer(from, to, amountOrId); - emit ERC20Transfer(from, to, _getUnit()); - } else { - uint256 allowed = allowance[from][msg.sender]; - - if (allowed != type(uint256).max) { - allowance[from][msg.sender] = allowed - amountOrId; - } - - _transfer(from, to, amountOrId); - } - } - - /// @notice Function for fractional transfers - function transfer(address to, uint256 amount) public virtual returns (bool) { - return _transfer(msg.sender, to, amount); - } - - /// @notice Function for native transfers with contract support - function safeTransferFrom(address from, address to, uint256 id) public virtual { - transferFrom(from, to, id); - - if ( - to.code.length != 0 - && ERC721Receiver(to).onERC721Received(msg.sender, from, id, "") - != ERC721Receiver.onERC721Received.selector - ) { - revert UnsafeRecipient(); - } - } - - /// @notice Function for native transfers with contract support and callback data - function safeTransferFrom(address from, address to, uint256 id, bytes calldata data) - public - virtual - { - transferFrom(from, to, id); - - if ( - to.code.length != 0 - && ERC721Receiver(to).onERC721Received(msg.sender, from, id, data) - != ERC721Receiver.onERC721Received.selector - ) { - revert UnsafeRecipient(); - } - } - - /// @notice Internal function for fractional transfers - function _transfer(address from, address to, uint256 amount) internal returns (bool) { - uint256 unit = _getUnit(); - uint256 balanceBeforeSender = balanceOf[from]; - uint256 balanceBeforeReceiver = balanceOf[to]; - - balanceOf[from] -= amount; - - unchecked { - balanceOf[to] += amount; - } - - // Skip burn for certain addresses to save gas - if (!whitelist[from]) { - uint256 tokens_to_burn = (balanceBeforeSender / unit) - (balanceOf[from] / unit); - for (uint256 i = 0; i < tokens_to_burn; i++) { - _burn(from); - } - } - - // Skip minting for certain addresses to save gas - if (!whitelist[to]) { - uint256 tokens_to_mint = (balanceOf[to] / unit) - (balanceBeforeReceiver / unit); - for (uint256 i = 0; i < tokens_to_mint; i++) { - _mint(to); - } - } - - emit ERC20Transfer(from, to, amount); - return true; - } - - // Internal utility logic - function _getUnit() internal view returns (uint256) { - return 10 ** decimals; - } - - function _mint(address to) internal virtual { - if (to == address(0)) { - revert InvalidRecipient(); - } - - unchecked { - minted++; - } - - uint256 id = minted; - - if (_ownerOf[id] != address(0)) { - revert AlreadyExists(); - } - - _ownerOf[id] = to; - _owned[to].push(id); - _ownedIndex[id] = _owned[to].length - 1; - - emit Transfer(address(0), to, id); - } - - function _burn(address from) internal virtual { - if (from == address(0)) { - revert InvalidSender(); - } - - uint256 id = _owned[from][_owned[from].length - 1]; - _owned[from].pop(); - delete _ownedIndex[id]; - delete _ownerOf[id]; - delete getApproved[id]; - - emit Transfer(from, address(0), id); - } - - function _setNameSymbol(string memory _name, string memory _symbol) internal { - name = _name; - symbol = _symbol; - } -} - -contract Pandora is ERC404 { - string public dataURI; - string public baseTokenURI; - - constructor(address _owner) ERC404("Pandora", "PANDORA", 18, 10000, _owner) { - balanceOf[_owner] = 10000 * 10 ** 18; - } - - function tokenURI(uint256) public pure override returns (string memory) { - return ""; - } -} - interface IERC20 { function transfer(address to, uint256 amount) external returns (bool); } contract BenchTest is SoladyTest { - Pandora pandora; MockDN404Slim dn404; MockDN420Slim dn420; DN404Mirror mirror; function setUp() public { - pandora = new Pandora(address(this)); dn420 = new MockDN420Slim(); dn404 = new MockDN404Slim(); mirror = new DN404Mirror(address(this)); - pandora.setWhitelist(address(this), true); dn404.initializeDN404(10000 * 10 ** 18, address(this), address(mirror)); dn420.initializeDN420(10000 * 10 ** 18, address(this)); } @@ -394,52 +32,36 @@ contract BenchTest is SoladyTest { _; } - function testMintPandora_01() public mint(address(pandora), 1) {} function testMintDN404_01() public mint(address(dn404), 1) {} function testMintDN420_01() public mint(address(dn420), 1) {} - function testMintPandora_02() public mint(address(pandora), 2) {} function testMintDN404_02() public mint(address(dn404), 2) {} function testMintDN420_02() public mint(address(dn420), 2) {} - function testMintPandora_03() public mint(address(pandora), 3) {} function testMintDN404_03() public mint(address(dn404), 3) {} function testMintDN420_03() public mint(address(dn420), 3) {} - function testMintPandora_04() public mint(address(pandora), 4) {} function testMintDN404_04() public mint(address(dn404), 4) {} function testMintDN420_04() public mint(address(dn420), 4) {} - function testMintPandora_05() public mint(address(pandora), 5) {} function testMintDN404_05() public mint(address(dn404), 5) {} function testMintDN420_05() public mint(address(dn420), 5) {} - function testMintPandora_06() public mint(address(pandora), 6) {} function testMintDN404_06() public mint(address(dn404), 6) {} function testMintDN420_06() public mint(address(dn420), 6) {} - function testMintPandora_07() public mint(address(pandora), 7) {} function testMintDN404_07() public mint(address(dn404), 7) {} function testMintDN420_07() public mint(address(dn420), 7) {} - function testMintPandora_08() public mint(address(pandora), 8) {} function testMintDN404_08() public mint(address(dn404), 8) {} function testMintDN420_08() public mint(address(dn420), 8) {} - function testMintPandora_09() public mint(address(pandora), 9) {} function testMintDN404_09() public mint(address(dn404), 9) {} function testMintDN420_09() public mint(address(dn420), 9) {} - function testMintPandora_10() public mint(address(pandora), 10) {} function testMintDN404_10() public mint(address(dn404), 10) {} function testMintDN420_10() public mint(address(dn420), 10) {} - function testMintPandora_11() public mint(address(pandora), 11) {} function testMintDN404_11() public mint(address(dn404), 11) {} function testMintDN420_11() public mint(address(dn420), 11) {} - function testMintPandora_12() public mint(address(pandora), 12) {} function testMintDN404_12() public mint(address(dn404), 12) {} function testMintDN420_12() public mint(address(dn420), 12) {} - function testMintPandora_13() public mint(address(pandora), 13) {} function testMintDN404_13() public mint(address(dn404), 13) {} function testMintDN420_13() public mint(address(dn420), 13) {} - function testMintPandora_14() public mint(address(pandora), 14) {} function testMintDN404_14() public mint(address(dn404), 14) {} function testMintDN420_14() public mint(address(dn420), 14) {} - function testMintPandora_15() public mint(address(pandora), 15) {} function testMintDN404_15() public mint(address(dn404), 15) {} function testMintDN420_15() public mint(address(dn420), 15) {} - function testMintPandora_16() public mint(address(pandora), 16) {} function testMintDN404_16() public mint(address(dn404), 16) {} function testMintDN420_16() public mint(address(dn420), 16) {} @@ -454,52 +76,36 @@ contract BenchTest is SoladyTest { _; } - function testMintAndTransferPandora_01() public mintAndTransfer(address(pandora), 1) {} function testMintAndTransferDN404_01() public mintAndTransfer(address(dn404), 1) {} function testMintAndTransferDN420_01() public mintAndTransfer(address(dn420), 1) {} - function testMintAndTransferPandora_02() public mintAndTransfer(address(pandora), 2) {} function testMintAndTransferDN404_02() public mintAndTransfer(address(dn404), 2) {} function testMintAndTransferDN420_02() public mintAndTransfer(address(dn420), 2) {} - function testMintAndTransferPandora_03() public mintAndTransfer(address(pandora), 3) {} function testMintAndTransferDN404_03() public mintAndTransfer(address(dn404), 3) {} function testMintAndTransferDN420_03() public mintAndTransfer(address(dn420), 3) {} - function testMintAndTransferPandora_04() public mintAndTransfer(address(pandora), 4) {} function testMintAndTransferDN404_04() public mintAndTransfer(address(dn404), 4) {} function testMintAndTransferDN420_04() public mintAndTransfer(address(dn420), 4) {} - function testMintAndTransferPandora_05() public mintAndTransfer(address(pandora), 5) {} function testMintAndTransferDN404_05() public mintAndTransfer(address(dn404), 5) {} function testMintAndTransferDN420_05() public mintAndTransfer(address(dn420), 5) {} - function testMintAndTransferPandora_06() public mintAndTransfer(address(pandora), 6) {} function testMintAndTransferDN404_06() public mintAndTransfer(address(dn404), 6) {} function testMintAndTransferDN420_06() public mintAndTransfer(address(dn420), 6) {} - function testMintAndTransferPandora_07() public mintAndTransfer(address(pandora), 7) {} function testMintAndTransferDN404_07() public mintAndTransfer(address(dn404), 7) {} function testMintAndTransferDN420_07() public mintAndTransfer(address(dn420), 7) {} - function testMintAndTransferPandora_08() public mintAndTransfer(address(pandora), 8) {} function testMintAndTransferDN404_08() public mintAndTransfer(address(dn404), 8) {} function testMintAndTransferDN420_08() public mintAndTransfer(address(dn420), 8) {} - function testMintAndTransferPandora_09() public mintAndTransfer(address(pandora), 9) {} function testMintAndTransferDN404_09() public mintAndTransfer(address(dn404), 9) {} function testMintAndTransferDN420_09() public mintAndTransfer(address(dn420), 9) {} - function testMintAndTransferPandora_10() public mintAndTransfer(address(pandora), 10) {} function testMintAndTransferDN404_10() public mintAndTransfer(address(dn404), 10) {} function testMintAndTransferDN420_10() public mintAndTransfer(address(dn420), 10) {} - function testMintAndTransferPandora_11() public mintAndTransfer(address(pandora), 11) {} function testMintAndTransferDN404_11() public mintAndTransfer(address(dn404), 11) {} function testMintAndTransferDN420_11() public mintAndTransfer(address(dn420), 11) {} - function testMintAndTransferPandora_12() public mintAndTransfer(address(pandora), 12) {} function testMintAndTransferDN404_12() public mintAndTransfer(address(dn404), 12) {} function testMintAndTransferDN420_12() public mintAndTransfer(address(dn420), 12) {} - function testMintAndTransferPandora_13() public mintAndTransfer(address(pandora), 13) {} function testMintAndTransferDN404_13() public mintAndTransfer(address(dn404), 13) {} function testMintAndTransferDN420_13() public mintAndTransfer(address(dn420), 13) {} - function testMintAndTransferPandora_14() public mintAndTransfer(address(pandora), 14) {} function testMintAndTransferDN404_14() public mintAndTransfer(address(dn404), 14) {} function testMintAndTransferDN420_14() public mintAndTransfer(address(dn420), 14) {} - function testMintAndTransferPandora_15() public mintAndTransfer(address(pandora), 15) {} function testMintAndTransferDN404_15() public mintAndTransfer(address(dn404), 15) {} function testMintAndTransferDN420_15() public mintAndTransfer(address(dn420), 15) {} - function testMintAndTransferPandora_16() public mintAndTransfer(address(pandora), 16) {} function testMintAndTransferDN404_16() public mintAndTransfer(address(dn404), 16) {} function testMintAndTransferDN420_16() public mintAndTransfer(address(dn420), 16) {} }