From 5a6ef05ac604dabace0d5b937b32d6e78f978e53 Mon Sep 17 00:00:00 2001 From: Krishang Date: Thu, 30 May 2024 15:27:50 +0530 Subject: [PATCH 1/3] Initialize extensions in onInstall --- src/ModularCore.sol | 7 +++---- .../token/minting/ClaimableERC1155.sol | 13 +++++++++++- .../token/minting/ClaimableERC20.sol | 13 +++++++++++- .../token/minting/ClaimableERC721.sol | 13 +++++++++++- .../token/minting/MintableERC1155.sol | 19 +++++++++++++++++- src/extension/token/minting/MintableERC20.sol | 13 +++++++++++- .../token/minting/MintableERC721.sol | 19 +++++++++++++++++- .../token/royalty/RoyaltyERC1155.sol | 2 ++ src/extension/token/royalty/RoyaltyERC721.sol | 20 +++++++++++++++++-- test/extension/minting/ClaimableERC1155.t.sol | 3 ++- test/extension/minting/ClaimableERC20.t.sol | 3 ++- test/extension/minting/ClaimableERC721.t.sol | 3 ++- test/extension/minting/MintableERC1155.t.sol | 3 ++- test/extension/minting/MintableERC20.t.sol | 3 ++- test/extension/minting/MintableERC721.t.sol | 3 ++- test/extension/royalty/RoyaltyERC1155.t.sol | 3 ++- test/extension/royalty/RoyaltyERC721.t.sol | 3 ++- 17 files changed, 123 insertions(+), 20 deletions(-) diff --git a/src/ModularCore.sol b/src/ModularCore.sol index 1bdbeca4..0332a9f1 100644 --- a/src/ModularCore.sol +++ b/src/ModularCore.sol @@ -233,7 +233,7 @@ abstract contract ModularCore is IModularCore, OwnableRoles { // Call `onInstall` callback function if extension has registered installation callback. if (config.registerInstallationCallback) { (bool success, bytes memory returndata) = - _extension.call{value: msg.value}(abi.encodeCall(IInstallationCallback.onInstall, (msg.sender, _data))); + _extension.delegatecall(abi.encodeCall(IInstallationCallback.onInstall, (msg.sender, _data))); if (!success) { _revert(returndata, CallbackExecutionReverted.selector); } @@ -271,9 +271,8 @@ abstract contract ModularCore is IModularCore, OwnableRoles { } if (config.registerInstallationCallback) { - (bool success, bytes memory returndata) = _extension.call{value: msg.value}( - abi.encodeCall(IInstallationCallback.onUninstall, (msg.sender, _data)) - ); + (bool success, bytes memory returndata) = + _extension.delegatecall(abi.encodeCall(IInstallationCallback.onUninstall, (msg.sender, _data))); if (!success) { _revert(returndata, CallbackExecutionReverted.selector); } diff --git a/src/extension/token/minting/ClaimableERC1155.sol b/src/extension/token/minting/ClaimableERC1155.sol index d3172bbb..420b765d 100644 --- a/src/extension/token/minting/ClaimableERC1155.sol +++ b/src/extension/token/minting/ClaimableERC1155.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.0; import {ModularExtension} from "../../../ModularExtension.sol"; +import {IInstallationCallback} from "../../../interface/IInstallationCallback.sol"; import {Role} from "../../../Role.sol"; import {OwnableRoles} from "@solady/auth/OwnableRoles.sol"; import {ECDSA} from "@solady/utils/ECDSA.sol"; @@ -33,7 +34,7 @@ library ClaimableStorage { } } -contract ClaimableERC1155 is ModularExtension, EIP712, BeforeMintCallbackERC1155 { +contract ClaimableERC1155 is ModularExtension, EIP712, BeforeMintCallbackERC1155, IInstallationCallback { using ECDSA for bytes32; /*////////////////////////////////////////////////////////////// @@ -164,6 +165,7 @@ contract ClaimableERC1155 is ModularExtension, EIP712, BeforeMintCallbackERC1155 FallbackFunction({selector: this.setClaimConditionByTokenId.selector, permissionBits: Role._MINTER_ROLE}); config.requiredInterfaceId = 0xd9b67a26; // ERC1155 + config.registerInstallationCallback = true; } /*////////////////////////////////////////////////////////////// @@ -197,6 +199,15 @@ contract ClaimableERC1155 is ModularExtension, EIP712, BeforeMintCallbackERC1155 _distributeMintPrice(_caller, currency, _quantity * pricePerUnit); } + /// @dev Called by a Core into an Extension during the installation of the Extension. + function onInstall(address sender, bytes calldata data) external { + (address primarySaleRecipient) = abi.decode(data, (address)); + _claimableStorage().saleConfig = SaleConfig(primarySaleRecipient); + } + + /// @dev Called by a Core into an Extension during the uninstallation of the Extension. + function onUninstall(address sender, bytes calldata data) external {} + /*////////////////////////////////////////////////////////////// FALLBACK FUNCTIONS //////////////////////////////////////////////////////////////*/ diff --git a/src/extension/token/minting/ClaimableERC20.sol b/src/extension/token/minting/ClaimableERC20.sol index 461df1b1..314a7a4f 100644 --- a/src/extension/token/minting/ClaimableERC20.sol +++ b/src/extension/token/minting/ClaimableERC20.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.0; import {ModularExtension} from "../../../ModularExtension.sol"; +import {IInstallationCallback} from "../../../interface/IInstallationCallback.sol"; import {Role} from "../../../Role.sol"; import {OwnableRoles} from "@solady/auth/OwnableRoles.sol"; import {ECDSA} from "@solady/utils/ECDSA.sol"; @@ -33,7 +34,7 @@ library ClaimableStorage { } } -contract ClaimableERC20 is ModularExtension, EIP712, BeforeMintCallbackERC20 { +contract ClaimableERC20 is ModularExtension, EIP712, BeforeMintCallbackERC20, IInstallationCallback { using ECDSA for bytes32; /*////////////////////////////////////////////////////////////// @@ -158,6 +159,7 @@ contract ClaimableERC20 is ModularExtension, EIP712, BeforeMintCallbackERC20 { FallbackFunction({selector: this.setClaimCondition.selector, permissionBits: Role._MINTER_ROLE}); config.requiredInterfaceId = 0x36372b07; // ERC20 + config.registerInstallationCallback = true; } /*////////////////////////////////////////////////////////////// @@ -190,6 +192,15 @@ contract ClaimableERC20 is ModularExtension, EIP712, BeforeMintCallbackERC20 { _distributeMintPrice(_caller, currency, (_amount * pricePerUnit) / 1e18); } + /// @dev Called by a Core into an Extension during the installation of the Extension. + function onInstall(address sender, bytes calldata data) external { + (address primarySaleRecipient) = abi.decode(data, (address)); + _claimableStorage().saleConfig = SaleConfig(primarySaleRecipient); + } + + /// @dev Called by a Core into an Extension during the uninstallation of the Extension. + function onUninstall(address sender, bytes calldata data) external {} + /*////////////////////////////////////////////////////////////// FALLBACK FUNCTIONS //////////////////////////////////////////////////////////////*/ diff --git a/src/extension/token/minting/ClaimableERC721.sol b/src/extension/token/minting/ClaimableERC721.sol index c7d8d185..8919985f 100644 --- a/src/extension/token/minting/ClaimableERC721.sol +++ b/src/extension/token/minting/ClaimableERC721.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.0; import {ModularExtension} from "../../../ModularExtension.sol"; +import {IInstallationCallback} from "../../../interface/IInstallationCallback.sol"; import {Role} from "../../../Role.sol"; import {OwnableRoles} from "@solady/auth/OwnableRoles.sol"; import {ECDSA} from "@solady/utils/ECDSA.sol"; @@ -33,7 +34,7 @@ library ClaimableStorage { } } -contract ClaimableERC721 is ModularExtension, EIP712, BeforeMintCallbackERC721 { +contract ClaimableERC721 is ModularExtension, EIP712, BeforeMintCallbackERC721, IInstallationCallback { using ECDSA for bytes32; /*////////////////////////////////////////////////////////////// @@ -158,6 +159,7 @@ contract ClaimableERC721 is ModularExtension, EIP712, BeforeMintCallbackERC721 { FallbackFunction({selector: this.setClaimCondition.selector, permissionBits: Role._MINTER_ROLE}); config.requiredInterfaceId = 0x80ac58cd; // ERC721 + config.registerInstallationCallback = true; } /*////////////////////////////////////////////////////////////// @@ -190,6 +192,15 @@ contract ClaimableERC721 is ModularExtension, EIP712, BeforeMintCallbackERC721 { _distributeMintPrice(_caller, currency, _quantity * pricePerUnit); } + /// @dev Called by a Core into an Extension during the installation of the Extension. + function onInstall(address sender, bytes calldata data) external { + (address primarySaleRecipient) = abi.decode(data, (address)); + _claimableStorage().saleConfig = SaleConfig(primarySaleRecipient); + } + + /// @dev Called by a Core into an Extension during the uninstallation of the Extension. + function onUninstall(address sender, bytes calldata data) external {} + /*////////////////////////////////////////////////////////////// FALLBACK FUNCTIONS //////////////////////////////////////////////////////////////*/ diff --git a/src/extension/token/minting/MintableERC1155.sol b/src/extension/token/minting/MintableERC1155.sol index 84557d88..dfec53c6 100644 --- a/src/extension/token/minting/MintableERC1155.sol +++ b/src/extension/token/minting/MintableERC1155.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.0; import {ModularExtension} from "../../../ModularExtension.sol"; +import {IInstallationCallback} from "../../../interface/IInstallationCallback.sol"; import {Role} from "../../../Role.sol"; import {OwnableRoles} from "@solady/auth/OwnableRoles.sol"; import {ECDSA} from "@solady/utils/ECDSA.sol"; @@ -35,7 +36,13 @@ library MintableStorage { } } -contract MintableERC1155 is ModularExtension, EIP712, BeforeMintCallbackERC1155, OnTokenURICallback { +contract MintableERC1155 is + ModularExtension, + EIP712, + BeforeMintCallbackERC1155, + OnTokenURICallback, + IInstallationCallback +{ using ECDSA for bytes32; /*////////////////////////////////////////////////////////////// @@ -143,6 +150,7 @@ contract MintableERC1155 is ModularExtension, EIP712, BeforeMintCallbackERC1155, FallbackFunction({selector: this.setTokenURI.selector, permissionBits: Role._MINTER_ROLE}); config.requiredInterfaceId = 0xd9b67a26; // ERC1155 + config.registerInstallationCallback = true; } /*////////////////////////////////////////////////////////////// @@ -188,6 +196,15 @@ contract MintableERC1155 is ModularExtension, EIP712, BeforeMintCallbackERC1155, } } + /// @dev Called by a Core into an Extension during the installation of the Extension. + function onInstall(address sender, bytes calldata data) external { + (address primarySaleRecipient) = abi.decode(data, (address)); + _mintableStorage().saleConfig = SaleConfig(primarySaleRecipient); + } + + /// @dev Called by a Core into an Extension during the uninstallation of the Extension. + function onUninstall(address sender, bytes calldata data) external {} + /*////////////////////////////////////////////////////////////// FALLBACK FUNCTIONS //////////////////////////////////////////////////////////////*/ diff --git a/src/extension/token/minting/MintableERC20.sol b/src/extension/token/minting/MintableERC20.sol index 51b149cd..e6999361 100644 --- a/src/extension/token/minting/MintableERC20.sol +++ b/src/extension/token/minting/MintableERC20.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.0; import {ModularExtension} from "../../../ModularExtension.sol"; +import {IInstallationCallback} from "../../../interface/IInstallationCallback.sol"; import {Role} from "../../../Role.sol"; import {OwnableRoles} from "@solady/auth/OwnableRoles.sol"; import {ECDSA} from "@solady/utils/ECDSA.sol"; @@ -30,7 +31,7 @@ library MintableStorage { } } -contract MintableERC20 is OwnableRoles, ModularExtension, EIP712, BeforeMintCallbackERC20 { +contract MintableERC20 is OwnableRoles, ModularExtension, EIP712, BeforeMintCallbackERC20, IInstallationCallback { using ECDSA for bytes32; /*////////////////////////////////////////////////////////////// @@ -123,6 +124,7 @@ contract MintableERC20 is OwnableRoles, ModularExtension, EIP712, BeforeMintCall FallbackFunction({selector: this.setSaleConfig.selector, permissionBits: Role._MANAGER_ROLE}); config.requiredInterfaceId = 0x36372b07; // ERC20 + config.registerInstallationCallback = true; } /*////////////////////////////////////////////////////////////// @@ -154,6 +156,15 @@ contract MintableERC20 is OwnableRoles, ModularExtension, EIP712, BeforeMintCall } } + /// @dev Called by a Core into an Extension during the installation of the Extension. + function onInstall(address sender, bytes calldata data) external { + (address primarySaleRecipient) = abi.decode(data, (address)); + _mintableStorage().saleConfig = SaleConfig(primarySaleRecipient); + } + + /// @dev Called by a Core into an Extension during the uninstallation of the Extension. + function onUninstall(address sender, bytes calldata data) external {} + /*////////////////////////////////////////////////////////////// FALLBACK FUNCTIONS //////////////////////////////////////////////////////////////*/ diff --git a/src/extension/token/minting/MintableERC721.sol b/src/extension/token/minting/MintableERC721.sol index d5638de1..557509ba 100644 --- a/src/extension/token/minting/MintableERC721.sol +++ b/src/extension/token/minting/MintableERC721.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.0; import {ModularExtension} from "../../../ModularExtension.sol"; +import {IInstallationCallback} from "../../../interface/IInstallationCallback.sol"; import {Role} from "../../../Role.sol"; import {OwnableRoles} from "@solady/auth/OwnableRoles.sol"; import {ECDSA} from "@solady/utils/ECDSA.sol"; @@ -36,7 +37,13 @@ library MintableStorage { } } -contract MintableERC721 is ModularExtension, EIP712, BeforeMintCallbackERC721, OnTokenURICallback { +contract MintableERC721 is + ModularExtension, + EIP712, + BeforeMintCallbackERC721, + OnTokenURICallback, + IInstallationCallback +{ using ECDSA for bytes32; using LibString for uint256; @@ -161,6 +168,7 @@ contract MintableERC721 is ModularExtension, EIP712, BeforeMintCallbackERC721, O FallbackFunction({selector: this.setSaleConfig.selector, permissionBits: Role._MANAGER_ROLE}); config.requiredInterfaceId = 0x80ac58cd; // ERC721 + config.registerInstallationCallback = true; } /*////////////////////////////////////////////////////////////// @@ -201,6 +209,15 @@ contract MintableERC721 is ModularExtension, EIP712, BeforeMintCallbackERC721, O } } + /// @dev Called by a Core into an Extension during the installation of the Extension. + function onInstall(address sender, bytes calldata data) external { + (address primarySaleRecipient) = abi.decode(data, (address)); + _mintableStorage().saleConfig = SaleConfig(primarySaleRecipient); + } + + /// @dev Called by a Core into an Extension during the uninstallation of the Extension. + function onUninstall(address sender, bytes calldata data) external {} + /*////////////////////////////////////////////////////////////// FALLBACK FUNCTIONS //////////////////////////////////////////////////////////////*/ diff --git a/src/extension/token/royalty/RoyaltyERC1155.sol b/src/extension/token/royalty/RoyaltyERC1155.sol index 92b4db1f..c5228104 100644 --- a/src/extension/token/royalty/RoyaltyERC1155.sol +++ b/src/extension/token/royalty/RoyaltyERC1155.sol @@ -24,5 +24,7 @@ contract RoyaltyERC1155 is RoyaltyERC721 { config.supportedInterfaces[0] = 0x2a55205a; // IERC2981. config.requiredInterfaceId = 0xd9b67a26; // ERC1155 + + config.registerInstallationCallback = true; } } diff --git a/src/extension/token/royalty/RoyaltyERC721.sol b/src/extension/token/royalty/RoyaltyERC721.sol index da5ce02f..d5c591c8 100644 --- a/src/extension/token/royalty/RoyaltyERC721.sol +++ b/src/extension/token/royalty/RoyaltyERC721.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.0; import {ModularExtension} from "../../../ModularExtension.sol"; +import {IInstallationCallback} from "../../../interface/IInstallationCallback.sol"; import {Role} from "../../../Role.sol"; library RoyaltyStorage { @@ -24,7 +25,7 @@ library RoyaltyStorage { } } -contract RoyaltyERC721 is ModularExtension { +contract RoyaltyERC721 is ModularExtension, IInstallationCallback { /*////////////////////////////////////////////////////////////// STRUCTS //////////////////////////////////////////////////////////////*/ @@ -79,8 +80,23 @@ contract RoyaltyERC721 is ModularExtension { config.supportedInterfaces = new bytes4[](1); config.supportedInterfaces[0] = 0x2a55205a; // IERC2981. + + config.registerInstallationCallback = true; } + /*////////////////////////////////////////////////////////////// + CALLBACK FUNCTIONS + //////////////////////////////////////////////////////////////*/ + + /// @dev Called by a Core into an Extension during the installation of the Extension. + function onInstall(address sender, bytes calldata data) external { + (address royaltyRecipient, uint256 royaltyBps) = abi.decode(data, (address, uint256)); + setDefaultRoyaltyInfo(royaltyRecipient, royaltyBps); + } + + /// @dev Called by a Core into an Extension during the uninstallation of the Extension. + function onUninstall(address sender, bytes calldata data) external {} + /*////////////////////////////////////////////////////////////// FALLBACK FUNCTIONS //////////////////////////////////////////////////////////////*/ @@ -116,7 +132,7 @@ contract RoyaltyERC721 is ModularExtension { } /// @notice Sets the default royalty info for a given token. - function setDefaultRoyaltyInfo(address _royaltyRecipient, uint256 _royaltyBps) external { + function setDefaultRoyaltyInfo(address _royaltyRecipient, uint256 _royaltyBps) public { if (_royaltyBps > 10_000) { revert RoyaltyExceedsMaxBps(); } diff --git a/test/extension/minting/ClaimableERC1155.t.sol b/test/extension/minting/ClaimableERC1155.t.sol index 2f924232..37c95b35 100644 --- a/test/extension/minting/ClaimableERC1155.t.sol +++ b/test/extension/minting/ClaimableERC1155.t.sol @@ -100,8 +100,9 @@ contract ClaimableERC1155Test is Test { extensionImplementation = new ClaimableERC1155(); // install extension + bytes memory exetnsionInitializeData = abi.encode(owner); vm.prank(owner); - core.installExtension(address(extensionImplementation), ""); + core.installExtension(address(extensionImplementation), exetnsionInitializeData); // Setup signature vars typehashClaimRequest = keccak256( diff --git a/test/extension/minting/ClaimableERC20.t.sol b/test/extension/minting/ClaimableERC20.t.sol index 9ff9e600..6f51fecb 100644 --- a/test/extension/minting/ClaimableERC20.t.sol +++ b/test/extension/minting/ClaimableERC20.t.sol @@ -99,8 +99,9 @@ contract ClaimableERC20Test is Test { extensionImplementation = new ClaimableERC20(); // install extension + bytes memory exetnsionInitializeData = abi.encode(owner); vm.prank(owner); - core.installExtension(address(extensionImplementation), ""); + core.installExtension(address(extensionImplementation), exetnsionInitializeData); // Setup signature vars typehashClaimRequest = keccak256( diff --git a/test/extension/minting/ClaimableERC721.t.sol b/test/extension/minting/ClaimableERC721.t.sol index e2d6a7f3..ecefc137 100644 --- a/test/extension/minting/ClaimableERC721.t.sol +++ b/test/extension/minting/ClaimableERC721.t.sol @@ -99,8 +99,9 @@ contract ClaimableERC721Test is Test { extensionImplementation = new ClaimableERC721(); // install extension + bytes memory exetnsionInitializeData = abi.encode(owner); vm.prank(owner); - core.installExtension(address(extensionImplementation), ""); + core.installExtension(address(extensionImplementation), exetnsionInitializeData); // Setup signature vars typehashClaimRequest = keccak256( diff --git a/test/extension/minting/MintableERC1155.t.sol b/test/extension/minting/MintableERC1155.t.sol index 21f5f164..5628f4d1 100644 --- a/test/extension/minting/MintableERC1155.t.sol +++ b/test/extension/minting/MintableERC1155.t.sol @@ -100,8 +100,9 @@ contract MintableERC1155Test is Test { extensionImplementation = new MintableERC1155(); // install extension + bytes memory exetnsionInitializeData = abi.encode(owner); vm.prank(owner); - core.installExtension(address(extensionImplementation), ""); + core.installExtension(address(extensionImplementation), exetnsionInitializeData); // Setup signature vars typehashMintRequest = keccak256( diff --git a/test/extension/minting/MintableERC20.t.sol b/test/extension/minting/MintableERC20.t.sol index efdd836a..0ca37ce1 100644 --- a/test/extension/minting/MintableERC20.t.sol +++ b/test/extension/minting/MintableERC20.t.sol @@ -99,8 +99,9 @@ contract MintableERC20Test is Test { extensionImplementation = new MintableERC20(); // install extension + bytes memory exetnsionInitializeData = abi.encode(owner); vm.prank(owner); - core.installExtension(address(extensionImplementation), ""); + core.installExtension(address(extensionImplementation), exetnsionInitializeData); // Setup signature vars typehashMintRequest = keccak256( diff --git a/test/extension/minting/MintableERC721.t.sol b/test/extension/minting/MintableERC721.t.sol index b52b9720..9d04585a 100644 --- a/test/extension/minting/MintableERC721.t.sol +++ b/test/extension/minting/MintableERC721.t.sol @@ -117,8 +117,9 @@ contract MintableERC721Test is Test { extensionImplementation = new MintableERC721(); // install extension + bytes memory exetnsionInitializeData = abi.encode(owner); vm.prank(owner); - core.installExtension(address(extensionImplementation), ""); + core.installExtension(address(extensionImplementation), exetnsionInitializeData); // Setup signature vars typehashMintRequest = keccak256( diff --git a/test/extension/royalty/RoyaltyERC1155.t.sol b/test/extension/royalty/RoyaltyERC1155.t.sol index d91cab03..3eefba9f 100644 --- a/test/extension/royalty/RoyaltyERC1155.t.sol +++ b/test/extension/royalty/RoyaltyERC1155.t.sol @@ -32,8 +32,9 @@ contract RoyaltyERC1155Test is Test { extensionImplementation = new RoyaltyExt(); // install extension + bytes memory extensionInitializeData = abi.encode(owner, 100); vm.prank(owner); - core.installExtension(address(extensionImplementation), ""); + core.installExtension(address(extensionImplementation), extensionInitializeData); IModularCore.InstalledExtension[] memory installedExtensions = core.getInstalledExtensions(); installedExtension = RoyaltyExt(installedExtensions[0].implementation); diff --git a/test/extension/royalty/RoyaltyERC721.t.sol b/test/extension/royalty/RoyaltyERC721.t.sol index 851bb5be..fe12d2cc 100644 --- a/test/extension/royalty/RoyaltyERC721.t.sol +++ b/test/extension/royalty/RoyaltyERC721.t.sol @@ -32,8 +32,9 @@ contract RoyaltyERC721Test is Test { extensionImplementation = new RoyaltyExt(); // install extension + bytes memory extensionInitializeData = abi.encode(owner, 100); vm.prank(owner); - core.installExtension(address(extensionImplementation), ""); + core.installExtension(address(extensionImplementation), extensionInitializeData); IModularCore.InstalledExtension[] memory installedExtensions = core.getInstalledExtensions(); installedExtension = RoyaltyExt(installedExtensions[0].implementation); From b202cd124f584c98b4e1068a28cc6a8a31e7eb3f Mon Sep 17 00:00:00 2001 From: Krishang Date: Fri, 31 May 2024 23:41:09 +0530 Subject: [PATCH 2/3] Remove caller/sender args since delegateCall is used everywhere --- src/ModularCore.sol | 8 +++---- src/callback/BeforeApproveCallbackERC20.sol | 4 ++-- src/callback/BeforeApproveCallbackERC721.sol | 4 ++-- src/callback/BeforeApproveForAllCallback.sol | 4 ++-- .../BeforeBatchTransferCallbackERC1155.sol | 14 +++++------- src/callback/BeforeBurnCallbackERC1155.sol | 4 ++-- src/callback/BeforeBurnCallbackERC20.sol | 4 ++-- src/callback/BeforeBurnCallbackERC721.sol | 4 ++-- src/callback/BeforeMintCallbackERC1155.sol | 4 ++-- src/callback/BeforeMintCallbackERC20.sol | 4 ++-- src/callback/BeforeMintCallbackERC721.sol | 15 ++++++------- .../BeforeTransferCallbackERC1155.sol | 2 +- src/callback/BeforeTransferCallbackERC20.sol | 4 ++-- src/callback/BeforeTransferCallbackERC721.sol | 4 ++-- src/core/token/ERC1155Core.sol | 12 +++++----- src/core/token/ERC1155CoreInitializable.sol | 12 +++++----- src/core/token/ERC20Core.sol | 8 +++---- src/core/token/ERC20CoreInitializable.sol | 8 +++---- src/core/token/ERC721Core.sol | 10 ++++----- src/core/token/ERC721CoreInitializable.sol | 10 ++++----- .../token/minting/ClaimableERC1155.sol | 8 +++---- .../token/minting/ClaimableERC20.sol | 8 +++---- .../token/minting/ClaimableERC721.sol | 20 ++++++++--------- .../token/minting/MintableERC1155.sol | 10 ++++----- src/extension/token/minting/MintableERC20.sol | 10 ++++----- .../token/minting/MintableERC721.sol | 22 +++++++++---------- src/extension/token/royalty/RoyaltyERC721.sol | 4 ++-- .../transferable/TransferableERC1155.sol | 19 ++++++++-------- .../token/transferable/TransferableERC20.sol | 9 ++------ .../token/transferable/TransferableERC721.sol | 9 ++------ src/interface/IInstallationCallback.sol | 6 ++--- test/ModularCore.t.sol | 8 +++---- test/benchmark/CoreBenchmark.t.sol | 8 +++---- 33 files changed, 130 insertions(+), 150 deletions(-) diff --git a/src/ModularCore.sol b/src/ModularCore.sol index 0332a9f1..bbfe020d 100644 --- a/src/ModularCore.sol +++ b/src/ModularCore.sol @@ -36,10 +36,10 @@ abstract contract ModularCore is IModularCore, OwnableRoles { //////////////////////////////////////////////////////////////*/ /// @notice Emitted when an extension is installed. - event ExtensionInstalled(address sender, address implementation, address installedExtension); + event ExtensionInstalled(address caller, address implementation, address installedExtension); /// @notice Emitted when an extension is uninstalled. - event ExtensionUninstalled(address sender, address implementation, address installedExtension); + event ExtensionUninstalled(address caller, address implementation, address installedExtension); /*////////////////////////////////////////////////////////////// STORAGE @@ -233,7 +233,7 @@ abstract contract ModularCore is IModularCore, OwnableRoles { // Call `onInstall` callback function if extension has registered installation callback. if (config.registerInstallationCallback) { (bool success, bytes memory returndata) = - _extension.delegatecall(abi.encodeCall(IInstallationCallback.onInstall, (msg.sender, _data))); + _extension.delegatecall(abi.encodeCall(IInstallationCallback.onInstall, (_data))); if (!success) { _revert(returndata, CallbackExecutionReverted.selector); } @@ -272,7 +272,7 @@ abstract contract ModularCore is IModularCore, OwnableRoles { if (config.registerInstallationCallback) { (bool success, bytes memory returndata) = - _extension.delegatecall(abi.encodeCall(IInstallationCallback.onUninstall, (msg.sender, _data))); + _extension.delegatecall(abi.encodeCall(IInstallationCallback.onUninstall, (_data))); if (!success) { _revert(returndata, CallbackExecutionReverted.selector); } diff --git a/src/callback/BeforeApproveCallbackERC20.sol b/src/callback/BeforeApproveCallbackERC20.sol index f8cb27f8..201bf7b1 100644 --- a/src/callback/BeforeApproveCallbackERC20.sol +++ b/src/callback/BeforeApproveCallbackERC20.sol @@ -14,13 +14,13 @@ contract BeforeApproveCallbackERC20 { /** * @notice The beforeApproveERC20 hook that is called by a core token before approving tokens. - * @param _caller The address of the caller. + * * @param _from The address that is approving tokens. * @param _to The address that is being approved. * @param _amount The amount of tokens being approved. * @return result Abi encoded bytes result of the hook. */ - function beforeApproveERC20(address _caller, address _from, address _to, uint256 _amount) + function beforeApproveERC20(address _from, address _to, uint256 _amount) external virtual returns (bytes memory result) diff --git a/src/callback/BeforeApproveCallbackERC721.sol b/src/callback/BeforeApproveCallbackERC721.sol index 1b40ec89..2e524b5f 100644 --- a/src/callback/BeforeApproveCallbackERC721.sol +++ b/src/callback/BeforeApproveCallbackERC721.sol @@ -14,14 +14,14 @@ contract BeforeApproveCallbackERC721 { /** * @notice The beforeApproveERC721 hook that is called by a core token before approving a token. - * @param _caller The address of the caller. + * * @param _from The address that is approving tokens. * @param _to The address that is being approved. * @param _tokenId The token ID being approved. * @param _approve The approval status to set. * @return result Abi encoded bytes result of the hook. */ - function beforeApproveERC721(address _caller, address _from, address _to, uint256 _tokenId, bool _approve) + function beforeApproveERC721(address _from, address _to, uint256 _tokenId, bool _approve) external virtual returns (bytes memory result) diff --git a/src/callback/BeforeApproveForAllCallback.sol b/src/callback/BeforeApproveForAllCallback.sol index b70f2d3c..6609f9e5 100644 --- a/src/callback/BeforeApproveForAllCallback.sol +++ b/src/callback/BeforeApproveForAllCallback.sol @@ -14,12 +14,12 @@ contract BeforeApproveForAllCallback { /** * @notice The beforeApproveForAll hook that is called by a core token before approving an operator to transfer all tokens. - * @param _caller The address of the caller. + * * @param _from The address that is approving tokens. * @param _to The address that is being approved. * @param _approved Whether to grant or revoke approval. */ - function beforeApproveForAll(address _caller, address _from, address _to, bool _approved) + function beforeApproveForAll(address _from, address _to, bool _approved) external virtual returns (bytes memory result) diff --git a/src/callback/BeforeBatchTransferCallbackERC1155.sol b/src/callback/BeforeBatchTransferCallbackERC1155.sol index 0a11f32f..9b3466d1 100644 --- a/src/callback/BeforeBatchTransferCallbackERC1155.sol +++ b/src/callback/BeforeBatchTransferCallbackERC1155.sol @@ -14,20 +14,18 @@ contract BeforeBatchTransferCallbackERC1155 { /** * @notice The beforeBatchTransferERC1155 hook that is called by a core token before batch transferring tokens. - * @param _caller The address of the caller. + * * @param from The address that is transferring tokens. * @param to The address that is receiving tokens. * @param ids The token IDs being transferred. * @param values The quantities of tokens being transferred. * @return result Abi encoded bytes result of the hook. */ - function beforeBatchTransferERC1155( - address _caller, - address from, - address to, - uint256[] calldata ids, - uint256[] calldata values - ) external virtual returns (bytes memory result) { + function beforeBatchTransferERC1155(address from, address to, uint256[] calldata ids, uint256[] calldata values) + external + virtual + returns (bytes memory result) + { revert BeforeBatchTransferCallbackERC1155NotImplemented(); } } diff --git a/src/callback/BeforeBurnCallbackERC1155.sol b/src/callback/BeforeBurnCallbackERC1155.sol index bacdea19..4437aa5c 100644 --- a/src/callback/BeforeBurnCallbackERC1155.sol +++ b/src/callback/BeforeBurnCallbackERC1155.sol @@ -14,14 +14,14 @@ contract BeforeBurnCallbackERC1155 { /** * @notice The beforeBurnERC1155 hook that is called by a core token before burning a token. - * @param _caller The address of the caller. + * * @param _from The address whose tokens are being burned. * @param _id The token ID being burned. * @param _value The quantity of tokens being burned. * @param _data The encoded arguments for the beforeBurn hook. * @return result Abi encoded bytes result of the hook. */ - function beforeBurnERC1155(address _caller, address _from, uint256 _id, uint256 _value, bytes memory _data) + function beforeBurnERC1155(address _from, uint256 _id, uint256 _value, bytes memory _data) external payable virtual diff --git a/src/callback/BeforeBurnCallbackERC20.sol b/src/callback/BeforeBurnCallbackERC20.sol index c80d9e16..384a9619 100644 --- a/src/callback/BeforeBurnCallbackERC20.sol +++ b/src/callback/BeforeBurnCallbackERC20.sol @@ -14,13 +14,13 @@ contract BeforeBurnCallbackERC20 { /** * @notice The beforeBurnERC20 hook that is called by a core token before burning tokens. - * @param _caller The address of the caller. + * * @param _from The address whose tokens are being burned. * @param _amount The amount of tokens being burned. * @param _data The encoded arguments for the beforeBurn hook. * @return result Abi encoded bytes result of the hook. */ - function beforeBurnERC20(address _caller, address _from, uint256 _amount, bytes memory _data) + function beforeBurnERC20(address _from, uint256 _amount, bytes memory _data) external payable virtual diff --git a/src/callback/BeforeBurnCallbackERC721.sol b/src/callback/BeforeBurnCallbackERC721.sol index fb9076cd..86a152ed 100644 --- a/src/callback/BeforeBurnCallbackERC721.sol +++ b/src/callback/BeforeBurnCallbackERC721.sol @@ -14,12 +14,12 @@ contract BeforeBurnCallbackERC721 { /** * @notice The beforeBurnERC721 hook that is called by a core token before burning a token. - * @param _caller The address of the caller. + * * @param _tokenId The token ID being burned. * @param _data The encoded arguments for the beforeBurn hook. * @return result Abi encoded bytes result of the hook. */ - function beforeBurnERC721(address _caller, uint256 _tokenId, bytes memory _data) + function beforeBurnERC721(uint256 _tokenId, bytes memory _data) external payable virtual diff --git a/src/callback/BeforeMintCallbackERC1155.sol b/src/callback/BeforeMintCallbackERC1155.sol index 838e26d8..993ed20b 100644 --- a/src/callback/BeforeMintCallbackERC1155.sol +++ b/src/callback/BeforeMintCallbackERC1155.sol @@ -14,14 +14,14 @@ contract BeforeMintCallbackERC1155 { /** * @notice The beforeMintERC1155 hook that is called by a core token before minting tokens. - * @param _caller The address of the caller. + * * @param _to The address that is minting tokens. * @param _id The token ID being minted. * @param _quantity The quantity of tokens to mint. * @param _data Optional extra data passed to the hook. * @return result Abi encoded bytes result of the hook. */ - function beforeMintERC1155(address _caller, address _to, uint256 _id, uint256 _quantity, bytes memory _data) + function beforeMintERC1155(address _to, uint256 _id, uint256 _quantity, bytes memory _data) external payable virtual diff --git a/src/callback/BeforeMintCallbackERC20.sol b/src/callback/BeforeMintCallbackERC20.sol index 6c8091d2..ae957347 100644 --- a/src/callback/BeforeMintCallbackERC20.sol +++ b/src/callback/BeforeMintCallbackERC20.sol @@ -14,13 +14,13 @@ contract BeforeMintCallbackERC20 { /** * @notice The beforeMintERC20 hook that is called by a core token before minting tokens. - * @param _caller The address of the caller. + * * @param _to The address to mint tokens to. * @param _amount The amount of tokens to mint. * @param _data Optional extra data passed to the hook. * @return result Abi encoded bytes result of the hook. */ - function beforeMintERC20(address _caller, address _to, uint256 _amount, bytes memory _data) + function beforeMintERC20(address _to, uint256 _amount, bytes memory _data) external payable virtual diff --git a/src/callback/BeforeMintCallbackERC721.sol b/src/callback/BeforeMintCallbackERC721.sol index bc7c811f..9d4517a4 100644 --- a/src/callback/BeforeMintCallbackERC721.sol +++ b/src/callback/BeforeMintCallbackERC721.sol @@ -14,19 +14,18 @@ contract BeforeMintCallbackERC721 { /** * @notice The beforeMintERC721 hook that is called by a core token before minting tokens. - * @param _caller The address of the caller. + * * @param _to The address that is minting tokens. * @param _quantity The quantity of tokens to mint. * @param _data Optional extra data passed to the hook. * @return result Abi encoded bytes result of the hook. */ - function beforeMintERC721( - address _caller, - address _to, - uint256 _startTokenId, - uint256 _quantity, - bytes memory _data - ) external payable virtual returns (bytes memory result) { + function beforeMintERC721(address _to, uint256 _startTokenId, uint256 _quantity, bytes memory _data) + external + payable + virtual + returns (bytes memory result) + { revert BeforeMintCallbackERC721NotImplemented(); } } diff --git a/src/callback/BeforeTransferCallbackERC1155.sol b/src/callback/BeforeTransferCallbackERC1155.sol index f81007a3..9390e93b 100644 --- a/src/callback/BeforeTransferCallbackERC1155.sol +++ b/src/callback/BeforeTransferCallbackERC1155.sol @@ -20,7 +20,7 @@ contract BeforeTransferCallbackERC1155 { * @param _value The quantity of tokens being transferred. * @return result Abi encoded bytes result of the hook. */ - function beforeTransferERC1155(address _caller, address _from, address _to, uint256 _id, uint256 _value) + function beforeTransferERC1155(address _from, address _to, uint256 _id, uint256 _value) external virtual returns (bytes memory result) diff --git a/src/callback/BeforeTransferCallbackERC20.sol b/src/callback/BeforeTransferCallbackERC20.sol index a8a58dc3..a71abb0a 100644 --- a/src/callback/BeforeTransferCallbackERC20.sol +++ b/src/callback/BeforeTransferCallbackERC20.sol @@ -14,13 +14,13 @@ contract BeforeTransferCallbackERC20 { /** * @notice The beforeTransferERC20 hook that is called by a core token before transferring tokens. - * @param _caller The address of the caller. + * * @param _from The address that is transferring tokens. * @param _to The address that is receiving tokens. * @param _amount The amount of tokens being transferred. * @return result Abi encoded bytes result of the hook. */ - function beforeTransferERC20(address _caller, address _from, address _to, uint256 _amount) + function beforeTransferERC20(address _from, address _to, uint256 _amount) external virtual returns (bytes memory result) diff --git a/src/callback/BeforeTransferCallbackERC721.sol b/src/callback/BeforeTransferCallbackERC721.sol index f0651d4a..cc7d9240 100644 --- a/src/callback/BeforeTransferCallbackERC721.sol +++ b/src/callback/BeforeTransferCallbackERC721.sol @@ -14,13 +14,13 @@ contract BeforeTransferCallbackERC721 { /** * @notice The beforeTransferERC721 hook that is called by a core token before transferring a token. - * @param _caller The address of the caller. + * * @param _from The address that is transferring tokens. * @param _to The address that is receiving tokens. * @param _tokenId The token ID being transferred. * @return result Abi encoded bytes result of the hook. */ - function beforeTransferERC721(address _caller, address _from, address _to, uint256 _tokenId) + function beforeTransferERC721(address _from, address _to, uint256 _tokenId) external virtual returns (bytes memory result) diff --git a/src/core/token/ERC1155Core.sol b/src/core/token/ERC1155Core.sol index e5ac4e4d..f42751a2 100644 --- a/src/core/token/ERC1155Core.sol +++ b/src/core/token/ERC1155Core.sol @@ -252,7 +252,7 @@ contract ERC1155Core is ERC1155, ModularCore, Multicallable { function _beforeMint(address to, uint256 tokenId, uint256 value, bytes memory data) internal virtual { _executeCallbackFunction( BeforeMintCallbackERC1155.beforeMintERC1155.selector, - abi.encodeCall(BeforeMintCallbackERC1155.beforeMintERC1155, (msg.sender, to, tokenId, value, data)) + abi.encodeCall(BeforeMintCallbackERC1155.beforeMintERC1155, (to, tokenId, value, data)) ); } @@ -260,7 +260,7 @@ contract ERC1155Core is ERC1155, ModularCore, Multicallable { function _beforeTransfer(address from, address to, uint256 tokenId, uint256 value) internal virtual { _executeCallbackFunction( BeforeTransferCallbackERC1155.beforeTransferERC1155.selector, - abi.encodeCall(BeforeTransferCallbackERC1155.beforeTransferERC1155, (msg.sender, from, to, tokenId, value)) + abi.encodeCall(BeforeTransferCallbackERC1155.beforeTransferERC1155, (from, to, tokenId, value)) ); } @@ -271,9 +271,7 @@ contract ERC1155Core is ERC1155, ModularCore, Multicallable { { _executeCallbackFunction( BeforeBatchTransferCallbackERC1155.beforeBatchTransferERC1155.selector, - abi.encodeCall( - BeforeBatchTransferCallbackERC1155.beforeBatchTransferERC1155, (msg.sender, from, to, tokenIds, values) - ) + abi.encodeCall(BeforeBatchTransferCallbackERC1155.beforeBatchTransferERC1155, (from, to, tokenIds, values)) ); } @@ -281,7 +279,7 @@ contract ERC1155Core is ERC1155, ModularCore, Multicallable { function _beforeBurn(address from, uint256 tokenId, uint256 value, bytes memory data) internal virtual { _executeCallbackFunction( BeforeBurnCallbackERC1155.beforeBurnERC1155.selector, - abi.encodeCall(BeforeBurnCallbackERC1155.beforeBurnERC1155, (msg.sender, from, tokenId, value, data)) + abi.encodeCall(BeforeBurnCallbackERC1155.beforeBurnERC1155, (from, tokenId, value, data)) ); } @@ -289,7 +287,7 @@ contract ERC1155Core is ERC1155, ModularCore, Multicallable { function _beforeApproveForAll(address from, address to, bool approved) internal virtual { _executeCallbackFunction( BeforeApproveForAllCallback.beforeApproveForAll.selector, - abi.encodeCall(BeforeApproveForAllCallback.beforeApproveForAll, (msg.sender, from, to, approved)) + abi.encodeCall(BeforeApproveForAllCallback.beforeApproveForAll, (from, to, approved)) ); } diff --git a/src/core/token/ERC1155CoreInitializable.sol b/src/core/token/ERC1155CoreInitializable.sol index 635ce7da..9ef6a0f2 100644 --- a/src/core/token/ERC1155CoreInitializable.sol +++ b/src/core/token/ERC1155CoreInitializable.sol @@ -253,7 +253,7 @@ contract ERC1155CoreInitializable is ERC1155, ModularCore, Multicallable, Initia function _beforeMint(address to, uint256 tokenId, uint256 value, bytes memory data) internal virtual { _executeCallbackFunction( BeforeMintCallbackERC1155.beforeMintERC1155.selector, - abi.encodeCall(BeforeMintCallbackERC1155.beforeMintERC1155, (msg.sender, to, tokenId, value, data)) + abi.encodeCall(BeforeMintCallbackERC1155.beforeMintERC1155, (to, tokenId, value, data)) ); } @@ -261,7 +261,7 @@ contract ERC1155CoreInitializable is ERC1155, ModularCore, Multicallable, Initia function _beforeTransfer(address from, address to, uint256 tokenId, uint256 value) internal virtual { _executeCallbackFunction( BeforeTransferCallbackERC1155.beforeTransferERC1155.selector, - abi.encodeCall(BeforeTransferCallbackERC1155.beforeTransferERC1155, (msg.sender, from, to, tokenId, value)) + abi.encodeCall(BeforeTransferCallbackERC1155.beforeTransferERC1155, (from, to, tokenId, value)) ); } @@ -272,9 +272,7 @@ contract ERC1155CoreInitializable is ERC1155, ModularCore, Multicallable, Initia { _executeCallbackFunction( BeforeBatchTransferCallbackERC1155.beforeBatchTransferERC1155.selector, - abi.encodeCall( - BeforeBatchTransferCallbackERC1155.beforeBatchTransferERC1155, (msg.sender, from, to, tokenIds, values) - ) + abi.encodeCall(BeforeBatchTransferCallbackERC1155.beforeBatchTransferERC1155, (from, to, tokenIds, values)) ); } @@ -282,7 +280,7 @@ contract ERC1155CoreInitializable is ERC1155, ModularCore, Multicallable, Initia function _beforeBurn(address from, uint256 tokenId, uint256 value, bytes memory data) internal virtual { _executeCallbackFunction( BeforeBurnCallbackERC1155.beforeBurnERC1155.selector, - abi.encodeCall(BeforeBurnCallbackERC1155.beforeBurnERC1155, (msg.sender, from, tokenId, value, data)) + abi.encodeCall(BeforeBurnCallbackERC1155.beforeBurnERC1155, (from, tokenId, value, data)) ); } @@ -290,7 +288,7 @@ contract ERC1155CoreInitializable is ERC1155, ModularCore, Multicallable, Initia function _beforeApproveForAll(address from, address to, bool approved) internal virtual { _executeCallbackFunction( BeforeApproveForAllCallback.beforeApproveForAll.selector, - abi.encodeCall(BeforeApproveForAllCallback.beforeApproveForAll, (msg.sender, from, to, approved)) + abi.encodeCall(BeforeApproveForAllCallback.beforeApproveForAll, (from, to, approved)) ); } diff --git a/src/core/token/ERC20Core.sol b/src/core/token/ERC20Core.sol index f953106f..8b96d82c 100644 --- a/src/core/token/ERC20Core.sol +++ b/src/core/token/ERC20Core.sol @@ -217,7 +217,7 @@ contract ERC20Core is ERC20, Multicallable, ModularCore { function _beforeMint(address to, uint256 amount, bytes calldata data) internal virtual { _executeCallbackFunction( BeforeMintCallbackERC20.beforeMintERC20.selector, - abi.encodeCall(BeforeMintCallbackERC20.beforeMintERC20, (msg.sender, to, amount, data)) + abi.encodeCall(BeforeMintCallbackERC20.beforeMintERC20, (to, amount, data)) ); } @@ -225,7 +225,7 @@ contract ERC20Core is ERC20, Multicallable, ModularCore { function _beforeTransfer(address from, address to, uint256 amount) internal virtual { _executeCallbackFunction( BeforeTransferCallbackERC20.beforeTransferERC20.selector, - abi.encodeCall(BeforeTransferCallbackERC20.beforeTransferERC20, (msg.sender, from, to, amount)) + abi.encodeCall(BeforeTransferCallbackERC20.beforeTransferERC20, (from, to, amount)) ); } @@ -233,7 +233,7 @@ contract ERC20Core is ERC20, Multicallable, ModularCore { function _beforeBurn(address from, uint256 amount, bytes calldata data) internal virtual { _executeCallbackFunction( BeforeBurnCallbackERC20.beforeBurnERC20.selector, - abi.encodeCall(BeforeBurnCallbackERC20.beforeBurnERC20, (msg.sender, from, amount, data)) + abi.encodeCall(BeforeBurnCallbackERC20.beforeBurnERC20, (from, amount, data)) ); } @@ -241,7 +241,7 @@ contract ERC20Core is ERC20, Multicallable, ModularCore { function _beforeApprove(address from, address to, uint256 amount) internal virtual { _executeCallbackFunction( BeforeApproveCallbackERC20.beforeApproveERC20.selector, - abi.encodeCall(BeforeApproveCallbackERC20.beforeApproveERC20, (msg.sender, from, to, amount)) + abi.encodeCall(BeforeApproveCallbackERC20.beforeApproveERC20, (from, to, amount)) ); } } diff --git a/src/core/token/ERC20CoreInitializable.sol b/src/core/token/ERC20CoreInitializable.sol index cd75698e..3ab5b567 100644 --- a/src/core/token/ERC20CoreInitializable.sol +++ b/src/core/token/ERC20CoreInitializable.sol @@ -219,7 +219,7 @@ contract ERC20CoreInitializable is ERC20, ModularCore, Multicallable, Initializa function _beforeMint(address to, uint256 amount, bytes calldata data) internal virtual { _executeCallbackFunction( BeforeMintCallbackERC20.beforeMintERC20.selector, - abi.encodeCall(BeforeMintCallbackERC20.beforeMintERC20, (msg.sender, to, amount, data)) + abi.encodeCall(BeforeMintCallbackERC20.beforeMintERC20, (to, amount, data)) ); } @@ -227,7 +227,7 @@ contract ERC20CoreInitializable is ERC20, ModularCore, Multicallable, Initializa function _beforeTransfer(address from, address to, uint256 amount) internal virtual { _executeCallbackFunction( BeforeTransferCallbackERC20.beforeTransferERC20.selector, - abi.encodeCall(BeforeTransferCallbackERC20.beforeTransferERC20, (msg.sender, from, to, amount)) + abi.encodeCall(BeforeTransferCallbackERC20.beforeTransferERC20, (from, to, amount)) ); } @@ -235,7 +235,7 @@ contract ERC20CoreInitializable is ERC20, ModularCore, Multicallable, Initializa function _beforeBurn(address from, uint256 amount, bytes calldata data) internal virtual { _executeCallbackFunction( BeforeBurnCallbackERC20.beforeBurnERC20.selector, - abi.encodeCall(BeforeBurnCallbackERC20.beforeBurnERC20, (msg.sender, from, amount, data)) + abi.encodeCall(BeforeBurnCallbackERC20.beforeBurnERC20, (from, amount, data)) ); } @@ -243,7 +243,7 @@ contract ERC20CoreInitializable is ERC20, ModularCore, Multicallable, Initializa function _beforeApprove(address from, address to, uint256 amount) internal virtual { _executeCallbackFunction( BeforeApproveCallbackERC20.beforeApproveERC20.selector, - abi.encodeCall(BeforeApproveCallbackERC20.beforeApproveERC20, (msg.sender, from, to, amount)) + abi.encodeCall(BeforeApproveCallbackERC20.beforeApproveERC20, (from, to, amount)) ); } } diff --git a/src/core/token/ERC721Core.sol b/src/core/token/ERC721Core.sol index 867e78f1..35fa6142 100644 --- a/src/core/token/ERC721Core.sol +++ b/src/core/token/ERC721Core.sol @@ -208,7 +208,7 @@ contract ERC721Core is ERC721AQueryable, ModularCore, Multicallable { function _beforeMint(address to, uint256 startTokenId, uint256 quantity, bytes calldata data) internal virtual { _executeCallbackFunction( BeforeMintCallbackERC721.beforeMintERC721.selector, - abi.encodeCall(BeforeMintCallbackERC721.beforeMintERC721, (msg.sender, to, startTokenId, quantity, data)) + abi.encodeCall(BeforeMintCallbackERC721.beforeMintERC721, (to, startTokenId, quantity, data)) ); } @@ -216,7 +216,7 @@ contract ERC721Core is ERC721AQueryable, ModularCore, Multicallable { function _beforeTransfer(address from, address to, uint256 tokenId) internal virtual { _executeCallbackFunction( BeforeTransferCallbackERC721.beforeTransferERC721.selector, - abi.encodeCall(BeforeTransferCallbackERC721.beforeTransferERC721, (msg.sender, from, to, tokenId)) + abi.encodeCall(BeforeTransferCallbackERC721.beforeTransferERC721, (from, to, tokenId)) ); } @@ -224,7 +224,7 @@ contract ERC721Core is ERC721AQueryable, ModularCore, Multicallable { function _beforeBurn(uint256 tokenId, bytes calldata data) internal virtual { _executeCallbackFunction( BeforeBurnCallbackERC721.beforeBurnERC721.selector, - abi.encodeCall(BeforeBurnCallbackERC721.beforeBurnERC721, (msg.sender, tokenId, data)) + abi.encodeCall(BeforeBurnCallbackERC721.beforeBurnERC721, (tokenId, data)) ); } @@ -232,7 +232,7 @@ contract ERC721Core is ERC721AQueryable, ModularCore, Multicallable { function _beforeApprove(address from, address to, uint256 tokenId, bool approved) internal virtual { _executeCallbackFunction( BeforeApproveCallbackERC721.beforeApproveERC721.selector, - abi.encodeCall(BeforeApproveCallbackERC721.beforeApproveERC721, (msg.sender, from, to, tokenId, approved)) + abi.encodeCall(BeforeApproveCallbackERC721.beforeApproveERC721, (from, to, tokenId, approved)) ); } @@ -240,7 +240,7 @@ contract ERC721Core is ERC721AQueryable, ModularCore, Multicallable { function _beforeApproveForAll(address from, address to, bool approved) internal virtual { _executeCallbackFunction( BeforeApproveForAllCallback.beforeApproveForAll.selector, - abi.encodeCall(BeforeApproveForAllCallback.beforeApproveForAll, (msg.sender, from, to, approved)) + abi.encodeCall(BeforeApproveForAllCallback.beforeApproveForAll, (from, to, approved)) ); } diff --git a/src/core/token/ERC721CoreInitializable.sol b/src/core/token/ERC721CoreInitializable.sol index 129dbb41..f47b4271 100644 --- a/src/core/token/ERC721CoreInitializable.sol +++ b/src/core/token/ERC721CoreInitializable.sol @@ -226,7 +226,7 @@ contract ERC721CoreInitializable is ERC721AQueryableUpgradeable, ModularCore, Mu function _beforeMint(address to, uint256 startTokenId, uint256 quantity, bytes calldata data) internal virtual { _executeCallbackFunction( BeforeMintCallbackERC721.beforeMintERC721.selector, - abi.encodeCall(BeforeMintCallbackERC721.beforeMintERC721, (msg.sender, to, startTokenId, quantity, data)) + abi.encodeCall(BeforeMintCallbackERC721.beforeMintERC721, (to, startTokenId, quantity, data)) ); } @@ -234,7 +234,7 @@ contract ERC721CoreInitializable is ERC721AQueryableUpgradeable, ModularCore, Mu function _beforeTransfer(address from, address to, uint256 tokenId) internal virtual { _executeCallbackFunction( BeforeTransferCallbackERC721.beforeTransferERC721.selector, - abi.encodeCall(BeforeTransferCallbackERC721.beforeTransferERC721, (msg.sender, from, to, tokenId)) + abi.encodeCall(BeforeTransferCallbackERC721.beforeTransferERC721, (from, to, tokenId)) ); } @@ -242,7 +242,7 @@ contract ERC721CoreInitializable is ERC721AQueryableUpgradeable, ModularCore, Mu function _beforeBurn(uint256 tokenId, bytes calldata data) internal virtual { _executeCallbackFunction( BeforeBurnCallbackERC721.beforeBurnERC721.selector, - abi.encodeCall(BeforeBurnCallbackERC721.beforeBurnERC721, (msg.sender, tokenId, data)) + abi.encodeCall(BeforeBurnCallbackERC721.beforeBurnERC721, (tokenId, data)) ); } @@ -250,7 +250,7 @@ contract ERC721CoreInitializable is ERC721AQueryableUpgradeable, ModularCore, Mu function _beforeApprove(address from, address to, uint256 tokenId, bool approved) internal virtual { _executeCallbackFunction( BeforeApproveCallbackERC721.beforeApproveERC721.selector, - abi.encodeCall(BeforeApproveCallbackERC721.beforeApproveERC721, (msg.sender, from, to, tokenId, approved)) + abi.encodeCall(BeforeApproveCallbackERC721.beforeApproveERC721, (from, to, tokenId, approved)) ); } @@ -258,7 +258,7 @@ contract ERC721CoreInitializable is ERC721AQueryableUpgradeable, ModularCore, Mu function _beforeApproveForAll(address from, address to, bool approved) internal virtual { _executeCallbackFunction( BeforeApproveForAllCallback.beforeApproveForAll.selector, - abi.encodeCall(BeforeApproveForAllCallback.beforeApproveForAll, (msg.sender, from, to, approved)) + abi.encodeCall(BeforeApproveForAllCallback.beforeApproveForAll, (from, to, approved)) ); } diff --git a/src/extension/token/minting/ClaimableERC1155.sol b/src/extension/token/minting/ClaimableERC1155.sol index 420b765d..3509f3cc 100644 --- a/src/extension/token/minting/ClaimableERC1155.sol +++ b/src/extension/token/minting/ClaimableERC1155.sol @@ -173,7 +173,7 @@ contract ClaimableERC1155 is ModularExtension, EIP712, BeforeMintCallbackERC1155 //////////////////////////////////////////////////////////////*/ /// @notice Callback function for the ERC721Core.mint function. - function beforeMintERC1155(address _caller, address _to, uint256 _id, uint256 _quantity, bytes memory _data) + function beforeMintERC1155(address _to, uint256 _id, uint256 _quantity, bytes memory _data) external payable virtual @@ -196,17 +196,17 @@ contract ClaimableERC1155 is ModularExtension, EIP712, BeforeMintCallbackERC1155 pricePerUnit = _params.request.pricePerUnit; } - _distributeMintPrice(_caller, currency, _quantity * pricePerUnit); + _distributeMintPrice(msg.sender, currency, _quantity * pricePerUnit); } /// @dev Called by a Core into an Extension during the installation of the Extension. - function onInstall(address sender, bytes calldata data) external { + function onInstall(bytes calldata data) external { (address primarySaleRecipient) = abi.decode(data, (address)); _claimableStorage().saleConfig = SaleConfig(primarySaleRecipient); } /// @dev Called by a Core into an Extension during the uninstallation of the Extension. - function onUninstall(address sender, bytes calldata data) external {} + function onUninstall(bytes calldata data) external {} /*////////////////////////////////////////////////////////////// FALLBACK FUNCTIONS diff --git a/src/extension/token/minting/ClaimableERC20.sol b/src/extension/token/minting/ClaimableERC20.sol index 314a7a4f..eae2427d 100644 --- a/src/extension/token/minting/ClaimableERC20.sol +++ b/src/extension/token/minting/ClaimableERC20.sol @@ -167,7 +167,7 @@ contract ClaimableERC20 is ModularExtension, EIP712, BeforeMintCallbackERC20, II //////////////////////////////////////////////////////////////*/ /// @notice Callback function for the ERC20Core.mint function. - function beforeMintERC20(address _caller, address _to, uint256 _amount, bytes memory _data) + function beforeMintERC20(address _to, uint256 _amount, bytes memory _data) external payable virtual @@ -189,17 +189,17 @@ contract ClaimableERC20 is ModularExtension, EIP712, BeforeMintCallbackERC20, II pricePerUnit = _params.request.pricePerUnit; } - _distributeMintPrice(_caller, currency, (_amount * pricePerUnit) / 1e18); + _distributeMintPrice(msg.sender, currency, (_amount * pricePerUnit) / 1e18); } /// @dev Called by a Core into an Extension during the installation of the Extension. - function onInstall(address sender, bytes calldata data) external { + function onInstall(bytes calldata data) external { (address primarySaleRecipient) = abi.decode(data, (address)); _claimableStorage().saleConfig = SaleConfig(primarySaleRecipient); } /// @dev Called by a Core into an Extension during the uninstallation of the Extension. - function onUninstall(address sender, bytes calldata data) external {} + function onUninstall(bytes calldata data) external {} /*////////////////////////////////////////////////////////////// FALLBACK FUNCTIONS diff --git a/src/extension/token/minting/ClaimableERC721.sol b/src/extension/token/minting/ClaimableERC721.sol index 8919985f..62ee6944 100644 --- a/src/extension/token/minting/ClaimableERC721.sol +++ b/src/extension/token/minting/ClaimableERC721.sol @@ -167,13 +167,13 @@ contract ClaimableERC721 is ModularExtension, EIP712, BeforeMintCallbackERC721, //////////////////////////////////////////////////////////////*/ /// @notice Callback function for the ERC721Core.mint function. - function beforeMintERC721( - address _caller, - address _to, - uint256 _startTokenId, - uint256 _quantity, - bytes memory _data - ) external payable virtual override returns (bytes memory) { + function beforeMintERC721(address _to, uint256 _startTokenId, uint256 _quantity, bytes memory _data) + external + payable + virtual + override + returns (bytes memory) + { ClaimParamsERC721 memory _params = abi.decode(_data, (ClaimParamsERC721)); address currency; @@ -189,17 +189,17 @@ contract ClaimableERC721 is ModularExtension, EIP712, BeforeMintCallbackERC721, pricePerUnit = _params.request.pricePerUnit; } - _distributeMintPrice(_caller, currency, _quantity * pricePerUnit); + _distributeMintPrice(msg.sender, currency, _quantity * pricePerUnit); } /// @dev Called by a Core into an Extension during the installation of the Extension. - function onInstall(address sender, bytes calldata data) external { + function onInstall(bytes calldata data) external { (address primarySaleRecipient) = abi.decode(data, (address)); _claimableStorage().saleConfig = SaleConfig(primarySaleRecipient); } /// @dev Called by a Core into an Extension during the uninstallation of the Extension. - function onUninstall(address sender, bytes calldata data) external {} + function onUninstall(bytes calldata data) external {} /*////////////////////////////////////////////////////////////// FALLBACK FUNCTIONS diff --git a/src/extension/token/minting/MintableERC1155.sol b/src/extension/token/minting/MintableERC1155.sol index dfec53c6..6a6b591e 100644 --- a/src/extension/token/minting/MintableERC1155.sol +++ b/src/extension/token/minting/MintableERC1155.sol @@ -163,7 +163,7 @@ contract MintableERC1155 is } /// @notice Callback function for the ERC1155Core.mint function. - function beforeMintERC1155(address _caller, address _to, uint256 _id, uint256 _quantity, bytes memory _data) + function beforeMintERC1155(address _to, uint256 _id, uint256 _quantity, bytes memory _data) external payable virtual @@ -174,7 +174,7 @@ contract MintableERC1155 is // If the signature is empty, the caller must have the MINTER_ROLE. if (_params.signature.length == 0) { - if (!OwnableRoles(address(this)).hasAllRoles(_caller, Role._MINTER_ROLE)) { + if (!OwnableRoles(address(this)).hasAllRoles(msg.sender, Role._MINTER_ROLE)) { revert MintableRequestUnauthorized(); } @@ -191,19 +191,19 @@ contract MintableERC1155 is } _distributeMintPrice( - _caller, _params.request.currency, _params.request.quantity * _params.request.pricePerUnit + msg.sender, _params.request.currency, _params.request.quantity * _params.request.pricePerUnit ); } } /// @dev Called by a Core into an Extension during the installation of the Extension. - function onInstall(address sender, bytes calldata data) external { + function onInstall(bytes calldata data) external { (address primarySaleRecipient) = abi.decode(data, (address)); _mintableStorage().saleConfig = SaleConfig(primarySaleRecipient); } /// @dev Called by a Core into an Extension during the uninstallation of the Extension. - function onUninstall(address sender, bytes calldata data) external {} + function onUninstall(bytes calldata data) external {} /*////////////////////////////////////////////////////////////// FALLBACK FUNCTIONS diff --git a/src/extension/token/minting/MintableERC20.sol b/src/extension/token/minting/MintableERC20.sol index e6999361..bcad0b96 100644 --- a/src/extension/token/minting/MintableERC20.sol +++ b/src/extension/token/minting/MintableERC20.sol @@ -132,7 +132,7 @@ contract MintableERC20 is OwnableRoles, ModularExtension, EIP712, BeforeMintCall //////////////////////////////////////////////////////////////*/ /// @notice Callback function for the ERC20Core.mint function. - function beforeMintERC20(address _caller, address _to, uint256 _quantity, bytes memory _data) + function beforeMintERC20(address _to, uint256 _quantity, bytes memory _data) external payable virtual @@ -143,7 +143,7 @@ contract MintableERC20 is OwnableRoles, ModularExtension, EIP712, BeforeMintCall // If the signature is empty, the caller must have the MINTER_ROLE. if (_params.signature.length == 0) { - if (!OwnableRoles(address(this)).hasAllRoles(_caller, Role._MINTER_ROLE)) { + if (!OwnableRoles(address(this)).hasAllRoles(msg.sender, Role._MINTER_ROLE)) { revert MintableRequestUnauthorized(); } @@ -151,19 +151,19 @@ contract MintableERC20 is OwnableRoles, ModularExtension, EIP712, BeforeMintCall } else { _mintWithSignatureERC20(_to, _quantity, _params.request, _params.signature); _distributeMintPrice( - _caller, _params.request.currency, (_params.request.quantity * _params.request.pricePerUnit) / 1e18 + msg.sender, _params.request.currency, (_params.request.quantity * _params.request.pricePerUnit) / 1e18 ); } } /// @dev Called by a Core into an Extension during the installation of the Extension. - function onInstall(address sender, bytes calldata data) external { + function onInstall(bytes calldata data) external { (address primarySaleRecipient) = abi.decode(data, (address)); _mintableStorage().saleConfig = SaleConfig(primarySaleRecipient); } /// @dev Called by a Core into an Extension during the uninstallation of the Extension. - function onUninstall(address sender, bytes calldata data) external {} + function onUninstall(bytes calldata data) external {} /*////////////////////////////////////////////////////////////// FALLBACK FUNCTIONS diff --git a/src/extension/token/minting/MintableERC721.sol b/src/extension/token/minting/MintableERC721.sol index 557509ba..51c9dd8a 100644 --- a/src/extension/token/minting/MintableERC721.sol +++ b/src/extension/token/minting/MintableERC721.sol @@ -182,18 +182,18 @@ contract MintableERC721 is } /// @notice Callback function for the ERC721Core.mint function. - function beforeMintERC721( - address _caller, - address _to, - uint256 _startTokenId, - uint256 _quantity, - bytes memory _data - ) external payable virtual override returns (bytes memory) { + function beforeMintERC721(address _to, uint256 _startTokenId, uint256 _quantity, bytes memory _data) + external + payable + virtual + override + returns (bytes memory) + { MintParamsERC721 memory _params = abi.decode(_data, (MintParamsERC721)); // If the signature is empty, the caller must have the MINTER_ROLE. if (_params.signature.length == 0) { - if (!OwnableRoles(address(this)).hasAllRoles(_caller, Role._MINTER_ROLE)) { + if (!OwnableRoles(address(this)).hasAllRoles(msg.sender, Role._MINTER_ROLE)) { revert MintableRequestUnauthorized(); } @@ -204,19 +204,19 @@ contract MintableERC721 is _mintWithSignatureERC721(_to, _quantity, _startTokenId, _params.request, _params.signature); _setBaseURI(_startTokenId, _quantity, _params.request.baseURI); _distributeMintPrice( - _caller, _params.request.currency, _params.request.quantity * _params.request.pricePerUnit + msg.sender, _params.request.currency, _params.request.quantity * _params.request.pricePerUnit ); } } /// @dev Called by a Core into an Extension during the installation of the Extension. - function onInstall(address sender, bytes calldata data) external { + function onInstall(bytes calldata data) external { (address primarySaleRecipient) = abi.decode(data, (address)); _mintableStorage().saleConfig = SaleConfig(primarySaleRecipient); } /// @dev Called by a Core into an Extension during the uninstallation of the Extension. - function onUninstall(address sender, bytes calldata data) external {} + function onUninstall(bytes calldata data) external {} /*////////////////////////////////////////////////////////////// FALLBACK FUNCTIONS diff --git a/src/extension/token/royalty/RoyaltyERC721.sol b/src/extension/token/royalty/RoyaltyERC721.sol index d5c591c8..afb4aade 100644 --- a/src/extension/token/royalty/RoyaltyERC721.sol +++ b/src/extension/token/royalty/RoyaltyERC721.sol @@ -89,13 +89,13 @@ contract RoyaltyERC721 is ModularExtension, IInstallationCallback { //////////////////////////////////////////////////////////////*/ /// @dev Called by a Core into an Extension during the installation of the Extension. - function onInstall(address sender, bytes calldata data) external { + function onInstall(bytes calldata data) external { (address royaltyRecipient, uint256 royaltyBps) = abi.decode(data, (address, uint256)); setDefaultRoyaltyInfo(royaltyRecipient, royaltyBps); } /// @dev Called by a Core into an Extension during the uninstallation of the Extension. - function onUninstall(address sender, bytes calldata data) external {} + function onUninstall(bytes calldata data) external {} /*////////////////////////////////////////////////////////////// FALLBACK FUNCTIONS diff --git a/src/extension/token/transferable/TransferableERC1155.sol b/src/extension/token/transferable/TransferableERC1155.sol index 0222471a..4b9bdc05 100644 --- a/src/extension/token/transferable/TransferableERC1155.sol +++ b/src/extension/token/transferable/TransferableERC1155.sol @@ -62,7 +62,7 @@ contract TransferableERC1155 is ModularExtension, BeforeTransferCallbackERC1155, //////////////////////////////////////////////////////////////*/ /// @notice Callback function for ERC1155.safeTransferFrom - function beforeTransferERC1155(address caller, address from, address to, uint256, uint256) + function beforeTransferERC1155(address from, address to, uint256, uint256) external virtual override @@ -70,7 +70,7 @@ contract TransferableERC1155 is ModularExtension, BeforeTransferCallbackERC1155, { TransferableStorage.Data storage data = _transferableStorage(); bool isOperatorAllowed = - data.transferEnabledFor[caller] || data.transferEnabledFor[from] || data.transferEnabledFor[to]; + data.transferEnabledFor[msg.sender] || data.transferEnabledFor[from] || data.transferEnabledFor[to]; if (!isOperatorAllowed && !data.transferEnabled) { revert TransferDisabled(); @@ -78,16 +78,15 @@ contract TransferableERC1155 is ModularExtension, BeforeTransferCallbackERC1155, } /// @notice Callback function for ERC1155.safeBatchTransferFrom - function beforeBatchTransferERC1155( - address caller, - address from, - address to, - uint256[] calldata, - uint256[] calldata - ) external virtual override returns (bytes memory) { + function beforeBatchTransferERC1155(address from, address to, uint256[] calldata, uint256[] calldata) + external + virtual + override + returns (bytes memory) + { TransferableStorage.Data storage data = _transferableStorage(); bool isOperatorAllowed = - data.transferEnabledFor[caller] || data.transferEnabledFor[from] || data.transferEnabledFor[to]; + data.transferEnabledFor[msg.sender] || data.transferEnabledFor[from] || data.transferEnabledFor[to]; if (!isOperatorAllowed && !data.transferEnabled) { revert TransferDisabled(); diff --git a/src/extension/token/transferable/TransferableERC20.sol b/src/extension/token/transferable/TransferableERC20.sol index ffa8b845..0f57ee84 100644 --- a/src/extension/token/transferable/TransferableERC20.sol +++ b/src/extension/token/transferable/TransferableERC20.sol @@ -58,15 +58,10 @@ contract TransferableERC20 is ModularExtension, BeforeTransferCallbackERC20 { //////////////////////////////////////////////////////////////*/ /// @notice Callback function for ERC20.transfer - function beforeTransferERC20(address caller, address from, address to, uint256) - external - virtual - override - returns (bytes memory) - { + function beforeTransferERC20(address from, address to, uint256) external virtual override returns (bytes memory) { TransferableStorage.Data storage data = _transferableStorage(); bool isOperatorAllowed = - data.transferEnabledFor[caller] || data.transferEnabledFor[from] || data.transferEnabledFor[to]; + data.transferEnabledFor[msg.sender] || data.transferEnabledFor[from] || data.transferEnabledFor[to]; if (!isOperatorAllowed && !data.transferEnabled) { revert TransferDisabled(); diff --git a/src/extension/token/transferable/TransferableERC721.sol b/src/extension/token/transferable/TransferableERC721.sol index 32bd9b05..6d76bfce 100644 --- a/src/extension/token/transferable/TransferableERC721.sol +++ b/src/extension/token/transferable/TransferableERC721.sol @@ -60,15 +60,10 @@ contract TransferableERC721 is ModularExtension, BeforeTransferCallbackERC721 { //////////////////////////////////////////////////////////////*/ /// @notice Callback function for ERC721.transferFrom/safeTransferFrom - function beforeTransferERC721(address caller, address from, address to, uint256) - external - virtual - override - returns (bytes memory) - { + function beforeTransferERC721(address from, address to, uint256) external virtual override returns (bytes memory) { TransferableStorage.Data storage data = _transferableStorage(); bool isOperatorAllowed = - data.transferEnabledFor[caller] || data.transferEnabledFor[from] || data.transferEnabledFor[to]; + data.transferEnabledFor[msg.sender] || data.transferEnabledFor[from] || data.transferEnabledFor[to]; if (!isOperatorAllowed && !data.transferEnabled) { revert TransferDisabled(); diff --git a/src/interface/IInstallationCallback.sol b/src/interface/IInstallationCallback.sol index 497cccd0..c367a3f3 100644 --- a/src/interface/IInstallationCallback.sol +++ b/src/interface/IInstallationCallback.sol @@ -9,16 +9,14 @@ interface IInstallationCallback { /** * @dev Called by a Core into an Extension during the installation of the Extension. * - * @param sender The address of the caller installing the Extension. * @param data The data passed to the Core's installExtension function. */ - function onInstall(address sender, bytes calldata data) external; + function onInstall(bytes calldata data) external; /** * @dev Called by a Core into an Extension during the uninstallation of the Extension. * - * @param sender The address of the caller uninstalling the Extension. * @param data The data passed to the Core's uninstallExtension function. */ - function onUninstall(address sender, bytes calldata data) external; + function onUninstall(bytes calldata data) external; } diff --git a/test/ModularCore.t.sol b/test/ModularCore.t.sol index 852da3d3..2df49eb4 100644 --- a/test/ModularCore.t.sol +++ b/test/ModularCore.t.sol @@ -58,9 +58,9 @@ contract MockExtensionWithFunctions is MockBase, ModularExtension { uint256 private number; - function onInstall(address sender, bytes memory data) external virtual {} + function onInstall(bytes memory data) external virtual {} - function onUninstall(address sender, bytes memory data) external virtual {} + function onUninstall(bytes memory data) external virtual {} function getCallbacks() internal pure override returns (IExtensionConfig.CallbackFunction[] memory functions) { functions = new IExtensionConfig.CallbackFunction[](NUMBER_OF_CALLBACK + 1); @@ -123,7 +123,7 @@ contract MockExtensionWithFunctions is MockBase, ModularExtension { contract MockExtensionOnInstallFails is MockExtensionWithFunctions { error OnInstallFailed(); - function onInstall(address sender, bytes memory data) external override { + function onInstall(bytes memory data) external override { revert OnInstallFailed(); } } @@ -131,7 +131,7 @@ contract MockExtensionOnInstallFails is MockExtensionWithFunctions { contract MockExtensionOnUninstallFails is MockExtensionWithFunctions { error OnUninstallFailed(); - function onUninstall(address sender, bytes memory data) external override { + function onUninstall(bytes memory data) external override { revert OnUninstallFailed(); } } diff --git a/test/benchmark/CoreBenchmark.t.sol b/test/benchmark/CoreBenchmark.t.sol index 086b40e6..b1dc7f1d 100644 --- a/test/benchmark/CoreBenchmark.t.sol +++ b/test/benchmark/CoreBenchmark.t.sol @@ -70,9 +70,9 @@ contract MockCore is MockBase, ModularCore { } contract MockExtension is MockBase, IModularExtension { - function onInstall(address sender, bytes memory data) external {} + function onInstall(bytes memory data) external {} - function onUninstall(address sender, bytes memory data) external {} + function onUninstall(bytes memory data) external {} function getExtensionConfig() external pure override returns (ExtensionConfig memory config) { config.callbackFunctions = getCallbacks(); @@ -84,9 +84,9 @@ contract MockExtensionWithFunctions is MockBase, IModularExtension { uint256 public constant CALLER_ROLE = 1 << 0; - function onInstall(address sender, bytes memory data) external {} + function onInstall(bytes memory data) external {} - function onUninstall(address sender, bytes memory data) external {} + function onUninstall(bytes memory data) external {} function getCallbacks() internal pure override returns (IExtensionConfig.CallbackFunction[] memory functions) { functions = new IExtensionConfig.CallbackFunction[](NUMBER_OF_CALLBACK + 1); From f28452b0b0ed4c226ce0c3c2d90f6ff1f1106e27 Mon Sep 17 00:00:00 2001 From: Krishang Date: Sat, 1 Jun 2024 00:25:39 +0530 Subject: [PATCH 3/3] Initialize primary sale recipient as msg.sender without decoding data --- src/extension/token/minting/ClaimableERC1155.sol | 3 +-- src/extension/token/minting/ClaimableERC20.sol | 3 +-- src/extension/token/minting/ClaimableERC721.sol | 3 +-- src/extension/token/minting/MintableERC1155.sol | 3 +-- src/extension/token/minting/MintableERC20.sol | 3 +-- src/extension/token/minting/MintableERC721.sol | 3 +-- test/extension/minting/ClaimableERC1155.t.sol | 3 +-- test/extension/minting/ClaimableERC20.t.sol | 3 +-- test/extension/minting/ClaimableERC721.t.sol | 3 +-- test/extension/minting/MintableERC1155.t.sol | 3 +-- test/extension/minting/MintableERC20.t.sol | 3 +-- test/extension/minting/MintableERC721.t.sol | 4 ++-- 12 files changed, 13 insertions(+), 24 deletions(-) diff --git a/src/extension/token/minting/ClaimableERC1155.sol b/src/extension/token/minting/ClaimableERC1155.sol index 3509f3cc..cd543e96 100644 --- a/src/extension/token/minting/ClaimableERC1155.sol +++ b/src/extension/token/minting/ClaimableERC1155.sol @@ -201,8 +201,7 @@ contract ClaimableERC1155 is ModularExtension, EIP712, BeforeMintCallbackERC1155 /// @dev Called by a Core into an Extension during the installation of the Extension. function onInstall(bytes calldata data) external { - (address primarySaleRecipient) = abi.decode(data, (address)); - _claimableStorage().saleConfig = SaleConfig(primarySaleRecipient); + _claimableStorage().saleConfig = SaleConfig(msg.sender); } /// @dev Called by a Core into an Extension during the uninstallation of the Extension. diff --git a/src/extension/token/minting/ClaimableERC20.sol b/src/extension/token/minting/ClaimableERC20.sol index eae2427d..70497524 100644 --- a/src/extension/token/minting/ClaimableERC20.sol +++ b/src/extension/token/minting/ClaimableERC20.sol @@ -194,8 +194,7 @@ contract ClaimableERC20 is ModularExtension, EIP712, BeforeMintCallbackERC20, II /// @dev Called by a Core into an Extension during the installation of the Extension. function onInstall(bytes calldata data) external { - (address primarySaleRecipient) = abi.decode(data, (address)); - _claimableStorage().saleConfig = SaleConfig(primarySaleRecipient); + _claimableStorage().saleConfig = SaleConfig(msg.sender); } /// @dev Called by a Core into an Extension during the uninstallation of the Extension. diff --git a/src/extension/token/minting/ClaimableERC721.sol b/src/extension/token/minting/ClaimableERC721.sol index 62ee6944..be045820 100644 --- a/src/extension/token/minting/ClaimableERC721.sol +++ b/src/extension/token/minting/ClaimableERC721.sol @@ -194,8 +194,7 @@ contract ClaimableERC721 is ModularExtension, EIP712, BeforeMintCallbackERC721, /// @dev Called by a Core into an Extension during the installation of the Extension. function onInstall(bytes calldata data) external { - (address primarySaleRecipient) = abi.decode(data, (address)); - _claimableStorage().saleConfig = SaleConfig(primarySaleRecipient); + _claimableStorage().saleConfig = SaleConfig(msg.sender); } /// @dev Called by a Core into an Extension during the uninstallation of the Extension. diff --git a/src/extension/token/minting/MintableERC1155.sol b/src/extension/token/minting/MintableERC1155.sol index 6a6b591e..8f5e02ed 100644 --- a/src/extension/token/minting/MintableERC1155.sol +++ b/src/extension/token/minting/MintableERC1155.sol @@ -198,8 +198,7 @@ contract MintableERC1155 is /// @dev Called by a Core into an Extension during the installation of the Extension. function onInstall(bytes calldata data) external { - (address primarySaleRecipient) = abi.decode(data, (address)); - _mintableStorage().saleConfig = SaleConfig(primarySaleRecipient); + _mintableStorage().saleConfig = SaleConfig(msg.sender); } /// @dev Called by a Core into an Extension during the uninstallation of the Extension. diff --git a/src/extension/token/minting/MintableERC20.sol b/src/extension/token/minting/MintableERC20.sol index bcad0b96..5ee2df5e 100644 --- a/src/extension/token/minting/MintableERC20.sol +++ b/src/extension/token/minting/MintableERC20.sol @@ -158,8 +158,7 @@ contract MintableERC20 is OwnableRoles, ModularExtension, EIP712, BeforeMintCall /// @dev Called by a Core into an Extension during the installation of the Extension. function onInstall(bytes calldata data) external { - (address primarySaleRecipient) = abi.decode(data, (address)); - _mintableStorage().saleConfig = SaleConfig(primarySaleRecipient); + _mintableStorage().saleConfig = SaleConfig(msg.sender); } /// @dev Called by a Core into an Extension during the uninstallation of the Extension. diff --git a/src/extension/token/minting/MintableERC721.sol b/src/extension/token/minting/MintableERC721.sol index 51c9dd8a..f8a539f1 100644 --- a/src/extension/token/minting/MintableERC721.sol +++ b/src/extension/token/minting/MintableERC721.sol @@ -211,8 +211,7 @@ contract MintableERC721 is /// @dev Called by a Core into an Extension during the installation of the Extension. function onInstall(bytes calldata data) external { - (address primarySaleRecipient) = abi.decode(data, (address)); - _mintableStorage().saleConfig = SaleConfig(primarySaleRecipient); + _mintableStorage().saleConfig = SaleConfig(msg.sender); } /// @dev Called by a Core into an Extension during the uninstallation of the Extension. diff --git a/test/extension/minting/ClaimableERC1155.t.sol b/test/extension/minting/ClaimableERC1155.t.sol index 37c95b35..2f924232 100644 --- a/test/extension/minting/ClaimableERC1155.t.sol +++ b/test/extension/minting/ClaimableERC1155.t.sol @@ -100,9 +100,8 @@ contract ClaimableERC1155Test is Test { extensionImplementation = new ClaimableERC1155(); // install extension - bytes memory exetnsionInitializeData = abi.encode(owner); vm.prank(owner); - core.installExtension(address(extensionImplementation), exetnsionInitializeData); + core.installExtension(address(extensionImplementation), ""); // Setup signature vars typehashClaimRequest = keccak256( diff --git a/test/extension/minting/ClaimableERC20.t.sol b/test/extension/minting/ClaimableERC20.t.sol index 6f51fecb..9ff9e600 100644 --- a/test/extension/minting/ClaimableERC20.t.sol +++ b/test/extension/minting/ClaimableERC20.t.sol @@ -99,9 +99,8 @@ contract ClaimableERC20Test is Test { extensionImplementation = new ClaimableERC20(); // install extension - bytes memory exetnsionInitializeData = abi.encode(owner); vm.prank(owner); - core.installExtension(address(extensionImplementation), exetnsionInitializeData); + core.installExtension(address(extensionImplementation), ""); // Setup signature vars typehashClaimRequest = keccak256( diff --git a/test/extension/minting/ClaimableERC721.t.sol b/test/extension/minting/ClaimableERC721.t.sol index ecefc137..e2d6a7f3 100644 --- a/test/extension/minting/ClaimableERC721.t.sol +++ b/test/extension/minting/ClaimableERC721.t.sol @@ -99,9 +99,8 @@ contract ClaimableERC721Test is Test { extensionImplementation = new ClaimableERC721(); // install extension - bytes memory exetnsionInitializeData = abi.encode(owner); vm.prank(owner); - core.installExtension(address(extensionImplementation), exetnsionInitializeData); + core.installExtension(address(extensionImplementation), ""); // Setup signature vars typehashClaimRequest = keccak256( diff --git a/test/extension/minting/MintableERC1155.t.sol b/test/extension/minting/MintableERC1155.t.sol index 5628f4d1..21f5f164 100644 --- a/test/extension/minting/MintableERC1155.t.sol +++ b/test/extension/minting/MintableERC1155.t.sol @@ -100,9 +100,8 @@ contract MintableERC1155Test is Test { extensionImplementation = new MintableERC1155(); // install extension - bytes memory exetnsionInitializeData = abi.encode(owner); vm.prank(owner); - core.installExtension(address(extensionImplementation), exetnsionInitializeData); + core.installExtension(address(extensionImplementation), ""); // Setup signature vars typehashMintRequest = keccak256( diff --git a/test/extension/minting/MintableERC20.t.sol b/test/extension/minting/MintableERC20.t.sol index 0ca37ce1..efdd836a 100644 --- a/test/extension/minting/MintableERC20.t.sol +++ b/test/extension/minting/MintableERC20.t.sol @@ -99,9 +99,8 @@ contract MintableERC20Test is Test { extensionImplementation = new MintableERC20(); // install extension - bytes memory exetnsionInitializeData = abi.encode(owner); vm.prank(owner); - core.installExtension(address(extensionImplementation), exetnsionInitializeData); + core.installExtension(address(extensionImplementation), ""); // Setup signature vars typehashMintRequest = keccak256( diff --git a/test/extension/minting/MintableERC721.t.sol b/test/extension/minting/MintableERC721.t.sol index 9d04585a..033417b6 100644 --- a/test/extension/minting/MintableERC721.t.sol +++ b/test/extension/minting/MintableERC721.t.sol @@ -117,9 +117,9 @@ contract MintableERC721Test is Test { extensionImplementation = new MintableERC721(); // install extension - bytes memory exetnsionInitializeData = abi.encode(owner); + vm.prank(owner); - core.installExtension(address(extensionImplementation), exetnsionInitializeData); + core.installExtension(address(extensionImplementation), ""); // Setup signature vars typehashMintRequest = keccak256(