From bfd815975302071bbd8fa0e1f472ff2d3f17a7f8 Mon Sep 17 00:00:00 2001 From: vicnaum Date: Tue, 6 Feb 2024 21:28:32 +0100 Subject: [PATCH] misc: PermissionlessCreator refactored to be ImmutableOwnable --- contracts/misc/PermissionlessCreator.sol | 19 +++++++++---------- test/misc/PermissionlessCreatorTest.t.sol | 18 ++++++++++-------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/contracts/misc/PermissionlessCreator.sol b/contracts/misc/PermissionlessCreator.sol index bb765a8..3a4fa45 100644 --- a/contracts/misc/PermissionlessCreator.sol +++ b/contracts/misc/PermissionlessCreator.sol @@ -4,20 +4,19 @@ pragma solidity ^0.8.15; import {ILensHub} from 'contracts/interfaces/ILensHub.sol'; import {Types} from 'contracts/libraries/constants/Types.sol'; -import {Ownable} from '@openzeppelin/contracts/access/Ownable.sol'; import {ILensHandles} from 'contracts/interfaces/ILensHandles.sol'; import {ITokenHandleRegistry} from 'contracts/interfaces/ITokenHandleRegistry.sol'; +import {ImmutableOwnable} from 'contracts/misc/ImmutableOwnable.sol'; /** * @title PermissonlessCreator * @author Lens Protocol * @notice This is an ownable public proxy contract which is open for all. */ -contract PermissionlessCreator is Ownable { +contract PermissionlessCreator is ImmutableOwnable { ILensHandles public immutable LENS_HANDLES; ITokenHandleRegistry public immutable TOKEN_HANDLE_REGISTRY; - address immutable LENS_HUB; uint128 private _profileCreationCost = 5 ether; // TODO: GAS: Make it constant, remove setter and set through upgrade? uint128 private _handleCreationCost = 5 ether; // TODO: GAS: Make it constant, remove setter and set through upgrade? @@ -53,14 +52,14 @@ contract PermissionlessCreator is Ownable { event ProfileCreatedUsingCredits(uint256 indexed profileId, address indexed creator); event HandleCreatedUsingCredits(uint256 indexed handleId, string indexed handle, address indexed creator); - constructor(address owner, address hub, address lensHandles, address tokenHandleRegistry) { - _transferOwnership(owner); - LENS_HUB = hub; + constructor( + address owner, + address lensHub, + address lensHandles, + address tokenHandleRegistry + ) ImmutableOwnable(owner, lensHub) { LENS_HANDLES = ILensHandles(lensHandles); TOKEN_HANDLE_REGISTRY = ITokenHandleRegistry(tokenHandleRegistry); - emit ProfileCreationPriceChanged(_profileCreationCost); - emit HandleCreationPriceChanged(_handleCreationCost); - emit HandleLengthMinChanged(_handleLengthMin); } /////////////////////////// Permissionless payable creation functions ////////////////////////////////////////////// @@ -263,7 +262,7 @@ contract PermissionlessCreator is Ownable { // Owner functions function withdrawFunds() external onlyOwner { - payable(owner()).transfer(address(this).balance); + payable(OWNER).transfer(address(this).balance); } function addCreditProvider(address creditProvider) external onlyOwner { diff --git a/test/misc/PermissionlessCreatorTest.t.sol b/test/misc/PermissionlessCreatorTest.t.sol index 99f1a94..ebd7b35 100644 --- a/test/misc/PermissionlessCreatorTest.t.sol +++ b/test/misc/PermissionlessCreatorTest.t.sol @@ -6,6 +6,8 @@ import {PermissionlessCreator} from 'contracts/misc/PermissionlessCreator.sol'; import {Types} from 'contracts/libraries/constants/Types.sol'; abstract contract PermissionlessCreatorTestBase is BaseTest { + error OnlyOwner(); + using stdJson for string; PermissionlessCreator permissionlessCreator; @@ -19,7 +21,7 @@ abstract contract PermissionlessCreatorTestBase is BaseTest { permissionlessCreator = PermissionlessCreator( json.readAddress(string(abi.encodePacked('.', forkEnv, '.PermissionlessCreator'))) ); - permissionlessCreatorOwner = permissionlessCreator.owner(); + permissionlessCreatorOwner = permissionlessCreator.OWNER(); } else { console.log('PermissionlessCreator key does not exist'); if (forkVersion == 1) { @@ -797,7 +799,7 @@ contract PermissionlessCreatorTest_Credits is PermissionlessCreatorTestBase { vm.assume(notOwner != permissionlessCreatorOwner); vm.assume(notOwner != address(0)); - vm.expectRevert('Ownable: caller is not the owner'); + vm.expectRevert(OnlyOwner.selector); vm.prank(notOwner); permissionlessCreator.withdrawFunds(); } @@ -807,7 +809,7 @@ contract PermissionlessCreatorTest_Credits is PermissionlessCreatorTestBase { vm.assume(notOwner != address(0)); vm.assume(newCreditProvider != address(0)); - vm.expectRevert('Ownable: caller is not the owner'); + vm.expectRevert(OnlyOwner.selector); vm.prank(notOwner); permissionlessCreator.addCreditProvider(newCreditProvider); } @@ -820,7 +822,7 @@ contract PermissionlessCreatorTest_Credits is PermissionlessCreatorTestBase { vm.prank(permissionlessCreatorOwner); permissionlessCreator.addCreditProvider(existingCreditProvider); - vm.expectRevert('Ownable: caller is not the owner'); + vm.expectRevert(OnlyOwner.selector); vm.prank(notOwner); permissionlessCreator.removeCreditProvider(existingCreditProvider); @@ -831,7 +833,7 @@ contract PermissionlessCreatorTest_Credits is PermissionlessCreatorTestBase { vm.assume(notOwner != permissionlessCreatorOwner); vm.assume(notOwner != address(0)); - vm.expectRevert('Ownable: caller is not the owner'); + vm.expectRevert(OnlyOwner.selector); vm.prank(notOwner); permissionlessCreator.setProfileCreationPrice(newPrice); } @@ -840,7 +842,7 @@ contract PermissionlessCreatorTest_Credits is PermissionlessCreatorTestBase { vm.assume(notOwner != permissionlessCreatorOwner); vm.assume(notOwner != address(0)); - vm.expectRevert('Ownable: caller is not the owner'); + vm.expectRevert(OnlyOwner.selector); vm.prank(notOwner); permissionlessCreator.setHandleCreationPrice(newPrice); } @@ -849,7 +851,7 @@ contract PermissionlessCreatorTest_Credits is PermissionlessCreatorTestBase { vm.assume(notOwner != permissionlessCreatorOwner); vm.assume(notOwner != address(0)); - vm.expectRevert('Ownable: caller is not the owner'); + vm.expectRevert(OnlyOwner.selector); vm.prank(notOwner); permissionlessCreator.setHandleLengthMin(newMinLength); } @@ -859,7 +861,7 @@ contract PermissionlessCreatorTest_Credits is PermissionlessCreatorTestBase { vm.assume(notOwner != address(0)); vm.assume(targetAddress != address(0)); - vm.expectRevert('Ownable: caller is not the owner'); + vm.expectRevert(OnlyOwner.selector); vm.prank(notOwner); permissionlessCreator.setTrustRevoked(targetAddress, newStatus); }