Skip to content

Commit c3f9f1c

Browse files
authored
Merge pull request #139 from axieinfinity/implement-feature/rework/base-migration
feat(rework): implement `base-migration`
2 parents 787ff64 + 0522298 commit c3f9f1c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1408
-713
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,5 @@ docs/
1919
node_modules/
2020
yarn-error.log
2121
.yarn
22-
.yarnrc.yml
22+
.yarnrc.yml
23+
deployments/**/exported_address

hardhat.config.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,15 @@ import {
33
HardhatUserConfig,
44
NetworkUserConfig,
55
} from "hardhat/types";
6-
import * as dotenv from 'dotenv';
7-
8-
dotenv.config();
9-
10-
const { TESTNET_URL, MAINNET_URL } = process.env;
116

127
const testnet: NetworkUserConfig = {
138
chainId: 2021,
14-
url: TESTNET_URL || "https://saigon-testnet.roninchain.com/rpc",
9+
url: "https://saigon-testnet.roninchain.com/rpc",
1510
};
1611

1712
const mainnet: NetworkUserConfig = {
1813
chainId: 2020,
19-
url: MAINNET_URL || "https://api.roninchain.com/rpc",
14+
url: "https://api.roninchain.com/rpc",
2015
};
2116

2217
const config: HardhatUserConfig = {

run.sh

Lines changed: 106 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,23 @@
1+
# Function to display script usage
2+
usage() {
3+
forge script --help
4+
5+
echo ""
6+
echo "\033[33mFoundry Script Usage:\033[0m"
7+
echo "Usage: $0 [forge_options] --no-postcheck --sender {sender_address} --force-generate-artifact"
8+
echo "Options:"
9+
echo " --no-postcheck: Disable post-check"
10+
echo " --sender: Specify the default sender address"
11+
echo " --force-generate-artifact: Force generate artifact"
12+
13+
exit 1
14+
}
15+
16+
# Check if command-line arguments are provided
17+
if [ "$#" -eq 0 ]; then
18+
usage
19+
fi
20+
121
verify_arg=""
222
extra_argument=""
323

@@ -6,6 +26,64 @@ op_command=""
626
network_name=""
727
is_broadcast=false
828
should_verify=false
29+
force_generate_artifact=false
30+
# Define the deployments folder by concatenating it with the child folder
31+
root="deployments/"
32+
33+
export_address() {
34+
index=0
35+
36+
start_time=$(date +%s)
37+
38+
for folder in "$root"/*; do
39+
# If exported_address.toml exists, delete it
40+
if [ -f "$folder"/exported_address ]; then
41+
rm "$folder"/exported_address
42+
fi
43+
44+
# Create a new exported_address file
45+
touch "$folder"/exported_address
46+
47+
for file in "$folder"/*.json; do
48+
49+
# Check if the file exists and is a regular file
50+
if [ -f "$file" ] && [ "$(basename "$file")" != ".chainId" ] && [ "$(basename "$file")" != "exported_address" ]; then
51+
((index++))
52+
(
53+
# Extract address from the JSON file
54+
contractAddress=$(jq -r '.address' "$file")
55+
# Extract contractName from file name without the extension
56+
contractName=$(basename "$file" .json)
57+
58+
# Check if contractName and address are not empty
59+
if [ -n "$contractName" ]; then
60+
# Write to file the contractName and address
61+
echo "$contractName.json@$contractAddress" >>"$folder"/exported_address
62+
else
63+
echo "Error: Missing contractName or address in $file"
64+
fi
65+
) &
66+
fi
67+
68+
# Check if index is a multiple of 10, then wait
69+
if [ $((index % 10)) -eq 0 ]; then
70+
wait
71+
fi
72+
done
73+
done
74+
75+
wait
76+
77+
end_time=$(date +%s)
78+
echo "Export address in deployment folder: $((end_time - start_time)) seconds"
79+
}
80+
81+
export_address
82+
83+
echo "\033[33mTrying to compile contracts ...\033[0m"
84+
forge build # Ensure the contracts are compiled before running the script
85+
86+
index=0
987

1088
for arg in "$@"; do
1189
case $arg in
@@ -22,11 +100,15 @@ for arg in "$@"; do
22100
;;
23101
-f | --fork-url)
24102
network_name=${@:index+2:1}
25-
extra_argument+="network.${network_name}@"
103+
# skip if network_name is localhost
104+
if [[ $network_name != "localhost" ]]; then
105+
extra_argument+="network.${network_name}@"
106+
107+
set -- "${@/#-f/}"
108+
set -- "${@/#--fork-url/}"
109+
set -- "${@/#$network_name/}"
110+
fi
26111

27-
set -- "${@/#-f/}"
28-
set -- "${@/#--fork-url/}"
29-
set -- "${@/#$network_name/}"
30112
;;
31113
--fork-block-number)
32114
fork_block_number=${@:index+2:1}
@@ -38,14 +120,31 @@ for arg in "$@"; do
38120
--broadcast)
39121
is_broadcast=true
40122
;;
123+
--sender)
124+
sender=${@:index+2:1}
125+
extra_argument+="sender.${sender}@"
126+
;;
127+
--force-generate-artifact)
128+
force_generate_artifact=true
129+
130+
set -- "${@/#--force-generate-artifact/}"
131+
;;
132+
--help)
133+
usage
134+
exist 1
135+
;;
41136
*) ;;
42137
esac
43138
index=$((index + 1))
44139
done
45140

46141
should_verify=$([[ $should_verify == true && $is_broadcast == true ]] && echo true || echo false)
47142

48-
if [[ $should_verify == true ]]; then
143+
if [[ $force_generate_artifact == true ]]; then
144+
extra_argument+=generate-artifact@
145+
fi
146+
147+
if [[ $should_verify == true ]] && [[ $force_generate_artifact == false ]]; then
49148
extra_argument+=generate-artifact@
50149
fi
51150

@@ -67,17 +166,16 @@ if [[ ! $extra_argument == *"sender"* ]] && [[ ! $extra_argument == *"trezor"* ]
67166
fi
68167
fi
69168

70-
calldata=$(cast calldata 'run()')
71169
start_time=$(date +%s)
72170

73-
${op_command} forge script ${verify_arg} ${@} -g 200 --sig 'run(bytes,string)' ${calldata} "${extra_argument}"
171+
${op_command} forge script ${verify_arg} ${@} -g 200 --sig 'run(bytes,string)' $(cast calldata 'run()') "${extra_argument}"
74172

75173
# Check if the command was successful
76174
if [ $? -eq 0 ]; then
77175
if [[ $should_verify == true ]]; then
78176
if [[ $network_name == "ronin-mainnet" ]] || [[ $network_name == "ronin-testnet" ]]; then
79177
echo "Verifying contract..."
80-
${op_command} yarn hardhat sourcify --endpoint https://sourcify.roninchain.com/server --network ${network_name}
178+
yarn hardhat sourcify --endpoint https://sourcify.roninchain.com/server --network ${network_name}
81179
fi
82180
fi
83181
fi

script/ArtifactFactory.sol

Lines changed: 0 additions & 97 deletions
This file was deleted.

script/BaseGeneralConfig.sol

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -54,30 +54,9 @@ contract BaseGeneralConfig is
5454
function _setUpSender() internal virtual { }
5555

5656
function _setUpDefaultNetworks() private {
57-
setNetworkInfo(
58-
DefaultNetwork.Local.chainId(),
59-
DefaultNetwork.Local.key(),
60-
DefaultNetwork.Local.chainAlias(),
61-
DefaultNetwork.Local.deploymentDir(),
62-
DefaultNetwork.Local.envLabel(),
63-
DefaultNetwork.Local.explorer()
64-
);
65-
setNetworkInfo(
66-
DefaultNetwork.RoninTestnet.chainId(),
67-
DefaultNetwork.RoninTestnet.key(),
68-
DefaultNetwork.RoninTestnet.chainAlias(),
69-
DefaultNetwork.RoninTestnet.deploymentDir(),
70-
DefaultNetwork.RoninTestnet.envLabel(),
71-
DefaultNetwork.RoninTestnet.explorer()
72-
);
73-
setNetworkInfo(
74-
DefaultNetwork.RoninMainnet.chainId(),
75-
DefaultNetwork.RoninMainnet.key(),
76-
DefaultNetwork.RoninMainnet.chainAlias(),
77-
DefaultNetwork.RoninMainnet.deploymentDir(),
78-
DefaultNetwork.RoninMainnet.envLabel(),
79-
DefaultNetwork.RoninMainnet.explorer()
80-
);
57+
setNetworkInfo(DefaultNetwork.Local.data());
58+
setNetworkInfo(DefaultNetwork.RoninTestnet.data());
59+
setNetworkInfo(DefaultNetwork.RoninMainnet.data());
8160

8261
_setUpNetworks();
8362
}
@@ -142,10 +121,20 @@ contract BaseGeneralConfig is
142121
if (_option.trezor) {
143122
_loadTrezorAccount();
144123
label(block.chainid, _trezorSender, "TrezorSender");
124+
} else if (_option.sender != address(0x0)) {
125+
_envSender = _option.sender;
126+
_trezorSender = _option.sender;
127+
128+
label(block.chainid, _option.sender, "OverrideSender");
145129
} else {
146-
string memory envLabel = getPrivateKeyEnvLabel(getCurrentNetwork());
147-
_loadENVAccount(envLabel);
148-
label(block.chainid, _envSender, "ENVSender");
130+
if (getCurrentNetwork() == DefaultNetwork.Local.key()) {
131+
_envSender = DEFAULT_SENDER;
132+
label(block.chainid, _envSender, "DefaultLocalSender");
133+
} else {
134+
string memory envLabel = getPrivateKeyEnvLabel(getCurrentNetwork());
135+
_loadENVAccount(envLabel);
136+
label(block.chainid, _envSender, "ENVSender");
137+
}
149138
}
150139
}
151140
}

0 commit comments

Comments
 (0)