From 8ffed4d9e7e1c0569d2d9a70f456e205c78e98b3 Mon Sep 17 00:00:00 2001 From: TuDo1403 <tudo.dev@gmail.com> Date: Thu, 16 May 2024 22:48:54 +0700 Subject: [PATCH] script: add revoke role script --- .gitignore | 2 +- .../01_Revoke_Roles.s.sol | 43 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 script/20240516-revoke-roles/01_Revoke_Roles.s.sol diff --git a/.gitignore b/.gitignore index 516242c..986bc1f 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,4 @@ yarn-error.log .yarnrc.yml script/data/* dependencies -deployments/**/exported_address \ No newline at end of file +deployments/**/exported_address diff --git a/script/20240516-revoke-roles/01_Revoke_Roles.s.sol b/script/20240516-revoke-roles/01_Revoke_Roles.s.sol new file mode 100644 index 0000000..0f00b59 --- /dev/null +++ b/script/20240516-revoke-roles/01_Revoke_Roles.s.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import { Migration } from "script/Migration.s.sol"; +import { Contract } from "script/utils/Contract.sol"; +import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; +import { ERC721 } from "@openzeppelin/contracts/token/ERC721/ERC721.sol"; +import { AccessControlEnumerable } from "@openzeppelin/contracts/access/AccessControlEnumerable.sol"; +import { LibRNSDomain } from "src/libraries/LibRNSDomain.sol"; +import { DefaultNetwork } from "foundry-deployment-kit/utils/DefaultNetwork.sol"; + +contract Migration__01_Revoke_Roles is Migration { + address duke = 0x0F68eDBE14C8f68481771016d7E2871d6a35DE11; + address multisig = 0x1FF1edE0242317b8C4229fC59E64DD93952019ef; + + function run() external onlyOn(DefaultNetwork.RoninMainnet.key()) { + address[] memory contracts = new address[](5); + contracts[0] = loadContract(Contract.RNSDomainPrice.key()); + contracts[1] = loadContract(Contract.RONRegistrarController.key()); + contracts[2] = loadContract(Contract.NameChecker.key()); + contracts[3] = loadContract(Contract.RNSUnified.key()); + contracts[4] = loadContract(Contract.RNSAuction.key()); + + vm.startBroadcast(duke); + + Ownable(loadContract(Contract.OwnedMulticaller.key())).transferOwnership(multisig); + Ownable(loadContract(Contract.RNSReverseRegistrar.key())).transferOwnership(multisig); + // Transfer .ron domain ownership to multisig + ERC721(loadContract(Contract.RNSUnified.key())).transferFrom(duke, multisig, LibRNSDomain.RON_ID); + + for (uint256 i; i < contracts.length; i++) { + AccessControlEnumerable(contracts[i]).grantRole(0x0, multisig); + AccessControlEnumerable(contracts[i]).renounceRole(0x0, duke); + + assertTrue( + AccessControlEnumerable(contracts[i]).getRoleMemberCount(0x0) > 0, + string.concat("Role is empty", "contract: ", vm.toString(contracts[i])) + ); + } + + vm.stopBroadcast(); + } +}