diff --git a/.gas-snapshot b/.gas-snapshot index 5524a29..a8b075b 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,24 +1,24 @@ -ArrayOpsTest:testConcat(uint256) (runs: 276, μ: 464607, ~: 63451) -ArrayOpsTest:testERC721ReceiverCheckCopy(bytes) (runs: 276, μ: 922, ~: 877) -ArrayOpsTest:testFilled(uint256) (runs: 276, μ: 269253, ~: 37965) -ArrayOpsTest:testZeroAddresses(uint256) (runs: 276, μ: 159112, ~: 28114) +ArrayOpsTest:testConcat(uint256) (runs: 256, μ: 451476, ~: 65028) +ArrayOpsTest:testERC721ReceiverCheckCopy(bytes) (runs: 256, μ: 921, ~: 877) +ArrayOpsTest:testFilled(uint256) (runs: 256, μ: 309416, ~: 39016) +ArrayOpsTest:testZeroAddresses(uint256) (runs: 256, μ: 192378, ~: 28493) ArrayOpsTest:test__codesize() (gas: 4656) -BenchTest:testMintAndTransferDN404_01() (gas: 208785) -BenchTest:testMintAndTransferDN404_02() (gas: 214986) -BenchTest:testMintAndTransferDN404_03() (gas: 221164) -BenchTest:testMintAndTransferDN404_04() (gas: 227342) -BenchTest:testMintAndTransferDN404_05() (gas: 255443) -BenchTest:testMintAndTransferDN404_06() (gas: 261619) -BenchTest:testMintAndTransferDN404_07() (gas: 267767) -BenchTest:testMintAndTransferDN404_08() (gas: 273953) -BenchTest:testMintAndTransferDN404_09() (gas: 345811) -BenchTest:testMintAndTransferDN404_10() (gas: 351969) -BenchTest:testMintAndTransferDN404_11() (gas: 358212) -BenchTest:testMintAndTransferDN404_12() (gas: 364346) -BenchTest:testMintAndTransferDN404_13() (gas: 392424) -BenchTest:testMintAndTransferDN404_14() (gas: 398581) -BenchTest:testMintAndTransferDN404_15() (gas: 404825) -BenchTest:testMintAndTransferDN404_16() (gas: 410937) +BenchTest:testMintAndTransferDN404_01() (gas: 208893) +BenchTest:testMintAndTransferDN404_02() (gas: 215094) +BenchTest:testMintAndTransferDN404_03() (gas: 221272) +BenchTest:testMintAndTransferDN404_04() (gas: 227450) +BenchTest:testMintAndTransferDN404_05() (gas: 255551) +BenchTest:testMintAndTransferDN404_06() (gas: 261727) +BenchTest:testMintAndTransferDN404_07() (gas: 267875) +BenchTest:testMintAndTransferDN404_08() (gas: 274061) +BenchTest:testMintAndTransferDN404_09() (gas: 345919) +BenchTest:testMintAndTransferDN404_10() (gas: 352077) +BenchTest:testMintAndTransferDN404_11() (gas: 358320) +BenchTest:testMintAndTransferDN404_12() (gas: 364454) +BenchTest:testMintAndTransferDN404_13() (gas: 392532) +BenchTest:testMintAndTransferDN404_14() (gas: 398689) +BenchTest:testMintAndTransferDN404_15() (gas: 404933) +BenchTest:testMintAndTransferDN404_16() (gas: 411045) BenchTest:testMintAndTransferDN420_01() (gas: 134893) BenchTest:testMintAndTransferDN420_02() (gas: 137953) BenchTest:testMintAndTransferDN420_03() (gas: 141014) @@ -35,22 +35,22 @@ BenchTest:testMintAndTransferDN420_13() (gas: 171821) BenchTest:testMintAndTransferDN420_14() (gas: 174926) BenchTest:testMintAndTransferDN420_15() (gas: 178055) BenchTest:testMintAndTransferDN420_16() (gas: 181115) -BenchTest:testMintDN404_01() (gas: 123095) -BenchTest:testMintDN404_02() (gas: 126191) -BenchTest:testMintDN404_03() (gas: 129306) -BenchTest:testMintDN404_04() (gas: 132403) -BenchTest:testMintDN404_05() (gas: 157396) -BenchTest:testMintDN404_06() (gas: 160580) -BenchTest:testMintDN404_07() (gas: 163696) -BenchTest:testMintDN404_08() (gas: 166815) -BenchTest:testMintDN404_09() (gas: 213710) -BenchTest:testMintDN404_10() (gas: 216807) -BenchTest:testMintDN404_11() (gas: 219922) -BenchTest:testMintDN404_12() (gas: 223040) -BenchTest:testMintDN404_13() (gas: 248057) -BenchTest:testMintDN404_14() (gas: 251173) -BenchTest:testMintDN404_15() (gas: 254332) -BenchTest:testMintDN404_16() (gas: 257451) +BenchTest:testMintDN404_01() (gas: 123149) +BenchTest:testMintDN404_02() (gas: 126245) +BenchTest:testMintDN404_03() (gas: 129360) +BenchTest:testMintDN404_04() (gas: 132457) +BenchTest:testMintDN404_05() (gas: 157450) +BenchTest:testMintDN404_06() (gas: 160634) +BenchTest:testMintDN404_07() (gas: 163750) +BenchTest:testMintDN404_08() (gas: 166869) +BenchTest:testMintDN404_09() (gas: 213764) +BenchTest:testMintDN404_10() (gas: 216861) +BenchTest:testMintDN404_11() (gas: 219976) +BenchTest:testMintDN404_12() (gas: 223094) +BenchTest:testMintDN404_13() (gas: 248111) +BenchTest:testMintDN404_14() (gas: 251227) +BenchTest:testMintDN404_15() (gas: 254386) +BenchTest:testMintDN404_16() (gas: 257505) BenchTest:testMintDN420_01() (gas: 94045) BenchTest:testMintDN420_02() (gas: 95494) BenchTest:testMintDN420_03() (gas: 96877) @@ -67,154 +67,154 @@ BenchTest:testMintDN420_13() (gas: 111184) BenchTest:testMintDN420_14() (gas: 112569) BenchTest:testMintDN420_15() (gas: 114041) BenchTest:testMintDN420_16() (gas: 115447) -BenchTest:test__codesize() (gas: 28118) +BenchTest:test__codesize() (gas: 28189) DN404CustomUnitTest:testInitializeCorrectUnitSuccess() (gas: 130120) DN404CustomUnitTest:testInitializeWithUnitTooLargeReverts() (gas: 33791) DN404CustomUnitTest:testInitializeWithZeroUnitReverts() (gas: 13864) -DN404CustomUnitTest:testMint() (gas: 163237) -DN404CustomUnitTest:testMintWithoutNFTs(uint256,uint256,uint256) (runs: 276, μ: 160268, ~: 162733) -DN404CustomUnitTest:testNFTMint() (gas: 64873666) -DN404CustomUnitTest:testNFTMintAndBurn(uint256,uint256,uint256) (runs: 276, μ: 208680, ~: 159100) -DN404CustomUnitTest:testNFTMintViaTransfer(uint256,uint256,uint256) (runs: 276, μ: 233979, ~: 250925) -DN404CustomUnitTest:testTotalSupplyOverflowsTrick(uint256,uint256) (runs: 276, μ: 604, ~: 664) -DN404CustomUnitTest:testTotalSupplyOverflowsTrick(uint256,uint256,uint256) (runs: 276, μ: 775, ~: 746) -DN404CustomUnitTest:testUnitInvalidCheckTrick(uint256) (runs: 276, μ: 526, ~: 527) -DN404CustomUnitTest:test__codesize() (gas: 28647) -DN404MirrorTest:testAutomaticPullOwnerWithOwnable() (gas: 3664644) -DN404MirrorTest:testAutomaticPullOwnerWithOwnable2() (gas: 3652693) +DN404CustomUnitTest:testMint() (gas: 163291) +DN404CustomUnitTest:testMintWithoutNFTs(uint256,uint256,uint256) (runs: 256, μ: 160043, ~: 162733) +DN404CustomUnitTest:testNFTMint() (gas: 64873720) +DN404CustomUnitTest:testNFTMintAndBurn(uint256,uint256,uint256) (runs: 256, μ: 207287, ~: 159083) +DN404CustomUnitTest:testNFTMintViaTransfer(uint256,uint256,uint256) (runs: 256, μ: 236427, ~: 250979) +DN404CustomUnitTest:testTotalSupplyOverflowsTrick(uint256,uint256) (runs: 256, μ: 603, ~: 664) +DN404CustomUnitTest:testTotalSupplyOverflowsTrick(uint256,uint256,uint256) (runs: 256, μ: 777, ~: 746) +DN404CustomUnitTest:testUnitInvalidCheckTrick(uint256) (runs: 256, μ: 526, ~: 527) +DN404CustomUnitTest:test__codesize() (gas: 28718) +DN404MirrorTest:testAutomaticPullOwnerWithOwnable() (gas: 3672970) +DN404MirrorTest:testAutomaticPullOwnerWithOwnable2() (gas: 3660957) DN404MirrorTest:testBaseERC20() (gas: 114787) DN404MirrorTest:testFnSelectorNotRecognized() (gas: 6247) DN404MirrorTest:testLinkMirrorContract() (gas: 39410) -DN404MirrorTest:testLogDirectTransfers() (gas: 395961) +DN404MirrorTest:testLogDirectTransfers() (gas: 396069) DN404MirrorTest:testLogTransfer() (gas: 120943) -DN404MirrorTest:testNameAndSymbol(string,string) (runs: 276, μ: 203835, ~: 207144) +DN404MirrorTest:testNameAndSymbol(string,string) (runs: 256, μ: 203487, ~: 207144) DN404MirrorTest:testNotLinked() (gas: 12794) -DN404MirrorTest:testPullOwner() (gas: 112847) -DN404MirrorTest:testSafeTransferFrom(uint32,bytes) (runs: 276, μ: 533930, ~: 502002) -DN404MirrorTest:testSetAndGetApprovalForAll() (gas: 331059) -DN404MirrorTest:testSetAndGetApproved() (gas: 328139) +DN404MirrorTest:testPullOwner() (gas: 112903) +DN404MirrorTest:testSafeTransferFrom(uint32,bytes) (runs: 256, μ: 536220, ~: 536197) +DN404MirrorTest:testSetAndGetApprovalForAll() (gas: 331113) +DN404MirrorTest:testSetAndGetApproved() (gas: 328193) DN404MirrorTest:testSupportsInterface() (gas: 7544) -DN404MirrorTest:testTokenURI(string,uint256) (runs: 276, μ: 261207, ~: 266295) -DN404MirrorTest:testTransferFrom(uint32) (runs: 276, μ: 379976, ~: 379913) -DN404MirrorTest:testTransferFromMixed(uint256) (runs: 276, μ: 756888, ~: 694884) -DN404MirrorTest:test__codesize() (gas: 61984) +DN404MirrorTest:testTokenURI(string,uint256) (runs: 256, μ: 261694, ~: 266349) +DN404MirrorTest:testTransferFrom(uint32) (runs: 256, μ: 380025, ~: 379967) +DN404MirrorTest:testTransferFromMixed(uint256) (runs: 256, μ: 769252, ~: 703522) +DN404MirrorTest:test__codesize() (gas: 62096) DN404OnlyERC20Test:testApprove() (gas: 35902) -DN404OnlyERC20Test:testApprove(address,uint256) (runs: 276, μ: 31380, ~: 31453) +DN404OnlyERC20Test:testApprove(address,uint256) (runs: 256, μ: 31375, ~: 31453) DN404OnlyERC20Test:testBurn() (gas: 48166) -DN404OnlyERC20Test:testBurn(address,uint256,uint256) (runs: 276, μ: 49116, ~: 49345) -DN404OnlyERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 276, μ: 42313, ~: 42379) +DN404OnlyERC20Test:testBurn(address,uint256,uint256) (runs: 256, μ: 49145, ~: 49345) +DN404OnlyERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 42301, ~: 42379) DN404OnlyERC20Test:testInfiniteApproveTransferFrom() (gas: 82978) -DN404OnlyERC20Test:testMaxSupplyTrick(uint256) (runs: 276, μ: 541, ~: 541) +DN404OnlyERC20Test:testMaxSupplyTrick(uint256) (runs: 256, μ: 541, ~: 541) DN404OnlyERC20Test:testMetadata() (gas: 8962) DN404OnlyERC20Test:testMint() (gas: 44065) DN404OnlyERC20Test:testMintOverMaxLimitReverts() (gas: 42035) -DN404OnlyERC20Test:testMintz(address,uint256) (runs: 276, μ: 44477, ~: 44487) +DN404OnlyERC20Test:testMintz(address,uint256) (runs: 256, μ: 44642, ~: 44487) DN404OnlyERC20Test:testTransfer() (gas: 58082) -DN404OnlyERC20Test:testTransfer(address,uint256) (runs: 276, μ: 58481, ~: 58491) +DN404OnlyERC20Test:testTransfer(address,uint256) (runs: 256, μ: 58649, ~: 58491) DN404OnlyERC20Test:testTransferFrom() (gas: 79976) -DN404OnlyERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 276, μ: 86957, ~: 88405) +DN404OnlyERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 256, μ: 86888, ~: 88405) DN404OnlyERC20Test:testTransferFromInsufficientAllowanceReverts() (gas: 66880) -DN404OnlyERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 276, μ: 67932, ~: 67959) +DN404OnlyERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 256, μ: 67921, ~: 67959) DN404OnlyERC20Test:testTransferFromInsufficientBalanceReverts() (gas: 51747) -DN404OnlyERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 276, μ: 52455, ~: 52518) +DN404OnlyERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 52447, ~: 52506) DN404OnlyERC20Test:testTransferInsufficientBalanceReverts() (gas: 43948) -DN404OnlyERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 276, μ: 45010, ~: 45057) -DN404OnlyERC20Test:test__codesize() (gas: 28067) -DN404Test:testBatchNFTLog() (gas: 327308) -DN404Test:testBurnOnTransfer(uint32,address) (runs: 274, μ: 275863, ~: 275863) +DN404OnlyERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 44997, ~: 45057) +DN404OnlyERC20Test:test__codesize() (gas: 28097) +DN404Test:testBatchNFTLog() (gas: 327362) +DN404Test:testBurnOnTransfer(uint32,address) (runs: 256, μ: 275971, ~: 275971) DN404Test:testFnSelectorNotRecognized() (gas: 6256) -DN404Test:testInitialize(uint32,address) (runs: 276, μ: 112338, ~: 113808) -DN404Test:testMintAndBurn() (gas: 346843) -DN404Test:testMintAndBurn2() (gas: 283400) -DN404Test:testMintNext() (gas: 707821) -DN404Test:testMintNextContiguous(uint256) (runs: 276, μ: 580056, ~: 524910) -DN404Test:testMintOnTransfer(uint32,address) (runs: 274, μ: 290438, ~: 290438) -DN404Test:testMixed(bytes32) (runs: 276, μ: 552934, ~: 487468) -DN404Test:testNameAndSymbol(string,string) (runs: 276, μ: 203567, ~: 206876) +DN404Test:testInitialize(uint32,address) (runs: 256, μ: 112719, ~: 113808) +DN404Test:testMintAndBurn() (gas: 347091) +DN404Test:testMintAndBurn2() (gas: 283648) +DN404Test:testMintNext() (gas: 707983) +DN404Test:testMintNextContiguous(uint256) (runs: 256, μ: 566622, ~: 528330) +DN404Test:testMintOnTransfer(uint32,address) (runs: 256, μ: 290492, ~: 290492) +DN404Test:testMixed(bytes32) (runs: 256, μ: 524131, ~: 488997) +DN404Test:testNameAndSymbol(string,string) (runs: 256, μ: 203218, ~: 206876) DN404Test:testNumAliasesOverflowReverts() (gas: 40944) -DN404Test:testOwnedIds() (gas: 361141) -DN404Test:testOwnedIds(uint256) (runs: 276, μ: 267777, ~: 284922) -DN404Test:testPermit2() (gas: 456313) -DN404Test:testRegisterAndResolveAlias(address,address) (runs: 276, μ: 120191, ~: 120191) -DN404Test:testSetAndGetAux(address,uint88) (runs: 276, μ: 22057, ~: 22274) -DN404Test:testSetAndGetOperatorApprovals(address,address,bool) (runs: 276, μ: 130345, ~: 120540) -DN404Test:testSetAndGetSkipNFT() (gas: 708368) -DN404Test:testTokenURI(string,uint256) (runs: 276, μ: 12997903, ~: 12975480) -DN404Test:testTransferWithMirrorEvent() (gas: 411009) -DN404Test:testTransfersAndBurns() (gas: 488426) -DN404Test:testWrapAround(uint32,uint256) (runs: 276, μ: 392569, ~: 389217) -DN404Test:test__codesize() (gas: 60932) -DN404ZeroIndexedTest:testBatchNFTLog() (gas: 326747) -DN404ZeroIndexedTest:testBurnOnTransfer(uint32,address) (runs: 274, μ: 255783, ~: 255783) +DN404Test:testOwnedIds() (gas: 361195) +DN404Test:testOwnedIds(uint256) (runs: 256, μ: 270986, ~: 285131) +DN404Test:testPermit2() (gas: 456529) +DN404Test:testRegisterAndResolveAlias(address,address) (runs: 256, μ: 120113, ~: 120191) +DN404Test:testSetAndGetAux(address,uint88) (runs: 256, μ: 22039, ~: 22274) +DN404Test:testSetAndGetOperatorApprovals(address,address,bool) (runs: 256, μ: 130179, ~: 120540) +DN404Test:testSetAndGetSkipNFT() (gas: 709608) +DN404Test:testTokenURI(string,uint256) (runs: 256, μ: 12997950, ~: 12986762) +DN404Test:testTransferWithMirrorEvent() (gas: 411063) +DN404Test:testTransfersAndBurns() (gas: 488696) +DN404Test:testWrapAround(uint32,uint256) (runs: 256, μ: 393279, ~: 389478) +DN404Test:test__codesize() (gas: 61003) +DN404ZeroIndexedTest:testBatchNFTLog() (gas: 326801) +DN404ZeroIndexedTest:testBurnOnTransfer(uint32,address) (runs: 256, μ: 255891, ~: 255891) DN404ZeroIndexedTest:testFnSelectorNotRecognized() (gas: 6256) -DN404ZeroIndexedTest:testInitialize(uint32,address) (runs: 276, μ: 111499, ~: 113802) -DN404ZeroIndexedTest:testMintAndBurn() (gas: 343724) -DN404ZeroIndexedTest:testMintAndBurn2() (gas: 280984) -DN404ZeroIndexedTest:testMintNext() (gas: 704822) -DN404ZeroIndexedTest:testMintNextContiguous(uint256) (runs: 276, μ: 582208, ~: 533217) -DN404ZeroIndexedTest:testMintOnTransfer(uint32,address) (runs: 274, μ: 270404, ~: 270404) -DN404ZeroIndexedTest:testMixed(bytes32) (runs: 276, μ: 549795, ~: 468990) -DN404ZeroIndexedTest:testNameAndSymbol(string,string) (runs: 276, μ: 203516, ~: 206825) +DN404ZeroIndexedTest:testInitialize(uint32,address) (runs: 256, μ: 111512, ~: 113802) +DN404ZeroIndexedTest:testMintAndBurn() (gas: 343972) +DN404ZeroIndexedTest:testMintAndBurn2() (gas: 281232) +DN404ZeroIndexedTest:testMintNext() (gas: 704984) +DN404ZeroIndexedTest:testMintNextContiguous(uint256) (runs: 256, μ: 574308, ~: 528636) +DN404ZeroIndexedTest:testMintOnTransfer(uint32,address) (runs: 256, μ: 270458, ~: 270458) +DN404ZeroIndexedTest:testMixed(bytes32) (runs: 256, μ: 542629, ~: 460326) +DN404ZeroIndexedTest:testNameAndSymbol(string,string) (runs: 256, μ: 203167, ~: 206825) DN404ZeroIndexedTest:testNumAliasesOverflowReverts() (gas: 40944) -DN404ZeroIndexedTest:testOwnedIds() (gas: 348030) -DN404ZeroIndexedTest:testOwnedIds(uint256) (runs: 276, μ: 265976, ~: 284351) -DN404ZeroIndexedTest:testPermit2() (gas: 455948) -DN404ZeroIndexedTest:testRegisterAndResolveAlias(address,address) (runs: 276, μ: 120191, ~: 120191) -DN404ZeroIndexedTest:testSetAndGetAux(address,uint88) (runs: 276, μ: 22074, ~: 22292) -DN404ZeroIndexedTest:testSetAndGetOperatorApprovals(address,address,bool) (runs: 276, μ: 130339, ~: 120534) -DN404ZeroIndexedTest:testSetAndGetSkipNFT() (gas: 708390) -DN404ZeroIndexedTest:testTokenURI(string,uint256) (runs: 276, μ: 157093, ~: 134670) -DN404ZeroIndexedTest:testTransferWithMirrorEvent() (gas: 410515) -DN404ZeroIndexedTest:testTransfersAndBurns() (gas: 486461) -DN404ZeroIndexedTest:testWrapAround(uint32,uint256) (runs: 276, μ: 378030, ~: 383784) -DN404ZeroIndexedTest:testWrapNFTIdEquivalence(uint256,uint256,bool) (runs: 276, μ: 1381, ~: 1418) -DN404ZeroIndexedTest:test__codesize() (gas: 60727) +DN404ZeroIndexedTest:testOwnedIds() (gas: 348084) +DN404ZeroIndexedTest:testOwnedIds(uint256) (runs: 256, μ: 265737, ~: 285234) +DN404ZeroIndexedTest:testPermit2() (gas: 456164) +DN404ZeroIndexedTest:testRegisterAndResolveAlias(address,address) (runs: 256, μ: 120113, ~: 120191) +DN404ZeroIndexedTest:testSetAndGetAux(address,uint88) (runs: 256, μ: 22092, ~: 22292) +DN404ZeroIndexedTest:testSetAndGetOperatorApprovals(address,address,bool) (runs: 256, μ: 130173, ~: 120534) +DN404ZeroIndexedTest:testSetAndGetSkipNFT() (gas: 709630) +DN404ZeroIndexedTest:testTokenURI(string,uint256) (runs: 256, μ: 157086, ~: 145898) +DN404ZeroIndexedTest:testTransferWithMirrorEvent() (gas: 410569) +DN404ZeroIndexedTest:testTransfersAndBurns() (gas: 486731) +DN404ZeroIndexedTest:testWrapAround(uint32,uint256) (runs: 256, μ: 376301, ~: 383946) +DN404ZeroIndexedTest:testWrapNFTIdEquivalence(uint256,uint256,bool) (runs: 256, μ: 1386, ~: 1465) +DN404ZeroIndexedTest:test__codesize() (gas: 60798) DN420OnlyERC20Test:testApprove() (gas: 35869) -DN420OnlyERC20Test:testApprove(address,uint256) (runs: 276, μ: 31347, ~: 31420) +DN420OnlyERC20Test:testApprove(address,uint256) (runs: 256, μ: 31342, ~: 31420) DN420OnlyERC20Test:testBurn() (gas: 49038) -DN420OnlyERC20Test:testBurn(address,uint256,uint256) (runs: 276, μ: 49979, ~: 50217) -DN420OnlyERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 276, μ: 43176, ~: 43239) +DN420OnlyERC20Test:testBurn(address,uint256,uint256) (runs: 256, μ: 50007, ~: 50217) +DN420OnlyERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 43166, ~: 43239) DN420OnlyERC20Test:testInfiniteApproveTransferFrom() (gas: 80431) -DN420OnlyERC20Test:testMaxSupplyTrick(uint256) (runs: 276, μ: 541, ~: 541) +DN420OnlyERC20Test:testMaxSupplyTrick(uint256) (runs: 256, μ: 541, ~: 541) DN420OnlyERC20Test:testMetadata() (gas: 9030) DN420OnlyERC20Test:testMint() (gas: 45007) DN420OnlyERC20Test:testMintOverMaxLimitReverts() (gas: 40535) -DN420OnlyERC20Test:testMintz(address,uint256) (runs: 276, μ: 45575, ~: 45429) +DN420OnlyERC20Test:testMintz(address,uint256) (runs: 256, μ: 45481, ~: 45429) DN420OnlyERC20Test:testTransfer() (gas: 54113) -DN420OnlyERC20Test:testTransfer(address,uint256) (runs: 276, μ: 54549, ~: 54471) +DN420OnlyERC20Test:testTransfer(address,uint256) (runs: 256, μ: 54453, ~: 54471) DN420OnlyERC20Test:testTransferFrom() (gas: 77939) -DN420OnlyERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 276, μ: 84669, ~: 85863) +DN420OnlyERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 256, μ: 84581, ~: 85863) DN420OnlyERC20Test:testTransferFromInsufficientAllowanceReverts() (gas: 67813) -DN420OnlyERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 276, μ: 68869, ~: 68892) +DN420OnlyERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 256, μ: 68859, ~: 68892) DN420OnlyERC20Test:testTransferFromInsufficientBalanceReverts() (gas: 52454) -DN420OnlyERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 276, μ: 53167, ~: 53240) +DN420OnlyERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 53159, ~: 53237) DN420OnlyERC20Test:testTransferInsufficientBalanceReverts() (gas: 42396) -DN420OnlyERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 276, μ: 43462, ~: 43505) +DN420OnlyERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 43451, ~: 43505) DN420OnlyERC20Test:test__codesize() (gas: 25098) -DN420Test:testERC1155Methods(uint256) (runs: 276, μ: 4464943, ~: 4198183) -DN420Test:testERC1155MethodsSelfTransfers(uint256) (runs: 276, μ: 2550293, ~: 2747966) +DN420Test:testERC1155Methods(uint256) (runs: 256, μ: 4469631, ~: 4198299) +DN420Test:testERC1155MethodsSelfTransfers(uint256) (runs: 256, μ: 2523959, ~: 2448391) DN420Test:testFindOwnedIds() (gas: 2674735) DN420Test:testMintNext() (gas: 2197082) -DN420Test:testMintToNonERC155RecipientReverts(uint256) (runs: 276, μ: 858894, ~: 814940) -DN420Test:testMintToRevertingERC155RecipientReverts(uint256) (runs: 276, μ: 1368888, ~: 1015414) -DN420Test:testMintToZeroReverts(uint256) (runs: 276, μ: 733468, ~: 686855) -DN420Test:testMixed(uint256) (runs: 276, μ: 5550311, ~: 4014525) -DN420Test:testSafeBatchTransferFromToERC1155Recipient(uint256) (runs: 276, μ: 2325505, ~: 2232825) -DN420Test:testSafeTransferFromToERC1155Recipient(uint256) (runs: 276, μ: 1764404, ~: 1517896) -DN420Test:testTransferFromToERC1155Recipient(uint256) (runs: 276, μ: 2904883, ~: 2893111) -DN420Test:testTransferMixedReverts(uint256) (runs: 276, μ: 4179109, ~: 3817014) +DN420Test:testMintToNonERC155RecipientReverts(uint256) (runs: 256, μ: 874130, ~: 816269) +DN420Test:testMintToRevertingERC155RecipientReverts(uint256) (runs: 256, μ: 1352356, ~: 1014500) +DN420Test:testMintToZeroReverts(uint256) (runs: 256, μ: 735271, ~: 686834) +DN420Test:testMixed(uint256) (runs: 256, μ: 5598505, ~: 4041778) +DN420Test:testSafeBatchTransferFromToERC1155Recipient(uint256) (runs: 256, μ: 2327695, ~: 2233089) +DN420Test:testSafeTransferFromToERC1155Recipient(uint256) (runs: 256, μ: 1767818, ~: 1517979) +DN420Test:testTransferFromToERC1155Recipient(uint256) (runs: 256, μ: 2904537, ~: 2893106) +DN420Test:testTransferMixedReverts(uint256) (runs: 256, μ: 4148054, ~: 3661343) DN420Test:test__codesize() (gas: 66187) -MappingsTest:testAddressPairMapSetAndGet(address[2],address[2],uint256,uint256) (runs: 276, μ: 47728, ~: 48233) -MappingsTest:testBitmapSetAndGet(uint256) (runs: 276, μ: 510379, ~: 502124) -MappingsTest:testBitmapSetAndGet(uint256,uint256,bool,bool) (runs: 276, μ: 25431, ~: 26337) +MappingsTest:testAddressPairMapSetAndGet(address[2],address[2],uint256,uint256) (runs: 256, μ: 47688, ~: 48233) +MappingsTest:testBitmapSetAndGet(uint256) (runs: 256, μ: 513266, ~: 523993) +MappingsTest:testBitmapSetAndGet(uint256,uint256,bool,bool) (runs: 256, μ: 25287, ~: 26337) MappingsTest:testFindFirstUnset() (gas: 79749) -MappingsTest:testFindFirstUnset(uint256) (runs: 276, μ: 338865, ~: 256756) -MappingsTest:testRestrictNFTId(uint256) (runs: 276, μ: 340, ~: 340) -MappingsTest:testSetOwnerAliasAndOwnedIndex(uint256,uint32,uint32) (runs: 276, μ: 23497, ~: 23474) -MappingsTest:testStorageSlotsNoCollision(uint256,uint256,uint256,uint256) (runs: 276, μ: 26839, ~: 26834) -MappingsTest:testUint32MapSetAndGet(uint256) (runs: 276, μ: 1262417, ~: 1132801) -MappingsTest:testUint32MapSetAndGet(uint256,uint256,uint32,uint32) (runs: 276, μ: 45240, ~: 46049) -MappingsTest:testWrapNFTIdWithOverflowCheck(uint256,uint256,uint256) (runs: 276, μ: 825, ~: 852) +MappingsTest:testFindFirstUnset(uint256) (runs: 256, μ: 363724, ~: 255846) +MappingsTest:testRestrictNFTId(uint256) (runs: 256, μ: 340, ~: 340) +MappingsTest:testSetOwnerAliasAndOwnedIndex(uint256,uint32,uint32) (runs: 256, μ: 23497, ~: 23474) +MappingsTest:testStorageSlotsNoCollision(uint256,uint256,uint256,uint256) (runs: 256, μ: 26835, ~: 26817) +MappingsTest:testUint32MapSetAndGet(uint256) (runs: 256, μ: 1306167, ~: 1306611) +MappingsTest:testUint32MapSetAndGet(uint256,uint256,uint32,uint32) (runs: 256, μ: 44934, ~: 46049) +MappingsTest:testWrapNFTIdWithOverflowCheck(uint256,uint256,uint256) (runs: 256, μ: 833, ~: 852) MappingsTest:test__codesize() (gas: 6857) MaxUnitInvariant:invariantBurnedPoolLengthIsTailMinusHead() (runs: 10, calls: 150, reverts: 0) MaxUnitInvariant:invariantDN404BalanceSum() (runs: 10, calls: 150, reverts: 0) @@ -223,16 +223,16 @@ MaxUnitInvariant:invariantMirrorAndBaseRemainImmutable() (runs: 10, calls: 150, MaxUnitInvariant:invariantNoUserOwnsInvalidToken() (runs: 10, calls: 150, reverts: 0) MaxUnitInvariant:invariantTotalReflectionIsValid() (runs: 10, calls: 150, reverts: 0) MaxUnitInvariant:invariantUserReflectionIsValid() (runs: 10, calls: 150, reverts: 0) -MintTests:test_WhenAmountIsGreaterThan_MAX_SUPPLYOrMintMakesNFTTotalSupplyExceed_MAX_SUPPLY(uint256) (runs: 276, μ: 60712, ~: 61591) -MintTests:test_WhenRecipientAddressHasSkipNFTEnabled(uint256) (runs: 276, μ: 85925, ~: 85935) -MintTests:test_WhenRecipientIsAddress0(uint256) (runs: 276, μ: 31041, ~: 30966) -MintTests:test_WhenRecipientsBalanceDifferenceIsNotUpTo1e18(uint256) (runs: 276, μ: 82990, ~: 83101) -MintTests:test_WhenRecipientsBalanceDifferenceIsUpTo1e18OrAbove(uint256) (runs: 276, μ: 89437, ~: 89631) -MintTests:test__codesize() (gas: 27244) -NFTMintDN404Test:testAllowlistMint() (gas: 258872) -NFTMintDN404Test:testMint() (gas: 231574) -NFTMintDN404Test:testTotalSupplyReached() (gas: 628086918) -NFTMintDN404Test:test__codesize() (gas: 22303) +MintTests:test_WhenAmountIsGreaterThan_MAX_SUPPLYOrMintMakesNFTTotalSupplyExceed_MAX_SUPPLY(uint256) (runs: 256, μ: 60541, ~: 61591) +MintTests:test_WhenRecipientAddressHasSkipNFTEnabled(uint256) (runs: 256, μ: 85944, ~: 85935) +MintTests:test_WhenRecipientIsAddress0(uint256) (runs: 256, μ: 31054, ~: 31121) +MintTests:test_WhenRecipientsBalanceDifferenceIsNotUpTo1e18(uint256) (runs: 256, μ: 83036, ~: 83154) +MintTests:test_WhenRecipientsBalanceDifferenceIsUpTo1e18OrAbove(uint256) (runs: 256, μ: 89551, ~: 89685) +MintTests:test__codesize() (gas: 27315) +NFTMintDN404Test:testAllowlistMint() (gas: 258926) +NFTMintDN404Test:testMint() (gas: 231682) +NFTMintDN404Test:testTotalSupplyReached() (gas: 628356918) +NFTMintDN404Test:test__codesize() (gas: 22374) NonMultipleUnitInvariant:invariantBurnedPoolLengthIsTailMinusHead() (runs: 10, calls: 150, reverts: 0) NonMultipleUnitInvariant:invariantDN404BalanceSum() (runs: 10, calls: 150, reverts: 0) NonMultipleUnitInvariant:invariantMirror721BalanceSum() (runs: 10, calls: 150, reverts: 0) @@ -240,11 +240,11 @@ NonMultipleUnitInvariant:invariantMirrorAndBaseRemainImmutable() (runs: 10, call NonMultipleUnitInvariant:invariantNoUserOwnsInvalidToken() (runs: 10, calls: 150, reverts: 0) NonMultipleUnitInvariant:invariantTotalReflectionIsValid() (runs: 10, calls: 150, reverts: 0) NonMultipleUnitInvariant:invariantUserReflectionIsValid() (runs: 10, calls: 150, reverts: 0) -SimpleDN404Test:testMint() (gas: 49579) +SimpleDN404Test:testMint() (gas: 49633) SimpleDN404Test:testName() (gas: 9134) SimpleDN404Test:testSymbol() (gas: 9132) SimpleDN404Test:testWithdraw() (gas: 20732) -SimpleDN404Test:test__codesize() (gas: 18225) +SimpleDN404Test:test__codesize() (gas: 18296) SoladyTest:test__codesize() (gas: 840) TestPlus:test__codesize() (gas: 406) WADUnitInvariant:invariantBurnedPoolLengthIsTailMinusHead() (runs: 10, calls: 150, reverts: 0) diff --git a/src/DN404.sol b/src/DN404.sol index 08796cb..bc8b28f 100644 --- a/src/DN404.sol +++ b/src/DN404.sol @@ -315,7 +315,13 @@ abstract contract DN404 { function _skipNFTDefault(address owner) internal view virtual returns (bool result) { /// @solidity memory-safe-assembly assembly { - result := iszero(iszero(extcodesize(owner))) + // Check if account has code and get first 2 bytes + let codeSize := extcodesize(owner) + if codeSize { + extcodecopy(owner, 0x00, 0x00, 2) + // Return false if starts with 0xef01, true otherwise + result := iszero(eq(0xef01, shr(240, mload(0x00)))) + } } }