From 9df68c0f0f5788a561f835ac31f2a9318f893955 Mon Sep 17 00:00:00 2001 From: sodii Date: Fri, 5 Jul 2024 16:15:59 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=F0=9F=91=B7=E2=80=8D=E2=99=82=EF=B8=8F=20r?= =?UTF-8?q?un=20`forge=20snapshot`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gas-snapshot | 258 +++++++++++++++++++++++++------------------------- 1 file changed, 129 insertions(+), 129 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index 13e2410a..d974c1b8 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,6 +1,6 @@ AuthTest:testCallFunctionAsOwner() (gas: 29784) AuthTest:testCallFunctionWithPermissiveAuthority() (gas: 124292) -AuthTest:testCallFunctionWithPermissiveAuthority(address) (runs: 256, μ: 129197, ~: 129235) +AuthTest:testCallFunctionWithPermissiveAuthority(address) (runs: 256, μ: 129235, ~: 129235) AuthTest:testFailCallFunctionAsNonOwner() (gas: 15523) AuthTest:testFailCallFunctionAsNonOwner(address) (runs: 256, μ: 15685, ~: 15685) AuthTest:testFailCallFunctionAsOwnerWithOutOfOrderAuthority() (gas: 136021) @@ -17,59 +17,59 @@ AuthTest:testFailTransferOwnershipAsOwnerWithOutOfOrderAuthority(address) (runs: AuthTest:testFailTransferOwnershipWithRestrictiveAuthority() (gas: 129338) AuthTest:testFailTransferOwnershipWithRestrictiveAuthority(address,address) (runs: 256, μ: 129588, ~: 129588) AuthTest:testSetAuthorityAsOwner() (gas: 32214) -AuthTest:testSetAuthorityAsOwner(address) (runs: 256, μ: 32384, ~: 32384) +AuthTest:testSetAuthorityAsOwner(address) (runs: 256, μ: 31995, ~: 32384) AuthTest:testSetAuthorityAsOwnerWithOutOfOrderAuthority() (gas: 226419) AuthTest:testSetAuthorityWithPermissiveAuthority() (gas: 125962) -AuthTest:testSetAuthorityWithPermissiveAuthority(address,address) (runs: 256, μ: 130862, ~: 131055) +AuthTest:testSetAuthorityWithPermissiveAuthority(address,address) (runs: 256, μ: 130958, ~: 131055) AuthTest:testTransferOwnershipAsOwner() (gas: 15298) -AuthTest:testTransferOwnershipAsOwner(address) (runs: 256, μ: 15469, ~: 15469) +AuthTest:testTransferOwnershipAsOwner(address) (runs: 256, μ: 15375, ~: 15469) AuthTest:testTransferOwnershipWithPermissiveAuthority() (gas: 127926) AuthTest:testTransferOwnershipWithPermissiveAuthority(address,address) (runs: 256, μ: 131000, ~: 131000) Bytes32AddressLibTest:testFillLast12Bytes() (gas: 223) Bytes32AddressLibTest:testFromLast20Bytes() (gas: 191) CREATE3Test:testDeployERC20() (gas: 853207) -CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 256, μ: 899408, ~: 899427) +CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 256, μ: 897303, ~: 899427) CREATE3Test:testFailDoubleDeployDifferentBytecode() (gas: 9079256848778914176) -CREATE3Test:testFailDoubleDeployDifferentBytecode(bytes32,bytes,bytes) (runs: 256, μ: 5830806919119382084, ~: 8937393460516727580) +CREATE3Test:testFailDoubleDeployDifferentBytecode(bytes32,bytes,bytes) (runs: 256, μ: 4992372128335546085, ~: 8937393460516727381) CREATE3Test:testFailDoubleDeploySameBytecode() (gas: 9079256848778906219) -CREATE3Test:testFailDoubleDeploySameBytecode(bytes32,bytes) (runs: 256, μ: 5516047526412694750, ~: 8937393460516728714) +CREATE3Test:testFailDoubleDeploySameBytecode(bytes32,bytes) (runs: 256, μ: 5027283821540689808, ~: 8937393460516728679) CREATE3Test:testPredictDeployERC20() (gas: 2102048) DSTestPlusTest:testBound() (gas: 14214) -DSTestPlusTest:testBound(uint256,uint256,uint256) (runs: 256, μ: 2787, ~: 2793) +DSTestPlusTest:testBound(uint256,uint256,uint256) (runs: 256, μ: 2788, ~: 2793) DSTestPlusTest:testBrutalizeMemory() (gas: 823) DSTestPlusTest:testFailBoundMinBiggerThanMax() (gas: 309) -DSTestPlusTest:testFailBoundMinBiggerThanMax(uint256,uint256,uint256) (runs: 256, μ: 460, ~: 460) +DSTestPlusTest:testFailBoundMinBiggerThanMax(uint256,uint256,uint256) (runs: 256, μ: 460, ~: 462) DSTestPlusTest:testRelApproxEqBothZeroesPasses() (gas: 425) ERC1155Test:testApproveAll() (gas: 31009) -ERC1155Test:testApproveAll(address,bool) (runs: 256, μ: 22771, ~: 31309) +ERC1155Test:testApproveAll(address,bool) (runs: 256, μ: 21296, ~: 11440) ERC1155Test:testBatchBalanceOf() (gas: 157631) -ERC1155Test:testBatchBalanceOf(address[],uint256[],uint256[],bytes) (runs: 256, μ: 3564574, ~: 2943600) +ERC1155Test:testBatchBalanceOf(address[],uint256[],uint256[],bytes) (runs: 256, μ: 3310178, ~: 2596398) ERC1155Test:testBatchBurn() (gas: 151074) -ERC1155Test:testBatchBurn(address,uint256[],uint256[],uint256[],bytes) (runs: 256, μ: 3627558, ~: 3049938) +ERC1155Test:testBatchBurn(address,uint256[],uint256[],uint256[],bytes) (runs: 256, μ: 3509193, ~: 3082472) ERC1155Test:testBatchMintToEOA() (gas: 137337) -ERC1155Test:testBatchMintToEOA(address,uint256[],uint256[],bytes) (runs: 256, μ: 3072824, ~: 2525648) +ERC1155Test:testBatchMintToEOA(address,uint256[],uint256[],bytes) (runs: 256, μ: 3310749, ~: 2941772) ERC1155Test:testBatchMintToERC1155Recipient() (gas: 995703) -ERC1155Test:testBatchMintToERC1155Recipient(uint256[],uint256[],bytes) (runs: 256, μ: 7395823, ~: 6396323) +ERC1155Test:testBatchMintToERC1155Recipient(uint256[],uint256[],bytes) (runs: 256, μ: 7421883, ~: 6450751) ERC1155Test:testBurn() (gas: 38598) -ERC1155Test:testBurn(address,uint256,uint256,bytes,uint256) (runs: 256, μ: 39631, ~: 42098) +ERC1155Test:testBurn(address,uint256,uint256,bytes,uint256) (runs: 256, μ: 40382, ~: 42098) ERC1155Test:testFailBalanceOfBatchWithArrayMismatch() (gas: 7933) -ERC1155Test:testFailBalanceOfBatchWithArrayMismatch(address[],uint256[]) (runs: 256, μ: 58022, ~: 58788) +ERC1155Test:testFailBalanceOfBatchWithArrayMismatch(address[],uint256[]) (runs: 256, μ: 53386, ~: 54066) ERC1155Test:testFailBatchBurnInsufficientBalance() (gas: 136156) -ERC1155Test:testFailBatchBurnInsufficientBalance(address,uint256[],uint256[],uint256[],bytes) (runs: 256, μ: 1401354, ~: 590599) +ERC1155Test:testFailBatchBurnInsufficientBalance(address,uint256[],uint256[],uint256[],bytes) (runs: 256, μ: 1283007, ~: 440335) ERC1155Test:testFailBatchBurnWithArrayLengthMismatch() (gas: 135542) -ERC1155Test:testFailBatchBurnWithArrayLengthMismatch(address,uint256[],uint256[],uint256[],bytes) (runs: 256, μ: 86139, ~: 76411) +ERC1155Test:testFailBatchBurnWithArrayLengthMismatch(address,uint256[],uint256[],uint256[],bytes) (runs: 256, μ: 77137, ~: 78751) ERC1155Test:testFailBatchMintToNonERC1155Recipient() (gas: 167292) -ERC1155Test:testFailBatchMintToNonERC1155Recipient(uint256[],uint256[],bytes) (runs: 256, μ: 3190100, ~: 2673077) +ERC1155Test:testFailBatchMintToNonERC1155Recipient(uint256[],uint256[],bytes) (runs: 256, μ: 3205504, ~: 2673077) ERC1155Test:testFailBatchMintToRevertingERC1155Recipient() (gas: 358811) -ERC1155Test:testFailBatchMintToRevertingERC1155Recipient(uint256[],uint256[],bytes) (runs: 256, μ: 3381638, ~: 2864613) +ERC1155Test:testFailBatchMintToRevertingERC1155Recipient(uint256[],uint256[],bytes) (runs: 256, μ: 3397042, ~: 2864613) ERC1155Test:testFailBatchMintToWrongReturnDataERC1155Recipient() (gas: 310743) -ERC1155Test:testFailBatchMintToWrongReturnDataERC1155Recipient(uint256[],uint256[],bytes) (runs: 256, μ: 3333596, ~: 2816572) +ERC1155Test:testFailBatchMintToWrongReturnDataERC1155Recipient(uint256[],uint256[],bytes) (runs: 256, μ: 3349000, ~: 2816572) ERC1155Test:testFailBatchMintToZero() (gas: 131737) -ERC1155Test:testFailBatchMintToZero(uint256[],uint256[],bytes) (runs: 256, μ: 3130600, ~: 2612336) +ERC1155Test:testFailBatchMintToZero(uint256[],uint256[],bytes) (runs: 256, μ: 3146515, ~: 2612336) ERC1155Test:testFailBatchMintWithArrayMismatch() (gas: 9600) -ERC1155Test:testFailBatchMintWithArrayMismatch(address,uint256[],uint256[],bytes) (runs: 256, μ: 66450, ~: 66511) +ERC1155Test:testFailBatchMintWithArrayMismatch(address,uint256[],uint256[],bytes) (runs: 256, μ: 69252, ~: 68809) ERC1155Test:testFailBurnInsufficientBalance() (gas: 34852) -ERC1155Test:testFailBurnInsufficientBalance(address,uint256,uint256,uint256,bytes) (runs: 256, μ: 35106, ~: 38209) +ERC1155Test:testFailBurnInsufficientBalance(address,uint256,uint256,uint256,bytes) (runs: 256, μ: 35936, ~: 38209) ERC1155Test:testFailMintToNonERC155Recipient() (gas: 68191) ERC1155Test:testFailMintToNonERC155Recipient(uint256,uint256,bytes) (runs: 256, μ: 68507, ~: 69197) ERC1155Test:testFailMintToRevertingERC155Recipient() (gas: 259435) @@ -79,21 +79,21 @@ ERC1155Test:testFailMintToWrongReturnDataERC155Recipient(uint256,uint256,bytes) ERC1155Test:testFailMintToZero() (gas: 33705) ERC1155Test:testFailMintToZero(uint256,uint256,bytes) (runs: 256, μ: 33815, ~: 34546) ERC1155Test:testFailSafeBatchTransferFromToNonERC1155Recipient() (gas: 321377) -ERC1155Test:testFailSafeBatchTransferFromToNonERC1155Recipient(uint256[],uint256[],uint256[],bytes,bytes) (runs: 256, μ: 3541141, ~: 2963551) +ERC1155Test:testFailSafeBatchTransferFromToNonERC1155Recipient(uint256[],uint256[],uint256[],bytes,bytes) (runs: 256, μ: 3557714, ~: 2963551) ERC1155Test:testFailSafeBatchTransferFromToRevertingERC1155Recipient() (gas: 512956) -ERC1155Test:testFailSafeBatchTransferFromToRevertingERC1155Recipient(uint256[],uint256[],uint256[],bytes,bytes) (runs: 256, μ: 3732678, ~: 3155082) +ERC1155Test:testFailSafeBatchTransferFromToRevertingERC1155Recipient(uint256[],uint256[],uint256[],bytes,bytes) (runs: 256, μ: 3749251, ~: 3155082) ERC1155Test:testFailSafeBatchTransferFromToWrongReturnDataERC1155Recipient() (gas: 464847) -ERC1155Test:testFailSafeBatchTransferFromToWrongReturnDataERC1155Recipient(uint256[],uint256[],uint256[],bytes,bytes) (runs: 256, μ: 3684595, ~: 3107003) +ERC1155Test:testFailSafeBatchTransferFromToWrongReturnDataERC1155Recipient(uint256[],uint256[],uint256[],bytes,bytes) (runs: 256, μ: 3701168, ~: 3107003) ERC1155Test:testFailSafeBatchTransferFromToZero() (gas: 286556) -ERC1155Test:testFailSafeBatchTransferFromToZero(uint256[],uint256[],uint256[],bytes,bytes) (runs: 256, μ: 3505960, ~: 2928396) +ERC1155Test:testFailSafeBatchTransferFromToZero(uint256[],uint256[],uint256[],bytes,bytes) (runs: 256, μ: 3521389, ~: 2928396) ERC1155Test:testFailSafeBatchTransferFromWithArrayLengthMismatch() (gas: 162674) -ERC1155Test:testFailSafeBatchTransferFromWithArrayLengthMismatch(address,uint256[],uint256[],uint256[],bytes,bytes) (runs: 256, μ: 79144, ~: 76711) +ERC1155Test:testFailSafeBatchTransferFromWithArrayLengthMismatch(address,uint256[],uint256[],uint256[],bytes,bytes) (runs: 256, μ: 81184, ~: 82042) ERC1155Test:testFailSafeBatchTransferInsufficientBalance() (gas: 163555) -ERC1155Test:testFailSafeBatchTransferInsufficientBalance(address,uint256[],uint256[],uint256[],bytes,bytes) (runs: 256, μ: 1808833, ~: 648144) +ERC1155Test:testFailSafeBatchTransferInsufficientBalance(address,uint256[],uint256[],uint256[],bytes,bytes) (runs: 256, μ: 1475033, ~: 477794) ERC1155Test:testFailSafeTransferFromInsufficientBalance() (gas: 63245) -ERC1155Test:testFailSafeTransferFromInsufficientBalance(address,uint256,uint256,uint256,bytes,bytes) (runs: 256, μ: 62944, ~: 67391) +ERC1155Test:testFailSafeTransferFromInsufficientBalance(address,uint256,uint256,uint256,bytes,bytes) (runs: 256, μ: 63986, ~: 67405) ERC1155Test:testFailSafeTransferFromSelfInsufficientBalance() (gas: 34297) -ERC1155Test:testFailSafeTransferFromSelfInsufficientBalance(address,uint256,uint256,uint256,bytes,bytes) (runs: 256, μ: 35671, ~: 38477) +ERC1155Test:testFailSafeTransferFromSelfInsufficientBalance(address,uint256,uint256,uint256,bytes,bytes) (runs: 256, μ: 36266, ~: 38512) ERC1155Test:testFailSafeTransferFromToNonERC155Recipient() (gas: 96510) ERC1155Test:testFailSafeTransferFromToNonERC155Recipient(uint256,uint256,uint256,bytes,bytes) (runs: 256, μ: 96657, ~: 100546) ERC1155Test:testFailSafeTransferFromToRevertingERC1155Recipient() (gas: 287731) @@ -101,53 +101,53 @@ ERC1155Test:testFailSafeTransferFromToRevertingERC1155Recipient(uint256,uint256, ERC1155Test:testFailSafeTransferFromToWrongReturnDataERC1155Recipient() (gas: 239587) ERC1155Test:testFailSafeTransferFromToWrongReturnDataERC1155Recipient(uint256,uint256,uint256,bytes,bytes) (runs: 256, μ: 239707, ~: 243598) ERC1155Test:testFailSafeTransferFromToZero() (gas: 62014) -ERC1155Test:testFailSafeTransferFromToZero(uint256,uint256,uint256,bytes,bytes) (runs: 256, μ: 62068, ~: 66037) +ERC1155Test:testFailSafeTransferFromToZero(uint256,uint256,uint256,bytes,bytes) (runs: 256, μ: 62146, ~: 66037) ERC1155Test:testMintToEOA() (gas: 34765) -ERC1155Test:testMintToEOA(address,uint256,uint256,bytes) (runs: 256, μ: 35273, ~: 35907) +ERC1155Test:testMintToEOA(address,uint256,uint256,bytes) (runs: 256, μ: 35299, ~: 35907) ERC1155Test:testMintToERC1155Recipient() (gas: 661411) ERC1155Test:testMintToERC1155Recipient(uint256,uint256,bytes) (runs: 256, μ: 691094, ~: 684374) ERC1155Test:testSafeBatchTransferFromToEOA() (gas: 297822) -ERC1155Test:testSafeBatchTransferFromToEOA(address,uint256[],uint256[],uint256[],bytes,bytes) (runs: 256, μ: 5017684, ~: 4010502) +ERC1155Test:testSafeBatchTransferFromToEOA(address,uint256[],uint256[],uint256[],bytes,bytes) (runs: 256, μ: 4831461, ~: 3787204) ERC1155Test:testSafeBatchTransferFromToERC1155Recipient() (gas: 1175327) -ERC1155Test:testSafeBatchTransferFromToERC1155Recipient(uint256[],uint256[],uint256[],bytes,bytes) (runs: 256, μ: 7759463, ~: 6618414) +ERC1155Test:testSafeBatchTransferFromToERC1155Recipient(uint256[],uint256[],uint256[],bytes,bytes) (runs: 256, μ: 7788981, ~: 6630238) ERC1155Test:testSafeTransferFromSelf() (gas: 64177) -ERC1155Test:testSafeTransferFromSelf(uint256,uint256,bytes,uint256,address,bytes) (runs: 256, μ: 64681, ~: 68564) +ERC1155Test:testSafeTransferFromSelf(uint256,uint256,bytes,uint256,address,bytes) (runs: 256, μ: 64752, ~: 68564) ERC1155Test:testSafeTransferFromToEOA() (gas: 93167) -ERC1155Test:testSafeTransferFromToEOA(uint256,uint256,bytes,uint256,address,bytes) (runs: 256, μ: 93963, ~: 97450) +ERC1155Test:testSafeTransferFromToEOA(uint256,uint256,bytes,uint256,address,bytes) (runs: 256, μ: 93125, ~: 97450) ERC1155Test:testSafeTransferFromToERC1155Recipient() (gas: 739583) ERC1155Test:testSafeTransferFromToERC1155Recipient(uint256,uint256,bytes,uint256,bytes) (runs: 256, μ: 769591, ~: 765729) -ERC20Invariants:invariantBalanceSum() (runs: 256, calls: 3840, reverts: 2349) -ERC20Test:invariantMetadata() (runs: 256, calls: 3840, reverts: 2566) +ERC20Invariants:invariantBalanceSum() (runs: 256, calls: 3840, reverts: 2430) +ERC20Test:invariantMetadata() (runs: 256, calls: 3840, reverts: 2571) ERC20Test:testApprove() (gas: 31058) -ERC20Test:testApprove(address,uint256) (runs: 256, μ: 30036, ~: 31280) +ERC20Test:testApprove(address,uint256) (runs: 256, μ: 30424, ~: 31280) ERC20Test:testBurn() (gas: 56970) -ERC20Test:testBurn(address,uint256,uint256) (runs: 256, μ: 57875, ~: 59645) -ERC20Test:testFailBurnInsufficientBalance(address,uint256,uint256) (runs: 256, μ: 52089, ~: 55492) +ERC20Test:testBurn(address,uint256,uint256) (runs: 256, μ: 56678, ~: 59645) +ERC20Test:testFailBurnInsufficientBalance(address,uint256,uint256) (runs: 256, μ: 51897, ~: 55492) ERC20Test:testFailPermitBadDeadline() (gas: 36935) -ERC20Test:testFailPermitBadDeadline(uint256,address,uint256,uint256) (runs: 256, μ: 31831, ~: 37218) +ERC20Test:testFailPermitBadDeadline(uint256,address,uint256,uint256) (runs: 256, μ: 32016, ~: 37218) ERC20Test:testFailPermitBadNonce() (gas: 36874) -ERC20Test:testFailPermitBadNonce(uint256,address,uint256,uint256,uint256) (runs: 256, μ: 32158, ~: 37187) +ERC20Test:testFailPermitBadNonce(uint256,address,uint256,uint256,uint256) (runs: 256, μ: 31629, ~: 37187) ERC20Test:testFailPermitPastDeadline() (gas: 11191) -ERC20Test:testFailPermitPastDeadline(uint256,address,uint256,uint256) (runs: 256, μ: 11916, ~: 13101) +ERC20Test:testFailPermitPastDeadline(uint256,address,uint256,uint256) (runs: 256, μ: 12007, ~: 13101) ERC20Test:testFailPermitReplay() (gas: 66274) -ERC20Test:testFailPermitReplay(uint256,address,uint256,uint256) (runs: 256, μ: 56082, ~: 66592) +ERC20Test:testFailPermitReplay(uint256,address,uint256,uint256) (runs: 256, μ: 57072, ~: 66592) ERC20Test:testFailTransferFromInsufficientAllowance() (gas: 80882) -ERC20Test:testFailTransferFromInsufficientAllowance(address,uint256,uint256) (runs: 256, μ: 79521, ~: 83393) +ERC20Test:testFailTransferFromInsufficientAllowance(address,uint256,uint256) (runs: 256, μ: 79858, ~: 83393) ERC20Test:testFailTransferFromInsufficientBalance() (gas: 81358) -ERC20Test:testFailTransferFromInsufficientBalance(address,uint256,uint256) (runs: 256, μ: 79323, ~: 83870) +ERC20Test:testFailTransferFromInsufficientBalance(address,uint256,uint256) (runs: 256, μ: 79359, ~: 83870) ERC20Test:testFailTransferInsufficientBalance() (gas: 52806) -ERC20Test:testFailTransferInsufficientBalance(address,uint256,uint256) (runs: 256, μ: 51912, ~: 55310) +ERC20Test:testFailTransferInsufficientBalance(address,uint256,uint256) (runs: 256, μ: 51720, ~: 55310) ERC20Test:testInfiniteApproveTransferFrom() (gas: 89793) ERC20Test:testMetadata(string,string,uint8) (runs: 256, μ: 846655, ~: 840944) ERC20Test:testMint() (gas: 53746) -ERC20Test:testMint(address,uint256) (runs: 256, μ: 51437, ~: 53925) +ERC20Test:testMint(address,uint256) (runs: 256, μ: 52214, ~: 53925) ERC20Test:testPermit() (gas: 63193) -ERC20Test:testPermit(uint248,address,uint256,uint256) (runs: 256, μ: 62506, ~: 63517) +ERC20Test:testPermit(uint248,address,uint256,uint256) (runs: 256, μ: 62584, ~: 63517) ERC20Test:testTransfer() (gas: 60272) -ERC20Test:testTransfer(address,uint256) (runs: 256, μ: 57996, ~: 60484) +ERC20Test:testTransfer(address,uint256) (runs: 256, μ: 58773, ~: 60484) ERC20Test:testTransferFrom() (gas: 83777) -ERC20Test:testTransferFrom(address,uint256,uint256) (runs: 256, μ: 86993, ~: 92841) -ERC4626Test:invariantMetadata() (runs: 256, calls: 3840, reverts: 2883) +ERC20Test:testTransferFrom(address,uint256,uint256) (runs: 256, μ: 86308, ~: 92841) +ERC4626Test:invariantMetadata() (runs: 256, calls: 3840, reverts: 2892) ERC4626Test:testFailDepositWithNoApproval() (gas: 13369) ERC4626Test:testFailDepositWithNotEnoughApproval() (gas: 87005) ERC4626Test:testFailDepositZero() (gas: 7780) @@ -160,14 +160,14 @@ ERC4626Test:testFailWithdrawWithNotEnoughUnderlyingAmount() (gas: 203607) ERC4626Test:testMetadata(string,string) (runs: 256, μ: 1471865, ~: 1472396) ERC4626Test:testMintZero() (gas: 54607) ERC4626Test:testMultipleMintDepositRedeemWithdraw() (gas: 411804) -ERC4626Test:testSingleDepositWithdraw(uint128) (runs: 256, μ: 201539, ~: 201550) +ERC4626Test:testSingleDepositWithdraw(uint128) (runs: 256, μ: 201540, ~: 201550) ERC4626Test:testSingleMintRedeem(uint128) (runs: 256, μ: 201465, ~: 201476) ERC4626Test:testVaultInteractionsForSomeoneElse() (gas: 286238) ERC4626Test:testWithdrawZero() (gas: 52468) ERC6909Test:testApprove() (gas: 31572) ERC6909Test:testApprove(address,uint256,uint256) (runs: 256, μ: 30860, ~: 31793) ERC6909Test:testBurn() (gas: 35411) -ERC6909Test:testBurn(address,uint256,uint256) (runs: 256, μ: 23773, ~: 24153) +ERC6909Test:testBurn(address,uint256,uint256) (runs: 256, μ: 23779, ~: 24173) ERC6909Test:testFailMintBalanceOverflow() (gas: 31727) ERC6909Test:testFailTransferBalanceOverflow() (gas: 85598) ERC6909Test:testFailTransferBalanceOverflow(address,address,uint256,uint256) (runs: 256, μ: 87909, ~: 87909) @@ -182,24 +182,24 @@ ERC6909Test:testFailTransferFromNotAuthorized(address,address,uint256,uint256) ( ERC6909Test:testMint() (gas: 31579) ERC6909Test:testMint(address,uint256,uint256) (runs: 256, μ: 30878, ~: 31811) ERC6909Test:testSetOperator() (gas: 31083) -ERC6909Test:testSetOperator(address,bool) (runs: 256, μ: 22873, ~: 31411) +ERC6909Test:testSetOperator(address,bool) (runs: 256, μ: 21398, ~: 11542) ERC6909Test:testTransfer() (gas: 61874) -ERC6909Test:testTransfer(address,address,uint256,uint256,uint256) (runs: 256, μ: 59908, ~: 64506) +ERC6909Test:testTransfer(address,address,uint256,uint256,uint256) (runs: 256, μ: 60685, ~: 64506) ERC6909Test:testTransferFromAsOperator() (gas: 87418) -ERC6909Test:testTransferFromAsOperator(address,address,uint256,uint256,uint256) (runs: 256, μ: 85351, ~: 90112) +ERC6909Test:testTransferFromAsOperator(address,address,uint256,uint256,uint256) (runs: 256, μ: 86137, ~: 90112) ERC6909Test:testTransferFromWithApproval() (gas: 91890) -ERC6909Test:testTransferFromWithApproval(address,address,uint256,uint256,uint256) (runs: 256, μ: 88775, ~: 94697) +ERC6909Test:testTransferFromWithApproval(address,address,uint256,uint256,uint256) (runs: 256, μ: 90096, ~: 94697) ERC6909Test:testTransferFromWithInfiniteApproval() (gas: 91541) -ERC6909Test:testTransferFromWithInfiniteApproval(address,address,uint256,uint256,uint256) (runs: 256, μ: 89501, ~: 94262) -ERC721Test:invariantMetadata() (runs: 256, calls: 3840, reverts: 2192) +ERC6909Test:testTransferFromWithInfiniteApproval(address,address,uint256,uint256,uint256) (runs: 256, μ: 90287, ~: 94262) +ERC721Test:invariantMetadata() (runs: 256, calls: 3840, reverts: 2163) ERC721Test:testApprove() (gas: 78427) ERC721Test:testApprove(address,uint256) (runs: 256, μ: 78637, ~: 78637) ERC721Test:testApproveAll() (gas: 31063) -ERC721Test:testApproveAll(address,bool) (runs: 256, μ: 22869, ~: 31407) +ERC721Test:testApproveAll(address,bool) (runs: 256, μ: 21394, ~: 11538) ERC721Test:testApproveBurn() (gas: 65550) -ERC721Test:testApproveBurn(address,uint256) (runs: 256, μ: 65609, ~: 65621) +ERC721Test:testApproveBurn(address,uint256) (runs: 256, μ: 65360, ~: 65616) ERC721Test:testBurn() (gas: 46107) -ERC721Test:testBurn(address,uint256) (runs: 256, μ: 46148, ~: 46160) +ERC721Test:testBurn(address,uint256) (runs: 256, μ: 46148, ~: 46158) ERC721Test:testFailApproveUnAuthorized() (gas: 55598) ERC721Test:testFailApproveUnAuthorized(address,uint256,address) (runs: 256, μ: 55872, ~: 55873) ERC721Test:testFailApproveUnMinted() (gas: 10236) @@ -240,35 +240,35 @@ ERC721Test:testFailSafeTransferFromToRevertingERC721Recipient(uint256) (runs: 25 ERC721Test:testFailSafeTransferFromToRevertingERC721RecipientWithData() (gas: 233396) ERC721Test:testFailSafeTransferFromToRevertingERC721RecipientWithData(uint256,bytes) (runs: 256, μ: 233823, ~: 233819) ERC721Test:testFailTransferFromNotOwner() (gas: 57872) -ERC721Test:testFailTransferFromNotOwner(address,address,uint256) (runs: 256, μ: 58144, ~: 58162) +ERC721Test:testFailTransferFromNotOwner(address,address,uint256) (runs: 256, μ: 58126, ~: 58162) ERC721Test:testFailTransferFromToZero() (gas: 53381) ERC721Test:testFailTransferFromToZero(uint256) (runs: 256, μ: 53463, ~: 53463) ERC721Test:testFailTransferFromUnOwned() (gas: 8000) -ERC721Test:testFailTransferFromUnOwned(address,address,uint256) (runs: 256, μ: 8276, ~: 8241) +ERC721Test:testFailTransferFromUnOwned(address,address,uint256) (runs: 256, μ: 8241, ~: 8241) ERC721Test:testFailTransferFromWrongFrom() (gas: 53361) -ERC721Test:testFailTransferFromWrongFrom(address,address,address,uint256) (runs: 256, μ: 53194, ~: 53752) +ERC721Test:testFailTransferFromWrongFrom(address,address,address,uint256) (runs: 256, μ: 53752, ~: 53752) ERC721Test:testMetadata(string,string) (runs: 256, μ: 1309634, ~: 1309984) ERC721Test:testMint() (gas: 54336) ERC721Test:testMint(address,uint256) (runs: 256, μ: 54521, ~: 54521) ERC721Test:testSafeMintToEOA() (gas: 56993) -ERC721Test:testSafeMintToEOA(uint256,address) (runs: 256, μ: 56754, ~: 57421) +ERC721Test:testSafeMintToEOA(uint256,address) (runs: 256, μ: 57198, ~: 57421) ERC721Test:testSafeMintToERC721Recipient() (gas: 427035) -ERC721Test:testSafeMintToERC721Recipient(uint256) (runs: 256, μ: 426053, ~: 427142) +ERC721Test:testSafeMintToERC721Recipient(uint256) (runs: 256, μ: 425975, ~: 427142) ERC721Test:testSafeMintToERC721RecipientWithData() (gas: 448149) ERC721Test:testSafeMintToERC721RecipientWithData(uint256,bytes) (runs: 256, μ: 480015, ~: 470905) ERC721Test:testSafeTransferFromToEOA() (gas: 95666) -ERC721Test:testSafeTransferFromToEOA(uint256,address) (runs: 256, μ: 94979, ~: 96099) +ERC721Test:testSafeTransferFromToEOA(uint256,address) (runs: 256, μ: 95725, ~: 96099) ERC721Test:testSafeTransferFromToERC721Recipient() (gas: 485549) -ERC721Test:testSafeTransferFromToERC721Recipient(uint256) (runs: 256, μ: 484593, ~: 485682) +ERC721Test:testSafeTransferFromToERC721Recipient(uint256) (runs: 256, μ: 484515, ~: 485682) ERC721Test:testSafeTransferFromToERC721RecipientWithData() (gas: 506317) ERC721Test:testSafeTransferFromToERC721RecipientWithData(uint256,bytes) (runs: 256, μ: 538126, ~: 529082) ERC721Test:testTransferFrom() (gas: 86347) -ERC721Test:testTransferFrom(uint256,address) (runs: 256, μ: 86467, ~: 86475) +ERC721Test:testTransferFrom(uint256,address) (runs: 256, μ: 86462, ~: 86473) ERC721Test:testTransferFromApproveAll() (gas: 92898) ERC721Test:testTransferFromApproveAll(uint256,address) (runs: 256, μ: 93181, ~: 93182) ERC721Test:testTransferFromSelf() (gas: 64776) -ERC721Test:testTransferFromSelf(uint256,address) (runs: 256, μ: 65060, ~: 65061) -FixedPointMathLibTest:testDifferentiallyFuzzSqrt(uint256) (runs: 256, μ: 13868, ~: 6222) +ERC721Test:testTransferFromSelf(uint256,address) (runs: 256, μ: 65061, ~: 65061) +FixedPointMathLibTest:testDifferentiallyFuzzSqrt(uint256) (runs: 256, μ: 13882, ~: 6096) FixedPointMathLibTest:testDivWadDown() (gas: 820) FixedPointMathLibTest:testDivWadDown(uint256,uint256) (runs: 256, μ: 716, ~: 813) FixedPointMathLibTest:testDivWadDownEdgeCases() (gas: 439) @@ -281,34 +281,34 @@ FixedPointMathLibTest:testFailDivWadDownZeroDenominator(uint256) (runs: 256, μ: FixedPointMathLibTest:testFailDivWadUpOverflow(uint256,uint256) (runs: 256, μ: 395, ~: 374) FixedPointMathLibTest:testFailDivWadUpZeroDenominator() (gas: 332) FixedPointMathLibTest:testFailDivWadUpZeroDenominator(uint256) (runs: 256, μ: 386, ~: 386) -FixedPointMathLibTest:testFailMulDivDownOverflow(uint256,uint256,uint256) (runs: 256, μ: 436, ~: 414) +FixedPointMathLibTest:testFailMulDivDownOverflow(uint256,uint256,uint256) (runs: 256, μ: 435, ~: 414) FixedPointMathLibTest:testFailMulDivDownZeroDenominator() (gas: 328) FixedPointMathLibTest:testFailMulDivDownZeroDenominator(uint256,uint256) (runs: 256, μ: 385, ~: 385) -FixedPointMathLibTest:testFailMulDivUpOverflow(uint256,uint256,uint256) (runs: 256, μ: 459, ~: 437) +FixedPointMathLibTest:testFailMulDivUpOverflow(uint256,uint256,uint256) (runs: 256, μ: 458, ~: 437) FixedPointMathLibTest:testFailMulDivUpZeroDenominator() (gas: 329) FixedPointMathLibTest:testFailMulDivUpZeroDenominator(uint256,uint256) (runs: 256, μ: 428, ~: 428) -FixedPointMathLibTest:testFailMulWadDownOverflow(uint256,uint256) (runs: 256, μ: 419, ~: 387) -FixedPointMathLibTest:testFailMulWadUpOverflow(uint256,uint256) (runs: 256, μ: 396, ~: 364) +FixedPointMathLibTest:testFailMulWadDownOverflow(uint256,uint256) (runs: 256, μ: 420, ~: 387) +FixedPointMathLibTest:testFailMulWadUpOverflow(uint256,uint256) (runs: 256, μ: 397, ~: 364) FixedPointMathLibTest:testMulDivDown() (gas: 1813) -FixedPointMathLibTest:testMulDivDown(uint256,uint256,uint256) (runs: 256, μ: 680, ~: 786) +FixedPointMathLibTest:testMulDivDown(uint256,uint256,uint256) (runs: 256, μ: 685, ~: 786) FixedPointMathLibTest:testMulDivDownEdgeCases() (gas: 686) FixedPointMathLibTest:testMulDivUp() (gas: 2095) -FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 256, μ: 810, ~: 1034) +FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 256, μ: 820, ~: 1034) FixedPointMathLibTest:testMulDivUpEdgeCases() (gas: 785) FixedPointMathLibTest:testMulWadDown() (gas: 823) -FixedPointMathLibTest:testMulWadDown(uint256,uint256) (runs: 256, μ: 688, ~: 803) +FixedPointMathLibTest:testMulWadDown(uint256,uint256) (runs: 256, μ: 686, ~: 803) FixedPointMathLibTest:testMulWadDownEdgeCases() (gas: 822) FixedPointMathLibTest:testMulWadUp() (gas: 921) -FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 256, μ: 834, ~: 1053) +FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 256, μ: 829, ~: 1053) FixedPointMathLibTest:testMulWadUpEdgeCases() (gas: 899) FixedPointMathLibTest:testRPow() (gas: 2164) FixedPointMathLibTest:testSqrt() (gas: 2580) FixedPointMathLibTest:testSqrt(uint256) (runs: 256, μ: 997, ~: 1013) -FixedPointMathLibTest:testSqrtBack(uint256) (runs: 256, μ: 14998, ~: 340) -FixedPointMathLibTest:testSqrtBackHashed(uint256) (runs: 256, μ: 59001, ~: 59500) +FixedPointMathLibTest:testSqrtBack(uint256) (runs: 256, μ: 15214, ~: 340) +FixedPointMathLibTest:testSqrtBackHashed(uint256) (runs: 256, μ: 58976, ~: 59500) FixedPointMathLibTest:testSqrtBackHashedSingle() (gas: 58937) -LibStringTest:testDifferentiallyFuzzToString(uint256,bytes) (runs: 256, μ: 20460, ~: 7749) -LibStringTest:testDifferentiallyFuzzToStringInt(int256,bytes) (runs: 256, μ: 20610, ~: 8980) +LibStringTest:testDifferentiallyFuzzToString(uint256,bytes) (runs: 256, μ: 21626, ~: 9291) +LibStringTest:testDifferentiallyFuzzToStringInt(int256,bytes) (runs: 256, μ: 19654, ~: 8356) LibStringTest:testToString() (gas: 10069) LibStringTest:testToStringDirty() (gas: 8145) LibStringTest:testToStringIntNegative() (gas: 9634) @@ -319,7 +319,7 @@ MerkleProofLibTest:testVerifyEmptyMerkleProofSuppliedLeafAndRootDifferent() (gas MerkleProofLibTest:testVerifyEmptyMerkleProofSuppliedLeafAndRootSame() (gas: 1452) MerkleProofLibTest:testVerifyInvalidProofSupplied() (gas: 2172) MultiRolesAuthorityTest:testCanCallPublicCapability() (gas: 34204) -MultiRolesAuthorityTest:testCanCallPublicCapability(address,address,bytes4) (runs: 256, μ: 34392, ~: 34361) +MultiRolesAuthorityTest:testCanCallPublicCapability(address,address,bytes4) (runs: 256, μ: 34387, ~: 34361) MultiRolesAuthorityTest:testCanCallWithAuthorizedRole() (gas: 80416) MultiRolesAuthorityTest:testCanCallWithAuthorizedRole(address,uint8,address,bytes4) (runs: 256, μ: 80700, ~: 80671) MultiRolesAuthorityTest:testCanCallWithCustomAuthority() (gas: 422439) @@ -327,40 +327,40 @@ MultiRolesAuthorityTest:testCanCallWithCustomAuthority(address,address,bytes4) ( MultiRolesAuthorityTest:testCanCallWithCustomAuthorityOverridesPublicCapability() (gas: 247388) MultiRolesAuthorityTest:testCanCallWithCustomAuthorityOverridesPublicCapability(address,address,bytes4) (runs: 256, μ: 247841, ~: 247841) MultiRolesAuthorityTest:testCanCallWithCustomAuthorityOverridesUserWithRole() (gas: 256546) -MultiRolesAuthorityTest:testCanCallWithCustomAuthorityOverridesUserWithRole(address,uint8,address,bytes4) (runs: 256, μ: 256878, ~: 256852) +MultiRolesAuthorityTest:testCanCallWithCustomAuthorityOverridesUserWithRole(address,uint8,address,bytes4) (runs: 256, μ: 256880, ~: 256852) MultiRolesAuthorityTest:testSetPublicCapabilities() (gas: 27727) -MultiRolesAuthorityTest:testSetPublicCapabilities(bytes4) (runs: 256, μ: 27837, ~: 27835) +MultiRolesAuthorityTest:testSetPublicCapabilities(bytes4) (runs: 256, μ: 27838, ~: 27835) MultiRolesAuthorityTest:testSetRoleCapabilities() (gas: 28932) MultiRolesAuthorityTest:testSetRoleCapabilities(uint8,bytes4) (runs: 256, μ: 29075, ~: 29072) MultiRolesAuthorityTest:testSetRoles() (gas: 28918) -MultiRolesAuthorityTest:testSetRoles(address,uint8) (runs: 256, μ: 29027, ~: 29014) +MultiRolesAuthorityTest:testSetRoles(address,uint8) (runs: 256, μ: 29028, ~: 29014) MultiRolesAuthorityTest:testSetTargetCustomAuthority() (gas: 28102) -MultiRolesAuthorityTest:testSetTargetCustomAuthority(address,address) (runs: 256, μ: 28115, ~: 28144) +MultiRolesAuthorityTest:testSetTargetCustomAuthority(address,address) (runs: 256, μ: 28143, ~: 28146) OwnedTest:testCallFunctionAsNonOwner() (gas: 11344) OwnedTest:testCallFunctionAsNonOwner(address) (runs: 256, μ: 16271, ~: 16290) OwnedTest:testCallFunctionAsOwner() (gas: 10435) OwnedTest:testTransferOwnership() (gas: 13123) -OwnedTest:testTransferOwnership(address) (runs: 256, μ: 13162, ~: 13192) -ReentrancyGuardTest:invariantReentrancyStatusAlways1() (runs: 256, calls: 3840, reverts: 254) +OwnedTest:testTransferOwnership(address) (runs: 256, μ: 13173, ~: 13192) +ReentrancyGuardTest:invariantReentrancyStatusAlways1() (runs: 256, calls: 3840, reverts: 310) ReentrancyGuardTest:testFailUnprotectedCall() (gas: 46147) ReentrancyGuardTest:testNoReentrancy() (gas: 7515) ReentrancyGuardTest:testProtectedCall() (gas: 33467) RolesAuthorityTest:testCanCallPublicCapability() (gas: 33409) -RolesAuthorityTest:testCanCallPublicCapability(address,address,bytes4) (runs: 256, μ: 33559, ~: 33532) +RolesAuthorityTest:testCanCallPublicCapability(address,address,bytes4) (runs: 256, μ: 33558, ~: 33532) RolesAuthorityTest:testCanCallWithAuthorizedRole() (gas: 79995) -RolesAuthorityTest:testCanCallWithAuthorizedRole(address,uint8,address,bytes4) (runs: 256, μ: 80265, ~: 80238) +RolesAuthorityTest:testCanCallWithAuthorizedRole(address,uint8,address,bytes4) (runs: 256, μ: 80264, ~: 80238) RolesAuthorityTest:testSetPublicCapabilities() (gas: 29095) -RolesAuthorityTest:testSetPublicCapabilities(address,bytes4) (runs: 256, μ: 29211, ~: 29192) +RolesAuthorityTest:testSetPublicCapabilities(address,bytes4) (runs: 256, μ: 29210, ~: 29192) RolesAuthorityTest:testSetRoleCapabilities() (gas: 30276) -RolesAuthorityTest:testSetRoleCapabilities(uint8,address,bytes4) (runs: 256, μ: 30507, ~: 30489) +RolesAuthorityTest:testSetRoleCapabilities(uint8,address,bytes4) (runs: 256, μ: 30505, ~: 30489) RolesAuthorityTest:testSetRoles() (gas: 29005) -RolesAuthorityTest:testSetRoles(address,uint8) (runs: 256, μ: 29118, ~: 29106) +RolesAuthorityTest:testSetRoles(address,uint8) (runs: 256, μ: 29119, ~: 29106) SSTORE2Test:testFailReadInvalidPointer() (gas: 2927) -SSTORE2Test:testFailReadInvalidPointer(address,bytes) (runs: 256, μ: 3858, ~: 3892) +SSTORE2Test:testFailReadInvalidPointer(address,bytes) (runs: 256, μ: 3870, ~: 3892) SSTORE2Test:testFailReadInvalidPointerCustomBounds() (gas: 3099) -SSTORE2Test:testFailReadInvalidPointerCustomBounds(address,uint256,uint256,bytes) (runs: 256, μ: 4072, ~: 4130) +SSTORE2Test:testFailReadInvalidPointerCustomBounds(address,uint256,uint256,bytes) (runs: 256, μ: 4080, ~: 4130) SSTORE2Test:testFailReadInvalidPointerCustomStartBound() (gas: 3004) -SSTORE2Test:testFailReadInvalidPointerCustomStartBound(address,uint256,bytes) (runs: 256, μ: 3960, ~: 3988) +SSTORE2Test:testFailReadInvalidPointerCustomStartBound(address,uint256,bytes) (runs: 256, μ: 3950, ~: 3988) SSTORE2Test:testFailWriteReadCustomBoundsOutOfRange(bytes,uint256,uint256,bytes) (runs: 256, μ: 46236, ~: 43603) SSTORE2Test:testFailWriteReadCustomStartBoundOutOfRange(bytes,uint256,bytes) (runs: 256, μ: 46017, ~: 43452) SSTORE2Test:testFailWriteReadEmptyOutOfBounds() (gas: 34470) @@ -369,9 +369,9 @@ SSTORE2Test:testFailWriteReadOutOfStartBound() (gas: 34362) SSTORE2Test:testWriteRead() (gas: 53497) SSTORE2Test:testWriteRead(bytes,bytes) (runs: 256, μ: 44019, ~: 41555) SSTORE2Test:testWriteReadCustomBounds() (gas: 34869) -SSTORE2Test:testWriteReadCustomBounds(bytes,uint256,uint256,bytes) (runs: 256, μ: 28531, ~: 41976) +SSTORE2Test:testWriteReadCustomBounds(bytes,uint256,uint256,bytes) (runs: 256, μ: 28848, ~: 43082) SSTORE2Test:testWriteReadCustomStartBound() (gas: 34740) -SSTORE2Test:testWriteReadCustomStartBound(bytes,uint256,bytes) (runs: 256, μ: 46485, ~: 44053) +SSTORE2Test:testWriteReadCustomStartBound(bytes,uint256,bytes) (runs: 256, μ: 46484, ~: 44053) SSTORE2Test:testWriteReadEmptyBound() (gas: 34677) SSTORE2Test:testWriteReadFullBoundedRead() (gas: 53672) SSTORE2Test:testWriteReadFullStartBound() (gas: 34764) @@ -496,16 +496,16 @@ SafeCastLibTest:testSafeCastTo80(uint256) (runs: 256, μ: 2736, ~: 2736) SafeCastLibTest:testSafeCastTo88(uint256) (runs: 256, μ: 2755, ~: 2755) SafeCastLibTest:testSafeCastTo96() (gas: 536) SafeCastLibTest:testSafeCastTo96(uint256) (runs: 256, μ: 2800, ~: 2800) -SafeTransferLibTest:testApproveWithGarbage(address,uint256,bytes,bytes) (runs: 256, μ: 3016, ~: 2231) +SafeTransferLibTest:testApproveWithGarbage(address,uint256,bytes,bytes) (runs: 256, μ: 2691, ~: 2231) SafeTransferLibTest:testApproveWithMissingReturn() (gas: 30757) -SafeTransferLibTest:testApproveWithMissingReturn(address,uint256,bytes) (runs: 256, μ: 30800, ~: 31572) +SafeTransferLibTest:testApproveWithMissingReturn(address,uint256,bytes) (runs: 256, μ: 30334, ~: 31572) SafeTransferLibTest:testApproveWithNonContract() (gas: 3041) SafeTransferLibTest:testApproveWithNonContract(address,address,uint256,bytes) (runs: 256, μ: 4095, ~: 4123) SafeTransferLibTest:testApproveWithReturnsTooMuch() (gas: 31140) -SafeTransferLibTest:testApproveWithReturnsTooMuch(address,uint256,bytes) (runs: 256, μ: 31268, ~: 32040) +SafeTransferLibTest:testApproveWithReturnsTooMuch(address,uint256,bytes) (runs: 256, μ: 30802, ~: 32040) SafeTransferLibTest:testApproveWithStandardERC20() (gas: 30888) -SafeTransferLibTest:testApproveWithStandardERC20(address,uint256,bytes) (runs: 256, μ: 30994, ~: 31766) -SafeTransferLibTest:testFailApproveWithGarbage(address,uint256,bytes,bytes) (runs: 256, μ: 85288, ~: 77915) +SafeTransferLibTest:testApproveWithStandardERC20(address,uint256,bytes) (runs: 256, μ: 30528, ~: 31766) +SafeTransferLibTest:testFailApproveWithGarbage(address,uint256,bytes,bytes) (runs: 256, μ: 84301, ~: 77915) SafeTransferLibTest:testFailApproveWithReturnsFalse() (gas: 5633) SafeTransferLibTest:testFailApproveWithReturnsFalse(address,uint256,bytes) (runs: 256, μ: 6486, ~: 6481) SafeTransferLibTest:testFailApproveWithReturnsTooLittle() (gas: 5574) @@ -515,15 +515,15 @@ SafeTransferLibTest:testFailApproveWithReverting() (gas: 5508) SafeTransferLibTest:testFailApproveWithReverting(address,uint256,bytes) (runs: 256, μ: 6409, ~: 6404) SafeTransferLibTest:testFailTransferETHToContractWithoutFallback() (gas: 7244) SafeTransferLibTest:testFailTransferETHToContractWithoutFallback(uint256,bytes) (runs: 256, μ: 7758, ~: 8055) -SafeTransferLibTest:testFailTransferFromWithGarbage(address,address,uint256,bytes,bytes) (runs: 256, μ: 120098, ~: 117413) +SafeTransferLibTest:testFailTransferFromWithGarbage(address,address,uint256,bytes,bytes) (runs: 256, μ: 123254, ~: 117413) SafeTransferLibTest:testFailTransferFromWithReturnsFalse() (gas: 13675) -SafeTransferLibTest:testFailTransferFromWithReturnsFalse(address,address,uint256,bytes) (runs: 256, μ: 14606, ~: 14600) +SafeTransferLibTest:testFailTransferFromWithReturnsFalse(address,address,uint256,bytes) (runs: 256, μ: 14605, ~: 14600) SafeTransferLibTest:testFailTransferFromWithReturnsTooLittle() (gas: 13556) -SafeTransferLibTest:testFailTransferFromWithReturnsTooLittle(address,address,uint256,bytes) (runs: 256, μ: 14465, ~: 14459) -SafeTransferLibTest:testFailTransferFromWithReturnsTwo(address,address,uint256,bytes) (runs: 256, μ: 14572, ~: 14566) +SafeTransferLibTest:testFailTransferFromWithReturnsTooLittle(address,address,uint256,bytes) (runs: 256, μ: 14464, ~: 14459) +SafeTransferLibTest:testFailTransferFromWithReturnsTwo(address,address,uint256,bytes) (runs: 256, μ: 14571, ~: 14566) SafeTransferLibTest:testFailTransferFromWithReverting() (gas: 9757) -SafeTransferLibTest:testFailTransferFromWithReverting(address,address,uint256,bytes) (runs: 256, μ: 10686, ~: 10680) -SafeTransferLibTest:testFailTransferWithGarbage(address,uint256,bytes,bytes) (runs: 256, μ: 91079, ~: 83995) +SafeTransferLibTest:testFailTransferFromWithReverting(address,address,uint256,bytes) (runs: 256, μ: 10685, ~: 10680) +SafeTransferLibTest:testFailTransferWithGarbage(address,uint256,bytes,bytes) (runs: 256, μ: 90210, ~: 83995) SafeTransferLibTest:testFailTransferWithReturnsFalse() (gas: 8538) SafeTransferLibTest:testFailTransferWithReturnsFalse(address,uint256,bytes) (runs: 256, μ: 9457, ~: 9452) SafeTransferLibTest:testFailTransferWithReturnsTooLittle() (gas: 8544) @@ -532,37 +532,37 @@ SafeTransferLibTest:testFailTransferWithReturnsTwo(address,uint256,bytes) (runs: SafeTransferLibTest:testFailTransferWithReverting() (gas: 8500) SafeTransferLibTest:testFailTransferWithReverting(address,uint256,bytes) (runs: 256, μ: 9356, ~: 9351) SafeTransferLibTest:testTransferETH() (gas: 34592) -SafeTransferLibTest:testTransferETH(address,uint256,bytes) (runs: 256, μ: 35787, ~: 37975) -SafeTransferLibTest:testTransferFromWithGarbage(address,address,uint256,bytes,bytes) (runs: 256, μ: 3348, ~: 2253) +SafeTransferLibTest:testTransferETH(address,uint256,bytes) (runs: 256, μ: 35465, ~: 37975) +SafeTransferLibTest:testTransferFromWithGarbage(address,address,uint256,bytes,bytes) (runs: 256, μ: 2890, ~: 2247) SafeTransferLibTest:testTransferFromWithMissingReturn() (gas: 49196) -SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256,bytes) (runs: 256, μ: 48997, ~: 49580) +SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256,bytes) (runs: 256, μ: 48345, ~: 49592) SafeTransferLibTest:testTransferFromWithNonContract() (gas: 3047) -SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256,bytes) (runs: 256, μ: 4234, ~: 4240) +SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256,bytes) (runs: 256, μ: 4245, ~: 4240) SafeTransferLibTest:testTransferFromWithReturnsTooMuch() (gas: 49820) -SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256,bytes) (runs: 256, μ: 49640, ~: 50219) +SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256,bytes) (runs: 256, μ: 48993, ~: 50231) SafeTransferLibTest:testTransferFromWithStandardERC20() (gas: 47612) -SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256,bytes) (runs: 256, μ: 47345, ~: 48031) -SafeTransferLibTest:testTransferWithGarbage(address,uint256,bytes,bytes) (runs: 256, μ: 3006, ~: 2187) +SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256,bytes) (runs: 256, μ: 46777, ~: 48046) +SafeTransferLibTest:testTransferWithGarbage(address,uint256,bytes,bytes) (runs: 256, μ: 2647, ~: 2187) SafeTransferLibTest:testTransferWithMissingReturn() (gas: 36672) -SafeTransferLibTest:testTransferWithMissingReturn(address,uint256,bytes) (runs: 256, μ: 36539, ~: 37552) +SafeTransferLibTest:testTransferWithMissingReturn(address,uint256,bytes) (runs: 256, μ: 36007, ~: 37552) SafeTransferLibTest:testTransferWithNonContract() (gas: 3018) SafeTransferLibTest:testTransferWithNonContract(address,address,uint256,bytes) (runs: 256, μ: 4159, ~: 4187) SafeTransferLibTest:testTransferWithReturnsTooMuch() (gas: 37118) -SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256,bytes) (runs: 256, μ: 36942, ~: 37955) +SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256,bytes) (runs: 256, μ: 36410, ~: 37955) SafeTransferLibTest:testTransferWithStandardERC20() (gas: 36702) -SafeTransferLibTest:testTransferWithStandardERC20(address,uint256,bytes) (runs: 256, μ: 36592, ~: 37605) +SafeTransferLibTest:testTransferWithStandardERC20(address,uint256,bytes) (runs: 256, μ: 36060, ~: 37605) SignedWadMathTest:testFailWadDivOverflow(int256,int256) (runs: 256, μ: 347, ~: 329) SignedWadMathTest:testFailWadDivZeroDenominator(int256) (runs: 256, μ: 296, ~: 296) SignedWadMathTest:testFailWadMulEdgeCase() (gas: 286) SignedWadMathTest:testFailWadMulEdgeCase2() (gas: 309) -SignedWadMathTest:testFailWadMulOverflow(int256,int256) (runs: 256, μ: 354, ~: 319) +SignedWadMathTest:testFailWadMulOverflow(int256,int256) (runs: 256, μ: 355, ~: 319) SignedWadMathTest:testWadDiv(uint256,uint256,bool,bool) (runs: 256, μ: 5712, ~: 5714) SignedWadMathTest:testWadMul(uint256,uint256,bool,bool) (runs: 256, μ: 5760, ~: 5762) -WETHInvariants:invariantTotalSupplyEqualsBalance() (runs: 256, calls: 3840, reverts: 1776) +WETHInvariants:invariantTotalSupplyEqualsBalance() (runs: 256, calls: 3840, reverts: 1814) WETHTest:testDeposit() (gas: 63535) WETHTest:testDeposit(uint256) (runs: 256, μ: 63155, ~: 65880) WETHTest:testFallbackDeposit() (gas: 63249) WETHTest:testFallbackDeposit(uint256) (runs: 256, μ: 62879, ~: 65604) WETHTest:testPartialWithdraw() (gas: 73281) WETHTest:testWithdraw() (gas: 54360) -WETHTest:testWithdraw(uint256,uint256) (runs: 256, μ: 75313, ~: 78076) \ No newline at end of file +WETHTest:testWithdraw(uint256,uint256) (runs: 256, μ: 75262, ~: 78076) \ No newline at end of file From 521c4e9115bd003cb541f6fab15383bac41bea40 Mon Sep 17 00:00:00 2001 From: sodii Date: Fri, 5 Jul 2024 16:16:50 +0900 Subject: [PATCH 2/5] =?UTF-8?q?=E2=9C=85Add=20a=20test=20for=20wadExp=20an?= =?UTF-8?q?d=20wadLn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gas-snapshot | 7 ++++--- src/test/SignedWadMath.t.sol | 13 ++++++++++++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index d974c1b8..c0fa2fca 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -551,12 +551,13 @@ SafeTransferLibTest:testTransferWithReturnsTooMuch() (gas: 37118) SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256,bytes) (runs: 256, μ: 36410, ~: 37955) SafeTransferLibTest:testTransferWithStandardERC20() (gas: 36702) SafeTransferLibTest:testTransferWithStandardERC20(address,uint256,bytes) (runs: 256, μ: 36060, ~: 37605) -SignedWadMathTest:testFailWadDivOverflow(int256,int256) (runs: 256, μ: 347, ~: 329) -SignedWadMathTest:testFailWadDivZeroDenominator(int256) (runs: 256, μ: 296, ~: 296) +SignedWadMathTest:testFailWadDivOverflow(int256,int256) (runs: 256, μ: 349, ~: 329) +SignedWadMathTest:testFailWadDivZeroDenominator(int256) (runs: 256, μ: 319, ~: 319) SignedWadMathTest:testFailWadMulEdgeCase() (gas: 286) SignedWadMathTest:testFailWadMulEdgeCase2() (gas: 309) -SignedWadMathTest:testFailWadMulOverflow(int256,int256) (runs: 256, μ: 355, ~: 319) +SignedWadMathTest:testFailWadMulOverflow(int256,int256) (runs: 256, μ: 357, ~: 319) SignedWadMathTest:testWadDiv(uint256,uint256,bool,bool) (runs: 256, μ: 5712, ~: 5714) +SignedWadMathTest:testWadLnExp(uint256) (runs: 256, μ: 3997, ~: 4015) SignedWadMathTest:testWadMul(uint256,uint256,bool,bool) (runs: 256, μ: 5760, ~: 5762) WETHInvariants:invariantTotalSupplyEqualsBalance() (runs: 256, calls: 3840, reverts: 1814) WETHTest:testDeposit() (gas: 63535) diff --git a/src/test/SignedWadMath.t.sol b/src/test/SignedWadMath.t.sol index 48494480..b708f9cb 100644 --- a/src/test/SignedWadMath.t.sol +++ b/src/test/SignedWadMath.t.sol @@ -3,7 +3,7 @@ pragma solidity >=0.8.0; import {DSTestPlus} from "./utils/DSTestPlus.sol"; -import {wadMul, wadDiv} from "../utils/SignedWadMath.sol"; +import {wadMul, wadDiv, wadExp, wadLn} from "../utils/SignedWadMath.sol"; contract SignedWadMathTest is DSTestPlus { function testWadMul( @@ -71,4 +71,15 @@ contract SignedWadMathTest is DSTestPlus { function testFailWadDivZeroDenominator(int256 x) public pure { wadDiv(x, 0); } + + function testWadLnExp( + uint256 x + ) public { + x = bound(x, 0, 135305999368893231588 + 10e18); + + int256 xPrime = int256(x) - 10e18; + int256 diff = wadLn(wadExp(xPrime)) - xPrime; + + assertLe(diff < 0 ? -diff : diff, 100000); + } } From c9bf4034acbe4af9b8dc38ec48255cb8b240246c Mon Sep 17 00:00:00 2001 From: sodii Date: Fri, 5 Jul 2024 16:22:25 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=E2=9A=A1=20Optimize=20`wadLn`=20integer=20?= =?UTF-8?q?part=20calculation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/SignedWadMath.sol | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/utils/SignedWadMath.sol b/src/utils/SignedWadMath.sol index e7d30a43..eb2a8b4f 100644 --- a/src/utils/SignedWadMath.sol +++ b/src/utils/SignedWadMath.sol @@ -179,8 +179,13 @@ function wadLn(int256 x) pure returns (int256 r) { r := or(r, shl(4, lt(0xffff, shr(r, x)))) r := or(r, shl(3, lt(0xff, shr(r, x)))) r := or(r, shl(2, lt(0xf, shr(r, x)))) - r := or(r, shl(1, lt(0x3, shr(r, x)))) - r := or(r, lt(0x1, shr(r, x))) + r := or( + r, + byte( + shr(r, x), + 0x0000010102020202030303030303030303000000000000000000000000000000 + ) + ) } // Reduce range of x to (1, 2) * 2**96 From 0e59ecfb2096ed9855f69d8c22a1fa441e663357 Mon Sep 17 00:00:00 2001 From: sodii Date: Fri, 5 Jul 2024 16:24:13 +0900 Subject: [PATCH 4/5] =?UTF-8?q?=F0=9F=91=B7=E2=80=8D=E2=99=82=EF=B8=8F=20r?= =?UTF-8?q?un=20`forge=20snapshot`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gas-snapshot | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index c0fa2fca..60a235ce 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -551,13 +551,13 @@ SafeTransferLibTest:testTransferWithReturnsTooMuch() (gas: 37118) SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256,bytes) (runs: 256, μ: 36410, ~: 37955) SafeTransferLibTest:testTransferWithStandardERC20() (gas: 36702) SafeTransferLibTest:testTransferWithStandardERC20(address,uint256,bytes) (runs: 256, μ: 36060, ~: 37605) -SignedWadMathTest:testFailWadDivOverflow(int256,int256) (runs: 256, μ: 349, ~: 329) +SignedWadMathTest:testFailWadDivOverflow(int256,int256) (runs: 256, μ: 350, ~: 329) SignedWadMathTest:testFailWadDivZeroDenominator(int256) (runs: 256, μ: 319, ~: 319) SignedWadMathTest:testFailWadMulEdgeCase() (gas: 286) SignedWadMathTest:testFailWadMulEdgeCase2() (gas: 309) -SignedWadMathTest:testFailWadMulOverflow(int256,int256) (runs: 256, μ: 357, ~: 319) +SignedWadMathTest:testFailWadMulOverflow(int256,int256) (runs: 256, μ: 356, ~: 319) SignedWadMathTest:testWadDiv(uint256,uint256,bool,bool) (runs: 256, μ: 5712, ~: 5714) -SignedWadMathTest:testWadLnExp(uint256) (runs: 256, μ: 3997, ~: 4015) +SignedWadMathTest:testWadLnExp(uint256) (runs: 256, μ: 3953, ~: 3970) SignedWadMathTest:testWadMul(uint256,uint256,bool,bool) (runs: 256, μ: 5760, ~: 5762) WETHInvariants:invariantTotalSupplyEqualsBalance() (runs: 256, calls: 3840, reverts: 1814) WETHTest:testDeposit() (gas: 63535) From f18541e1a3f00ed2d40bafae046fd2fc8bbfa2c5 Mon Sep 17 00:00:00 2001 From: sodii Date: Fri, 5 Jul 2024 16:28:50 +0900 Subject: [PATCH 5/5] =?UTF-8?q?=F0=9F=91=B7=E2=80=8D=E2=99=82=EF=B8=8F=20r?= =?UTF-8?q?un=20`npm=20run=20lint`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/SignedWadMath.t.sol | 4 +--- src/utils/SignedWadMath.sol | 8 +------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/test/SignedWadMath.t.sol b/src/test/SignedWadMath.t.sol index b708f9cb..1a5070a0 100644 --- a/src/test/SignedWadMath.t.sol +++ b/src/test/SignedWadMath.t.sol @@ -72,9 +72,7 @@ contract SignedWadMathTest is DSTestPlus { wadDiv(x, 0); } - function testWadLnExp( - uint256 x - ) public { + function testWadLnExp(uint256 x) public { x = bound(x, 0, 135305999368893231588 + 10e18); int256 xPrime = int256(x) - 10e18; diff --git a/src/utils/SignedWadMath.sol b/src/utils/SignedWadMath.sol index eb2a8b4f..2ac8e0bb 100644 --- a/src/utils/SignedWadMath.sol +++ b/src/utils/SignedWadMath.sol @@ -179,13 +179,7 @@ function wadLn(int256 x) pure returns (int256 r) { r := or(r, shl(4, lt(0xffff, shr(r, x)))) r := or(r, shl(3, lt(0xff, shr(r, x)))) r := or(r, shl(2, lt(0xf, shr(r, x)))) - r := or( - r, - byte( - shr(r, x), - 0x0000010102020202030303030303030303000000000000000000000000000000 - ) - ) + r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030303000000000000000000000000000000)) } // Reduce range of x to (1, 2) * 2**96