@@ -9,9 +9,10 @@ basedir=$(
99)
1010workspace=${basedir}
1111source ${workspace} /.env
12- size=$(( BSC_CLUSTER_SIZE))
13- stateScheme=" path"
14- dbEngine=" pebble"
12+ source ${workspace} /qa-env-resource/machines_meta.sh # including machine ips and ids, don't upload!!!
13+ size=${# ips2ids[@]}
14+ stateScheme=" hash"
15+ dbEngine=" leveldb"
1516gcmode=" full"
1617epoch=200
1718blockInterval=3
@@ -45,14 +46,13 @@ function reset_genesis() {
4546 mv genesis-template.json.bk genesis-template.json
4647 fi
4748
48- poetry install --no-root
49+ # poetry install --no-root
4950 npm install
5051 rm -rf lib/forge-std
5152 forge install --no-git --no-commit foundry-rs/forge-std@v1.7.3
5253 cd lib/forge-std/lib
5354 rm -rf ds-test
5455 git clone https://github.com/dapphub/ds-test
55-
5656}
5757
5858function prepare_config() {
@@ -67,6 +67,10 @@ function prepare_config() {
6767 done
6868
6969 mkdir -p ${workspace} /.local/bsc/node${i}
70+ cp ${workspace} /.local/bsc/password.txt ${workspace} /.local/bsc/node${i} /
71+ cp ${workspace} /qa-env-resource/* ${workspace} /.local/bsc/node${i} /
72+ sed -i -e " s/{{validatorAddr}}/${cons_addr} /g" ${workspace} /.local/bsc/node${i} /chaind.sh
73+ cp ${workspace} /.local/bsc/hardforkTime.txt ${workspace} /.local/bsc/node${i} /hardforkTime.txt
7074 bbcfee_addrs=${fee_addr}
7175 powers=" 0x000001d1a94a2000"
7276 mv ${workspace} /.local/bsc/bls${i} /bls ${workspace} /.local/bsc/node${i} / && rm -rf ${workspace} /.local/bsc/bls${i}
@@ -80,10 +84,10 @@ function prepare_config() {
8084 cd ${workspace} /genesis/
8185 git checkout HEAD contracts
8286 sed -i -e s/^}/" function shutdownBCStaking() external { registeredContractChannelMap[VALIDATOR_CONTRACT_ADDR][STAKING_CHANNELID] = false; }}/" ${workspace} /genesis/contracts/CrossChain.sol
83- poetry run python -m scripts.generate generate-validators
84- poetry run python -m scripts.generate generate-init-holders " ${INIT_HOLDER} "
85- poetry run python -m scripts.generate dev --dev-chain-id ${BSC_CHAIN_ID} --whitelist-1 " ${INIT_HOLDER} " \
86- --epoch ${epoch} --misdemeanor-threshold " 5 " --felony-threshold " 10 " \
87+ python3 -m scripts.generate generate-validators
88+ python3 -m scripts.generate generate-init-holders " ${INIT_HOLDER} "
89+ python3 -m scripts.generate dev --dev-chain-id ${BSC_CHAIN_ID} --whitelist-1 " ${INIT_HOLDER} " \
90+ --epoch ${epoch} \
8791 --init-felony-slash-scope " 60" \
8892 --breathe-block-interval " 1 minutes" \
8993 --block-interval ${blockInterval} \
@@ -102,16 +106,21 @@ function prepare_config() {
102106
103107function initNetwork() {
104108 cd ${workspace}
105- ${workspace} /bin/geth init-network --init.dir ${workspace} /.local/bsc --init.size=${size} --config ${workspace} /config.toml ${workspace} /genesis/genesis.json
109+ ${workspace} /bin/geth init-network --init.dir ${workspace} /.local/bsc --init.size=${size} --init.ips " ${validator_ips_comma} " -- config ${workspace} /qa-env-resource /config.toml ${workspace} /genesis/genesis.json
106110 rm -rf ${workspace} /* bsc.log*
107111 for (( i = 0 ; i < size; i++ )) ; do
108112 sed -i -e ' /"<nil>"/d' ${workspace} /.local/bsc/node${i} /config.toml
109113 cp -R ${workspace} /.local/bsc/validator${i} /keystore ${workspace} /.local/bsc/node${i}
110114
111- cp ${workspace} /bin/geth ${workspace} /.local/bsc/node${i} /geth${i}
115+ # cp ${workspace}/bin/geth ${workspace}/.local/bsc/node${i}/geth${i}
116+ cp ${workspace} /bin/geth ${workspace} /.local/bsc/node${i} /bsc
112117 # init genesis
113118 initLog=${workspace} /.local/bsc/node${i} /init.log
114- ${workspace} /bin/geth --datadir ${workspace} /.local/bsc/node${i} init --state.scheme ${stateScheme} --db.engine ${dbEngine} ${workspace} /genesis/genesis.json > " ${initLog} " 2>&1
119+ if [ ` expr $i \* 2` -ge ${size} ] ; then
120+ ${workspace} /bin/geth --datadir ${workspace} /.local/bsc/node${i} init --state.scheme path --db.engine pebble ${workspace} /genesis/genesis.json > " ${initLog} " 2>&1
121+ else
122+ ${workspace} /bin/geth --datadir ${workspace} /.local/bsc/node${i} init --state.scheme ${stateScheme} --db.engine ${dbEngine} ${workspace} /genesis/genesis.json > " ${initLog} " 2>&1
123+ fi
115124 done
116125}
117126
@@ -151,6 +160,25 @@ function native_start() {
151160 done
152161}
153162
163+ function remote_start() {
164+ rm -rf /mnt/efs/bsc-qa/clusterNetwork
165+ cp -r ${workspace} /.local/bsc /mnt/efs/bsc-qa/clusterNetwork
166+ ips=(${validator_ips_comma// ,/ } )
167+ for (( i= 0 ;i< ${# ips[@]} ;i++ )) ; do
168+ dst_id=${ips2ids[${ips[i]} ]}
169+ aws ssm send-command --instance-ids " ${dst_id} " --document-name " AWS-RunShellScript" --parameters commands=" sudo bash -x /mnt/efs/bsc-qa/clusterNetwork/node${i} /init.sh"
170+ done
171+ }
172+
173+ function remote_upgrade() {
174+ cp ${workspace} /bin/geth /mnt/efs/bsc-qa/clusterNetwork/
175+ cp ${workspace} /qa-env-resource/upgrade-single.sh /mnt/efs/bsc-qa/clusterNetwork/
176+ for dst_id in ${ips2ids[@]} ; do
177+ aws ssm send-command --instance-ids " ${dst_id} " --document-name " AWS-RunShellScript" \
178+ --parameters commands=" sudo cp /mnt/efs/bsc-qa/clusterNetwork/geth /tmp/bsc && sudo cp /mnt/efs/bsc-qa/clusterNetwork/upgrade-single.sh /tmp/ && sudo bash -x /tmp/upgrade-single.sh"
179+ done
180+ }
181+
154182# # docker relate begin
155183function generate_static_peers() {
156184 tool=${workspace} /bin/bootnode
@@ -257,6 +285,16 @@ restart)
257285 exit_previous
258286 native_start
259287 ;;
288+ remote_reset)
289+ create_validator
290+ reset_genesis
291+ prepare_config
292+ initNetwork
293+ remote_start
294+ ;;
295+ remote_upgrade)
296+ remote_upgrade
297+ ;;
260298install_k8s)
261299 create_validator
262300 reset_genesis
@@ -269,6 +307,6 @@ uninstall_k8s)
269307 uninstall_k8s
270308 ;;
271309* )
272- echo " Usage: start_cluster.sh | reset | stop | start | restart"
310+ echo " Usage: start_cluster.sh | reset | stop | start | restart | remote_reset | remote_upgrade "
273311 ;;
274312esac
0 commit comments