Skip to content

Commit

Permalink
Optimize
Browse files Browse the repository at this point in the history
  • Loading branch information
Vectorized committed Apr 11, 2024
1 parent 8995688 commit c10b09a
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 25 deletions.
28 changes: 14 additions & 14 deletions .gas-snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -267,25 +267,25 @@ ERC4626Test:testWithdrawWithNoUnderlyingAmountReverts() (gas: 13102)
ERC4626Test:testWithdrawWithNotEnoughUnderlyingAmountReverts() (gas: 144096)
ERC4626Test:testWithdrawZero() (gas: 51777)
ERC4626Test:test__codesize() (gas: 36848)
ERC6551Test:testAbiEncodeMsgData(bytes32,uint256) (runs: 276, μ: 1483917, ~: 1257754)
ERC6551Test:testCdFallback() (gas: 894729)
ERC6551Test:testDeployERC6551(uint256) (runs: 276, μ: 171054, ~: 168818)
ERC6551Test:testAbiEncodeMsgData(bytes32,uint256) (runs: 276, μ: 1500895, ~: 1256348)
ERC6551Test:testCdFallback() (gas: 894712)
ERC6551Test:testDeployERC6551(uint256) (runs: 276, μ: 171132, ~: 168790)
ERC6551Test:testDeployERC6551Proxy() (gas: 80351)
ERC6551Test:testExecute() (gas: 506917)
ERC6551Test:testExecuteBatch() (gas: 816065)
ERC6551Test:testExecuteBatch(uint256) (runs: 276, μ: 618074, ~: 524921)
ERC6551Test:testExecute() (gas: 506849)
ERC6551Test:testExecuteBatch() (gas: 816014)
ERC6551Test:testExecuteBatch(uint256) (runs: 276, μ: 608931, ~: 482264)
ERC6551Test:testInitializeERC6551ProxyImplementation() (gas: 189802)
ERC6551Test:testIsValidSignature() (gas: 187860)
ERC6551Test:testIsValidSigner(address) (runs: 276, μ: 167373, ~: 167365)
ERC6551Test:testIsValidSignature() (gas: 187843)
ERC6551Test:testIsValidSigner(address) (runs: 276, μ: 167370, ~: 167343)
ERC6551Test:testOnERC1155BatchReceived() (gas: 1526562)
ERC6551Test:testOnERC1155Received() (gas: 1523896)
ERC6551Test:testOnERC721Received() (gas: 1501323)
ERC6551Test:testOnERC721ReceivedCycles() (gas: 1714457)
ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 276, μ: 448920, ~: 454301)
ERC6551Test:testOwnerWorksWithChainIdChange(uint256,uint256) (runs: 276, μ: 1216184, ~: 1216183)
ERC6551Test:testOnERC721Received() (gas: 1501309)
ERC6551Test:testOnERC721ReceivedCycles() (gas: 1712710)
ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 276, μ: 448561, ~: 453829)
ERC6551Test:testOwnerWorksWithChainIdChange(uint256,uint256) (runs: 276, μ: 1213551, ~: 1213550)
ERC6551Test:testSupportsInterface() (gas: 169383)
ERC6551Test:testUpgrade() (gas: 1222466)
ERC6551Test:test__codesize() (gas: 48013)
ERC6551Test:testUpgrade() (gas: 1219801)
ERC6551Test:test__codesize() (gas: 47983)
ERC6909Test:testApprove() (gas: 36771)
ERC6909Test:testApprove(address,uint256,uint256) (runs: 276, μ: 36403, ~: 37413)
ERC6909Test:testBurn() (gas: 40676)
Expand Down
14 changes: 3 additions & 11 deletions src/accounts/ERC6551.sol
Original file line number Diff line number Diff line change
Expand Up @@ -76,15 +76,7 @@ abstract contract ERC6551 is UUPSUpgradeable, Receiver, ERC1271 {

/// @dev Caches the chain ID in the deployed bytecode,
/// so that in the rare case of a hard fork, `owner` will still work.
uint256 private immutable _cachedChainId;

/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
/* CONSTRUCTOR */
/*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

constructor() {
_cachedChainId = block.chainid;
}
uint256 private immutable _cachedChainId = block.chainid;

/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
/* TOKEN-BOUND OWNERSHIP OPERATIONS */
Expand Down Expand Up @@ -115,7 +107,7 @@ abstract contract ERC6551 is UUPSUpgradeable, Receiver, ERC1271 {
assembly {
let m := mload(0x40) // Cache the free memory pointer.
extcodecopy(address(), 0x00, 0x4d, 0x60)
if or(eq(mload(0x00), chainid()), eq(mload(0x00), cachedChainId)) {
if eq(mload(0x00), cachedChainId) {
let tokenContract := mload(0x20)
// `tokenId` is already at 0x40.
mstore(0x20, 0x6352211e) // `ownerOf(uint256)`.
Expand Down Expand Up @@ -323,7 +315,7 @@ abstract contract ERC6551 is UUPSUpgradeable, Receiver, ERC1271 {
let tokenContract := mload(0x20)
// `tokenId` is already at 0x40.
mstore(0x20, 0x6352211e) // `ownerOf(uint256)`.
let chainsEq := or(eq(mload(0x00), chainid()), eq(mload(0x00), cachedChainId))
let chainsEq := eq(mload(0x00), cachedChainId)
let currentOwner :=
mul(
mload(0x20),
Expand Down

0 comments on commit c10b09a

Please sign in to comment.