From 0920ba0c2a9295dea841bdc8a35f69cd5612cdac Mon Sep 17 00:00:00 2001 From: Vectorized Date: Thu, 4 Apr 2024 10:23:46 +0000 Subject: [PATCH] T --- .gas-snapshot | 26 +++++++++++++------------- src/accounts/ERC1271.sol | 14 +++++++------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index 6e56259f3f..9bef489626 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -223,21 +223,21 @@ ERC2981Test:testRoyaltyOverflowCheckDifferential(uint256,uint256) (runs: 272, μ ERC2981Test:testSetAndGetRoyaltyInfo(uint256) (runs: 272, μ: 107442, ~: 104801) ERC2981Test:test__codesize() (gas: 8418) ERC4337FactoryTest:testCreateAccountRepeatedDeployment() (gas: 149757) -ERC4337FactoryTest:testCreateAccountRepeatedDeployment(uint256) (runs: 272, μ: 171752, ~: 171609) -ERC4337FactoryTest:testDeployDeterministic(uint256) (runs: 272, μ: 134016, ~: 139901) -ERC4337FactoryTest:test__codesize() (gas: 13389) +ERC4337FactoryTest:testCreateAccountRepeatedDeployment(uint256) (runs: 272, μ: 171759, ~: 171617) +ERC4337FactoryTest:testDeployDeterministic(uint256) (runs: 272, μ: 133653, ~: 139899) +ERC4337FactoryTest:test__codesize() (gas: 13379) ERC4337Test:testCdFallback() (gas: 433020) ERC4337Test:testCdFallback2() (gas: 1129634) ERC4337Test:testDelegateExecute() (gas: 369570) -ERC4337Test:testDelegateExecute(uint256) (runs: 272, μ: 355788, ~: 344555) +ERC4337Test:testDelegateExecute(uint256) (runs: 272, μ: 353825, ~: 344555) ERC4337Test:testDelegateExecuteRevertsIfOwnerSlotValueChanged() (gas: 319282) ERC4337Test:testDepositFunctions() (gas: 491986) ERC4337Test:testDirectStorage() (gas: 70413) -ERC4337Test:testDisableInitializerForImplementation() (gas: 1195564) +ERC4337Test:testDisableInitializerForImplementation() (gas: 1193557) ERC4337Test:testETHReceived() (gas: 16584) ERC4337Test:testExecute() (gas: 382786) ERC4337Test:testExecuteBatch() (gas: 692649) -ERC4337Test:testExecuteBatch(uint256) (runs: 272, μ: 522786, ~: 668554) +ERC4337Test:testExecuteBatch(uint256) (runs: 272, μ: 527946, ~: 668469) ERC4337Test:testInitializer() (gas: 285192) ERC4337Test:testIsValidSignature() (gas: 113350) ERC4337Test:testIsValidSignaturePersonalSign() (gas: 97633) @@ -247,7 +247,7 @@ ERC4337Test:testOnERC1155Received() (gas: 1391111) ERC4337Test:testOnERC721Received() (gas: 1364600) ERC4337Test:testOwnerRecovery() (gas: 474727) ERC4337Test:testValidateUserOp() (gas: 480079) -ERC4337Test:test__codesize() (gas: 53796) +ERC4337Test:test__codesize() (gas: 53786) ERC4626Test:testDepositWithNoApprovalReverts() (gas: 16371) ERC4626Test:testDepositWithNotEnoughApprovalReverts() (gas: 89884) ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 272, μ: 3330, ~: 3185) @@ -268,22 +268,22 @@ ERC4626Test:testWithdrawWithNotEnoughUnderlyingAmountReverts() (gas: 144074) ERC4626Test:testWithdrawZero() (gas: 52807) ERC4626Test:test__codesize() (gas: 39940) ERC6551Test:testCdFallback() (gas: 894295) -ERC6551Test:testDeployERC6551(uint256) (runs: 272, μ: 170858, ~: 168789) +ERC6551Test:testDeployERC6551(uint256) (runs: 272, μ: 170892, ~: 168782) ERC6551Test:testDeployERC6551Proxy() (gas: 80351) ERC6551Test:testExecute() (gas: 508100) ERC6551Test:testExecuteBatch() (gas: 817200) -ERC6551Test:testExecuteBatch(uint256) (runs: 272, μ: 620650, ~: 483190) +ERC6551Test:testExecuteBatch(uint256) (runs: 272, μ: 619727, ~: 483189) ERC6551Test:testInitializeERC6551ProxyImplementation() (gas: 189796) ERC6551Test:testIsValidSignature() (gas: 187713) -ERC6551Test:testIsValidSigner(address) (runs: 272, μ: 167339, ~: 167324) +ERC6551Test:testIsValidSigner(address) (runs: 272, μ: 167335, ~: 167324) ERC6551Test:testOnERC1155BatchReceived() (gas: 1526537) ERC6551Test:testOnERC1155Received() (gas: 1523871) ERC6551Test:testOnERC721Received() (gas: 1501317) ERC6551Test:testOnERC721ReceivedCycles() (gas: 1713680) -ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 272, μ: 448200, ~: 454014) +ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 272, μ: 449721, ~: 455434) ERC6551Test:testSupportsInterface() (gas: 169367) -ERC6551Test:testUpgrade() (gas: 1191891) -ERC6551Test:test__codesize() (gas: 47786) +ERC6551Test:testUpgrade() (gas: 1189891) +ERC6551Test:test__codesize() (gas: 47766) ERC6909Test:testApprove() (gas: 36771) ERC6909Test:testApprove(address,uint256,uint256) (runs: 272, μ: 36535, ~: 37413) ERC6909Test:testBurn() (gas: 40676) diff --git a/src/accounts/ERC1271.sol b/src/accounts/ERC1271.sol index 586c6bcf94..2b010082ce 100644 --- a/src/accounts/ERC1271.sol +++ b/src/accounts/ERC1271.sol @@ -154,15 +154,15 @@ abstract contract ERC1271 is EIP712 { assembly { let gasBurnHash := 0x31d8f1c26729207294 // uint72(bytes9(keccak256("gasBurnHash"))). if eq(hash, gasBurnHash) { invalid() } - let m := mload(0x40) - mstore(m, 0x1626ba7e) // `isValidSignature(bytes32,bytes)`. - mstore(add(m, 0x20), gasBurnHash) - mstore(add(m, 0x40), 0x40) - mstore(add(m, 0x60), 0x00) - // Make a call to this with invalid calldata, thus burning the gas provided. + let m := mload(0x40) // Cache the free memory pointer. + mstore(0x00, 0x1626ba7e) // `isValidSignature(bytes32,bytes)`. + mstore(0x20, gasBurnHash) + mstore(0x40, 0x40) + // Make a call to this with `gasBurnHash`, efficiently burning the gas provided. // No valid transaction can consume more than the gaslimit. // See: https://ethereum.github.io/yellowpaper/paper.pdf - pop(staticcall(add(100000, gaslimit()), address(), add(m, 0x1c), 0x64, 0x00, 0x00)) + pop(staticcall(add(100000, gaslimit()), address(), 0x1c, 0x64, 0x00, 0x00)) + mstore(0x40, m) // Restore the free memory pointer. } return SignatureCheckerLib.isValidSignatureNowCalldata(_erc1271Signer(), hash, signature); }