From f1537b0069057123a6b341218cb26058c838f601 Mon Sep 17 00:00:00 2001 From: Vectorized Date: Fri, 15 Mar 2024 21:59:24 +0000 Subject: [PATCH] Optimize --- .gas-snapshot | 42 +++++++++++++++++++++--------------------- src/DN69.sol | 6 +++--- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index d941b5d..aefd4ef 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -99,7 +99,7 @@ BenchTest:testMintPandora_13() (gas: 967960) BenchTest:testMintPandora_14() (gas: 1037484) BenchTest:testMintPandora_15() (gas: 1107011) BenchTest:testMintPandora_16() (gas: 1176495) -BenchTest:test__codesize() (gas: 39817) +BenchTest:test__codesize() (gas: 39829) DN404CustomUnitTest:testInitializeCorrectUnitSuccess() (gas: 129992) DN404CustomUnitTest:testInitializeWithUnitTooLargeReverts() (gas: 33824) DN404CustomUnitTest:testInitializeWithZeroUnitReverts() (gas: 13897) @@ -177,8 +177,8 @@ DN404Test:test__codesize() (gas: 59075) DN69OnlyERC20Test:testApprove() (gas: 35770) DN69OnlyERC20Test:testApprove(address,uint256) (runs: 256, μ: 30077, ~: 31321) DN69OnlyERC20Test:testBurn() (gas: 50383) -DN69OnlyERC20Test:testBurn(address,uint256,uint256) (runs: 256, μ: 51584, ~: 51584) -DN69OnlyERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 44674, ~: 44654) +DN69OnlyERC20Test:testBurn(address,uint256,uint256) (runs: 256, μ: 51585, ~: 51584) +DN69OnlyERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 44583, ~: 44709) DN69OnlyERC20Test:testInfiniteApproveTransferFrom() (gas: 102605) DN69OnlyERC20Test:testMaxSupplyTrick(uint256) (runs: 256, μ: 541, ~: 541) DN69OnlyERC20Test:testMetadata() (gas: 10112) @@ -186,28 +186,28 @@ DN69OnlyERC20Test:testMint() (gas: 45897) DN69OnlyERC20Test:testMintOverMaxLimitReverts() (gas: 41879) DN69OnlyERC20Test:testMintz(address,uint256) (runs: 256, μ: 46217, ~: 46319) DN69OnlyERC20Test:testTransfer() (gas: 75334) -DN69OnlyERC20Test:testTransfer(address,uint256) (runs: 256, μ: 75687, ~: 75791) +DN69OnlyERC20Test:testTransfer(address,uint256) (runs: 256, μ: 75683, ~: 75791) DN69OnlyERC20Test:testTransferFrom() (gas: 85063) -DN69OnlyERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 256, μ: 105830, ~: 108033) +DN69OnlyERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 256, μ: 106113, ~: 108033) DN69OnlyERC20Test:testTransferFromInsufficientAllowanceReverts() (gas: 68597) -DN69OnlyERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 256, μ: 69209, ~: 69707) +DN69OnlyERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 256, μ: 69115, ~: 69702) DN69OnlyERC20Test:testTransferFromInsufficientBalanceReverts() (gas: 75540) -DN69OnlyERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 76516, ~: 76661) +DN69OnlyERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 76783, ~: 76670) DN69OnlyERC20Test:testTransferInsufficientBalanceReverts() (gas: 67028) -DN69OnlyERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 68056, ~: 68115) -DN69OnlyERC20Test:test__codesize() (gas: 28011) -DN69Test:testERC1155Methods(uint256) (runs: 256, μ: 4396337, ~: 4647428) -DN69Test:testERC1155MethodsSelfTransfers(uint256) (runs: 256, μ: 2383310, ~: 2089754) -DN69Test:testFindOwnedIds() (gas: 2678824) -DN69Test:testMintToNonERC155RecipientReverts(uint256) (runs: 256, μ: 903687, ~: 805583) -DN69Test:testMintToRevertingERC155RecipientReverts(uint256) (runs: 256, μ: 1317531, ~: 987956) -DN69Test:testMintToZeroReverts(uint256) (runs: 256, μ: 756292, ~: 672089) -DN69Test:testMixed(uint256) (runs: 256, μ: 10214706, ~: 6460667) -DN69Test:testSafeBatchTransferFromToERC1155Recipient(uint256) (runs: 256, μ: 2275009, ~: 2196961) -DN69Test:testSafeTransferFromToERC1155Recipient(uint256) (runs: 256, μ: 1709160, ~: 1483234) -DN69Test:testTransferFromToERC1155Recipient(uint256) (runs: 256, μ: 2895785, ~: 2882578) -DN69Test:testTransferMixedReverts(uint256) (runs: 256, μ: 4692226, ~: 3600969) -DN69Test:test__codesize() (gas: 66707) +DN69OnlyERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 256, μ: 68148, ~: 68115) +DN69OnlyERC20Test:test__codesize() (gas: 28023) +DN69Test:testERC1155Methods(uint256) (runs: 256, μ: 4392186, ~: 4639786) +DN69Test:testERC1155MethodsSelfTransfers(uint256) (runs: 256, μ: 2440549, ~: 2092337) +DN69Test:testFindOwnedIds() (gas: 2682106) +DN69Test:testMintToNonERC155RecipientReverts(uint256) (runs: 256, μ: 903519, ~: 805230) +DN69Test:testMintToRevertingERC155RecipientReverts(uint256) (runs: 256, μ: 1299981, ~: 988753) +DN69Test:testMintToZeroReverts(uint256) (runs: 256, μ: 714920, ~: 672801) +DN69Test:testMixed(uint256) (runs: 256, μ: 10328720, ~: 6469219) +DN69Test:testSafeBatchTransferFromToERC1155Recipient(uint256) (runs: 256, μ: 2275015, ~: 2198746) +DN69Test:testSafeTransferFromToERC1155Recipient(uint256) (runs: 256, μ: 1731396, ~: 1483951) +DN69Test:testTransferFromToERC1155Recipient(uint256) (runs: 256, μ: 2897037, ~: 2884075) +DN69Test:testTransferMixedReverts(uint256) (runs: 256, μ: 4410813, ~: 3402076) +DN69Test:test__codesize() (gas: 66719) MappingsTest:testAddressPairMapSetAndGet(address[2],address[2],uint256,uint256) (runs: 256, μ: 45753, ~: 47075) MappingsTest:testBitmapSetAndGet(uint256) (runs: 256, μ: 445667, ~: 397521) MappingsTest:testBitmapSetAndGet(uint256,uint256,bool,bool) (runs: 256, μ: 25662, ~: 26319) diff --git a/src/DN69.sol b/src/DN69.sol index 96e5488..c090452 100644 --- a/src/DN69.sol +++ b/src/DN69.sol @@ -835,13 +835,13 @@ abstract contract DN69 { if (_ref($.operatorApprovals, from, by).value == 0) revert NotOwnerNorApproved(); } - AddressData storage fromAddressData = $.addressData[from]; - AddressData storage toAddressData = $.addressData[to]; - uint256 amount; unchecked { uint256 n = ids.length; amount = n * _unit(); + + AddressData storage fromAddressData = $.addressData[from]; + AddressData storage toAddressData = $.addressData[to]; { uint256 fromBalance = fromAddressData.balance; if (amount > fromBalance) revert InsufficientBalance();