Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(script): implement add-v0.3.4-rns-unified-migration-script #185

Merged
Changes from 1 commit
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
903c0d7
forge install: foundry-deployment-kit
TuDo1403 Dec 18, 2023
76e962b
forge install: contract-libs
TuDo1403 Dec 18, 2023
1453169
feat: migrate all migrations script to new foundry-deployment-kit ver…
TuDo1403 Dec 18, 2023
35646fe
chore: update foundry-deployment-kit
TuDo1403 Feb 11, 2024
9ca988a
script: move validate logic into post check function, reuse script lo…
TuDo1403 Feb 11, 2024
a681418
script: split parameters in ISharedArgument
TuDo1403 Feb 11, 2024
c41d583
script: minor refactor
TuDo1403 Feb 11, 2024
e17a8ed
chore: update forge-std
TuDo1403 Feb 11, 2024
962a73e
forge install: foundry-deployment-kit
TuDo1403 Feb 11, 2024
b101363
script: add migration script for v0.3.4
TuDo1403 Feb 18, 2024
0676eda
forge install: foundry-deployment-kit
TuDo1403 Feb 20, 2024
d28e57b
forge install: foundry-deployment-kit
TuDo1403 Feb 20, 2024
8fbbecc
script: minor fix script
TuDo1403 Feb 20, 2024
b87cf5c
script: minor fix script
TuDo1403 Feb 20, 2024
7ec1084
script: minor script fix and add rns operation deploy script
TuDo1403 Feb 21, 2024
138e7a0
script: resolve conflict
TuDo1403 Feb 23, 2024
399a1ef
Merge branch 'feature/tier' into implement-feature/script/add-v0.3.4-…
TuDo1403 Mar 12, 2024
8fe81bb
script: add bash script for bulk override tiers and bulk reset renewa…
TuDo1403 Mar 12, 2024
112ebf2
forge install: foundry-deployment-kit
TuDo1403 Mar 12, 2024
2a13fb9
chore: rename script
TuDo1403 Mar 12, 2024
cfc362d
script: move override tier to post check
TuDo1403 Mar 13, 2024
1f23eb8
Merge branch 'feature/script' into implement-feature/script/add-v0.3.…
TuDo1403 Mar 25, 2024
a374601
fix: resolve conflict
TuDo1403 Mar 25, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
script: add migration script for v0.3.4
TuDo1403 committed Feb 23, 2024

Unverified

This user has not yet uploaded their public signing key.
commit b101363a2a3c397267630b89ac66b8cb83d2dd92
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import { INSDomainPrice, RNSDomainPrice } from "@rns-contracts/RNSDomainPrice.sol";
import { Contract } from "../utils/Contract.sol";
import "./20240215_Migration.s.sol";

contract Migration__01_ResetCommunityNamesRenewalFees_RNSDomainPrice is Migration__20240215 {
bytes32[] internal _lbHashes;

function run() external {
RNSDomainPrice rnsDomainPrice = RNSDomainPrice(loadContract(Contract.RNSDomainPrice.key()));

(_labels,) = _parseData(DATA_PATH);
_lbHashes = toLabelHashes(_labels);

uint256[] memory renewalFees = new uint256[](_lbHashes.length);

address overrider = rnsDomainPrice.getRoleMember(rnsDomainPrice.OVERRIDER_ROLE(), 0);
vm.startBroadcast(overrider);
rnsDomainPrice.bulkOverrideRenewalFees(_lbHashes, renewalFees);

vm.stopBroadcast();
}

function _postCheck() internal override {
RNSDomainPrice rnsDomainPrice = RNSDomainPrice(loadContract(Contract.RNSDomainPrice.key()));

for (uint256 i; i < _lbHashes.length; ++i) {
(INSDomainPrice.UnitPrice memory renewalFee,) = rnsDomainPrice.getRenewalFee(_labels[i], 1);
assertEq(renewalFee.usd, 0, "renewal fee not reset");
assertEq(renewalFee.ron, 0, "renewal fee not reset");
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import { IMulticall3 } from "forge-std/interfaces/IMulticall3.sol";
import { LibString } from "solady/utils/LibString.sol";
import { DefaultContract } from "foundry-deployment-kit/utils/DefaultContract.sol";
import { Contract } from "../utils/Contract.sol";
import { INSDomainPrice, RNSDomainPrice } from "@rns-contracts/RNSDomainPrice.sol";
import "./20240215_Migration.s.sol";

contract Migration__02_UpgradeRNSDomainPriceAndOverrideTierForCommunityNames_RNSDomainPrice is Migration__20240215 {
using LibString for *;

RNSDomainPrice internal _domainPrice;
IMulticall3 internal _multicall;
bytes32[] internal _lbHashes;

function run() external {
_domainPrice = RNSDomainPrice(_upgradeProxy(Contract.RNSDomainPrice.key()));
_multicall = IMulticall3(loadContract(DefaultContract.Multicall3.key()));

(_labels, _tiers) = _parseData(DATA_PATH);
_lbHashes = toLabelHashes(_labels);

vm.broadcast(_domainPrice.getRoleMember(_domainPrice.OVERRIDER_ROLE(), 0));
_domainPrice.bulkOverrideTiers(_lbHashes, _tiers);
}

function _postCheck() internal override {
IMulticall3.Call[] memory calls = new IMulticall3.Call[](_lbHashes.length);

for (uint256 i; i < _lbHashes.length; ++i) {
calls[i] = IMulticall3.Call({
target: address(_domainPrice),
callData: abi.encodeCall(_domainPrice.getTier, (_labels[i]))
});
}

(, bytes[] memory returnData) = _multicall.aggregate(calls);
uint256[] memory tiers = new uint256[](_lbHashes.length);

for (uint256 i; i < _lbHashes.length; ++i) {
tiers[i] = abi.decode(returnData[i], (uint256));
console.log("label:", _labels[i], "tier:", tiers[i]);
assertEq(tiers[i], _tiers[i], string.concat("tier not set", vm.toString(i)));
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import { console2 as console } from "forge-std/console2.sol";
import { JSONParserLib } from "solady/utils/JSONParserLib.sol";
import { Migration, ISharedArgument } from "../Migration.s.sol";
import { LibRNSDomain } from "@rns-contracts/libraries/LibRNSDomain.sol";

contract Migration__20240215 is Migration {
using JSONParserLib for *;
using LibRNSDomain for *;

string internal constant DATA_PATH = "script/20240215-separate-tier-and-domain-price/data/communityNames.json";

uint256[] internal _tiers;
string[] internal _labels;

function toLabelHashes(string[] memory labels) internal pure returns (bytes32[] memory) {
bytes32[] memory hashes = new bytes32[](labels.length);
for (uint256 i; i < labels.length; ++i) {
hashes[i] = labels[i].hashLabel();
}
return hashes;
}

function toNameHashes(string[] memory labels) internal pure returns (uint256[] memory) {
uint256[] memory hashes = new uint256[](labels.length);
for (uint256 i; i < labels.length; ++i) {
hashes[i] = uint256(labels[i].namehash());
}
return hashes;
}

function _parseData(string memory path) internal view returns (string[] memory labels, uint256[] memory tiers) {
string memory raw = vm.readFile(path);
JSONParserLib.Item memory communityNames = raw.parse().at('"communityNames"');
uint256 length = communityNames.size();
console.log("length", length);

labels = new string[](length);
tiers = new uint256[](length);

for (uint256 i; i < length; ++i) {
tiers[i] = vm.parseUint(communityNames.at(i).at('"tier"').value().decodeString());
labels[i] = (communityNames.at(i).at('"label"').value().decodeString());
}
}
}