Skip to content

Commit

Permalink
✨ Add Permit2 operations to SafeTransferLib (#845)
Browse files Browse the repository at this point in the history
  • Loading branch information
Vectorized committed Mar 4, 2024
1 parent e7024be commit 4a549f3
Show file tree
Hide file tree
Showing 3 changed files with 290 additions and 82 deletions.
164 changes: 82 additions & 82 deletions .gas-snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -248,15 +248,15 @@ ERC4337Test:testValidateUserOp() (gas: 480078)
ERC4337Test:test__codesize() (gas: 54595)
ERC4626Test:testDepositWithNoApprovalReverts() (gas: 16371)
ERC4626Test:testDepositWithNotEnoughApprovalReverts() (gas: 89884)
ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 256, μ: 3325, ~: 3185)
ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 256, μ: 3320, ~: 3185)
ERC4626Test:testMetadata() (gas: 15439)
ERC4626Test:testMintWithNoApprovalReverts() (gas: 16345)
ERC4626Test:testMintZero() (gas: 54317)
ERC4626Test:testMultipleMintDepositRedeemWithdraw() (gas: 425481)
ERC4626Test:testRedeemWithNoShareAmountReverts() (gas: 10918)
ERC4626Test:testRedeemWithNotEnoughShareAmountReverts() (gas: 142915)
ERC4626Test:testSingleDepositWithdraw(uint128) (runs: 256, μ: 202651, ~: 202662)
ERC4626Test:testSingleMintRedeem(uint128) (runs: 256, μ: 201578, ~: 201589)
ERC4626Test:testSingleDepositWithdraw(uint128) (runs: 256, μ: 202651, ~: 202660)
ERC4626Test:testSingleMintRedeem(uint128) (runs: 256, μ: 201578, ~: 201587)
ERC4626Test:testTryGetAssetDecimals() (gas: 30466616)
ERC4626Test:testUseVirtualShares() (gas: 2439368)
ERC4626Test:testVaultInteractionsForSomeoneElse() (gas: 296164)
Expand Down Expand Up @@ -605,15 +605,15 @@ LibCloneTest:testDeployDeterministicERC1967I() (gas: 127581)
LibCloneTest:testDeployDeterministicERC1967I(uint256,bytes32) (runs: 256, μ: 127652, ~: 127652)
LibCloneTest:testDeployERC1967() (gas: 99367)
LibCloneTest:testDeployERC1967(uint256) (runs: 256, μ: 99418, ~: 99418)
LibCloneTest:testDeployERC1967CodeHashAndLength(address) (runs: 256, μ: 133562, ~: 134029)
LibCloneTest:testDeployERC1967CodeHashAndLength(address) (runs: 256, μ: 133873, ~: 134029)
LibCloneTest:testDeployERC1967I() (gas: 103641)
LibCloneTest:testDeployERC1967I(uint256) (runs: 256, μ: 103712, ~: 103712)
LibCloneTest:testDeployERC1967ICodeHashAndLength(address) (runs: 256, μ: 142001, ~: 142468)
LibCloneTest:testDeployERC1967ICodeHashAndLength(address) (runs: 256, μ: 142312, ~: 142468)
LibCloneTest:testDeployERC1967ISpecialPath() (gas: 71720)
LibCloneTest:testDeployERC1967ISpecialPath(address,bytes1) (runs: 256, μ: 72155, ~: 72233)
LibCloneTest:testInitCode(address,uint256,uint256) (runs: 256, μ: 901256, ~: 880889)
LibCloneTest:testDeployERC1967ISpecialPath(address,bytes1) (runs: 256, μ: 71999, ~: 72233)
LibCloneTest:testInitCode(address,uint256,uint256) (runs: 256, μ: 983108, ~: 880384)
LibCloneTest:testInitialDeposit() (gas: 323928)
LibCloneTest:testStartsWith(uint256) (runs: 256, μ: 29047, ~: 29052)
LibCloneTest:testStartsWith(uint256) (runs: 256, μ: 29060, ~: 29052)
LibCloneTest:test__codesize() (gas: 22917)
LibMapTest:testFoundStatementDifferential(uint256,uint256,uint256) (runs: 256, μ: 499, ~: 499)
LibMapTest:testGeneralMapFunctionsGas() (gas: 3304775)
Expand Down Expand Up @@ -1012,82 +1012,82 @@ SafeCastLibTest:testSafeCastToUint(uint256) (runs: 256, μ: 4150, ~: 3351)
SafeCastLibTest:testSafeCastToUint256(int256) (runs: 256, μ: 1285, ~: 432)
SafeCastLibTest:testSafeCastToUintBench() (gas: 326306)
SafeCastLibTest:test__codesize() (gas: 16001)
SafeTransferLibTest:testApproveWithGarbageReverts(address,uint256) (runs: 256, μ: 111346, ~: 123373)
SafeTransferLibTest:testApproveWithMissingReturn() (gas: 31945)
SafeTransferLibTest:testApproveWithMissingReturn(address,uint256) (runs: 256, μ: 30860, ~: 32104)
SafeTransferLibTest:testApproveWithNonContract() (gas: 2989)
SafeTransferLibTest:testApproveWithNonContract(address,address,uint256) (runs: 256, μ: 3524, ~: 3536)
SafeTransferLibTest:testApproveWithNonGarbage(address,uint256) (runs: 256, μ: 78267, ~: 59187)
SafeTransferLibTest:testApproveWithGarbageReverts(address,uint256) (runs: 256, μ: 111710, ~: 125840)
SafeTransferLibTest:testApproveWithMissingReturn() (gas: 31923)
SafeTransferLibTest:testApproveWithMissingReturn(address,uint256) (runs: 256, μ: 30838, ~: 32082)
SafeTransferLibTest:testApproveWithNonContract() (gas: 2967)
SafeTransferLibTest:testApproveWithNonContract(address,address,uint256) (runs: 256, μ: 3536, ~: 3536)
SafeTransferLibTest:testApproveWithNonGarbage(address,uint256) (runs: 256, μ: 77819, ~: 59223)
SafeTransferLibTest:testApproveWithRetry() (gas: 768579)
SafeTransferLibTest:testApproveWithRetry(address,uint256,uint256) (runs: 256, μ: 767124, ~: 768723)
SafeTransferLibTest:testApproveWithRetry(address,uint256,uint256) (runs: 256, μ: 767091, ~: 768723)
SafeTransferLibTest:testApproveWithRetryWithNonContract() (gas: 2990)
SafeTransferLibTest:testApproveWithRetryWithNonContract(address,address,uint256) (runs: 256, μ: 3521, ~: 3533)
SafeTransferLibTest:testApproveWithReturnsFalseReverts() (gas: 9515)
SafeTransferLibTest:testApproveWithReturnsFalseReverts(address,uint256) (runs: 256, μ: 9652, ~: 9652)
SafeTransferLibTest:testApproveWithReturnsTooLittleReverts() (gas: 9419)
SafeTransferLibTest:testApproveWithReturnsTooLittleReverts(address,uint256) (runs: 256, μ: 9603, ~: 9603)
SafeTransferLibTest:testApproveWithReturnsTooMuch() (gas: 32324)
SafeTransferLibTest:testApproveWithReturnsTooMuch(address,uint256) (runs: 256, μ: 31266, ~: 32510)
SafeTransferLibTest:testApproveWithReturnsTwoReverts(address,uint256) (runs: 256, μ: 9675, ~: 9675)
SafeTransferLibTest:testApproveWithRevertingReverts() (gas: 9376)
SafeTransferLibTest:testApproveWithRevertingReverts(address,uint256) (runs: 256, μ: 9570, ~: 9570)
SafeTransferLibTest:testApproveWithRetryWithNonContract(address,address,uint256) (runs: 256, μ: 3511, ~: 3511)
SafeTransferLibTest:testApproveWithReturnsFalseReverts() (gas: 9471)
SafeTransferLibTest:testApproveWithReturnsFalseReverts(address,uint256) (runs: 256, μ: 9697, ~: 9697)
SafeTransferLibTest:testApproveWithReturnsTooLittleReverts() (gas: 9440)
SafeTransferLibTest:testApproveWithReturnsTooLittleReverts(address,uint256) (runs: 256, μ: 9624, ~: 9624)
SafeTransferLibTest:testApproveWithReturnsTooMuch() (gas: 32302)
SafeTransferLibTest:testApproveWithReturnsTooMuch(address,uint256) (runs: 256, μ: 31244, ~: 32488)
SafeTransferLibTest:testApproveWithReturnsTwoReverts(address,uint256) (runs: 256, μ: 9653, ~: 9653)
SafeTransferLibTest:testApproveWithRevertingReverts() (gas: 9399)
SafeTransferLibTest:testApproveWithRevertingReverts(address,uint256) (runs: 256, μ: 9615, ~: 9615)
SafeTransferLibTest:testApproveWithStandardERC20() (gas: 31786)
SafeTransferLibTest:testApproveWithStandardERC20(address,uint256) (runs: 256, μ: 30725, ~: 31969)
SafeTransferLibTest:testBalanceOfStandardERC20() (gas: 7830)
SafeTransferLibTest:testBalanceOfStandardERC20(address,uint256) (runs: 256, μ: 39497, ~: 40437)
SafeTransferLibTest:testForceTransferETHToGriever() (gas: 1511304)
SafeTransferLibTest:testForceTransferETHToGriever(uint256,uint256) (runs: 256, μ: 529645, ~: 570828)
SafeTransferLibTest:testTransferAllETH() (gas: 34598)
SafeTransferLibTest:testTransferAllETH(address) (runs: 256, μ: 35018, ~: 35018)
SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts() (gas: 10788)
SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts(uint256) (runs: 256, μ: 10898, ~: 10898)
SafeTransferLibTest:testTransferAllFromWithStandardERC20() (gas: 33092)
SafeTransferLibTest:testTransferAllFromWithStandardERC20(address,address,uint256) (runs: 256, μ: 56523, ~: 56524)
SafeTransferLibTest:testTransferAllWithStandardERC20() (gas: 30735)
SafeTransferLibTest:testApproveWithStandardERC20(address,uint256) (runs: 256, μ: 30748, ~: 31992)
SafeTransferLibTest:testBalanceOfStandardERC20() (gas: 7808)
SafeTransferLibTest:testBalanceOfStandardERC20(address,uint256) (runs: 256, μ: 39472, ~: 40393)
SafeTransferLibTest:testForceTransferETHToGriever() (gas: 1511500)
SafeTransferLibTest:testForceTransferETHToGriever(uint256,uint256) (runs: 256, μ: 529711, ~: 570892)
SafeTransferLibTest:testTransferAllETH() (gas: 34643)
SafeTransferLibTest:testTransferAllETH(address) (runs: 256, μ: 34861, ~: 34996)
SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts() (gas: 10766)
SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts(uint256) (runs: 256, μ: 10876, ~: 10876)
SafeTransferLibTest:testTransferAllFromWithStandardERC20() (gas: 33114)
SafeTransferLibTest:testTransferAllFromWithStandardERC20(address,address,uint256) (runs: 256, μ: 56504, ~: 56507)
SafeTransferLibTest:testTransferAllWithStandardERC20() (gas: 30691)
SafeTransferLibTest:testTransferAllWithStandardERC20(address,uint256) (runs: 256, μ: 42114, ~: 42114)
SafeTransferLibTest:testTransferETH() (gas: 34600)
SafeTransferLibTest:testTransferETH(address,uint256) (runs: 256, μ: 32688, ~: 35250)
SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts() (gas: 10846)
SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts(uint256) (runs: 256, μ: 10546, ~: 10928)
SafeTransferLibTest:testTransferFromWithGarbageReverts(address,address,uint256) (runs: 256, μ: 969187, ~: 782733)
SafeTransferLibTest:testTransferFromWithMissingReturn() (gas: 670582)
SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256) (runs: 256, μ: 769470, ~: 670123)
SafeTransferLibTest:testTransferFromWithNonContract() (gas: 3022)
SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256) (runs: 256, μ: 3635, ~: 3694)
SafeTransferLibTest:testTransferFromWithNonGarbage(address,address,uint256) (runs: 256, μ: 873710, ~: 720176)
SafeTransferLibTest:testTransferFromWithReturnsFalseReverts() (gas: 635370)
SafeTransferLibTest:testTransferFromWithReturnsFalseReverts(address,address,uint256) (runs: 256, μ: 733696, ~: 635832)
SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts() (gas: 635579)
SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts(address,address,uint256) (runs: 256, μ: 700020, ~: 635690)
SafeTransferLibTest:testTransferFromWithReturnsTooMuch() (gas: 670350)
SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256) (runs: 256, μ: 744340, ~: 670792)
SafeTransferLibTest:testTransferFromWithReturnsTwoReverts(address,address,uint256) (runs: 256, μ: 746697, ~: 635837)
SafeTransferLibTest:testTransferFromWithRevertingReverts() (gas: 629190)
SafeTransferLibTest:testTransferFromWithRevertingReverts(address,address,uint256) (runs: 256, μ: 746897, ~: 629297)
SafeTransferLibTest:testTransferFromWithStandardERC20() (gas: 668120)
SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256) (runs: 256, μ: 745896, ~: 667661)
SafeTransferLibTest:testTransferWithGarbageReverts(address,uint256) (runs: 256, μ: 870332, ~: 748055)
SafeTransferLibTest:testTransferWithMissingReturn() (gas: 655954)
SafeTransferLibTest:testTransferWithMissingReturn(address,uint256) (runs: 256, μ: 801380, ~: 656545)
SafeTransferLibTest:testTransferETH(address,uint256) (runs: 256, μ: 32939, ~: 35251)
SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts() (gas: 10825)
SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts(uint256) (runs: 256, μ: 10501, ~: 10884)
SafeTransferLibTest:testTransferFromWithGarbageReverts(address,address,uint256) (runs: 256, μ: 848280, ~: 743768)
SafeTransferLibTest:testTransferFromWithMissingReturn() (gas: 620822)
SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256) (runs: 256, μ: 773225, ~: 620486)
SafeTransferLibTest:testTransferFromWithNonContract() (gas: 3045)
SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256) (runs: 256, μ: 3686, ~: 3735)
SafeTransferLibTest:testTransferFromWithNonGarbage(address,address,uint256) (runs: 256, μ: 808695, ~: 670343)
SafeTransferLibTest:testTransferFromWithReturnsFalseReverts() (gas: 585718)
SafeTransferLibTest:testTransferFromWithReturnsFalseReverts(address,address,uint256) (runs: 256, μ: 614271, ~: 586105)
SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts() (gas: 585868)
SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts(address,address,uint256) (runs: 256, μ: 631380, ~: 585962)
SafeTransferLibTest:testTransferFromWithReturnsTooMuch() (gas: 620646)
SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256) (runs: 256, μ: 726871, ~: 621173)
SafeTransferLibTest:testTransferFromWithReturnsTwoReverts(address,address,uint256) (runs: 256, μ: 702567, ~: 586131)
SafeTransferLibTest:testTransferFromWithRevertingReverts() (gas: 579450)
SafeTransferLibTest:testTransferFromWithRevertingReverts(address,address,uint256) (runs: 256, μ: 679825, ~: 579480)
SafeTransferLibTest:testTransferFromWithStandardERC20() (gas: 618333)
SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256) (runs: 256, μ: 652335, ~: 618029)
SafeTransferLibTest:testTransferWithGarbageReverts(address,uint256) (runs: 256, μ: 794204, ~: 700127)
SafeTransferLibTest:testTransferWithMissingReturn() (gas: 606288)
SafeTransferLibTest:testTransferWithMissingReturn(address,uint256) (runs: 256, μ: 774449, ~: 606819)
SafeTransferLibTest:testTransferWithNonContract() (gas: 2988)
SafeTransferLibTest:testTransferWithNonContract(address,address,uint256) (runs: 256, μ: 3545, ~: 3557)
SafeTransferLibTest:testTransferWithNonGarbage(address,uint256) (runs: 256, μ: 839866, ~: 725592)
SafeTransferLibTest:testTransferWithReturnsFalseReverts() (gas: 632501)
SafeTransferLibTest:testTransferWithReturnsFalseReverts(address,uint256) (runs: 256, μ: 748610, ~: 632998)
SafeTransferLibTest:testTransferWithReturnsTooLittleReverts() (gas: 633070)
SafeTransferLibTest:testTransferWithReturnsTooLittleReverts(address,uint256) (runs: 256, μ: 777282, ~: 632831)
SafeTransferLibTest:testTransferWithReturnsTooMuch() (gas: 656421)
SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256) (runs: 256, μ: 781040, ~: 657024)
SafeTransferLibTest:testTransferWithReturnsTwoReverts(address,uint256) (runs: 256, μ: 726588, ~: 632907)
SafeTransferLibTest:testTransferWithRevertingReverts() (gas: 632327)
SafeTransferLibTest:testTransferWithRevertingReverts(address,uint256) (runs: 256, μ: 816451, ~: 632931)
SafeTransferLibTest:testTransferWithStandardERC20() (gas: 657003)
SafeTransferLibTest:testTransferWithStandardERC20(address,uint256) (runs: 256, μ: 819318, ~: 656785)
SafeTransferLibTest:testTryTransferAllETH() (gas: 148698)
SafeTransferLibTest:testTryTransferETH() (gas: 148745)
SafeTransferLibTest:testTryTransferETHWithNoGrief() (gas: 537083)
SafeTransferLibTest:testTryTransferETHWithNoStorageWrites() (gas: 192518)
SafeTransferLibTest:test__codesize() (gas: 37534)
SafeTransferLibTest:testTransferWithNonContract(address,address,uint256) (runs: 256, μ: 3557, ~: 3557)
SafeTransferLibTest:testTransferWithNonGarbage(address,uint256) (runs: 256, μ: 772523, ~: 674490)
SafeTransferLibTest:testTransferWithReturnsFalseReverts() (gas: 582871)
SafeTransferLibTest:testTransferWithReturnsFalseReverts(address,uint256) (runs: 256, μ: 708608, ~: 583331)
SafeTransferLibTest:testTransferWithReturnsTooLittleReverts() (gas: 583373)
SafeTransferLibTest:testTransferWithReturnsTooLittleReverts(address,uint256) (runs: 256, μ: 674348, ~: 583212)
SafeTransferLibTest:testTransferWithReturnsTooMuch() (gas: 606772)
SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256) (runs: 256, μ: 743777, ~: 607318)
SafeTransferLibTest:testTransferWithReturnsTwoReverts(address,uint256) (runs: 256, μ: 678853, ~: 583235)
SafeTransferLibTest:testTransferWithRevertingReverts() (gas: 582741)
SafeTransferLibTest:testTransferWithRevertingReverts(address,uint256) (runs: 256, μ: 767192, ~: 583203)
SafeTransferLibTest:testTransferWithStandardERC20() (gas: 607211)
SafeTransferLibTest:testTransferWithStandardERC20(address,uint256) (runs: 256, μ: 755065, ~: 607118)
SafeTransferLibTest:testTryTransferAllETH() (gas: 148721)
SafeTransferLibTest:testTryTransferETH() (gas: 148746)
SafeTransferLibTest:testTryTransferETHWithNoGrief() (gas: 537104)
SafeTransferLibTest:testTryTransferETHWithNoStorageWrites() (gas: 192496)
SafeTransferLibTest:test__codesize() (gas: 38650)
SignatureCheckerLibTest:testEmptyCalldataHelpers() (gas: 3972)
SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 256, μ: 57174, ~: 46824)
SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSignature() (gas: 21228)
Expand Down Expand Up @@ -1115,15 +1115,15 @@ UUPSUpgradeableTest:testUpgradeToAndCallRevertWithUpgradeFailed() (gas: 18264)
UUPSUpgradeableTest:testUpgradeToRevertWithUnauthorized() (gas: 16143)
UUPSUpgradeableTest:testUpgradeToRevertWithUpgradeFailed() (gas: 18464)
UUPSUpgradeableTest:test__codesize() (gas: 7195)
WETHInvariants:invariantTotalSupplyEqualsBalance() (runs: 256, calls: 3840, reverts: 1772)
WETHInvariants:invariantTotalSupplyEqualsBalance() (runs: 256, calls: 3840, reverts: 1753)
WETHInvariants:test__codesize() (gas: 6008)
WETHTest:testDeposit() (gas: 68090)
WETHTest:testDeposit(uint256) (runs: 256, μ: 65900, ~: 68384)
WETHTest:testDeposit(uint256) (runs: 256, μ: 65897, ~: 68384)
WETHTest:testFallbackDeposit() (gas: 67796)
WETHTest:testFallbackDeposit(uint256) (runs: 256, μ: 65561, ~: 68045)
WETHTest:testFallbackDeposit(uint256) (runs: 256, μ: 65558, ~: 68045)
WETHTest:testMetadata() (gas: 10098)
WETHTest:testPartialWithdraw() (gas: 79566)
WETHTest:testWithdraw() (gas: 59332)
WETHTest:testWithdraw(uint256,uint256) (runs: 256, μ: 77010, ~: 80326)
WETHTest:testWithdraw(uint256,uint256) (runs: 256, μ: 76748, ~: 80326)
WETHTest:testWithdrawToContractWithoutReceiveReverts() (gas: 93923)
WETHTest:test__codesize() (gas: 11080)
Loading

0 comments on commit 4a549f3

Please sign in to comment.