From aee42215ef57cde57f91c6f01104d948b056cddd Mon Sep 17 00:00:00 2001 From: TuDo1403 Date: Mon, 18 Dec 2023 16:25:16 +0700 Subject: [PATCH 1/7] forge install: foundry-deployment-kit 3c183cd01cff1fcdb199612d5506762c708dadfa --- lib/foundry-deployment-kit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/foundry-deployment-kit b/lib/foundry-deployment-kit index 6e09174f..3c183cd0 160000 --- a/lib/foundry-deployment-kit +++ b/lib/foundry-deployment-kit @@ -1 +1 @@ -Subproject commit 6e09174fc651780ec1225b37d614a0297bd7de30 +Subproject commit 3c183cd01cff1fcdb199612d5506762c708dadfa From 4154dcd8d9d03f0eb44be5964fe95e25f35c1196 Mon Sep 17 00:00:00 2001 From: TuDo1403 Date: Mon, 18 Dec 2023 16:54:11 +0700 Subject: [PATCH 2/7] forge install: contract-libs f177e3b4a498ec15ca1ca58d1a514f8b54c3f95a --- .gitmodules | 3 +++ lib/contract-libs | 1 + 2 files changed, 4 insertions(+) create mode 160000 lib/contract-libs diff --git a/.gitmodules b/.gitmodules index 979511db..c9a4b0a3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -22,3 +22,6 @@ [submodule "lib/foundry-deployment-kit"] path = lib/foundry-deployment-kit url = https://github.com/axieinfinity/foundry-deployment-kit +[submodule "lib/contract-libs"] + path = lib/contract-libs + url = https://github.com/axieinfinity/contract-libs diff --git a/lib/contract-libs b/lib/contract-libs new file mode 160000 index 00000000..f177e3b4 --- /dev/null +++ b/lib/contract-libs @@ -0,0 +1 @@ +Subproject commit f177e3b4a498ec15ca1ca58d1a514f8b54c3f95a From 40d7d4a21d62920213fa4d6df9326b68f6409f20 Mon Sep 17 00:00:00 2001 From: TuDo1403 Date: Mon, 18 Dec 2023 17:37:14 +0700 Subject: [PATCH 3/7] feat: migrate all migrations script to new foundry-deployment-kit version --- debug.sh | 40 +----- script/20231015-deploy/20231015_Deploy.s.sol | 45 ++++--- .../20231020_RNSUpgrade.s.sol | 10 +- ...0231021_UpgradeDomainPriceAndAuction.s.sol | 12 +- .../20231024_UpgradeAuction.s.sol | 10 +- .../20231024_Config.s.sol | 23 ++-- .../20231024_UpgradeDomainPrice.s.sol | 20 +-- .../20231024_UpgradeRNSUnified.s.sol | 10 +- .../20231025_UpgradeController.s.sol | 10 +- .../20231106_RevertRenewalFees.s.sol | 14 +- .../20231106_SubmitReservedNames.s.sol | 35 +++-- .../20231106_TransferOwnership.s.sol | 36 +++--- .../20231106_Deploy.s.sol | 46 ++++--- .../20231114_DeployNameCheckerLogic.s.sol | 17 ++- .../2021115_MigrateInvalidAuctionNames.s.sol | 14 +- ...123_UpgradeAuctionClaimUnbiddedNames.s.sol | 14 +- .../20231124_DeployRNSOperation.s.sol | 16 ++- .../20231205_MainnetConfig.s.sol | 18 ++- ...gradeRNSAuctionAndDeployRNSOperation.s.sol | 44 ++++--- script/Debug.s.sol | 18 --- script/GeneralConfig.sol | 25 ++++ script/Migration.s.sol | 96 ++++++++++++++ script/RNSDeploy.s.sol | 122 ------------------ script/contracts/NameCheckerDeploy.s.sol | 14 +- script/contracts/OwnedMulticallerDeploy.s.sol | 12 +- script/contracts/PublicResolverDeploy.s.sol | 18 +-- script/contracts/RNSAuctionDeploy.s.sol | 24 ++-- script/contracts/RNSDomainPriceDeploy.s.sol | 32 ++--- script/contracts/RNSOperationDeploy.s.sol | 18 +-- .../contracts/RNSReverseRegistrarDeploy.s.sol | 18 +-- script/contracts/RNSUnifiedDeploy.s.sol | 14 +- .../RONRegistrarControllerDeploy.s.sol | 42 +++--- script/interfaces/ISharedArgument.sol | 37 ++++++ script/utils/Contract.sol | 36 ++++++ test/RNSUnified/RNSUnified.t.sol | 8 +- upload-sig.sh | 12 +- 36 files changed, 512 insertions(+), 468 deletions(-) delete mode 100644 script/Debug.s.sol create mode 100644 script/GeneralConfig.sol create mode 100644 script/Migration.s.sol delete mode 100644 script/RNSDeploy.s.sol create mode 100644 script/interfaces/ISharedArgument.sol create mode 100644 script/utils/Contract.sol diff --git a/debug.sh b/debug.sh index 61ff1ba0..fb3f8f8e 100755 --- a/debug.sh +++ b/debug.sh @@ -1,39 +1 @@ -# Source (or "dot") the .env file to load environment variables -if [ -f .env ]; then - source .debug.env -else - echo "Error: .debug.env file not found." -fi - -verify_arg="" -extra_argument="" -op_command="" - -for arg in "$@"; do - case $arg in - --trezor) - op_command="" - extra_argument+=trezor@ - ;; - --broadcast) - op_command="op run --env-file="./.env" --" - ;; - --log) - set -- "${@/#--log/}" - extra_argument+=log@ - ;; - *) ;; - esac -done - -# Remove the @ character from the end of extra_argument -extra_argument="${extra_argument%%@}" - -echo Debug Tx... -echo From: ${FROM} -echo To: ${TO} -echo Value: ${VALUE} -echo Calldata: -cast pretty-calldata ${CALLDATA} -calldata=$(cast calldata 'debug(uint256,address,address,uint256,bytes)' ${BLOCK} ${FROM} ${TO} ${VALUE} ${CALLDATA}) -${op_command} forge script ${verify_arg} --legacy ${@} script/Debug.s.sol --sig 'run(bytes,string)' ${calldata} "${extra_argument}" +source lib/foundry-deployment-kit/debug.sh \ No newline at end of file diff --git a/script/20231015-deploy/20231015_Deploy.s.sol b/script/20231015-deploy/20231015_Deploy.s.sol index ec2307e9..f28cfb6c 100644 --- a/script/20231015-deploy/20231015_Deploy.s.sol +++ b/script/20231015-deploy/20231015_Deploy.s.sol @@ -1,12 +1,12 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { console2 } from "forge-std/console2.sol"; +import { console2 as console } from "forge-std/console2.sol"; import { StdStyle } from "forge-std/StdStyle.sol"; import { Math } from "@openzeppelin/contracts/utils/math/Math.sol"; import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; import { LibRNSDomain } from "@rns-contracts/libraries/LibRNSDomain.sol"; -import { ContractKey } from "foundry-deployment-kit/configs/ContractConfig.sol"; +import { Contract } from "script/utils/Contract.sol"; import { RONRegistrarController, RONRegistrarControllerDeploy } from "script/contracts/RONRegistrarControllerDeploy.s.sol"; @@ -16,9 +16,10 @@ import { NameChecker, NameCheckerDeploy } from "script/contracts/NameCheckerDepl import { RNSDomainPrice, RNSDomainPriceDeploy } from "script/contracts/RNSDomainPriceDeploy.s.sol"; import { PublicResolver, PublicResolverDeploy } from "script/contracts/PublicResolverDeploy.s.sol"; import { RNSReverseRegistrar, RNSReverseRegistrarDeploy } from "script/contracts/RNSReverseRegistrarDeploy.s.sol"; -import { INSDomainPrice, RNSDeploy } from "../RNSDeploy.s.sol"; +import { DefaultNetwork, Migration } from "../Migration.s.sol"; +import { INSDomainPrice } from "script/interfaces/ISharedArgument.sol"; -contract Migration__20231015_Deploy is RNSDeploy { +contract Migration__20231015_Deploy is Migration { using Strings for *; using LibRNSDomain for string; @@ -32,7 +33,7 @@ contract Migration__20231015_Deploy is RNSDeploy { string[] internal _blacklistedWords; - function run() public trySetUp { + function run() public onlyOn(DefaultNetwork.RoninTestnet.key()) { _rns = new RNSUnifiedDeploy().run(); _auction = new RNSAuctionDeploy().run(); _nameChecker = new NameCheckerDeploy().run(); @@ -48,7 +49,6 @@ contract Migration__20231015_Deploy is RNSDeploy { } uint256[] memory packedWords = _nameChecker.packBulk(_blacklistedWords); - vm.resumeGasMetering(); vm.startBroadcast(admin); _rns.grantRole(_rns.CONTROLLER_ROLE(), address(_auction)); @@ -67,7 +67,6 @@ contract Migration__20231015_Deploy is RNSDeploy { _nameChecker.setForbiddenWords({ packedWords: packedWords, shouldForbid: true }); vm.stopBroadcast(); - vm.pauseGasMetering(); _validateAuction(); _validateController(); @@ -76,7 +75,7 @@ contract Migration__20231015_Deploy is RNSDeploy { _validateNameChecker(); _validateRNSUnified(ronId, addrReverseId); - console2.log(StdStyle.green(unicode"✅ All checks are passed")); + console.log(StdStyle.green(unicode"✅ All checks are passed")); } function _validateController() internal logFn("_validateController") { @@ -90,7 +89,7 @@ contract Migration__20231015_Deploy is RNSDeploy { _ronController.computeCommitment(domain, user.addr, duration, secret, address(_publicResolver), data, true); (, uint256 ronPrice) = _ronController.rentPrice(domain, duration); - console2.log("domain price:", ronPrice); + console.log("domain price:", ronPrice); vm.deal(user.addr, ronPrice); vm.startPrank(user.addr); @@ -103,7 +102,7 @@ contract Migration__20231015_Deploy is RNSDeploy { uint256 expectedId = uint256(string.concat(domain, ".ron").namehash()); assertEq(_rns.ownerOf(expectedId), user.addr); - console2.log(unicode"✅ Controller checks are passed"); + console.log(unicode"✅ Controller checks are passed"); } function _validateRNSUnified(uint256 ronId, uint256 addrReverseId) internal logFn("validateRNSUnified") { @@ -113,7 +112,7 @@ contract Migration__20231015_Deploy is RNSDeploy { assertTrue(_rns.hasRole(_rns.RESERVATION_ROLE(), address(_auction)), "grant reservation role failed"); assertEq(address(_ronController.getPriceOracle()), address(_domainPrice), "set price oracle failed"); - console2.log(unicode"✅ RNSUnified checks are passed"); + console.log(unicode"✅ RNSUnified checks are passed"); } function _validateReverseRegistrar() internal logFn("validateReverseRegistrar") { @@ -146,7 +145,7 @@ contract Migration__20231015_Deploy is RNSDeploy { assertTrue(_auction.reserved(id), "invalid bulkRegister"); assertEq(_rns.getRecord(id).mut.expiry, _rns.MAX_EXPIRY(), "invalid expiry time"); - console2.log(unicode"✅ Auction checks are passed"); + console.log(unicode"✅ Auction checks are passed"); } function _validateDomainPrice() internal logFn("validateDomainPrice") { @@ -191,12 +190,12 @@ contract Migration__20231015_Deploy is RNSDeploy { vm.stopPrank(); - console2.log("Tax Raio:", _domainPrice.getTaxRatio()); - console2.log("Converting 1 USD (18 decimals) to RON:", _domainPrice.convertUSDToRON(1e18)); - console2.log("Converting 1 RON to USD (18 decimals):", _domainPrice.convertRONToUSD(1 ether)); - console2.log("Converting 1m USD (18 decimals) to RON:", _domainPrice.convertUSDToRON(1e18 * 1e6)); - console2.log("Converting 1m RON to USD (18 decimals):", _domainPrice.convertRONToUSD(1 ether * 1e6)); - console2.log(unicode"✅ Domain price checks are passed"); + console.log("Tax Raio:", _domainPrice.getTaxRatio()); + console.log("Converting 1 USD (18 decimals) to RON:", _domainPrice.convertUSDToRON(1e18)); + console.log("Converting 1 RON to USD (18 decimals):", _domainPrice.convertRONToUSD(1 ether)); + console.log("Converting 1m USD (18 decimals) to RON:", _domainPrice.convertUSDToRON(1e18 * 1e6)); + console.log("Converting 1m RON to USD (18 decimals):", _domainPrice.convertRONToUSD(1 ether * 1e6)); + console.log(unicode"✅ Domain price checks are passed"); } function _validateNameChecker() internal logFn("validateNameChecker") { @@ -208,9 +207,9 @@ contract Migration__20231015_Deploy is RNSDeploy { uint256 expectedMax; uint256 expectedMin = type(uint256).max; - console2.log(StdStyle.blue("Blacklisted words count"), blacklistedWords.length); - console2.log(StdStyle.blue("Word"), "RONRegistrarController::valid()", "NameChecker::forbidden()"); - console2.log(StdStyle.blue("Word Range"), string.concat("min: ", min.toString(), " ", "max: ", max.toString())); + console.log(StdStyle.blue("Blacklisted words count"), blacklistedWords.length); + console.log(StdStyle.blue("Word"), "RONRegistrarController::valid()", "NameChecker::forbidden()"); + console.log(StdStyle.blue("Word Range"), string.concat("min: ", min.toString(), " ", "max: ", max.toString())); for (uint256 i; i < blacklistedWords.length;) { word = blacklistedWords[i]; @@ -220,7 +219,7 @@ contract Migration__20231015_Deploy is RNSDeploy { forbidden = _nameChecker.forbidden(word); if (i % 50 == 0) { - console2.log(StdStyle.blue(word), valid ? unicode"✅" : unicode"❌", forbidden ? unicode"✅" : unicode"❌"); + console.log(StdStyle.blue(word), valid ? unicode"✅" : unicode"❌", forbidden ? unicode"✅" : unicode"❌"); } assertTrue(!valid); @@ -234,6 +233,6 @@ contract Migration__20231015_Deploy is RNSDeploy { assertEq(min, expectedMin); assertEq(max, expectedMax); - console2.log(unicode"✅ NameChecker checks are passed"); + console.log(unicode"✅ NameChecker checks are passed"); } } diff --git a/script/20231020-rns-upgrade/20231020_RNSUpgrade.s.sol b/script/20231020-rns-upgrade/20231020_RNSUpgrade.s.sol index 88041b89..dfc2cf95 100644 --- a/script/20231020-rns-upgrade/20231020_RNSUpgrade.s.sol +++ b/script/20231020-rns-upgrade/20231020_RNSUpgrade.s.sol @@ -1,11 +1,11 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { ContractKey } from "foundry-deployment-kit/configs/ContractConfig.sol"; -import { RNSDeploy } from "script/RNSDeploy.s.sol"; +import { Contract } from "script/utils/Contract.sol"; +import { Migration } from "script/Migration.s.sol"; -contract Migration__20231020_RNSUpgrade is RNSDeploy { - function run() public trySetUp { - _upgradeProxy(ContractKey.RNSUnified, EMPTY_ARGS); +contract Migration__20231020_RNSUpgrade is Migration { + function run() public { + _upgradeProxy(Contract.RNSUnified.key()); } } diff --git a/script/20231021-upgrade-domain-price-and-auction/20231021_UpgradeDomainPriceAndAuction.s.sol b/script/20231021-upgrade-domain-price-and-auction/20231021_UpgradeDomainPriceAndAuction.s.sol index ca410c29..76e0382c 100644 --- a/script/20231021-upgrade-domain-price-and-auction/20231021_UpgradeDomainPriceAndAuction.s.sol +++ b/script/20231021-upgrade-domain-price-and-auction/20231021_UpgradeDomainPriceAndAuction.s.sol @@ -1,12 +1,12 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { ContractKey } from "foundry-deployment-kit/configs/ContractConfig.sol"; -import { RNSDeploy } from "script/RNSDeploy.s.sol"; +import { Contract } from "script/utils/Contract.sol"; +import { Migration } from "script/Migration.s.sol"; -contract Migration__20231021_UpgradeDomainPriceAndAuction is RNSDeploy { - function run() public trySetUp { - _upgradeProxy(ContractKey.RNSAuction, EMPTY_ARGS); - _upgradeProxy(ContractKey.RNSDomainPrice, EMPTY_ARGS); +contract Migration__20231021_UpgradeDomainPriceAndAuction is Migration { + function run() public { + _upgradeProxy(Contract.RNSAuction.key()); + _upgradeProxy(Contract.RNSDomainPrice.key()); } } diff --git a/script/20231024-upgrade-auction/20231024_UpgradeAuction.s.sol b/script/20231024-upgrade-auction/20231024_UpgradeAuction.s.sol index ec80d3ea..be3c1427 100644 --- a/script/20231024-upgrade-auction/20231024_UpgradeAuction.s.sol +++ b/script/20231024-upgrade-auction/20231024_UpgradeAuction.s.sol @@ -1,11 +1,11 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { ContractKey } from "foundry-deployment-kit/configs/ContractConfig.sol"; -import { RNSDeploy } from "script/RNSDeploy.s.sol"; +import { Contract } from "script/utils/Contract.sol"; +import { Migration } from "script/Migration.s.sol"; -contract Migration__20231024_UpgradeAuction is RNSDeploy { - function run() public trySetUp { - _upgradeProxy(ContractKey.RNSAuction, EMPTY_ARGS); +contract Migration__20231024_UpgradeAuction is Migration { + function run() public { + _upgradeProxy(Contract.RNSAuction.key()); } } diff --git a/script/20231024-upgrade-domain-price/20231024_Config.s.sol b/script/20231024-upgrade-domain-price/20231024_Config.s.sol index 51ef33f6..4f53b1f0 100644 --- a/script/20231024-upgrade-domain-price/20231024_Config.s.sol +++ b/script/20231024-upgrade-domain-price/20231024_Config.s.sol @@ -1,17 +1,22 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { Network, RNSDeploy } from "script/RNSDeploy.s.sol"; +import { ISharedArgument, DefaultNetwork, Migration } from "script/Migration.s.sol"; -abstract contract Config__20231024 is RNSDeploy { - function _buildMigrationConfig() internal view virtual override returns (Config memory config) { - config = super._buildMigrationConfig(); - if (_network == Network.RoninTestnet) { - config.overrider = config.operator; - } else if (_network == Network.RoninMainnet) { - revert("Missing config"); +abstract contract Config__20231024 is Migration { + function _sharedArguments() internal view virtual override returns (bytes memory rawArgs) { + rawArgs = super._sharedArguments(); + + ISharedArgument.SharedParameter memory param = abi.decode(rawArgs, (ISharedArgument.SharedParameter)); + + if (network() == DefaultNetwork.RoninTestnet.key()) { + param.overrider = param.operator; + } else if (network() == DefaultNetwork.RoninMainnet.key()) { + revert("Missing param"); } else { - revert("Missing config"); + revert("Missing param"); } + + rawArgs = abi.encode(param); } } diff --git a/script/20231024-upgrade-domain-price/20231024_UpgradeDomainPrice.s.sol b/script/20231024-upgrade-domain-price/20231024_UpgradeDomainPrice.s.sol index 030a984e..e8076204 100644 --- a/script/20231024-upgrade-domain-price/20231024_UpgradeDomainPrice.s.sol +++ b/script/20231024-upgrade-domain-price/20231024_UpgradeDomainPrice.s.sol @@ -1,23 +1,23 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { console2 } from "forge-std/console2.sol"; -import { ContractKey } from "foundry-deployment-kit/configs/ContractConfig.sol"; +import { console2 as console } from "forge-std/console2.sol"; +import { Contract } from "script/utils/Contract.sol"; import { RNSDomainPrice } from "@rns-contracts/RNSDomainPrice.sol"; -import { Config__20231024 } from "./20231024_Config.s.sol"; +import { ISharedArgument, Config__20231024 } from "./20231024_Config.s.sol"; contract Migration__20231024_UpgradeDomainPrice is Config__20231024 { - function run() public trySetUp { - Config memory config = getConfig(); - _upgradeProxy(ContractKey.RNSDomainPrice, EMPTY_ARGS); + function run() public { + ISharedArgument.SharedParameter memory param = config.sharedArguments(); + _upgradeProxy(Contract.RNSDomainPrice.key()); - console2.log("operator", config.operator); - console2.log("overrider", config.overrider); + console.log("operator", param.operator); + console.log("overrider", param.overrider); - RNSDomainPrice domainPrice = RNSDomainPrice(_config.getAddressFromCurrentNetwork(ContractKey.RNSDomainPrice)); + RNSDomainPrice domainPrice = RNSDomainPrice(config.getAddressFromCurrentNetwork(Contract.RNSDomainPrice.key())); address admin = domainPrice.getRoleMember(0x00, 0); bytes32 overriderRole = domainPrice.OVERRIDER_ROLE(); vm.broadcast(admin); - domainPrice.grantRole(overriderRole, config.overrider); + domainPrice.grantRole(overriderRole, param.overrider); } } diff --git a/script/20231024-upgrade-rns-unified/20231024_UpgradeRNSUnified.s.sol b/script/20231024-upgrade-rns-unified/20231024_UpgradeRNSUnified.s.sol index 2f467a8a..581a11b1 100644 --- a/script/20231024-upgrade-rns-unified/20231024_UpgradeRNSUnified.s.sol +++ b/script/20231024-upgrade-rns-unified/20231024_UpgradeRNSUnified.s.sol @@ -1,11 +1,11 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { ContractKey } from "foundry-deployment-kit/configs/ContractConfig.sol"; -import { RNSDeploy } from "script/RNSDeploy.s.sol"; +import { Contract } from "script/utils/Contract.sol"; +import { Migration } from "script/Migration.s.sol"; -contract Migration__20231024_UpgradeRNSUnified is RNSDeploy { - function run() public trySetUp { - _upgradeProxy(ContractKey.RNSUnified, EMPTY_ARGS); +contract Migration__20231024_UpgradeRNSUnified is Migration { + function run() public { + _upgradeProxy(Contract.RNSUnified.key()); } } diff --git a/script/20231025-upgrade-controller/20231025_UpgradeController.s.sol b/script/20231025-upgrade-controller/20231025_UpgradeController.s.sol index e04f5ef5..5bb90197 100644 --- a/script/20231025-upgrade-controller/20231025_UpgradeController.s.sol +++ b/script/20231025-upgrade-controller/20231025_UpgradeController.s.sol @@ -1,11 +1,11 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { ContractKey } from "foundry-deployment-kit/configs/ContractConfig.sol"; -import { RNSDeploy } from "script/RNSDeploy.s.sol"; +import { Contract } from "script/utils/Contract.sol"; +import { Migration } from "script/Migration.s.sol"; -contract Migration__20231025_UpgradeController is RNSDeploy { - function run() public trySetUp { - _upgradeProxy(ContractKey.RONRegistrarController, EMPTY_ARGS); +contract Migration__20231025_UpgradeController is Migration { + function run() public { + _upgradeProxy(Contract.RONRegistrarController.key()); } } diff --git a/script/20231106-config-prelaunch/20231106_RevertRenewalFees.s.sol b/script/20231106-config-prelaunch/20231106_RevertRenewalFees.s.sol index e0fa16e1..902e672d 100644 --- a/script/20231106-config-prelaunch/20231106_RevertRenewalFees.s.sol +++ b/script/20231106-config-prelaunch/20231106_RevertRenewalFees.s.sol @@ -1,18 +1,16 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { ContractKey } from "foundry-deployment-kit/configs/ContractConfig.sol"; -import { RNSDeploy } from "script/RNSDeploy.s.sol"; +import { Contract } from "script/utils/Contract.sol"; +import { ISharedArgument, Migration } from "script/Migration.s.sol"; import { RNSDomainPrice } from "@rns-contracts/RNSDomainPrice.sol"; -contract Migration__20231106_RevertRenewalFees is RNSDeploy { +contract Migration__20231106_RevertRenewalFees is Migration { function run() public { - RNSDomainPrice domainPrice = RNSDomainPrice(_config.getAddressFromCurrentNetwork(ContractKey.RNSDomainPrice)); + RNSDomainPrice domainPrice = RNSDomainPrice(config.getAddressFromCurrentNetwork(Contract.RNSDomainPrice.key())); - Config memory config = getConfig(); + ISharedArgument.SharedParameter memory param = config.sharedArguments(); vm.broadcast(domainPrice.getRoleMember(domainPrice.DEFAULT_ADMIN_ROLE(), 0)); - vm.resumeGasMetering(); - domainPrice.setRenewalFeeByLengths(config.renewalFees); - vm.pauseGasMetering(); + domainPrice.setRenewalFeeByLengths(param.renewalFees); } } diff --git a/script/20231106-config-prelaunch/20231106_SubmitReservedNames.s.sol b/script/20231106-config-prelaunch/20231106_SubmitReservedNames.s.sol index 818e76f1..90155f51 100644 --- a/script/20231106-config-prelaunch/20231106_SubmitReservedNames.s.sol +++ b/script/20231106-config-prelaunch/20231106_SubmitReservedNames.s.sol @@ -1,34 +1,33 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { console2 } from "forge-std/console2.sol"; -import { ContractKey } from "foundry-deployment-kit/configs/ContractConfig.sol"; +import { console2 as console } from "forge-std/console2.sol"; +import { Contract } from "script/utils/Contract.sol"; import { JSONParserLib } from "solady/utils/JSONParserLib.sol"; -import { RNSDeploy } from "script/RNSDeploy.s.sol"; +import { Migration } from "script/Migration.s.sol"; import { LibRNSDomain, RNSUnified } from "@rns-contracts/RNSUnified.sol"; import { OwnedMulticaller, OwnedMulticallerDeploy } from "script/contracts/OwnedMulticallerDeploy.s.sol"; -contract Migration__20231106_SubmitReservedNames is RNSDeploy { +contract Migration__20231106_SubmitReservedNames is Migration { using JSONParserLib for *; - function run() public trySetUp { + function run() public { // default duration is 1 year uint64 duration = uint64(365 days); - RNSUnified rns = RNSUnified(_config.getAddressFromCurrentNetwork(ContractKey.RNSUnified)); - address resolver = _config.getAddressFromCurrentNetwork(ContractKey.PublicResolver); - OwnedMulticaller multicall = OwnedMulticaller(_config.getAddressFromCurrentNetwork(ContractKey.OwnedMulticaller)); + RNSUnified rns = RNSUnified(config.getAddressFromCurrentNetwork(Contract.RNSUnified.key())); + address resolver = config.getAddressFromCurrentNetwork(Contract.PublicResolver.key()); + OwnedMulticaller multicall = OwnedMulticaller(config.getAddressFromCurrentNetwork(Contract.OwnedMulticaller.key())); - console2.log(_config.getAddressFromCurrentNetwork(ContractKey.OwnedMulticaller)); + console.log(config.getAddressFromCurrentNetwork(Contract.OwnedMulticaller.key())); // vm.broadcast(rns.ownerOf(LibRNSDomain.RON_ID)); - // vm.resumeGasMetering(); + // // rns.setApprovalForAll(address(multicall), true); - // vm.pauseGasMetering(); - + // address[] memory tos; string[] memory labels; - (tos, labels) = _parseData("./script/20231106-config-prelaunch/data/finalReservedNames.json"); + (tos, labels) = _parseData("./script/20231106-param-prelaunch/data/finalReservedNames.json"); mintBatch(multicall, duration, rns, resolver, tos, labels); } @@ -40,17 +39,15 @@ contract Migration__20231106_SubmitReservedNames is RNSDeploy { address[] memory tos, string[] memory labels ) public { - vm.broadcast(_config.getSender()); - vm.resumeGasMetering(); + vm.broadcast(config.getSender()); multicall.multiMint(rns, LibRNSDomain.RON_ID, resolver, duration, tos, labels); - vm.pauseGasMetering(); } function _parseData(string memory path) internal view returns (address[] memory tos, string[] memory labels) { string memory raw = vm.readFile(path); JSONParserLib.Item memory reservedNames = raw.parse().at('"reservedNames"'); uint256 length = reservedNames.size(); - console2.log("length", length); + console.log("length", length); tos = new address[](length); labels = new string[](length); @@ -59,8 +56,8 @@ contract Migration__20231106_SubmitReservedNames is RNSDeploy { tos[i] = vm.parseAddress(reservedNames.at(i).at('"address"').value().decodeString()); labels[i] = reservedNames.at(i).at('"label"').value().decodeString(); - console2.log("tos:", i, tos[i]); - console2.log("labels:", i, labels[i]); + console.log("tos:", i, tos[i]); + console.log("labels:", i, labels[i]); } } } diff --git a/script/20231106-config-prelaunch/20231106_TransferOwnership.s.sol b/script/20231106-config-prelaunch/20231106_TransferOwnership.s.sol index d6341d03..9e8c5d19 100644 --- a/script/20231106-config-prelaunch/20231106_TransferOwnership.s.sol +++ b/script/20231106-config-prelaunch/20231106_TransferOwnership.s.sol @@ -1,33 +1,33 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { ContractKey } from "foundry-deployment-kit/configs/ContractConfig.sol"; -import { console2 } from "forge-std/console2.sol"; -import { RNSDeploy } from "script/RNSDeploy.s.sol"; +import { Contract } from "script/utils/Contract.sol"; +import { console2 as console } from "forge-std/console2.sol"; +import { Migration } from "script/Migration.s.sol"; import { RNSUnified } from "@rns-contracts/RNSUnified.sol"; import { OwnedMulticallerDeploy } from "script/contracts/OwnedMulticallerDeploy.s.sol"; import { OwnedMulticaller } from "@rns-contracts/utils/OwnedMulticaller.sol"; import { LibRNSDomain } from "@rns-contracts/libraries/LibRNSDomain.sol"; -contract Migration__20231106_TransferOwnership is RNSDeploy { +contract Migration__20231106_TransferOwnership is Migration { function _injectDependencies() internal virtual override { - _setDependencyDeployScript(ContractKey.OwnedMulticaller, new OwnedMulticallerDeploy()); + _setDependencyDeployScript(Contract.OwnedMulticaller.key(), new OwnedMulticallerDeploy()); } - function run() public trySetUp { + function run() public { // fill in original owner - address originalOwner = _config.getSender(); + address originalOwner = config.getSender(); - RNSUnified rns = RNSUnified(_config.getAddressFromCurrentNetwork(ContractKey.RNSUnified)); - OwnedMulticaller multicall = OwnedMulticaller(loadContractOrDeploy(ContractKey.OwnedMulticaller)); - address auction = _config.getAddressFromCurrentNetwork(ContractKey.RNSAuction); - address ronController = _config.getAddressFromCurrentNetwork(ContractKey.RONRegistrarController); - address reverseRegistrar = _config.getAddressFromCurrentNetwork(ContractKey.RNSReverseRegistrar); + RNSUnified rns = RNSUnified(config.getAddressFromCurrentNetwork(Contract.RNSUnified.key())); + OwnedMulticaller multicall = OwnedMulticaller(loadContractOrDeploy(Contract.OwnedMulticaller.key())); + address auction = config.getAddressFromCurrentNetwork(Contract.RNSAuction.key()); + address ronController = config.getAddressFromCurrentNetwork(Contract.RONRegistrarController.key()); + address reverseRegistrar = config.getAddressFromCurrentNetwork(Contract.RNSReverseRegistrar.key()); uint256 reverseId = uint256(LibRNSDomain.namehash("reverse")); - console2.log("reverseId", reverseId); + console.log("reverseId", reverseId); uint256 addrReverseId = uint256(LibRNSDomain.namehash("addr.reverse")); - console2.log("reverse.addr id", addrReverseId); + console.log("reverse.addr id", addrReverseId); address currentOwner = rns.ownerOf(LibRNSDomain.RON_ID); assertEq(currentOwner, rns.ownerOf(reverseId), "currentOwner != rns.ownerOf(reverseId)"); @@ -36,9 +36,7 @@ contract Migration__20231106_TransferOwnership is RNSDeploy { if (!rns.isApprovedForAll(currentOwner, address(multicall))) { // approve for owned-multicall contract vm.broadcast(currentOwner); - vm.resumeGasMetering(); rns.setApprovalForAll(address(multicall), true); - vm.pauseGasMetering(); } uint256[] memory values = new uint256[](3); @@ -53,17 +51,15 @@ contract Migration__20231106_TransferOwnership is RNSDeploy { callDatas[2] = abi.encodeCall(rns.transferFrom, (currentOwner, originalOwner, LibRNSDomain.RON_ID)); vm.broadcast(multicall.owner()); - vm.resumeGasMetering(); multicall.multicall(targets, callDatas, values); - vm.pauseGasMetering(); vm.startBroadcast(originalOwner); - vm.resumeGasMetering(); + rns.setApprovalForAll(address(auction), true); rns.setApprovalForAll(address(ronController), true); rns.approve(address(reverseRegistrar), addrReverseId); + vm.stopBroadcast(); - vm.pauseGasMetering(); assertTrue( rns.isApprovedForAll(originalOwner, address(auction)), "!rns.isApprovedForAll(originalOwner, address(auction))" diff --git a/script/20231106-deploy-mainnet/20231106_Deploy.s.sol b/script/20231106-deploy-mainnet/20231106_Deploy.s.sol index 8267aff5..7c7d2210 100644 --- a/script/20231106-deploy-mainnet/20231106_Deploy.s.sol +++ b/script/20231106-deploy-mainnet/20231106_Deploy.s.sol @@ -1,12 +1,12 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { console2 } from "forge-std/console2.sol"; +import { console2 as console } from "forge-std/console2.sol"; import { StdStyle } from "forge-std/StdStyle.sol"; import { Math } from "@openzeppelin/contracts/utils/math/Math.sol"; import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; import { LibRNSDomain } from "@rns-contracts/libraries/LibRNSDomain.sol"; -import { ContractKey } from "foundry-deployment-kit/configs/ContractConfig.sol"; +import { Contract } from "script/utils/Contract.sol"; import { RONRegistrarController, RONRegistrarControllerDeploy } from "script/contracts/RONRegistrarControllerDeploy.s.sol"; @@ -16,9 +16,10 @@ import { NameChecker, NameCheckerDeploy } from "script/contracts/NameCheckerDepl import { RNSDomainPrice, RNSDomainPriceDeploy } from "script/contracts/RNSDomainPriceDeploy.s.sol"; import { PublicResolver, PublicResolverDeploy } from "script/contracts/PublicResolverDeploy.s.sol"; import { RNSReverseRegistrar, RNSReverseRegistrarDeploy } from "script/contracts/RNSReverseRegistrarDeploy.s.sol"; -import { INSDomainPrice, RNSDeploy } from "../RNSDeploy.s.sol"; +import { ISharedArgument, DefaultNetwork, Migration } from "../Migration.s.sol"; +import { INSDomainPrice } from "script/interfaces/ISharedArgument.sol"; -contract Migration__20231106_Deploy is RNSDeploy { +contract Migration__20231106_Deploy is Migration { using Strings for *; using LibRNSDomain for string; @@ -32,7 +33,7 @@ contract Migration__20231106_Deploy is RNSDeploy { string[] internal _blacklistedWords; - function run() public trySetUp { + function run() public onlyOn(DefaultNetwork.RoninMainnet.key()) { _rns = new RNSUnifiedDeploy().run(); _auction = new RNSAuctionDeploy().run(); _nameChecker = new NameCheckerDeploy().run(); @@ -43,8 +44,6 @@ contract Migration__20231106_Deploy is RNSDeploy { address admin = _rns.getRoleMember(_rns.DEFAULT_ADMIN_ROLE(), 0); - Config memory config = getConfig(); - vm.resumeGasMetering(); vm.startBroadcast(admin); _rns.grantRole(_rns.CONTROLLER_ROLE(), address(_auction)); @@ -62,13 +61,12 @@ contract Migration__20231106_Deploy is RNSDeploy { _reverseRegistrar.setDefaultResolver(_publicResolver); vm.stopBroadcast(); - vm.pauseGasMetering(); _validateController(); _validateReverseRegistrar(); _validateRNSUnified(ronId, addrReverseId); - console2.log(StdStyle.green(unicode"✅ All checks are passed")); + console.log(StdStyle.green(unicode"✅ All checks are passed")); } function _validateController() internal logFn("_validateController") { @@ -82,7 +80,7 @@ contract Migration__20231106_Deploy is RNSDeploy { _ronController.computeCommitment(domain, user.addr, duration, secret, address(_publicResolver), data, true); (, uint256 ronPrice) = _ronController.rentPrice(domain, duration); - console2.log("domain price:", ronPrice); + console.log("domain price:", ronPrice); vm.deal(user.addr, ronPrice); vm.startPrank(user.addr); @@ -95,7 +93,7 @@ contract Migration__20231106_Deploy is RNSDeploy { uint256 expectedId = uint256(string.concat(domain, ".ron").namehash()); assertEq(_rns.ownerOf(expectedId), user.addr); - console2.log(unicode"✅ Controller checks are passed"); + console.log(unicode"✅ Controller checks are passed"); } function _validateRNSUnified(uint256 ronId, uint256 addrReverseId) internal logFn("validateRNSUnified") { @@ -105,7 +103,7 @@ contract Migration__20231106_Deploy is RNSDeploy { assertTrue(_rns.hasRole(_rns.RESERVATION_ROLE(), address(_auction)), "grant reservation role failed"); assertEq(address(_ronController.getPriceOracle()), address(_domainPrice), "set price oracle failed"); - console2.log(unicode"✅ RNSUnified checks are passed"); + console.log(unicode"✅ RNSUnified checks are passed"); } function _validateReverseRegistrar() internal logFn("validateReverseRegistrar") { @@ -138,7 +136,7 @@ contract Migration__20231106_Deploy is RNSDeploy { assertTrue(_auction.reserved(id), "invalid bulkRegister"); assertEq(_rns.getRecord(id).mut.expiry, _rns.MAX_EXPIRY(), "invalid expiry time"); - console2.log(unicode"✅ Auction checks are passed"); + console.log(unicode"✅ Auction checks are passed"); } function _validateDomainPrice() internal logFn("validateDomainPrice") { @@ -174,12 +172,12 @@ contract Migration__20231106_Deploy is RNSDeploy { vm.stopPrank(); - console2.log("Tax Raio:", _domainPrice.getTaxRatio()); - console2.log("Converting 1 USD (18 decimals) to RON:", _domainPrice.convertUSDToRON(1e18)); - console2.log("Converting 1 RON to USD (18 decimals):", _domainPrice.convertRONToUSD(1 ether)); - console2.log("Converting 1m USD (18 decimals) to RON:", _domainPrice.convertUSDToRON(1e18 * 1e6)); - console2.log("Converting 1m RON to USD (18 decimals):", _domainPrice.convertRONToUSD(1 ether * 1e6)); - console2.log(unicode"✅ Domain price checks are passed"); + console.log("Tax Raio:", _domainPrice.getTaxRatio()); + console.log("Converting 1 USD (18 decimals) to RON:", _domainPrice.convertUSDToRON(1e18)); + console.log("Converting 1 RON to USD (18 decimals):", _domainPrice.convertRONToUSD(1 ether)); + console.log("Converting 1m USD (18 decimals) to RON:", _domainPrice.convertUSDToRON(1e18 * 1e6)); + console.log("Converting 1m RON to USD (18 decimals):", _domainPrice.convertRONToUSD(1 ether * 1e6)); + console.log(unicode"✅ Domain price checks are passed"); } function _validateNameChecker() internal logFn("validateNameChecker") { @@ -191,9 +189,9 @@ contract Migration__20231106_Deploy is RNSDeploy { uint256 expectedMax; uint256 expectedMin = type(uint256).max; - console2.log(StdStyle.blue("Blacklisted words count"), blacklistedWords.length); - console2.log(StdStyle.blue("Word"), "RONRegistrarController::valid()", "NameChecker::forbidden()"); - console2.log(StdStyle.blue("Word Range"), string.concat("min: ", min.toString(), " ", "max: ", max.toString())); + console.log(StdStyle.blue("Blacklisted words count"), blacklistedWords.length); + console.log(StdStyle.blue("Word"), "RONRegistrarController::valid()", "NameChecker::forbidden()"); + console.log(StdStyle.blue("Word Range"), string.concat("min: ", min.toString(), " ", "max: ", max.toString())); for (uint256 i; i < blacklistedWords.length;) { word = blacklistedWords[i]; @@ -203,7 +201,7 @@ contract Migration__20231106_Deploy is RNSDeploy { forbidden = _nameChecker.forbidden(word); if (i % 50 == 0) { - console2.log(StdStyle.blue(word), valid ? unicode"✅" : unicode"❌", forbidden ? unicode"✅" : unicode"❌"); + console.log(StdStyle.blue(word), valid ? unicode"✅" : unicode"❌", forbidden ? unicode"✅" : unicode"❌"); } assertTrue(!valid); @@ -217,6 +215,6 @@ contract Migration__20231106_Deploy is RNSDeploy { assertEq(min, expectedMin); assertEq(max, expectedMax); - console2.log(unicode"✅ NameChecker checks are passed"); + console.log(unicode"✅ NameChecker checks are passed"); } } diff --git a/script/20231114-deploy-name-checker-logic/20231114_DeployNameCheckerLogic.s.sol b/script/20231114-deploy-name-checker-logic/20231114_DeployNameCheckerLogic.s.sol index 49371793..8a386ee5 100644 --- a/script/20231114-deploy-name-checker-logic/20231114_DeployNameCheckerLogic.s.sol +++ b/script/20231114-deploy-name-checker-logic/20231114_DeployNameCheckerLogic.s.sol @@ -6,20 +6,23 @@ import { ITransparentUpgradeableProxy, TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import { LibProxy } from "foundry-deployment-kit/libraries/LibProxy.sol"; import { NameChecker } from "@rns-contracts/NameChecker.sol"; -import { ContractKey } from "foundry-deployment-kit/configs/ContractConfig.sol"; -import { RNSDeploy } from "script/RNSDeploy.s.sol"; +import { Contract } from "script/utils/Contract.sol"; +import { Migration } from "script/Migration.s.sol"; -contract Migration__20231114_DeployNameCheckerLogic is RNSDeploy { - function run() public trySetUp { - address newLogic = _deployLogic(ContractKey.NameChecker); +contract Migration__20231114_DeployNameCheckerLogic is Migration { + using LibProxy for address payable; - NameChecker currentNameChecker = NameChecker(_config.getAddressFromCurrentNetwork(ContractKey.NameChecker)); + function run() public { + address newLogic = _deployLogic(Contract.NameChecker.key()); + + NameChecker currentNameChecker = NameChecker(config.getAddressFromCurrentNetwork(Contract.NameChecker.key())); assertTrue(currentNameChecker.forbidden("hell"), "hell"); assertTrue(currentNameChecker.forbidden("hellscream"), "hellscream"); assertTrue(currentNameChecker.forbidden("hell123"), "hell123"); - address proxyAdmin = _getProxyAdmin(address(currentNameChecker)); + address proxyAdmin = LibProxy.getProxyAdmin(payable(address(currentNameChecker))); vm.prank(ProxyAdmin(proxyAdmin).owner()); ProxyAdmin(proxyAdmin).upgrade(ITransparentUpgradeableProxy(address(currentNameChecker)), newLogic); diff --git a/script/20231115-migrate-invalid-auction-names/2021115_MigrateInvalidAuctionNames.s.sol b/script/20231115-migrate-invalid-auction-names/2021115_MigrateInvalidAuctionNames.s.sol index 61b52543..a3c39ed7 100644 --- a/script/20231115-migrate-invalid-auction-names/2021115_MigrateInvalidAuctionNames.s.sol +++ b/script/20231115-migrate-invalid-auction-names/2021115_MigrateInvalidAuctionNames.s.sol @@ -1,14 +1,14 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { console2 } from "forge-std/console2.sol"; +import { console2 as console } from "forge-std/console2.sol"; import { INSAuction, EventRange, RNSAuction } from "@rns-contracts/RNSAuction.sol"; -import { ContractKey } from "foundry-deployment-kit/configs/ContractConfig.sol"; -import { RNSDeploy } from "script/RNSDeploy.s.sol"; +import { Contract } from "script/utils/Contract.sol"; +import { Migration } from "script/Migration.s.sol"; -contract Migration__20231115_MigrateInvalidAuctionNames is RNSDeploy { - function run() public trySetUp { - RNSAuction auction = RNSAuction(_config.getAddressFromCurrentNetwork(ContractKey.RNSAuction)); +contract Migration__20231115_MigrateInvalidAuctionNames is Migration { + function run() public { + RNSAuction auction = RNSAuction(config.getAddressFromCurrentNetwork(Contract.RNSAuction.key())); uint256[] memory ids = new uint256[](2); // namehash`pc.ron` @@ -22,7 +22,7 @@ contract Migration__20231115_MigrateInvalidAuctionNames is RNSDeploy { vm.broadcast(auction.getRoleMember(0x0, 0)); bytes32 auctionId = auction.createAuctionEvent(EventRange(2332515600, 2332515600 + 1 days)); - console2.logBytes32(auctionId); + console.logBytes32(auctionId); // relist ids to new auction vm.broadcast(auction.getRoleMember(auction.OPERATOR_ROLE(), 0)); diff --git a/script/20231123-upgrade-auction-claim-unbidded-names/20231123_UpgradeAuctionClaimUnbiddedNames.s.sol b/script/20231123-upgrade-auction-claim-unbidded-names/20231123_UpgradeAuctionClaimUnbiddedNames.s.sol index b972e2a9..b554747a 100644 --- a/script/20231123-upgrade-auction-claim-unbidded-names/20231123_UpgradeAuctionClaimUnbiddedNames.s.sol +++ b/script/20231123-upgrade-auction-claim-unbidded-names/20231123_UpgradeAuctionClaimUnbiddedNames.s.sol @@ -2,20 +2,20 @@ pragma solidity ^0.8.19; import { console2 as console } from "forge-std/console2.sol"; -import { ContractKey } from "foundry-deployment-kit/configs/ContractConfig.sol"; -import { RNSDeploy } from "script/RNSDeploy.s.sol"; +import { Contract } from "script/utils/Contract.sol"; +import { Migration } from "script/Migration.s.sol"; import { RNSUnified } from "@rns-contracts/RNSUnified.sol"; import { INSAuction, RNSAuction } from "@rns-contracts/RNSAuction.sol"; -contract Migration__20231123_UpgradeAuctionClaimeUnbiddedNames is RNSDeploy { - function run() public trySetUp { - _upgradeProxy(ContractKey.RNSAuction, EMPTY_ARGS); +contract Migration__20231123_UpgradeAuctionClaimeUnbiddedNames is Migration { + function run() public { + _upgradeProxy(Contract.RNSAuction.key()); _validataBulkClaimUnbiddedNames({ size: 20 }); } function _validataBulkClaimUnbiddedNames(uint256 size) internal logFn("_validataBulkClaimUnbiddedNames") { - RNSAuction auction = RNSAuction(_config.getAddressFromCurrentNetwork(ContractKey.RNSAuction)); - RNSUnified rns = RNSUnified(_config.getAddressFromCurrentNetwork(ContractKey.RNSUnified)); + RNSAuction auction = RNSAuction(config.getAddressFromCurrentNetwork(Contract.RNSAuction.key())); + RNSUnified rns = RNSUnified(config.getAddressFromCurrentNetwork(Contract.RNSUnified.key())); uint256 auctionBalance = size; console.log("auctionBalance", auctionBalance); diff --git a/script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol b/script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol index 0083078b..30fb13b9 100644 --- a/script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol +++ b/script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol @@ -3,23 +3,23 @@ pragma solidity ^0.8.19; import { Math } from "@openzeppelin/contracts/utils/math/Math.sol"; import { console2 as console } from "forge-std/console2.sol"; -import { ContractKey } from "foundry-deployment-kit/configs/ContractConfig.sol"; -import { RNSDeploy } from "script/RNSDeploy.s.sol"; +import { Contract } from "script/utils/Contract.sol"; +import { Migration } from "script/Migration.s.sol"; import { RNSUnified } from "@rns-contracts/RNSUnified.sol"; import { RNSDomainPrice } from "@rns-contracts/RNSDomainPrice.sol"; import { INSAuction, RNSAuction } from "@rns-contracts/RNSAuction.sol"; import { LibRNSDomain } from "@rns-contracts/libraries/LibRNSDomain.sol"; import { RNSOperation, RNSOperationDeploy } from "script/contracts/RNSOperationDeploy.s.sol"; -contract Migration__20231124_DeployRNSOperation is RNSDeploy { +contract Migration__20231124_DeployRNSOperation is Migration { using LibRNSDomain for string; - function run() public trySetUp { + function run() public { RNSOperation rnsOperation = new RNSOperationDeploy().run(); - RNSDomainPrice domainPrice = RNSDomainPrice(_config.getAddressFromCurrentNetwork(ContractKey.RNSDomainPrice)); - RNSUnified rns = RNSUnified(_config.getAddressFromCurrentNetwork(ContractKey.RNSUnified)); - RNSAuction auction = RNSAuction(_config.getAddressFromCurrentNetwork(ContractKey.RNSAuction)); + RNSDomainPrice domainPrice = RNSDomainPrice(config.getAddressFromCurrentNetwork(Contract.RNSDomainPrice.key())); + RNSUnified rns = RNSUnified(config.getAddressFromCurrentNetwork(Contract.RNSUnified.key())); + RNSAuction auction = RNSAuction(config.getAddressFromCurrentNetwork(Contract.RNSAuction.key())); address admin = rns.ownerOf(LibRNSDomain.RON_ID); @@ -27,10 +27,12 @@ contract Migration__20231124_DeployRNSOperation is RNSDeploy { rnsOperation.transferOwnership(admin); vm.startBroadcast(admin); + rns.setApprovalForAll(address(rnsOperation), true); auction.grantRole(auction.OPERATOR_ROLE(), address(rnsOperation)); rns.grantRole(rns.PROTECTED_SETTLER_ROLE(), address(rnsOperation)); domainPrice.grantRole(domainPrice.OVERRIDER_ROLE(), address(rnsOperation)); + vm.stopBroadcast(); _validateBulkMint(rns, rnsOperation); diff --git a/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_MainnetConfig.s.sol b/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_MainnetConfig.s.sol index 2b012834..b1845c79 100644 --- a/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_MainnetConfig.s.sol +++ b/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_MainnetConfig.s.sol @@ -1,15 +1,19 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { Network, RNSDeploy } from "script/RNSDeploy.s.sol"; +import { ISharedArgument, DefaultNetwork, Migration } from "script/Migration.s.sol"; -abstract contract Config__Mainnet20231205 is RNSDeploy { - function _buildMigrationConfig() internal view virtual override returns (Config memory config) { - config = super._buildMigrationConfig(); - if (_network == Network.RoninMainnet) { - config.rnsOperationOwner = 0x1FF1edE0242317b8C4229fC59E64DD93952019ef; +abstract contract Config__Mainnet20231205 is Migration { + function _sharedArguments() internal view virtual override returns (bytes memory rawArgs) { + rawArgs = super._sharedArguments(); + ISharedArgument.SharedParameter memory param = abi.decode(rawArgs, (ISharedArgument.SharedParameter)); + + if (network() == DefaultNetwork.RoninMainnet.key()) { + param.rnsOperationOwner = 0x1FF1edE0242317b8C4229fC59E64DD93952019ef; } else { - revert("Missing config"); + revert("Missing param"); } + + rawArgs = abi.encode(param); } } diff --git a/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol b/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol index d6851b42..75bd59b0 100644 --- a/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol +++ b/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol @@ -4,41 +4,53 @@ pragma solidity ^0.8.19; import { console2 as console } from "forge-std/console2.sol"; import { ITransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import { ProxyAdmin } from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; -import { ContractKey } from "foundry-deployment-kit/configs/ContractConfig.sol"; -import { Network, Config__Mainnet20231205 } from "script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_MainnetConfig.s.sol"; -import { INSAuction, RNSAuction, RNSUnified, Migration__20231123_UpgradeAuctionClaimeUnbiddedNames as UpgradeAuctionScript } from "script/20231123-upgrade-auction-claim-unbidded-names/20231123_UpgradeAuctionClaimUnbiddedNames.s.sol"; -import { RNSOperation, Migration__20231124_DeployRNSOperation as DeployRNSOperationScript } from "script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol"; +import { Contract } from "script/utils/Contract.sol"; +import { DefaultContract } from "foundry-deployment-kit/utils/DefaultContract.sol"; +import { ISharedArgument } from "script/interfaces/ISharedArgument.sol"; +import { + DefaultNetwork, + Config__Mainnet20231205 +} from "script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_MainnetConfig.s.sol"; +import { + INSAuction, + RNSAuction, + RNSUnified, + Migration__20231123_UpgradeAuctionClaimeUnbiddedNames as UpgradeAuctionScript +} from "script/20231123-upgrade-auction-claim-unbidded-names/20231123_UpgradeAuctionClaimUnbiddedNames.s.sol"; +import { + RNSOperation, + Migration__20231124_DeployRNSOperation as DeployRNSOperationScript +} from "script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol"; contract Migration__20231205_UpgradeRNSAuctionAndDeployRNSOperation is Config__Mainnet20231205 { - function run() public trySetUp onMainnet { - Config memory config = getConfig(); + function run() public onlyOn(DefaultNetwork.RoninMainnet.key()) { + ISharedArgument.SharedParameter memory param = config.sharedArguments(); - ProxyAdmin proxyAdmin = ProxyAdmin(_config.getAddressFromCurrentNetwork(ContractKey.ProxyAdmin)); - address rnsAuctionProxy = _config.getAddressFromCurrentNetwork(ContractKey.RNSAuction); - address logic = _deployLogic(ContractKey.RNSAuction); + ProxyAdmin proxyAdmin = ProxyAdmin(config.getAddressFromCurrentNetwork(DefaultContract.ProxyAdmin.key())); + address rnsAuctionProxy = config.getAddressFromCurrentNetwork(Contract.RNSAuction.key()); + address logic = _deployLogic(Contract.RNSAuction.key()); vm.prank(proxyAdmin.owner()); - vm.resumeGasMetering(); + ProxyAdmin(proxyAdmin).upgrade(ITransparentUpgradeableProxy(rnsAuctionProxy), logic); - vm.pauseGasMetering(); console.log("RNSAuction Logic is deployed at:", logic); _validataBulkClaimUnbiddedNames({ size: 20 }); // deploy rns operation contract new DeployRNSOperationScript().run(); - RNSOperation rnsOperation = RNSOperation(_config.getAddressFromCurrentNetwork(ContractKey.RNSOperation)); + RNSOperation rnsOperation = RNSOperation(config.getAddressFromCurrentNetwork(Contract.RNSOperation.key())); // transfer owner ship for RNSOperation vm.broadcast(rnsOperation.owner()); - rnsOperation.transferOwnership(config.rnsOperationOwner); + rnsOperation.transferOwnership(param.rnsOperationOwner); - assertTrue(rnsOperation.owner() == config.rnsOperationOwner); + assertTrue(rnsOperation.owner() == param.rnsOperationOwner); } function _validataBulkClaimUnbiddedNames(uint256 size) internal logFn("_validataBulkClaimUnbiddedNames") { - RNSAuction auction = RNSAuction(_config.getAddressFromCurrentNetwork(ContractKey.RNSAuction)); - RNSUnified rns = RNSUnified(_config.getAddressFromCurrentNetwork(ContractKey.RNSUnified)); + RNSAuction auction = RNSAuction(config.getAddressFromCurrentNetwork(Contract.RNSAuction.key())); + RNSUnified rns = RNSUnified(config.getAddressFromCurrentNetwork(Contract.RNSUnified.key())); uint256 auctionBalance = size; console.log("auctionBalance", auctionBalance); diff --git a/script/Debug.s.sol b/script/Debug.s.sol deleted file mode 100644 index 811e6082..00000000 --- a/script/Debug.s.sol +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.19; - -import { RNSDeploy } from "./RNSDeploy.s.sol"; -import { ErrorHandler } from "@rns-contracts/libraries/ErrorHandler.sol"; - -contract Debug is RNSDeploy { - using ErrorHandler for *; - - function debug(uint256 forkBlock, address from, address to, uint256 value, bytes calldata callData) external { - if (forkBlock != 0) { - vm.rollFork(forkBlock); - } - vm.prank(from); - (bool success, bytes memory returnOrRevertData) = to.call{ value: value }(callData); - success.handleRevert(returnOrRevertData); - } -} diff --git a/script/GeneralConfig.sol b/script/GeneralConfig.sol new file mode 100644 index 00000000..7a1209b0 --- /dev/null +++ b/script/GeneralConfig.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import { BaseGeneralConfig } from "foundry-deployment-kit/BaseGeneralConfig.sol"; +import { Contract } from "./utils/Contract.sol"; + +contract GeneralConfig is BaseGeneralConfig { + constructor() BaseGeneralConfig("", "deployments/") { } + + function _setUpContracts() internal virtual override { + _mapContractName(Contract.RNSUnified); + _mapContractName(Contract.RNSAuction); + _mapContractName(Contract.NameChecker); + _mapContractName(Contract.RNSOperation); + _mapContractName(Contract.RNSDomainPrice); + _mapContractName(Contract.PublicResolver); + _mapContractName(Contract.OwnedMulticaller); + _mapContractName(Contract.RNSReverseRegistrar); + _mapContractName(Contract.RONRegistrarController); + } + + function _mapContractName(Contract contractEnum) internal { + _contractNameMap[contractEnum.key()] = contractEnum.name(); + } +} diff --git a/script/Migration.s.sol b/script/Migration.s.sol new file mode 100644 index 00000000..726f084b --- /dev/null +++ b/script/Migration.s.sol @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import { BaseMigration } from "foundry-deployment-kit/BaseMigration.s.sol"; +import { DefaultNetwork } from "foundry-deployment-kit/utils/DefaultNetwork.sol"; +import { GeneralConfig } from "./GeneralConfig.sol"; +import "./interfaces/ISharedArgument.sol"; + +abstract contract Migration is BaseMigration { + ISharedArgument public constant config = ISharedArgument(address(CONFIG)); + + function _configByteCode() internal virtual override returns (bytes memory) { + return abi.encodePacked(type(GeneralConfig).creationCode); + } + + function _sharedArguments() internal view virtual override returns (bytes memory rawArgs) { + ISharedArgument.SharedParameter memory param; + + param.auctionOperators = new address[](1); + param.controllerOperators = new address[](1); + param.domainPriceOperators = new address[](1); + + if (network() == DefaultNetwork.RoninTestnet.key()) { + param.minWord = 2; + param.maxWord = 3; + param.minCommitmentAge = 10 seconds; + param.maxCommitmentAge = 1 days; + param.gracePeriod = 90 days; + + { + param.renewalFees = new INSDomainPrice.RenewalFee[](3); + param.renewalFees[0] = INSDomainPrice.RenewalFee(5, uint256(5e18) / 365 days); + param.renewalFees[1] = INSDomainPrice.RenewalFee(4, uint256(100e18) / 365 days); + param.renewalFees[2] = INSDomainPrice.RenewalFee(3, uint256(300e18) / 365 days); + } + param.bidGapRatio = 1000; // 10% + param.taxRatio = 1500; // 15% + param.maxAcceptableAge = 24 hours; + param.domainPriceScaleRule = PeriodScaler({ ratio: 500, period: 30 days * 3 }); + + param.baseTokenURI = "https://metadata-rns.skymavis.one/saigon/"; + param.admin = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; + param.pauser = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; + + param.operator = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; + param.auctionOperators[0] = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; + param.controllerOperators[0] = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; + param.domainPriceOperators[0] = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; + + param.controller = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; + param.pyth = IPyth(0xA2aa501b19aff244D90cc15a4Cf739D2725B5729); + param.protectedSettler = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; + param.treasury = payable(0x968D0Cd7343f711216817E617d3f92a23dC91c07); + param.pythIdForRONUSD = 0x4cb9d530b042004b042e165ee0904b12fe534d40dac5fe1c71dfcdb522e6e3c2; + } else if (network() == DefaultNetwork.RoninMainnet.key()) { + address temporaryDeployer = 0x0F68eDBE14C8f68481771016d7E2871d6a35DE11; + + param.minWord = 2; + param.maxWord = 3; + + param.minCommitmentAge = 10 seconds; + param.maxCommitmentAge = 1 days; + param.gracePeriod = 90 days; + + { + param.renewalFees = new INSDomainPrice.RenewalFee[](4); + param.renewalFees[0] = INSDomainPrice.RenewalFee(5, uint256(5e18) / 365 days); + param.renewalFees[1] = INSDomainPrice.RenewalFee(4, uint256(100e18) / 365 days); + param.renewalFees[2] = INSDomainPrice.RenewalFee(3, uint256(300e18) / 365 days); + param.renewalFees[3] = INSDomainPrice.RenewalFee(2, uint256(300e18) / 365 days); + } + param.bidGapRatio = 1000; // 10% + param.taxRatio = 1500; // 15% + param.maxAcceptableAge = 24 hours; + param.domainPriceScaleRule = PeriodScaler({ ratio: 500, period: 30 days * 3 }); + + param.baseTokenURI = "https://metadata-rns.roninchain.com/ronin/"; + param.admin = temporaryDeployer; + param.pauser = temporaryDeployer; + param.protectedSettler = temporaryDeployer; + + param.auctionOperators[0] = temporaryDeployer; + param.controllerOperators[0] = temporaryDeployer; + param.domainPriceOperators[0] = 0x0A9E57c71af2b1194C5f573F4bB1e45696c49213; // Harry + + param.controller = 0xEd4A9F48a62Fb6FdcfB45Bb00C9f61D1A436E58C; + param.treasury = payable(0xEd4A9F48a62Fb6FdcfB45Bb00C9f61D1A436E58C); // Andy + param.pyth = IPyth(0x2880aB155794e7179c9eE2e38200202908C17B43); // Harry + param.pythIdForRONUSD = 0x97cfe19da9153ef7d647b011c5e355142280ddb16004378573e6494e499879f3; // Harry + } else { + revert("Missing param"); + } + + rawArgs = abi.encode(param); + } +} diff --git a/script/RNSDeploy.s.sol b/script/RNSDeploy.s.sol deleted file mode 100644 index dcdbd06a..00000000 --- a/script/RNSDeploy.s.sol +++ /dev/null @@ -1,122 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.19; - -import { IPyth, INSDomainPrice, PeriodScaler } from "@rns-contracts/RNSDomainPrice.sol"; -import { BaseDeploy, Network } from "foundry-deployment-kit/BaseDeploy.s.sol"; - -abstract contract RNSDeploy is BaseDeploy { - struct Config { - IPyth pyth; - address admin; - address pauser; - address overrider; - address controller; - uint8 minWord; - uint8 maxWord; - address rnsOperationOwner; - address operator; - address[] controllerOperators; - address[] auctionOperators; - address[] domainPriceOperators; - uint256 taxRatio; - uint64 gracePeriod; - string baseTokenURI; - uint256 bidGapRatio; - address protectedSettler; - address payable treasury; - uint256 maxAcceptableAge; - bytes32 pythIdForRONUSD; - uint256 maxCommitmentAge; - uint256 minCommitmentAge; - uint256 minRegistrationDuration; - PeriodScaler domainPriceScaleRule; - INSDomainPrice.RenewalFee[] renewalFees; - } - - function _buildMigrationConfig() internal view virtual returns (Config memory config) { - config.auctionOperators = new address[](1); - config.controllerOperators = new address[](1); - config.domainPriceOperators = new address[](1); - - if (_network == Network.RoninTestnet) { - config.minWord = 2; - config.maxWord = 3; - config.minCommitmentAge = 10 seconds; - config.maxCommitmentAge = 1 days; - config.gracePeriod = 90 days; - - { - config.renewalFees = new INSDomainPrice.RenewalFee[](3); - config.renewalFees[0] = INSDomainPrice.RenewalFee(5, uint256(5e18) / 365 days); - config.renewalFees[1] = INSDomainPrice.RenewalFee(4, uint256(100e18) / 365 days); - config.renewalFees[2] = INSDomainPrice.RenewalFee(3, uint256(300e18) / 365 days); - } - config.bidGapRatio = 1000; // 10% - config.taxRatio = 1500; // 15% - config.maxAcceptableAge = 24 hours; - config.domainPriceScaleRule = PeriodScaler({ ratio: 500, period: 30 days * 3 }); - - config.baseTokenURI = "https://metadata-rns.skymavis.one/saigon/"; - config.admin = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; - config.pauser = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; - - config.operator = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; - config.auctionOperators[0] = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; - config.controllerOperators[0] = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; - config.domainPriceOperators[0] = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; - - config.controller = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; - config.pyth = IPyth(0xA2aa501b19aff244D90cc15a4Cf739D2725B5729); - config.protectedSettler = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; - config.treasury = payable(0x968D0Cd7343f711216817E617d3f92a23dC91c07); - config.pythIdForRONUSD = 0x4cb9d530b042004b042e165ee0904b12fe534d40dac5fe1c71dfcdb522e6e3c2; - } else if (_network == Network.RoninMainnet) { - address temporaryDeployer = 0x0F68eDBE14C8f68481771016d7E2871d6a35DE11; - - config.minWord = 2; - config.maxWord = 3; - - config.minCommitmentAge = 10 seconds; - config.maxCommitmentAge = 1 days; - config.gracePeriod = 90 days; - - { - config.renewalFees = new INSDomainPrice.RenewalFee[](4); - config.renewalFees[0] = INSDomainPrice.RenewalFee(5, uint256(5e18) / 365 days); - config.renewalFees[1] = INSDomainPrice.RenewalFee(4, uint256(100e18) / 365 days); - config.renewalFees[2] = INSDomainPrice.RenewalFee(3, uint256(300e18) / 365 days); - config.renewalFees[3] = INSDomainPrice.RenewalFee(2, uint256(300e18) / 365 days); - } - config.bidGapRatio = 1000; // 10% - config.taxRatio = 1500; // 15% - config.maxAcceptableAge = 24 hours; - config.domainPriceScaleRule = PeriodScaler({ ratio: 500, period: 30 days * 3 }); - - config.baseTokenURI = "https://metadata-rns.roninchain.com/ronin/"; - config.admin = temporaryDeployer; - config.pauser = temporaryDeployer; - config.protectedSettler = temporaryDeployer; - - config.auctionOperators[0] = temporaryDeployer; - config.controllerOperators[0] = temporaryDeployer; - config.domainPriceOperators[0] = 0x0A9E57c71af2b1194C5f573F4bB1e45696c49213; // Harry - - config.controller = 0xEd4A9F48a62Fb6FdcfB45Bb00C9f61D1A436E58C; - config.treasury = payable(0xEd4A9F48a62Fb6FdcfB45Bb00C9f61D1A436E58C); // Andy - config.pyth = IPyth(0x2880aB155794e7179c9eE2e38200202908C17B43); // Harry - config.pythIdForRONUSD = 0x97cfe19da9153ef7d647b011c5e355142280ddb16004378573e6494e499879f3; // Harry - } else { - revert("Missing config"); - } - } - - function _buildMigrationRawConfig() internal view override returns (bytes memory rawConfig) { - Config memory config = _buildMigrationConfig(); - rawConfig = abi.encode(config); - } - - function getConfig() public view returns (Config memory config) { - bytes memory rawConfig = _config.getMigrationRawConfig(); - config = abi.decode(rawConfig, (Config)); - } -} diff --git a/script/contracts/NameCheckerDeploy.s.sol b/script/contracts/NameCheckerDeploy.s.sol index f1db6117..f434168b 100644 --- a/script/contracts/NameCheckerDeploy.s.sol +++ b/script/contracts/NameCheckerDeploy.s.sol @@ -1,17 +1,17 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { BaseDeploy, ContractKey } from "foundry-deployment-kit/BaseDeploy.s.sol"; +import { ISharedArgument, Migration } from "script/Migration.s.sol"; +import { Contract } from "script/utils/Contract.sol"; import { NameChecker } from "@rns-contracts/NameChecker.sol"; -import { RNSDeploy } from "../RNSDeploy.s.sol"; -contract NameCheckerDeploy is RNSDeploy { +contract NameCheckerDeploy is Migration { function _defaultArguments() internal virtual override returns (bytes memory args) { - Config memory config = getConfig(); - args = abi.encodeCall(NameChecker.initialize, (config.admin, config.minWord, config.maxWord)); + ISharedArgument.SharedParameter memory param = config.sharedArguments(); + args = abi.encodeCall(NameChecker.initialize, (param.admin, param.minWord, param.maxWord)); } - function run() public virtual trySetUp returns (NameChecker) { - return NameChecker(_deployProxy(ContractKey.NameChecker)); + function run() public virtual returns (NameChecker) { + return NameChecker(_deployProxy(Contract.NameChecker.key())); } } diff --git a/script/contracts/OwnedMulticallerDeploy.s.sol b/script/contracts/OwnedMulticallerDeploy.s.sol index ef1d35bb..a1ec4543 100644 --- a/script/contracts/OwnedMulticallerDeploy.s.sol +++ b/script/contracts/OwnedMulticallerDeploy.s.sol @@ -1,16 +1,16 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { BaseDeploy, ContractKey } from "foundry-deployment-kit/BaseDeploy.s.sol"; +import { ISharedArgument, Migration } from "script/Migration.s.sol"; +import { Contract } from "script/utils/Contract.sol"; import { OwnedMulticaller } from "@rns-contracts/utils/OwnedMulticaller.sol"; -import { RNSDeploy } from "../RNSDeploy.s.sol"; -contract OwnedMulticallerDeploy is RNSDeploy { +contract OwnedMulticallerDeploy is Migration { function _defaultArguments() internal virtual override returns (bytes memory args) { - args = abi.encode(_config.getSender()); + args = abi.encode(config.getSender()); } - function run() public virtual trySetUp returns (OwnedMulticaller) { - return OwnedMulticaller(_deployImmutable(ContractKey.OwnedMulticaller)); + function run() public virtual returns (OwnedMulticaller) { + return OwnedMulticaller(_deployImmutable(Contract.OwnedMulticaller.key())); } } diff --git a/script/contracts/PublicResolverDeploy.s.sol b/script/contracts/PublicResolverDeploy.s.sol index 72190be0..b848c19c 100644 --- a/script/contracts/PublicResolverDeploy.s.sol +++ b/script/contracts/PublicResolverDeploy.s.sol @@ -1,29 +1,29 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { BaseDeploy, ContractKey } from "foundry-deployment-kit/BaseDeploy.s.sol"; +import { Migration } from "script/Migration.s.sol"; +import { Contract } from "script/utils/Contract.sol"; import { PublicResolver } from "@rns-contracts/resolvers/PublicResolver.sol"; import { RNSUnified, RNSUnifiedDeploy } from "./RNSUnifiedDeploy.s.sol"; import { RNSReverseRegistrar, RNSReverseRegistrarDeploy } from "./RNSReverseRegistrarDeploy.s.sol"; -import { RNSDeploy } from "../RNSDeploy.s.sol"; -contract PublicResolverDeploy is RNSDeploy { +contract PublicResolverDeploy is Migration { function _injectDependencies() internal virtual override { - _setDependencyDeployScript(ContractKey.RNSUnified, new RNSUnifiedDeploy()); - _setDependencyDeployScript(ContractKey.RNSReverseRegistrar, new RNSReverseRegistrarDeploy()); + _setDependencyDeployScript(Contract.RNSUnified.key(), new RNSUnifiedDeploy()); + _setDependencyDeployScript(Contract.RNSReverseRegistrar.key(), new RNSReverseRegistrarDeploy()); } function _defaultArguments() internal virtual override returns (bytes memory args) { args = abi.encodeCall( PublicResolver.initialize, ( - RNSUnified(loadContractOrDeploy(ContractKey.RNSUnified)), - RNSReverseRegistrar(loadContractOrDeploy(ContractKey.RNSReverseRegistrar)) + RNSUnified(loadContractOrDeploy(Contract.RNSUnified.key())), + RNSReverseRegistrar(loadContractOrDeploy(Contract.RNSReverseRegistrar.key())) ) ); } - function run() public virtual trySetUp returns (PublicResolver) { - return PublicResolver(_deployProxy(ContractKey.PublicResolver)); + function run() public virtual returns (PublicResolver) { + return PublicResolver(_deployProxy(Contract.PublicResolver.key())); } } diff --git a/script/contracts/RNSAuctionDeploy.s.sol b/script/contracts/RNSAuctionDeploy.s.sol index d52d9243..a89c58a2 100644 --- a/script/contracts/RNSAuctionDeploy.s.sol +++ b/script/contracts/RNSAuctionDeploy.s.sol @@ -3,29 +3,29 @@ pragma solidity ^0.8.19; import { RNSAuction } from "@rns-contracts/RNSAuction.sol"; import { RNSUnified, RNSUnifiedDeploy } from "./RNSUnifiedDeploy.s.sol"; -import { BaseDeploy, ContractKey } from "foundry-deployment-kit/BaseDeploy.s.sol"; -import { RNSDeploy } from "../RNSDeploy.s.sol"; +import { ISharedArgument, Migration } from "script/Migration.s.sol"; +import { Contract } from "script/utils/Contract.sol"; -contract RNSAuctionDeploy is RNSDeploy { +contract RNSAuctionDeploy is Migration { function _injectDependencies() internal virtual override { - _setDependencyDeployScript(ContractKey.RNSUnified, new RNSUnifiedDeploy()); + _setDependencyDeployScript(Contract.RNSUnified.key(), new RNSUnifiedDeploy()); } function _defaultArguments() internal virtual override returns (bytes memory args) { - Config memory config = getConfig(); + ISharedArgument.SharedParameter memory param = config.sharedArguments(); args = abi.encodeCall( RNSAuction.initialize, ( - config.admin, - config.auctionOperators, - RNSUnified(loadContractOrDeploy(ContractKey.RNSUnified)), - config.treasury, - config.bidGapRatio + param.admin, + param.auctionOperators, + RNSUnified(loadContractOrDeploy(Contract.RNSUnified.key())), + param.treasury, + param.bidGapRatio ) ); } - function run() public virtual trySetUp returns (RNSAuction) { - return RNSAuction(_deployProxy(ContractKey.RNSAuction)); + function run() public virtual returns (RNSAuction) { + return RNSAuction(_deployProxy(Contract.RNSAuction.key())); } } diff --git a/script/contracts/RNSDomainPriceDeploy.s.sol b/script/contracts/RNSDomainPriceDeploy.s.sol index 78569ea2..4d30ebbb 100644 --- a/script/contracts/RNSDomainPriceDeploy.s.sol +++ b/script/contracts/RNSDomainPriceDeploy.s.sol @@ -3,33 +3,33 @@ pragma solidity ^0.8.19; import { RNSDomainPrice } from "@rns-contracts/RNSDomainPrice.sol"; import { RNSAuction, RNSAuctionDeploy } from "./RNSAuctionDeploy.s.sol"; -import { BaseDeploy, ContractKey } from "foundry-deployment-kit/BaseDeploy.s.sol"; -import { RNSDeploy } from "../RNSDeploy.s.sol"; +import { ISharedArgument, Migration } from "script/Migration.s.sol"; +import { Contract } from "script/utils/Contract.sol"; -contract RNSDomainPriceDeploy is RNSDeploy { +contract RNSDomainPriceDeploy is Migration { function _injectDependencies() internal virtual override { - _setDependencyDeployScript(ContractKey.RNSAuction, new RNSAuctionDeploy()); + _setDependencyDeployScript(Contract.RNSAuction.key(), new RNSAuctionDeploy()); } function _defaultArguments() internal virtual override returns (bytes memory args) { - Config memory config = getConfig(); + ISharedArgument.SharedParameter memory param = config.sharedArguments(); args = abi.encodeCall( RNSDomainPrice.initialize, ( - config.admin, - config.domainPriceOperators, - config.renewalFees, - config.taxRatio, - config.domainPriceScaleRule, - config.pyth, - RNSAuction(loadContractOrDeploy(ContractKey.RNSAuction)), - config.maxAcceptableAge, - config.pythIdForRONUSD + param.admin, + param.domainPriceOperators, + param.renewalFees, + param.taxRatio, + param.domainPriceScaleRule, + param.pyth, + RNSAuction(loadContractOrDeploy(Contract.RNSAuction.key())), + param.maxAcceptableAge, + param.pythIdForRONUSD ) ); } - function run() public virtual trySetUp returns (RNSDomainPrice) { - return RNSDomainPrice(_deployProxy(ContractKey.RNSDomainPrice)); + function run() public virtual returns (RNSDomainPrice) { + return RNSDomainPrice(_deployProxy(Contract.RNSDomainPrice.key())); } } diff --git a/script/contracts/RNSOperationDeploy.s.sol b/script/contracts/RNSOperationDeploy.s.sol index 86a1a814..57d02a50 100644 --- a/script/contracts/RNSOperationDeploy.s.sol +++ b/script/contracts/RNSOperationDeploy.s.sol @@ -1,21 +1,21 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { ContractKey } from "foundry-deployment-kit/BaseDeploy.s.sol"; +import { Migration } from "script/Migration.s.sol"; +import { Contract } from "script/utils/Contract.sol"; import { RNSOperation } from "@rns-contracts/utils/RNSOperation.sol"; -import { RNSDeploy } from "../RNSDeploy.s.sol"; -contract RNSOperationDeploy is RNSDeploy { +contract RNSOperationDeploy is Migration { function _defaultArguments() internal virtual override returns (bytes memory args) { args = abi.encode( - _config.getAddressFromCurrentNetwork(ContractKey.RNSUnified), - _config.getAddressFromCurrentNetwork(ContractKey.PublicResolver), - _config.getAddressFromCurrentNetwork(ContractKey.RNSAuction), - _config.getAddressFromCurrentNetwork(ContractKey.RNSDomainPrice) + config.getAddressFromCurrentNetwork(Contract.RNSUnified.key()), + config.getAddressFromCurrentNetwork(Contract.PublicResolver.key()), + config.getAddressFromCurrentNetwork(Contract.RNSAuction.key()), + config.getAddressFromCurrentNetwork(Contract.RNSDomainPrice.key()) ); } - function run() public virtual trySetUp returns (RNSOperation) { - return RNSOperation(_deployImmutable(ContractKey.RNSOperation)); + function run() public virtual returns (RNSOperation) { + return RNSOperation(_deployImmutable(Contract.RNSOperation.key())); } } diff --git a/script/contracts/RNSReverseRegistrarDeploy.s.sol b/script/contracts/RNSReverseRegistrarDeploy.s.sol index 370a1c1e..f46c1b49 100644 --- a/script/contracts/RNSReverseRegistrarDeploy.s.sol +++ b/script/contracts/RNSReverseRegistrarDeploy.s.sol @@ -3,24 +3,24 @@ pragma solidity ^0.8.19; import { RNSReverseRegistrar } from "@rns-contracts/RNSReverseRegistrar.sol"; import { RNSUnified, RNSUnifiedDeploy } from "./RNSUnifiedDeploy.s.sol"; -import { BaseDeploy, ContractKey } from "foundry-deployment-kit/BaseDeploy.s.sol"; -import { RNSDeploy } from "../RNSDeploy.s.sol"; +import { ISharedArgument, Migration } from "script/Migration.s.sol"; +import { Contract } from "script/utils/Contract.sol"; -contract RNSReverseRegistrarDeploy is RNSDeploy { +contract RNSReverseRegistrarDeploy is Migration { function _injectDependencies() internal virtual override { - _setDependencyDeployScript(ContractKey.RNSUnified, new RNSUnifiedDeploy()); + _setDependencyDeployScript(Contract.RNSUnified.key(), new RNSUnifiedDeploy()); } function _defaultArguments() internal virtual override returns (bytes memory args) { - Config memory config = getConfig(); + ISharedArgument.SharedParameter memory param = config.sharedArguments(); address[] memory operators = new address[](1); - operators[0] = config.operator; + operators[0] = param.operator; args = abi.encodeCall( - RNSReverseRegistrar.initialize, (config.admin, RNSUnified(loadContractOrDeploy(ContractKey.RNSUnified))) + RNSReverseRegistrar.initialize, (param.admin, RNSUnified(loadContractOrDeploy(Contract.RNSUnified.key()))) ); } - function run() public virtual trySetUp returns (RNSReverseRegistrar) { - return RNSReverseRegistrar(_deployProxy(ContractKey.RNSReverseRegistrar)); + function run() public virtual returns (RNSReverseRegistrar) { + return RNSReverseRegistrar(_deployProxy(Contract.RNSReverseRegistrar.key())); } } diff --git a/script/contracts/RNSUnifiedDeploy.s.sol b/script/contracts/RNSUnifiedDeploy.s.sol index 406fa9e9..b438a845 100644 --- a/script/contracts/RNSUnifiedDeploy.s.sol +++ b/script/contracts/RNSUnifiedDeploy.s.sol @@ -2,19 +2,19 @@ pragma solidity ^0.8.19; import { RNSUnified } from "@rns-contracts/RNSUnified.sol"; -import { BaseDeploy, ContractKey } from "foundry-deployment-kit/BaseDeploy.s.sol"; -import { RNSDeploy } from "../RNSDeploy.s.sol"; +import { ISharedArgument, Migration } from "script/Migration.s.sol"; +import { Contract } from "script/utils/Contract.sol"; -contract RNSUnifiedDeploy is RNSDeploy { +contract RNSUnifiedDeploy is Migration { function _defaultArguments() internal view override returns (bytes memory args) { - Config memory config = getConfig(); + ISharedArgument.SharedParameter memory param = config.sharedArguments(); args = abi.encodeCall( RNSUnified.initialize, - (config.admin, config.pauser, config.controller, config.protectedSettler, config.gracePeriod, config.baseTokenURI) + (param.admin, param.pauser, param.controller, param.protectedSettler, param.gracePeriod, param.baseTokenURI) ); } - function run() public virtual trySetUp returns (RNSUnified) { - return RNSUnified(_deployProxy(ContractKey.RNSUnified)); + function run() public virtual returns (RNSUnified) { + return RNSUnified(_deployProxy(Contract.RNSUnified.key())); } } diff --git a/script/contracts/RONRegistrarControllerDeploy.s.sol b/script/contracts/RONRegistrarControllerDeploy.s.sol index 830d41d8..5656f4de 100644 --- a/script/contracts/RONRegistrarControllerDeploy.s.sol +++ b/script/contracts/RONRegistrarControllerDeploy.s.sol @@ -6,39 +6,39 @@ import { RNSUnified, RNSUnifiedDeploy } from "./RNSUnifiedDeploy.s.sol"; import { NameChecker, NameCheckerDeploy } from "./NameCheckerDeploy.s.sol"; import { RNSDomainPrice, RNSDomainPriceDeploy } from "./RNSDomainPriceDeploy.s.sol"; import { RNSReverseRegistrar, RNSReverseRegistrarDeploy } from "./RNSReverseRegistrarDeploy.s.sol"; -import { BaseDeploy, ContractKey } from "foundry-deployment-kit/BaseDeploy.s.sol"; -import { RNSDeploy } from "../RNSDeploy.s.sol"; +import { ISharedArgument, Migration } from "script/Migration.s.sol"; +import { Contract } from "script/utils/Contract.sol"; -contract RONRegistrarControllerDeploy is RNSDeploy { +contract RONRegistrarControllerDeploy is Migration { function _injectDependencies() internal virtual override { - _setDependencyDeployScript(ContractKey.RNSUnified, new RNSUnifiedDeploy()); - _setDependencyDeployScript(ContractKey.NameChecker, new NameCheckerDeploy()); - _setDependencyDeployScript(ContractKey.RNSDomainPrice, new RNSDomainPriceDeploy()); - _setDependencyDeployScript(ContractKey.RNSReverseRegistrar, new RNSReverseRegistrarDeploy()); + _setDependencyDeployScript(Contract.RNSUnified.key(), new RNSUnifiedDeploy()); + _setDependencyDeployScript(Contract.NameChecker.key(), new NameCheckerDeploy()); + _setDependencyDeployScript(Contract.RNSDomainPrice.key(), new RNSDomainPriceDeploy()); + _setDependencyDeployScript(Contract.RNSReverseRegistrar.key(), new RNSReverseRegistrarDeploy()); } function _defaultArguments() internal virtual override returns (bytes memory args) { - Config memory config = getConfig(); + ISharedArgument.SharedParameter memory param = config.sharedArguments(); address[] memory operators = new address[](1); - operators[0] = config.operator; + operators[0] = param.operator; args = abi.encodeCall( RONRegistrarController.initialize, ( - config.admin, - config.pauser, - config.treasury, - config.maxAcceptableAge, - config.minCommitmentAge, - config.minRegistrationDuration, - RNSUnified(loadContractOrDeploy(ContractKey.RNSUnified)), - NameChecker(loadContractOrDeploy(ContractKey.NameChecker)), - RNSDomainPrice(loadContractOrDeploy(ContractKey.RNSDomainPrice)), - RNSReverseRegistrar(loadContractOrDeploy(ContractKey.RNSReverseRegistrar)) + param.admin, + param.pauser, + param.treasury, + param.maxAcceptableAge, + param.minCommitmentAge, + param.minRegistrationDuration, + RNSUnified(loadContractOrDeploy(Contract.RNSUnified.key())), + NameChecker(loadContractOrDeploy(Contract.NameChecker.key())), + RNSDomainPrice(loadContractOrDeploy(Contract.RNSDomainPrice.key())), + RNSReverseRegistrar(loadContractOrDeploy(Contract.RNSReverseRegistrar.key())) ) ); } - function run() public virtual trySetUp returns (RONRegistrarController) { - return RONRegistrarController(_deployProxy(ContractKey.RONRegistrarController)); + function run() public virtual returns (RONRegistrarController) { + return RONRegistrarController(_deployProxy(Contract.RONRegistrarController.key())); } } diff --git a/script/interfaces/ISharedArgument.sol b/script/interfaces/ISharedArgument.sol new file mode 100644 index 00000000..f07a4671 --- /dev/null +++ b/script/interfaces/ISharedArgument.sol @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import { IGeneralConfig } from "foundry-deployment-kit/interfaces/IGeneralConfig.sol"; +import { IPyth, INSDomainPrice, PeriodScaler } from "@rns-contracts/RNSDomainPrice.sol"; + +interface ISharedArgument is IGeneralConfig { + struct SharedParameter { + IPyth pyth; + address admin; + address pauser; + address overrider; + address controller; + uint8 minWord; + uint8 maxWord; + address rnsOperationOwner; + address operator; + address[] controllerOperators; + address[] auctionOperators; + address[] domainPriceOperators; + uint256 taxRatio; + uint64 gracePeriod; + string baseTokenURI; + uint256 bidGapRatio; + address protectedSettler; + address payable treasury; + uint256 maxAcceptableAge; + bytes32 pythIdForRONUSD; + uint256 maxCommitmentAge; + uint256 minCommitmentAge; + uint256 minRegistrationDuration; + PeriodScaler domainPriceScaleRule; + INSDomainPrice.RenewalFee[] renewalFees; + } + + function sharedArguments() external view returns (SharedParameter memory param); +} diff --git a/script/utils/Contract.sol b/script/utils/Contract.sol new file mode 100644 index 00000000..05f9fd0c --- /dev/null +++ b/script/utils/Contract.sol @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import { LibString } from "lib/solady/src/utils/LibString.sol"; +import { TContract } from "foundry-deployment-kit/types/Types.sol"; + +enum Contract { + RNSUnified, + RNSAuction, + NameChecker, + RNSOperation, + RNSDomainPrice, + PublicResolver, + OwnedMulticaller, + RNSReverseRegistrar, + RONRegistrarController +} + +using { key, name } for Contract global; + +function key(Contract contractEnum) pure returns (TContract) { + return TContract.wrap(LibString.packOne(name(contractEnum))); +} + +function name(Contract contractEnum) pure returns (string memory) { + if (contractEnum == Contract.RNSUnified) return "RNSUnified"; + if (contractEnum == Contract.RNSAuction) return "RNSAuction"; + if (contractEnum == Contract.NameChecker) return "NameChecker"; + if (contractEnum == Contract.RNSOperation) return "RNSOperation"; + if (contractEnum == Contract.RNSDomainPrice) return "RNSDomainPrice"; + if (contractEnum == Contract.PublicResolver) return "PublicResolver"; + if (contractEnum == Contract.OwnedMulticaller) return "OwnedMulticaller"; + if (contractEnum == Contract.RNSReverseRegistrar) return "RNSReverseRegistrar"; + if (contractEnum == Contract.RONRegistrarController) return "RONRegistrarController"; + revert("Contract: Unknown contract"); +} diff --git a/test/RNSUnified/RNSUnified.t.sol b/test/RNSUnified/RNSUnified.t.sol index e541a2a3..7522c901 100644 --- a/test/RNSUnified/RNSUnified.t.sol +++ b/test/RNSUnified/RNSUnified.t.sol @@ -96,7 +96,13 @@ abstract contract RNSUnifiedTest is Test { address logic = address(new RNSUnified()); _rns = RNSUnified( address( - new TransparentUpgradeableProxy(logic, _proxyAdmin, abi.encodeCall(RNSUnified.initialize, (_admin, _pauser, _controller, _protectedSettler, GRACE_PERIOD, BASE_URI))) + new TransparentUpgradeableProxy( + logic, + _proxyAdmin, + abi.encodeCall( + RNSUnified.initialize, (_admin, _pauser, _controller, _protectedSettler, GRACE_PERIOD, BASE_URI) + ) + ) ) ); diff --git a/upload-sig.sh b/upload-sig.sh index a4a053c3..c6fd92fc 100755 --- a/upload-sig.sh +++ b/upload-sig.sh @@ -1,4 +1,3 @@ -set -ex # Default network value networkName="ronin-testnet" # Function to print usage and exit @@ -40,6 +39,7 @@ if [ ! -d "$folder" ]; then echo "Error: The specified folder does not exist for the selected network." exit 1 fi +index=0 for file in "$folder"/*.json; do # Check if the file exists and is a regular file if [ -f "$file" ] && [ "$(basename "$file")" != ".chainId" ]; then @@ -47,6 +47,8 @@ for file in "$folder"/*.json; do contractName=$(jq -r '.contractName' "$file") # Check if contractName and address are not empty if [ -n "$contractName" ]; then + # Increment the index + ((index++)) ( # Initialize arrays to store events and errors keys events_keys=() @@ -63,14 +65,20 @@ for file in "$folder"/*.json; do done <<<"$(echo "$errors" | jq -r 'keys[]')" # Combine keys from events and errors all_keys=("${events_keys[@]}" "${errors_keys[@]}") + echo cast upload-signature "${all_keys[@]}" # Call cast upload-signature cast upload-signature "${all_keys[@]}" - ) & + ) & else echo "Error: Missing contractName or address in $file" fi fi + # Check if index is a multiple of 10, then wait + if [ $((index % 10)) -eq 0 ]; then + wait + fi + done forge selectors upload --all & From f84ab883783b3d7d44d5afa14ffa67f97347895a Mon Sep 17 00:00:00 2001 From: "tu-do.ron" Date: Sun, 11 Feb 2024 16:48:43 +0000 Subject: [PATCH 4/7] chore: update foundry-deployment-kit --- lib/foundry-deployment-kit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/foundry-deployment-kit b/lib/foundry-deployment-kit index 3c183cd0..0802f46c 160000 --- a/lib/foundry-deployment-kit +++ b/lib/foundry-deployment-kit @@ -1 +1 @@ -Subproject commit 3c183cd01cff1fcdb199612d5506762c708dadfa +Subproject commit 0802f46c47427b6e72739a51ece4e6138fd23b61 From 285eae568425a98580820320459b92d20fcf5f86 Mon Sep 17 00:00:00 2001 From: "tu-do.ron" Date: Sun, 11 Feb 2024 17:40:16 +0000 Subject: [PATCH 5/7] script: move validate logic into post check function, reuse script logic in foundry-deployment-kit --- run.sh | 28 +----- script/20231015-deploy/20231015_Deploy.s.sol | 16 ++-- .../20231106_Deploy.s.sol | 13 ++- .../20231124_DeployRNSOperation.s.sol | 42 ++++----- src/RNSAuction.sol | 1 - upload-sig.sh | 87 +------------------ 6 files changed, 40 insertions(+), 147 deletions(-) diff --git a/run.sh b/run.sh index 52ff9554..931b150b 100755 --- a/run.sh +++ b/run.sh @@ -1,27 +1 @@ -verify_arg="" -extra_argument="" -op_command="op run --env-file="./.env" --" - -for arg in "$@"; do - case $arg in - --trezor) - op_command="" - extra_argument+=trezor@ - ;; - --broadcast) - op_command="op run --env-file="./.env" --" - # verify_arg="--verify --verifier sourcify --verifier-url https://sourcify.roninchain.com/server/" - ;; - --log) - set -- "${@/#--log/}" - extra_argument+=log@ - ;; - *) ;; - esac -done - -# Remove the @ character from the end of extra_argument -extra_argument="${extra_argument%%@}" - -calldata=$(cast calldata 'run()') -${op_command} forge script ${verify_arg} --legacy ${@} --sig 'run(bytes,string)' ${calldata} "${extra_argument}" +source lib/foundry-deployment-kit/run.sh \ No newline at end of file diff --git a/script/20231015-deploy/20231015_Deploy.s.sol b/script/20231015-deploy/20231015_Deploy.s.sol index f28cfb6c..5bbc1067 100644 --- a/script/20231015-deploy/20231015_Deploy.s.sol +++ b/script/20231015-deploy/20231015_Deploy.s.sol @@ -23,6 +23,9 @@ contract Migration__20231015_Deploy is Migration { using Strings for *; using LibRNSDomain for string; + uint256 internal _ronId; + uint256 internal _addrReverseId; + RNSUnified internal _rns; RNSAuction internal _auction; NameChecker internal _nameChecker; @@ -55,27 +58,28 @@ contract Migration__20231015_Deploy is Migration { _rns.grantRole(_rns.RESERVATION_ROLE(), address(_auction)); _rns.grantRole(_rns.CONTROLLER_ROLE(), address(_ronController)); - (, uint256 ronId) = _rns.mint(0x0, "ron", address(0), admin, _rns.MAX_EXPIRY()); + (, _ronId) = _rns.mint(0x0, "ron", address(0), admin, _rns.MAX_EXPIRY()); (, uint256 reverseId) = _rns.mint(0x0, "reverse", address(0), admin, _rns.MAX_EXPIRY()); - (, uint256 addrReverseId) = _rns.mint(reverseId, "addr", address(0), admin, _rns.MAX_EXPIRY()); + (, _addrReverseId) = _rns.mint(reverseId, "addr", address(0), admin, _rns.MAX_EXPIRY()); _rns.setApprovalForAll(address(_auction), true); _rns.setApprovalForAll(address(_ronController), true); - _rns.approve(address(_reverseRegistrar), addrReverseId); + _rns.approve(address(_reverseRegistrar), _addrReverseId); _reverseRegistrar.setDefaultResolver(_publicResolver); _nameChecker.setForbiddenWords({ packedWords: packedWords, shouldForbid: true }); vm.stopBroadcast(); + } + function _postCheck() internal override { _validateAuction(); _validateController(); _validateDomainPrice(); _validateReverseRegistrar(); _validateNameChecker(); - _validateRNSUnified(ronId, addrReverseId); - - console.log(StdStyle.green(unicode"✅ All checks are passed")); + _validateRNSUnified(_ronId, _addrReverseId); + console.log(unicode"✅ All checks are passed"); } function _validateController() internal logFn("_validateController") { diff --git a/script/20231106-deploy-mainnet/20231106_Deploy.s.sol b/script/20231106-deploy-mainnet/20231106_Deploy.s.sol index 7c7d2210..2a7ed7c9 100644 --- a/script/20231106-deploy-mainnet/20231106_Deploy.s.sol +++ b/script/20231106-deploy-mainnet/20231106_Deploy.s.sol @@ -23,6 +23,9 @@ contract Migration__20231106_Deploy is Migration { using Strings for *; using LibRNSDomain for string; + uint256 internal _ronId; + uint256 internal _addrReverseId; + RNSUnified internal _rns; RNSAuction internal _auction; NameChecker internal _nameChecker; @@ -50,21 +53,23 @@ contract Migration__20231106_Deploy is Migration { _rns.grantRole(_rns.RESERVATION_ROLE(), address(_auction)); _rns.grantRole(_rns.CONTROLLER_ROLE(), address(_ronController)); - (, uint256 ronId) = _rns.mint(0x0, "ron", address(0), admin, _rns.MAX_EXPIRY()); + (, _ronId) = _rns.mint(0x0, "ron", address(0), admin, _rns.MAX_EXPIRY()); (, uint256 reverseId) = _rns.mint(0x0, "reverse", address(0), admin, _rns.MAX_EXPIRY()); - (, uint256 addrReverseId) = _rns.mint(reverseId, "addr", address(0), admin, _rns.MAX_EXPIRY()); + (, _addrReverseId) = _rns.mint(reverseId, "addr", address(0), admin, _rns.MAX_EXPIRY()); _rns.setApprovalForAll(address(_auction), true); _rns.setApprovalForAll(address(_ronController), true); - _rns.approve(address(_reverseRegistrar), addrReverseId); + _rns.approve(address(_reverseRegistrar), _addrReverseId); _reverseRegistrar.setDefaultResolver(_publicResolver); vm.stopBroadcast(); + } + function _postCheck() internal override { _validateController(); _validateReverseRegistrar(); - _validateRNSUnified(ronId, addrReverseId); + _validateRNSUnified(_ronId, _addrReverseId); console.log(StdStyle.green(unicode"✅ All checks are passed")); } diff --git a/script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol b/script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol index 30fb13b9..81376b08 100644 --- a/script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol +++ b/script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol @@ -14,12 +14,17 @@ import { RNSOperation, RNSOperationDeploy } from "script/contracts/RNSOperationD contract Migration__20231124_DeployRNSOperation is Migration { using LibRNSDomain for string; + RNSUnified private rns; + RNSAuction private auction; + RNSOperation private rnsOperation; + RNSDomainPrice private domainPrice; + function run() public { - RNSOperation rnsOperation = new RNSOperationDeploy().run(); + rnsOperation = new RNSOperationDeploy().run(); - RNSDomainPrice domainPrice = RNSDomainPrice(config.getAddressFromCurrentNetwork(Contract.RNSDomainPrice.key())); - RNSUnified rns = RNSUnified(config.getAddressFromCurrentNetwork(Contract.RNSUnified.key())); - RNSAuction auction = RNSAuction(config.getAddressFromCurrentNetwork(Contract.RNSAuction.key())); + domainPrice = RNSDomainPrice(config.getAddressFromCurrentNetwork(Contract.RNSDomainPrice.key())); + rns = RNSUnified(config.getAddressFromCurrentNetwork(Contract.RNSUnified.key())); + auction = RNSAuction(config.getAddressFromCurrentNetwork(Contract.RNSAuction.key())); address admin = rns.ownerOf(LibRNSDomain.RON_ID); @@ -34,17 +39,16 @@ contract Migration__20231124_DeployRNSOperation is Migration { domainPrice.grantRole(domainPrice.OVERRIDER_ROLE(), address(rnsOperation)); vm.stopBroadcast(); + } - _validateBulkMint(rns, rnsOperation); - _validateBulkSetProtected(rns, rnsOperation); - _validateBulkOverrideRenewalFees(domainPrice, rnsOperation); - _validateReclaimAuctionNames({ rns: rns, auction: auction, rnsOperation: rnsOperation, searchSize: 20 }); + function _postCheck() internal override { + _validateBulkMint(); + _validateBulkSetProtected(); + _validateBulkOverrideRenewalFees(); + _validateReclaimAuctionNames({ searchSize: 20 }); } - function _validateBulkOverrideRenewalFees(RNSDomainPrice domainPrice, RNSOperation rnsOperation) - internal - logFn("_validateBulkOverrideRenewalFees") - { + function _validateBulkOverrideRenewalFees() internal logFn("_validateBulkOverrideRenewalFees") { string memory label = "tudo-provip-maximum-ultra"; string[] memory labels = new string[](1); labels[0] = label; @@ -58,12 +62,7 @@ contract Migration__20231124_DeployRNSOperation is Migration { assertEq(domainPrice.getOverriddenRenewalFee(label), Math.mulDiv(yearlyUSDPrices[0], 1 ether, 365 days)); } - function _validateReclaimAuctionNames( - RNSUnified rns, - RNSAuction auction, - RNSOperation rnsOperation, - uint256 searchSize - ) internal logFn("_validateReclaimAuctionNames") { + function _validateReclaimAuctionNames(uint256 searchSize) internal logFn("_validateReclaimAuctionNames") { INSAuction.DomainAuction[] memory domainAuctions = new INSAuction.DomainAuction[](searchSize); uint256[] memory reservedIds = new uint256[](searchSize); for (uint256 i; i < searchSize; ++i) { @@ -91,7 +90,7 @@ contract Migration__20231124_DeployRNSOperation is Migration { rnsOperation.reclaimUnbiddedNames({ tos: tos, labels: labels, allowFailure: false }); } - function _validateBulkMint(RNSUnified rns, RNSOperation rnsOperation) internal logFn("_validateBulkMint") { + function _validateBulkMint() internal logFn("_validateBulkMint") { address to = makeAddr("to"); address[] memory tos = new address[](1); tos[0] = to; @@ -106,10 +105,7 @@ contract Migration__20231124_DeployRNSOperation is Migration { assertEq(rns.ownerOf(id), to); } - function _validateBulkSetProtected(RNSUnified rns, RNSOperation rnsOperation) - internal - logFn("_validateBulkSetProtected") - { + function _validateBulkSetProtected() internal logFn("_validateBulkSetProtected") { string[] memory labels = new string[](1); labels[0] = "tudo-provip-maximum-utra"; diff --git a/src/RNSAuction.sol b/src/RNSAuction.sol index 86f66cfa..2a5d41a2 100644 --- a/src/RNSAuction.sol +++ b/src/RNSAuction.sol @@ -309,7 +309,6 @@ contract RNSAuction is Initializable, AccessControlEnumerable, INSAuction { /** * @inheritdoc INSAuction */ - function setBidGapRatio(uint256 ratio) external onlyRole(DEFAULT_ADMIN_ROLE) { _setBidGapRatio(ratio); } diff --git a/upload-sig.sh b/upload-sig.sh index c6fd92fc..ea7cb2b9 100755 --- a/upload-sig.sh +++ b/upload-sig.sh @@ -1,86 +1 @@ -# Default network value -networkName="ronin-testnet" -# Function to print usage and exit -usage() { - echo "Usage: $0 -c " - echo " -c: Specify the network (ronin-testnet or ronin-mainnet)" - exit 1 -} -# Parse command-line options -while getopts "c:" opt; do - case $opt in - c) - case "$OPTARG" in - ronin-testnet) - child_folder="ronin-testnet" - networkName="ronin-testnet" - ;; - ronin-mainnet) - child_folder="ronin-mainnet" - networkName="ronin-mainnet" - ;; - *) - echo "Unknown network specified: $OPTARG" - usage - ;; - esac - ;; - *) - usage - ;; - esac -done -# Shift the processed options out of the argument list -shift $((OPTIND - 1)) -# Define the deployments folder by concatenating it with the child folder -folder="deployments/$child_folder" -# Check if the specified folder exists -if [ ! -d "$folder" ]; then - echo "Error: The specified folder does not exist for the selected network." - exit 1 -fi -index=0 -for file in "$folder"/*.json; do - # Check if the file exists and is a regular file - if [ -f "$file" ] && [ "$(basename "$file")" != ".chainId" ]; then - # Extract contractName and address from the JSON file - contractName=$(jq -r '.contractName' "$file") - # Check if contractName and address are not empty - if [ -n "$contractName" ]; then - # Increment the index - ((index++)) - ( - # Initialize arrays to store events and errors keys - events_keys=() - errors_keys=() - # Get events and errors JSON data - events=$(forge inspect $contractName events) - errors=$(forge inspect $contractName errors) - # Extract keys and populate the arrays - while read -r key; do - events_keys+=("\"event $key\"") - done <<<"$(echo "$events" | jq -r 'keys[]')" - while read -r key; do - errors_keys+=("\"$key\"") - done <<<"$(echo "$errors" | jq -r 'keys[]')" - # Combine keys from events and errors - all_keys=("${events_keys[@]}" "${errors_keys[@]}") - echo cast upload-signature "${all_keys[@]}" - # Call cast upload-signature - cast upload-signature "${all_keys[@]}" - ) & - else - echo "Error: Missing contractName or address in $file" - fi - fi - - # Check if index is a multiple of 10, then wait - if [ $((index % 10)) -eq 0 ]; then - wait - fi - -done - -forge selectors upload --all & - -wait +source lib/foundry-deployment-kit/upload-sig.sh \ No newline at end of file From ad19359b3c0b796e19ee43694788c11b6e35a402 Mon Sep 17 00:00:00 2001 From: "tu-do.ron" Date: Sun, 11 Feb 2024 19:25:06 +0000 Subject: [PATCH 6/7] script: split parameters in ISharedArgument --- .../20231024_Config.s.sol | 2 +- .../20231024_UpgradeDomainPrice.s.sol | 4 +- .../20231106_RevertRenewalFees.s.sol | 2 +- .../20231205_MainnetConfig.s.sol | 2 +- ...gradeRNSAuctionAndDeployRNSOperation.s.sol | 6 +- script/Migration.s.sol | 191 +++++++++++------- script/contracts/NameCheckerDeploy.s.sol | 2 +- script/contracts/OwnedMulticallerDeploy.s.sol | 3 +- script/contracts/PublicResolverDeploy.s.sol | 11 +- script/contracts/RNSAuctionDeploy.s.sol | 6 +- script/contracts/RNSDomainPriceDeploy.s.sol | 6 +- script/contracts/RNSOperationDeploy.s.sol | 11 +- .../contracts/RNSReverseRegistrarDeploy.s.sol | 12 +- script/contracts/RNSUnifiedDeploy.s.sol | 2 +- .../RONRegistrarControllerDeploy.s.sol | 20 +- script/interfaces/ISharedArgument.sol | 93 +++++++-- 16 files changed, 256 insertions(+), 117 deletions(-) diff --git a/script/20231024-upgrade-domain-price/20231024_Config.s.sol b/script/20231024-upgrade-domain-price/20231024_Config.s.sol index 4f53b1f0..0b602d51 100644 --- a/script/20231024-upgrade-domain-price/20231024_Config.s.sol +++ b/script/20231024-upgrade-domain-price/20231024_Config.s.sol @@ -10,7 +10,7 @@ abstract contract Config__20231024 is Migration { ISharedArgument.SharedParameter memory param = abi.decode(rawArgs, (ISharedArgument.SharedParameter)); if (network() == DefaultNetwork.RoninTestnet.key()) { - param.overrider = param.operator; + param.rnsDomainPrice.overrider = param.rnsDomainPrice.domainPriceOperators[0]; } else if (network() == DefaultNetwork.RoninMainnet.key()) { revert("Missing param"); } else { diff --git a/script/20231024-upgrade-domain-price/20231024_UpgradeDomainPrice.s.sol b/script/20231024-upgrade-domain-price/20231024_UpgradeDomainPrice.s.sol index e8076204..9a40117a 100644 --- a/script/20231024-upgrade-domain-price/20231024_UpgradeDomainPrice.s.sol +++ b/script/20231024-upgrade-domain-price/20231024_UpgradeDomainPrice.s.sol @@ -8,10 +8,10 @@ import { ISharedArgument, Config__20231024 } from "./20231024_Config.s.sol"; contract Migration__20231024_UpgradeDomainPrice is Config__20231024 { function run() public { - ISharedArgument.SharedParameter memory param = config.sharedArguments(); + ISharedArgument.RNSDomainPriceParam memory param = config.sharedArguments().rnsDomainPrice; _upgradeProxy(Contract.RNSDomainPrice.key()); - console.log("operator", param.operator); + console.log("operator", param.domainPriceOperators[0]); console.log("overrider", param.overrider); RNSDomainPrice domainPrice = RNSDomainPrice(config.getAddressFromCurrentNetwork(Contract.RNSDomainPrice.key())); diff --git a/script/20231106-config-prelaunch/20231106_RevertRenewalFees.s.sol b/script/20231106-config-prelaunch/20231106_RevertRenewalFees.s.sol index 902e672d..eb8b0566 100644 --- a/script/20231106-config-prelaunch/20231106_RevertRenewalFees.s.sol +++ b/script/20231106-config-prelaunch/20231106_RevertRenewalFees.s.sol @@ -9,7 +9,7 @@ contract Migration__20231106_RevertRenewalFees is Migration { function run() public { RNSDomainPrice domainPrice = RNSDomainPrice(config.getAddressFromCurrentNetwork(Contract.RNSDomainPrice.key())); - ISharedArgument.SharedParameter memory param = config.sharedArguments(); + ISharedArgument.RNSDomainPriceParam memory param = config.sharedArguments().rnsDomainPrice; vm.broadcast(domainPrice.getRoleMember(domainPrice.DEFAULT_ADMIN_ROLE(), 0)); domainPrice.setRenewalFeeByLengths(param.renewalFees); } diff --git a/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_MainnetConfig.s.sol b/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_MainnetConfig.s.sol index b1845c79..370a36f1 100644 --- a/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_MainnetConfig.s.sol +++ b/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_MainnetConfig.s.sol @@ -9,7 +9,7 @@ abstract contract Config__Mainnet20231205 is Migration { ISharedArgument.SharedParameter memory param = abi.decode(rawArgs, (ISharedArgument.SharedParameter)); if (network() == DefaultNetwork.RoninMainnet.key()) { - param.rnsOperationOwner = 0x1FF1edE0242317b8C4229fC59E64DD93952019ef; + param.rnsOperation.admin = 0x1FF1edE0242317b8C4229fC59E64DD93952019ef; } else { revert("Missing param"); } diff --git a/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol b/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol index 75bd59b0..756b47c0 100644 --- a/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol +++ b/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol @@ -24,7 +24,7 @@ import { contract Migration__20231205_UpgradeRNSAuctionAndDeployRNSOperation is Config__Mainnet20231205 { function run() public onlyOn(DefaultNetwork.RoninMainnet.key()) { - ISharedArgument.SharedParameter memory param = config.sharedArguments(); + ISharedArgument.RNSOperationParam memory param = config.sharedArguments().rnsOperation; ProxyAdmin proxyAdmin = ProxyAdmin(config.getAddressFromCurrentNetwork(DefaultContract.ProxyAdmin.key())); address rnsAuctionProxy = config.getAddressFromCurrentNetwork(Contract.RNSAuction.key()); @@ -43,9 +43,9 @@ contract Migration__20231205_UpgradeRNSAuctionAndDeployRNSOperation is Config__M // transfer owner ship for RNSOperation vm.broadcast(rnsOperation.owner()); - rnsOperation.transferOwnership(param.rnsOperationOwner); + rnsOperation.transferOwnership(param.admin); - assertTrue(rnsOperation.owner() == param.rnsOperationOwner); + assertTrue(rnsOperation.owner() == param.admin); } function _validataBulkClaimUnbiddedNames(uint256 size) internal logFn("_validataBulkClaimUnbiddedNames") { diff --git a/script/Migration.s.sol b/script/Migration.s.sol index 726f084b..8e572558 100644 --- a/script/Migration.s.sol +++ b/script/Migration.s.sol @@ -16,81 +16,134 @@ abstract contract Migration is BaseMigration { function _sharedArguments() internal view virtual override returns (bytes memory rawArgs) { ISharedArgument.SharedParameter memory param; - param.auctionOperators = new address[](1); - param.controllerOperators = new address[](1); - param.domainPriceOperators = new address[](1); - if (network() == DefaultNetwork.RoninTestnet.key()) { - param.minWord = 2; - param.maxWord = 3; - param.minCommitmentAge = 10 seconds; - param.maxCommitmentAge = 1 days; - param.gracePeriod = 90 days; - - { - param.renewalFees = new INSDomainPrice.RenewalFee[](3); - param.renewalFees[0] = INSDomainPrice.RenewalFee(5, uint256(5e18) / 365 days); - param.renewalFees[1] = INSDomainPrice.RenewalFee(4, uint256(100e18) / 365 days); - param.renewalFees[2] = INSDomainPrice.RenewalFee(3, uint256(300e18) / 365 days); - } - param.bidGapRatio = 1000; // 10% - param.taxRatio = 1500; // 15% - param.maxAcceptableAge = 24 hours; - param.domainPriceScaleRule = PeriodScaler({ ratio: 500, period: 30 days * 3 }); - - param.baseTokenURI = "https://metadata-rns.skymavis.one/saigon/"; - param.admin = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; - param.pauser = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; - - param.operator = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; - param.auctionOperators[0] = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; - param.controllerOperators[0] = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; - param.domainPriceOperators[0] = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; - - param.controller = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; - param.pyth = IPyth(0xA2aa501b19aff244D90cc15a4Cf739D2725B5729); - param.protectedSettler = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; - param.treasury = payable(0x968D0Cd7343f711216817E617d3f92a23dC91c07); - param.pythIdForRONUSD = 0x4cb9d530b042004b042e165ee0904b12fe534d40dac5fe1c71dfcdb522e6e3c2; + address defaultAdmin = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; + address defaultPauser = defaultAdmin; + address defaultOperator = defaultAdmin; + address defaultController = defaultAdmin; + + // NameChecker + param.nameChecker.minWord = 2; + param.nameChecker.maxWord = 3; + param.nameChecker.admin = defaultAdmin; + + // OwnedMulticaller + param.ownedMulticaller.admin = defaultAdmin; + + // RNSOperation + param.rnsOperation.admin = defaultAdmin; + + // PublicResolver + param.publicResolver.admin = defaultAdmin; + + // RNSAuction + param.rnsAuction.admin = defaultAdmin; + param.rnsAuction.bidGapRatio = 1000; // 10% + param.rnsAuction.treasury = payable(defaultAdmin); + param.rnsAuction.auctionOperators = _toSingletonArray(defaultOperator); + + // RONRegistrarController + param.ronRegistrarController.admin = defaultAdmin; + param.ronRegistrarController.pauser = defaultPauser; + param.ronRegistrarController.operator = defaultOperator; + param.ronRegistrarController.treasury = payable(defaultAdmin); + param.ronRegistrarController.maxAcceptableAge = 1 days; + param.ronRegistrarController.minRegistrationDuration = 1 days; + param.ronRegistrarController.minCommitmentAge = 10 seconds; + + // RNSDomainPrice + param.rnsDomainPrice.admin = defaultAdmin; + param.rnsDomainPrice.domainPriceOperators = _toSingletonArray(defaultOperator); + param.rnsDomainPrice.renewalFees = new INSDomainPrice.RenewalFee[](3); + param.rnsDomainPrice.renewalFees[0] = INSDomainPrice.RenewalFee(5, uint256(5e18) / 365 days); + param.rnsDomainPrice.renewalFees[1] = INSDomainPrice.RenewalFee(4, uint256(100e18) / 365 days); + param.rnsDomainPrice.renewalFees[2] = INSDomainPrice.RenewalFee(3, uint256(300e18) / 365 days); + param.rnsDomainPrice.taxRatio = 1500; // 15% + param.rnsDomainPrice.maxAcceptableAge = 24 hours; + param.rnsDomainPrice.pyth = IPyth(0xA2aa501b19aff244D90cc15a4Cf739D2725B5729); + param.rnsDomainPrice.domainPriceScaleRule = PeriodScaler({ ratio: 500, period: 30 days * 3 }); + param.rnsDomainPrice.pythIdForRONUSD = 0x4cb9d530b042004b042e165ee0904b12fe534d40dac5fe1c71dfcdb522e6e3c2; + + // RNSUnified + param.rnsUnified.admin = defaultAdmin; + param.rnsUnified.pauser = defaultPauser; + param.rnsUnified.controller = defaultController; + param.rnsUnified.protectedSettler = defaultAdmin; + param.rnsUnified.gracePeriod = 90 days; + param.rnsUnified.baseTokenURI = "https://metadata-rns.skymavis.one/saigon/"; } else if (network() == DefaultNetwork.RoninMainnet.key()) { - address temporaryDeployer = 0x0F68eDBE14C8f68481771016d7E2871d6a35DE11; - - param.minWord = 2; - param.maxWord = 3; - - param.minCommitmentAge = 10 seconds; - param.maxCommitmentAge = 1 days; - param.gracePeriod = 90 days; - - { - param.renewalFees = new INSDomainPrice.RenewalFee[](4); - param.renewalFees[0] = INSDomainPrice.RenewalFee(5, uint256(5e18) / 365 days); - param.renewalFees[1] = INSDomainPrice.RenewalFee(4, uint256(100e18) / 365 days); - param.renewalFees[2] = INSDomainPrice.RenewalFee(3, uint256(300e18) / 365 days); - param.renewalFees[3] = INSDomainPrice.RenewalFee(2, uint256(300e18) / 365 days); - } - param.bidGapRatio = 1000; // 10% - param.taxRatio = 1500; // 15% - param.maxAcceptableAge = 24 hours; - param.domainPriceScaleRule = PeriodScaler({ ratio: 500, period: 30 days * 3 }); - - param.baseTokenURI = "https://metadata-rns.roninchain.com/ronin/"; - param.admin = temporaryDeployer; - param.pauser = temporaryDeployer; - param.protectedSettler = temporaryDeployer; - - param.auctionOperators[0] = temporaryDeployer; - param.controllerOperators[0] = temporaryDeployer; - param.domainPriceOperators[0] = 0x0A9E57c71af2b1194C5f573F4bB1e45696c49213; // Harry - - param.controller = 0xEd4A9F48a62Fb6FdcfB45Bb00C9f61D1A436E58C; - param.treasury = payable(0xEd4A9F48a62Fb6FdcfB45Bb00C9f61D1A436E58C); // Andy - param.pyth = IPyth(0x2880aB155794e7179c9eE2e38200202908C17B43); // Harry - param.pythIdForRONUSD = 0x97cfe19da9153ef7d647b011c5e355142280ddb16004378573e6494e499879f3; // Harry + address duke = 0x0F68eDBE14C8f68481771016d7E2871d6a35DE11; + address andy = 0xEd4A9F48a62Fb6FdcfB45Bb00C9f61D1A436E58C; + address harry = 0x0A9E57c71af2b1194C5f573F4bB1e45696c49213; + + address temporaryDeployer = duke; + address temporaryAdmin = duke; + address temporaryPauser = duke; + address temporaryOperator = duke; + address temporaryController = andy; + + address operator = harry; + address payable treasury = payable(andy); + + // NameChecker + param.nameChecker.minWord = 2; + param.nameChecker.maxWord = 3; + param.nameChecker.admin = temporaryAdmin; + + // OwnedMulticaller + param.ownedMulticaller.admin = temporaryDeployer; + + // RNSOperation + param.rnsOperation.admin = temporaryDeployer; + + // PublicResolver + param.publicResolver.admin = temporaryAdmin; + + // RNSAuction + param.rnsAuction.admin = temporaryAdmin; + param.rnsAuction.bidGapRatio = 1000; // 10% + param.rnsAuction.treasury = payable(temporaryAdmin); + param.rnsAuction.auctionOperators = _toSingletonArray(temporaryOperator); + + // RONRegistrarController + param.ronRegistrarController.admin = temporaryAdmin; + param.ronRegistrarController.pauser = temporaryPauser; + param.ronRegistrarController.operator = temporaryOperator; + param.ronRegistrarController.treasury = treasury; + param.ronRegistrarController.maxAcceptableAge = 1 days; + param.ronRegistrarController.minRegistrationDuration = 1 days; + param.ronRegistrarController.minCommitmentAge = 10 seconds; + + // RNSDomainPrice + param.rnsDomainPrice.admin = temporaryAdmin; + param.rnsDomainPrice.domainPriceOperators = _toSingletonArray(operator); + param.rnsDomainPrice.renewalFees = new INSDomainPrice.RenewalFee[](4); + param.rnsDomainPrice.renewalFees[0] = INSDomainPrice.RenewalFee(5, uint256(5e18) / 365 days); + param.rnsDomainPrice.renewalFees[1] = INSDomainPrice.RenewalFee(4, uint256(100e18) / 365 days); + param.rnsDomainPrice.renewalFees[2] = INSDomainPrice.RenewalFee(3, uint256(300e18) / 365 days); + param.rnsDomainPrice.renewalFees[3] = INSDomainPrice.RenewalFee(2, uint256(300e18) / 365 days); + param.rnsDomainPrice.taxRatio = 1500; // 15% + param.rnsDomainPrice.maxAcceptableAge = 24 hours; + param.rnsDomainPrice.pyth = IPyth(0x2880aB155794e7179c9eE2e38200202908C17B43); + param.rnsDomainPrice.domainPriceScaleRule = PeriodScaler({ ratio: 500, period: 30 days * 3 }); + param.rnsDomainPrice.pythIdForRONUSD = 0x97cfe19da9153ef7d647b011c5e355142280ddb16004378573e6494e499879f3; + + // RNSUnified + param.rnsUnified.admin = temporaryAdmin; + param.rnsUnified.pauser = temporaryPauser; + param.rnsUnified.controller = temporaryController; + param.rnsUnified.protectedSettler = temporaryAdmin; + param.rnsUnified.gracePeriod = 90 days; + param.rnsUnified.baseTokenURI = "https://metadata-rns.roninchain.com/ronin/"; } else { revert("Missing param"); } rawArgs = abi.encode(param); } + + function _toSingletonArray(address addr) internal pure returns (address[] memory arr) { + arr = new address[](1); + arr[0] = addr; + } } diff --git a/script/contracts/NameCheckerDeploy.s.sol b/script/contracts/NameCheckerDeploy.s.sol index f434168b..cbf39f5d 100644 --- a/script/contracts/NameCheckerDeploy.s.sol +++ b/script/contracts/NameCheckerDeploy.s.sol @@ -7,7 +7,7 @@ import { NameChecker } from "@rns-contracts/NameChecker.sol"; contract NameCheckerDeploy is Migration { function _defaultArguments() internal virtual override returns (bytes memory args) { - ISharedArgument.SharedParameter memory param = config.sharedArguments(); + ISharedArgument.NameCheckerParam memory param = config.sharedArguments().nameChecker; args = abi.encodeCall(NameChecker.initialize, (param.admin, param.minWord, param.maxWord)); } diff --git a/script/contracts/OwnedMulticallerDeploy.s.sol b/script/contracts/OwnedMulticallerDeploy.s.sol index a1ec4543..664f8fca 100644 --- a/script/contracts/OwnedMulticallerDeploy.s.sol +++ b/script/contracts/OwnedMulticallerDeploy.s.sol @@ -7,7 +7,8 @@ import { OwnedMulticaller } from "@rns-contracts/utils/OwnedMulticaller.sol"; contract OwnedMulticallerDeploy is Migration { function _defaultArguments() internal virtual override returns (bytes memory args) { - args = abi.encode(config.getSender()); + ISharedArgument.OwnedMulticallerParam memory param = config.sharedArguments().ownedMulticaller; + args = abi.encode(param.admin); } function run() public virtual returns (OwnedMulticaller) { diff --git a/script/contracts/PublicResolverDeploy.s.sol b/script/contracts/PublicResolverDeploy.s.sol index b848c19c..569ddbfe 100644 --- a/script/contracts/PublicResolverDeploy.s.sol +++ b/script/contracts/PublicResolverDeploy.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { Migration } from "script/Migration.s.sol"; +import { Migration, ISharedArgument } from "script/Migration.s.sol"; import { Contract } from "script/utils/Contract.sol"; import { PublicResolver } from "@rns-contracts/resolvers/PublicResolver.sol"; import { RNSUnified, RNSUnifiedDeploy } from "./RNSUnifiedDeploy.s.sol"; @@ -14,11 +14,16 @@ contract PublicResolverDeploy is Migration { } function _defaultArguments() internal virtual override returns (bytes memory args) { + ISharedArgument.PublicResolverParam memory param = config.sharedArguments().publicResolver; args = abi.encodeCall( PublicResolver.initialize, ( - RNSUnified(loadContractOrDeploy(Contract.RNSUnified.key())), - RNSReverseRegistrar(loadContractOrDeploy(Contract.RNSReverseRegistrar.key())) + address(param.rnsUnified) == address(0x0) + ? RNSUnified(loadContractOrDeploy(Contract.RNSUnified.key())) + : param.rnsUnified, + address(param.rnsReverseRegistrar) == address(0x0) + ? RNSReverseRegistrar(loadContractOrDeploy(Contract.RNSReverseRegistrar.key())) + : param.rnsReverseRegistrar ) ); } diff --git a/script/contracts/RNSAuctionDeploy.s.sol b/script/contracts/RNSAuctionDeploy.s.sol index a89c58a2..d3ce9997 100644 --- a/script/contracts/RNSAuctionDeploy.s.sol +++ b/script/contracts/RNSAuctionDeploy.s.sol @@ -12,13 +12,15 @@ contract RNSAuctionDeploy is Migration { } function _defaultArguments() internal virtual override returns (bytes memory args) { - ISharedArgument.SharedParameter memory param = config.sharedArguments(); + ISharedArgument.RNSAuctionParam memory param = config.sharedArguments().rnsAuction; args = abi.encodeCall( RNSAuction.initialize, ( param.admin, param.auctionOperators, - RNSUnified(loadContractOrDeploy(Contract.RNSUnified.key())), + address(param.rnsUnified) == address(0x0) + ? RNSUnified(loadContractOrDeploy(Contract.RNSUnified.key())) + : param.rnsUnified, param.treasury, param.bidGapRatio ) diff --git a/script/contracts/RNSDomainPriceDeploy.s.sol b/script/contracts/RNSDomainPriceDeploy.s.sol index 4d30ebbb..03a121f1 100644 --- a/script/contracts/RNSDomainPriceDeploy.s.sol +++ b/script/contracts/RNSDomainPriceDeploy.s.sol @@ -12,7 +12,7 @@ contract RNSDomainPriceDeploy is Migration { } function _defaultArguments() internal virtual override returns (bytes memory args) { - ISharedArgument.SharedParameter memory param = config.sharedArguments(); + ISharedArgument.RNSDomainPriceParam memory param = config.sharedArguments().rnsDomainPrice; args = abi.encodeCall( RNSDomainPrice.initialize, ( @@ -22,7 +22,9 @@ contract RNSDomainPriceDeploy is Migration { param.taxRatio, param.domainPriceScaleRule, param.pyth, - RNSAuction(loadContractOrDeploy(Contract.RNSAuction.key())), + address(param.rnsAuction) == address(0x0) + ? RNSAuction(loadContractOrDeploy(Contract.RNSAuction.key())) + : param.rnsAuction, param.maxAcceptableAge, param.pythIdForRONUSD ) diff --git a/script/contracts/RNSOperationDeploy.s.sol b/script/contracts/RNSOperationDeploy.s.sol index 57d02a50..e8f7fe6e 100644 --- a/script/contracts/RNSOperationDeploy.s.sol +++ b/script/contracts/RNSOperationDeploy.s.sol @@ -1,17 +1,18 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { Migration } from "script/Migration.s.sol"; +import { Migration, ISharedArgument } from "script/Migration.s.sol"; import { Contract } from "script/utils/Contract.sol"; import { RNSOperation } from "@rns-contracts/utils/RNSOperation.sol"; contract RNSOperationDeploy is Migration { function _defaultArguments() internal virtual override returns (bytes memory args) { + ISharedArgument.RNSOperationParam memory param = config.sharedArguments().rnsOperation; args = abi.encode( - config.getAddressFromCurrentNetwork(Contract.RNSUnified.key()), - config.getAddressFromCurrentNetwork(Contract.PublicResolver.key()), - config.getAddressFromCurrentNetwork(Contract.RNSAuction.key()), - config.getAddressFromCurrentNetwork(Contract.RNSDomainPrice.key()) + param.rnsUnified == address(0x0) ? loadContract(Contract.RNSUnified.key()) : param.rnsUnified, + param.publicResolver == address(0x0) ? loadContract(Contract.PublicResolver.key()) : param.publicResolver, + param.rnsAuction == address(0x0) ? loadContract(Contract.RNSAuction.key()) : param.rnsAuction, + param.rnsDomainPrice == address(0x0) ? loadContract(Contract.RNSDomainPrice.key()) : param.rnsDomainPrice ); } diff --git a/script/contracts/RNSReverseRegistrarDeploy.s.sol b/script/contracts/RNSReverseRegistrarDeploy.s.sol index f46c1b49..94547f56 100644 --- a/script/contracts/RNSReverseRegistrarDeploy.s.sol +++ b/script/contracts/RNSReverseRegistrarDeploy.s.sol @@ -12,11 +12,15 @@ contract RNSReverseRegistrarDeploy is Migration { } function _defaultArguments() internal virtual override returns (bytes memory args) { - ISharedArgument.SharedParameter memory param = config.sharedArguments(); - address[] memory operators = new address[](1); - operators[0] = param.operator; + ISharedArgument.RNSReverseRegistrarParam memory param = config.sharedArguments().rnsReverseRegistrar; args = abi.encodeCall( - RNSReverseRegistrar.initialize, (param.admin, RNSUnified(loadContractOrDeploy(Contract.RNSUnified.key()))) + RNSReverseRegistrar.initialize, + ( + param.admin, + address(param.rnsUnified) == address(0x0) + ? RNSUnified(loadContractOrDeploy(Contract.RNSUnified.key())) + : param.rnsUnified + ) ); } diff --git a/script/contracts/RNSUnifiedDeploy.s.sol b/script/contracts/RNSUnifiedDeploy.s.sol index b438a845..3389921a 100644 --- a/script/contracts/RNSUnifiedDeploy.s.sol +++ b/script/contracts/RNSUnifiedDeploy.s.sol @@ -7,7 +7,7 @@ import { Contract } from "script/utils/Contract.sol"; contract RNSUnifiedDeploy is Migration { function _defaultArguments() internal view override returns (bytes memory args) { - ISharedArgument.SharedParameter memory param = config.sharedArguments(); + ISharedArgument.RNSUnifiedParam memory param = config.sharedArguments().rnsUnified; args = abi.encodeCall( RNSUnified.initialize, (param.admin, param.pauser, param.controller, param.protectedSettler, param.gracePeriod, param.baseTokenURI) diff --git a/script/contracts/RONRegistrarControllerDeploy.s.sol b/script/contracts/RONRegistrarControllerDeploy.s.sol index 5656f4de..b09ead1a 100644 --- a/script/contracts/RONRegistrarControllerDeploy.s.sol +++ b/script/contracts/RONRegistrarControllerDeploy.s.sol @@ -18,9 +18,7 @@ contract RONRegistrarControllerDeploy is Migration { } function _defaultArguments() internal virtual override returns (bytes memory args) { - ISharedArgument.SharedParameter memory param = config.sharedArguments(); - address[] memory operators = new address[](1); - operators[0] = param.operator; + ISharedArgument.RONRegistrarControllerParam memory param = config.sharedArguments().ronRegistrarController; args = abi.encodeCall( RONRegistrarController.initialize, ( @@ -30,10 +28,18 @@ contract RONRegistrarControllerDeploy is Migration { param.maxAcceptableAge, param.minCommitmentAge, param.minRegistrationDuration, - RNSUnified(loadContractOrDeploy(Contract.RNSUnified.key())), - NameChecker(loadContractOrDeploy(Contract.NameChecker.key())), - RNSDomainPrice(loadContractOrDeploy(Contract.RNSDomainPrice.key())), - RNSReverseRegistrar(loadContractOrDeploy(Contract.RNSReverseRegistrar.key())) + address(param.rnsUnified) == address(0x0) + ? RNSUnified(loadContractOrDeploy(Contract.RNSUnified.key())) + : param.rnsUnified, + address(param.nameChecker) == address(0x0) + ? NameChecker(loadContractOrDeploy(Contract.NameChecker.key())) + : param.nameChecker, + address(param.rnsDomainPrice) == address(0x0) + ? RNSDomainPrice(loadContractOrDeploy(Contract.RNSDomainPrice.key())) + : param.rnsDomainPrice, + address(param.rnsReverseRegistrar) == address(0x0) + ? RNSReverseRegistrar(loadContractOrDeploy(Contract.RNSReverseRegistrar.key())) + : param.rnsReverseRegistrar ) ); } diff --git a/script/interfaces/ISharedArgument.sol b/script/interfaces/ISharedArgument.sol index f07a4671..39afa945 100644 --- a/script/interfaces/ISharedArgument.sol +++ b/script/interfaces/ISharedArgument.sol @@ -3,34 +3,99 @@ pragma solidity ^0.8.19; import { IGeneralConfig } from "foundry-deployment-kit/interfaces/IGeneralConfig.sol"; import { IPyth, INSDomainPrice, PeriodScaler } from "@rns-contracts/RNSDomainPrice.sol"; +import { NameChecker } from "@rns-contracts/NameChecker.sol"; +import { PublicResolver } from "@rns-contracts/resolvers/PublicResolver.sol"; +import { RNSAuction } from "@rns-contracts/RNSAuction.sol"; +import { RNSReverseRegistrar } from "@rns-contracts/RNSReverseRegistrar.sol"; +import { RNSUnified } from "@rns-contracts/RNSUnified.sol"; +import { RNSDomainPrice } from "@rns-contracts/RNSDomainPrice.sol"; +import { RNSOperation } from "@rns-contracts/utils/RNSOperation.sol"; +import { OwnedMulticaller } from "@rns-contracts/utils/OwnedMulticaller.sol"; interface ISharedArgument is IGeneralConfig { - struct SharedParameter { - IPyth pyth; + struct NameCheckerParam { address admin; - address pauser; - address overrider; - address controller; uint8 minWord; uint8 maxWord; - address rnsOperationOwner; - address operator; - address[] controllerOperators; + } + + struct OwnedMulticallerParam { + address admin; + } + + struct PublicResolverParam { + address admin; + RNSUnified rnsUnified; + RNSReverseRegistrar rnsReverseRegistrar; + } + + struct RNSAuctionParam { + address admin; address[] auctionOperators; + RNSUnified rnsUnified; + address payable treasury; + uint256 bidGapRatio; + } + + struct RNSDomainPriceParam { + address admin; + address overrider; address[] domainPriceOperators; + INSDomainPrice.RenewalFee[] renewalFees; uint256 taxRatio; + PeriodScaler domainPriceScaleRule; + IPyth pyth; + RNSAuction rnsAuction; + uint256 maxAcceptableAge; + bytes32 pythIdForRONUSD; + } + + struct RNSOperationParam { + address admin; + address rnsUnified; + address publicResolver; + address rnsAuction; + address rnsDomainPrice; + } + + struct RNSReverseRegistrarParam { + address admin; + RNSUnified rnsUnified; + } + + struct RNSUnifiedParam { + address admin; + address pauser; + address controller; + address protectedSettler; uint64 gracePeriod; string baseTokenURI; - uint256 bidGapRatio; - address protectedSettler; + } + + struct RONRegistrarControllerParam { + address admin; + address pauser; + address operator; address payable treasury; uint256 maxAcceptableAge; - bytes32 pythIdForRONUSD; - uint256 maxCommitmentAge; uint256 minCommitmentAge; uint256 minRegistrationDuration; - PeriodScaler domainPriceScaleRule; - INSDomainPrice.RenewalFee[] renewalFees; + RNSUnified rnsUnified; + NameChecker nameChecker; + RNSDomainPrice rnsDomainPrice; + RNSReverseRegistrar rnsReverseRegistrar; + } + + struct SharedParameter { + NameCheckerParam nameChecker; + OwnedMulticallerParam ownedMulticaller; + PublicResolverParam publicResolver; + RNSAuctionParam rnsAuction; + RNSDomainPriceParam rnsDomainPrice; + RNSOperationParam rnsOperation; + RNSReverseRegistrarParam rnsReverseRegistrar; + RNSUnifiedParam rnsUnified; + RONRegistrarControllerParam ronRegistrarController; } function sharedArguments() external view returns (SharedParameter memory param); From 959c628d7fd9b7a0f96c6138eb1b7c90e19de5b9 Mon Sep 17 00:00:00 2001 From: "tu-do.ron" Date: Sun, 11 Feb 2024 19:28:31 +0000 Subject: [PATCH 7/7] script: minor refactor --- .../20231024_UpgradeDomainPrice.s.sol | 2 +- .../20231106_RevertRenewalFees.s.sol | 2 +- .../20231106_SubmitReservedNames.s.sol | 8 ++++---- .../20231106_TransferOwnership.s.sol | 8 ++++---- .../20231114_DeployNameCheckerLogic.s.sol | 2 +- .../2021115_MigrateInvalidAuctionNames.s.sol | 2 +- .../20231123_UpgradeAuctionClaimUnbiddedNames.s.sol | 4 ++-- .../20231124_DeployRNSOperation.s.sol | 6 +++--- ...231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol | 10 +++++----- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/script/20231024-upgrade-domain-price/20231024_UpgradeDomainPrice.s.sol b/script/20231024-upgrade-domain-price/20231024_UpgradeDomainPrice.s.sol index 9a40117a..42ff6657 100644 --- a/script/20231024-upgrade-domain-price/20231024_UpgradeDomainPrice.s.sol +++ b/script/20231024-upgrade-domain-price/20231024_UpgradeDomainPrice.s.sol @@ -14,7 +14,7 @@ contract Migration__20231024_UpgradeDomainPrice is Config__20231024 { console.log("operator", param.domainPriceOperators[0]); console.log("overrider", param.overrider); - RNSDomainPrice domainPrice = RNSDomainPrice(config.getAddressFromCurrentNetwork(Contract.RNSDomainPrice.key())); + RNSDomainPrice domainPrice = RNSDomainPrice(loadContract(Contract.RNSDomainPrice.key())); address admin = domainPrice.getRoleMember(0x00, 0); bytes32 overriderRole = domainPrice.OVERRIDER_ROLE(); vm.broadcast(admin); diff --git a/script/20231106-config-prelaunch/20231106_RevertRenewalFees.s.sol b/script/20231106-config-prelaunch/20231106_RevertRenewalFees.s.sol index eb8b0566..29be1b88 100644 --- a/script/20231106-config-prelaunch/20231106_RevertRenewalFees.s.sol +++ b/script/20231106-config-prelaunch/20231106_RevertRenewalFees.s.sol @@ -7,7 +7,7 @@ import { RNSDomainPrice } from "@rns-contracts/RNSDomainPrice.sol"; contract Migration__20231106_RevertRenewalFees is Migration { function run() public { - RNSDomainPrice domainPrice = RNSDomainPrice(config.getAddressFromCurrentNetwork(Contract.RNSDomainPrice.key())); + RNSDomainPrice domainPrice = RNSDomainPrice(loadContract(Contract.RNSDomainPrice.key())); ISharedArgument.RNSDomainPriceParam memory param = config.sharedArguments().rnsDomainPrice; vm.broadcast(domainPrice.getRoleMember(domainPrice.DEFAULT_ADMIN_ROLE(), 0)); diff --git a/script/20231106-config-prelaunch/20231106_SubmitReservedNames.s.sol b/script/20231106-config-prelaunch/20231106_SubmitReservedNames.s.sol index 90155f51..69dabe09 100644 --- a/script/20231106-config-prelaunch/20231106_SubmitReservedNames.s.sol +++ b/script/20231106-config-prelaunch/20231106_SubmitReservedNames.s.sol @@ -15,11 +15,11 @@ contract Migration__20231106_SubmitReservedNames is Migration { // default duration is 1 year uint64 duration = uint64(365 days); - RNSUnified rns = RNSUnified(config.getAddressFromCurrentNetwork(Contract.RNSUnified.key())); - address resolver = config.getAddressFromCurrentNetwork(Contract.PublicResolver.key()); - OwnedMulticaller multicall = OwnedMulticaller(config.getAddressFromCurrentNetwork(Contract.OwnedMulticaller.key())); + RNSUnified rns = RNSUnified(loadContract(Contract.RNSUnified.key())); + address resolver = loadContract(Contract.PublicResolver.key()); + OwnedMulticaller multicall = OwnedMulticaller(loadContract(Contract.OwnedMulticaller.key())); - console.log(config.getAddressFromCurrentNetwork(Contract.OwnedMulticaller.key())); + console.log(loadContract(Contract.OwnedMulticaller.key())); // vm.broadcast(rns.ownerOf(LibRNSDomain.RON_ID)); // diff --git a/script/20231106-config-prelaunch/20231106_TransferOwnership.s.sol b/script/20231106-config-prelaunch/20231106_TransferOwnership.s.sol index 9e8c5d19..8842cc9d 100644 --- a/script/20231106-config-prelaunch/20231106_TransferOwnership.s.sol +++ b/script/20231106-config-prelaunch/20231106_TransferOwnership.s.sol @@ -18,11 +18,11 @@ contract Migration__20231106_TransferOwnership is Migration { // fill in original owner address originalOwner = config.getSender(); - RNSUnified rns = RNSUnified(config.getAddressFromCurrentNetwork(Contract.RNSUnified.key())); + RNSUnified rns = RNSUnified(loadContract(Contract.RNSUnified.key())); OwnedMulticaller multicall = OwnedMulticaller(loadContractOrDeploy(Contract.OwnedMulticaller.key())); - address auction = config.getAddressFromCurrentNetwork(Contract.RNSAuction.key()); - address ronController = config.getAddressFromCurrentNetwork(Contract.RONRegistrarController.key()); - address reverseRegistrar = config.getAddressFromCurrentNetwork(Contract.RNSReverseRegistrar.key()); + address auction = loadContract(Contract.RNSAuction.key()); + address ronController = loadContract(Contract.RONRegistrarController.key()); + address reverseRegistrar = loadContract(Contract.RNSReverseRegistrar.key()); uint256 reverseId = uint256(LibRNSDomain.namehash("reverse")); console.log("reverseId", reverseId); diff --git a/script/20231114-deploy-name-checker-logic/20231114_DeployNameCheckerLogic.s.sol b/script/20231114-deploy-name-checker-logic/20231114_DeployNameCheckerLogic.s.sol index 8a386ee5..fd86c0d8 100644 --- a/script/20231114-deploy-name-checker-logic/20231114_DeployNameCheckerLogic.s.sol +++ b/script/20231114-deploy-name-checker-logic/20231114_DeployNameCheckerLogic.s.sol @@ -17,7 +17,7 @@ contract Migration__20231114_DeployNameCheckerLogic is Migration { function run() public { address newLogic = _deployLogic(Contract.NameChecker.key()); - NameChecker currentNameChecker = NameChecker(config.getAddressFromCurrentNetwork(Contract.NameChecker.key())); + NameChecker currentNameChecker = NameChecker(loadContract(Contract.NameChecker.key())); assertTrue(currentNameChecker.forbidden("hell"), "hell"); assertTrue(currentNameChecker.forbidden("hellscream"), "hellscream"); assertTrue(currentNameChecker.forbidden("hell123"), "hell123"); diff --git a/script/20231115-migrate-invalid-auction-names/2021115_MigrateInvalidAuctionNames.s.sol b/script/20231115-migrate-invalid-auction-names/2021115_MigrateInvalidAuctionNames.s.sol index a3c39ed7..e5f5465c 100644 --- a/script/20231115-migrate-invalid-auction-names/2021115_MigrateInvalidAuctionNames.s.sol +++ b/script/20231115-migrate-invalid-auction-names/2021115_MigrateInvalidAuctionNames.s.sol @@ -8,7 +8,7 @@ import { Migration } from "script/Migration.s.sol"; contract Migration__20231115_MigrateInvalidAuctionNames is Migration { function run() public { - RNSAuction auction = RNSAuction(config.getAddressFromCurrentNetwork(Contract.RNSAuction.key())); + RNSAuction auction = RNSAuction(loadContract(Contract.RNSAuction.key())); uint256[] memory ids = new uint256[](2); // namehash`pc.ron` diff --git a/script/20231123-upgrade-auction-claim-unbidded-names/20231123_UpgradeAuctionClaimUnbiddedNames.s.sol b/script/20231123-upgrade-auction-claim-unbidded-names/20231123_UpgradeAuctionClaimUnbiddedNames.s.sol index b554747a..5589d3bf 100644 --- a/script/20231123-upgrade-auction-claim-unbidded-names/20231123_UpgradeAuctionClaimUnbiddedNames.s.sol +++ b/script/20231123-upgrade-auction-claim-unbidded-names/20231123_UpgradeAuctionClaimUnbiddedNames.s.sol @@ -14,8 +14,8 @@ contract Migration__20231123_UpgradeAuctionClaimeUnbiddedNames is Migration { } function _validataBulkClaimUnbiddedNames(uint256 size) internal logFn("_validataBulkClaimUnbiddedNames") { - RNSAuction auction = RNSAuction(config.getAddressFromCurrentNetwork(Contract.RNSAuction.key())); - RNSUnified rns = RNSUnified(config.getAddressFromCurrentNetwork(Contract.RNSUnified.key())); + RNSAuction auction = RNSAuction(loadContract(Contract.RNSAuction.key())); + RNSUnified rns = RNSUnified(loadContract(Contract.RNSUnified.key())); uint256 auctionBalance = size; console.log("auctionBalance", auctionBalance); diff --git a/script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol b/script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol index 81376b08..7f8bce69 100644 --- a/script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol +++ b/script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol @@ -22,9 +22,9 @@ contract Migration__20231124_DeployRNSOperation is Migration { function run() public { rnsOperation = new RNSOperationDeploy().run(); - domainPrice = RNSDomainPrice(config.getAddressFromCurrentNetwork(Contract.RNSDomainPrice.key())); - rns = RNSUnified(config.getAddressFromCurrentNetwork(Contract.RNSUnified.key())); - auction = RNSAuction(config.getAddressFromCurrentNetwork(Contract.RNSAuction.key())); + domainPrice = RNSDomainPrice(loadContract(Contract.RNSDomainPrice.key())); + rns = RNSUnified(loadContract(Contract.RNSUnified.key())); + auction = RNSAuction(loadContract(Contract.RNSAuction.key())); address admin = rns.ownerOf(LibRNSDomain.RON_ID); diff --git a/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol b/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol index 756b47c0..e057f5a6 100644 --- a/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol +++ b/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol @@ -26,8 +26,8 @@ contract Migration__20231205_UpgradeRNSAuctionAndDeployRNSOperation is Config__M function run() public onlyOn(DefaultNetwork.RoninMainnet.key()) { ISharedArgument.RNSOperationParam memory param = config.sharedArguments().rnsOperation; - ProxyAdmin proxyAdmin = ProxyAdmin(config.getAddressFromCurrentNetwork(DefaultContract.ProxyAdmin.key())); - address rnsAuctionProxy = config.getAddressFromCurrentNetwork(Contract.RNSAuction.key()); + ProxyAdmin proxyAdmin = ProxyAdmin(loadContract(DefaultContract.ProxyAdmin.key())); + address rnsAuctionProxy = loadContract(Contract.RNSAuction.key()); address logic = _deployLogic(Contract.RNSAuction.key()); vm.prank(proxyAdmin.owner()); @@ -39,7 +39,7 @@ contract Migration__20231205_UpgradeRNSAuctionAndDeployRNSOperation is Config__M // deploy rns operation contract new DeployRNSOperationScript().run(); - RNSOperation rnsOperation = RNSOperation(config.getAddressFromCurrentNetwork(Contract.RNSOperation.key())); + RNSOperation rnsOperation = RNSOperation(loadContract(Contract.RNSOperation.key())); // transfer owner ship for RNSOperation vm.broadcast(rnsOperation.owner()); @@ -49,8 +49,8 @@ contract Migration__20231205_UpgradeRNSAuctionAndDeployRNSOperation is Config__M } function _validataBulkClaimUnbiddedNames(uint256 size) internal logFn("_validataBulkClaimUnbiddedNames") { - RNSAuction auction = RNSAuction(config.getAddressFromCurrentNetwork(Contract.RNSAuction.key())); - RNSUnified rns = RNSUnified(config.getAddressFromCurrentNetwork(Contract.RNSUnified.key())); + RNSAuction auction = RNSAuction(loadContract(Contract.RNSAuction.key())); + RNSUnified rns = RNSUnified(loadContract(Contract.RNSUnified.key())); uint256 auctionBalance = size; console.log("auctionBalance", auctionBalance);