@@ -9,13 +9,14 @@ basedir=$(
99)
1010workspace=${basedir}
1111source ${workspace} /.env
12- size=$(( BSC_CLUSTER_SIZE))
12+ source ${workspace} /qa-env-resource/machines_meta.sh # including machine ips and ids, don't upload!!!
13+ size=${# ips2ids[@]}
1314stateScheme=" hash"
1415dbEngine=" leveldb"
1516gcmode=" full"
1617epoch=200
1718blockInterval=3
18- needRegister=false
19+ needRegister=true
1920sleepBeforeStart=10
2021
2122# stop geth client
@@ -47,14 +48,13 @@ function reset_genesis() {
4748 mv genesis-template.json.bk genesis-template.json
4849 fi
4950
50- poetry install --no-root
51+ # poetry install --no-root
5152 npm install
5253 rm -rf lib/forge-std
5354 forge install --no-git --no-commit foundry-rs/forge-std@v1.7.3
5455 cd lib/forge-std/lib
5556 rm -rf ds-test
5657 git clone https://github.com/dapphub/ds-test
57-
5858}
5959
6060function prepare_config() {
@@ -73,6 +73,8 @@ function prepare_config() {
7373 mkdir -p ${workspace} /.local/bsc/node${i}
7474 cp ${workspace} /keys/password.txt ${workspace} /.local/bsc/node${i} /
7575 cp ${workspace} /.local/bsc/hardforkTime.txt ${workspace} /.local/bsc/node${i} /
76+ cp ${workspace} /qa-env-resource/* ${workspace} /.local/bsc/node${i} /
77+ sed -i -e " s/{{validatorAddr}}/${cons_addr} /g" ${workspace} /.local/bsc/node${i} /chaind.sh
7678 bbcfee_addrs=${fee_addr}
7779 powers=" 0x000001d1a94a2000" # 2000000000000
7880 mv ${workspace} /.local/bsc/bls${i} /bls ${workspace} /.local/bsc/node${i} / && rm -rf ${workspace} /.local/bsc/bls${i}
@@ -89,9 +91,9 @@ function prepare_config() {
8991 sed -i -e ' /registeredContractChannelMap\[VALIDATOR_CONTRACT_ADDR\]\[STAKING_CHANNELID\]/d' ${workspace} /genesis/contracts/CrossChain.sol
9092 sed -i -e ' s/public onlyCoinbase onlyZeroGasPrice {/public onlyCoinbase onlyZeroGasPrice {if (block.number < 30) return;/' ${workspace} /genesis/contracts/BSCValidatorSet.sol
9193 fi
92- poetry run python -m scripts.generate generate-validators
93- poetry run python -m scripts.generate generate-init-holders " ${initHolders} "
94- poetry run python -m scripts.generate dev --dev-chain-id ${BSC_CHAIN_ID} --whitelist-1 " ${INIT_HOLDER} " \
94+ python3 -m scripts.generate generate-validators
95+ python3 -m scripts.generate generate-init-holders " ${initHolders} "
96+ python3 -m scripts.generate dev --dev-chain-id ${BSC_CHAIN_ID} --whitelist-1 " ${INIT_HOLDER} " \
9597 --epoch ${epoch} \
9698 --init-felony-slash-scope " 60" \
9799 --breathe-block-interval " 10 minutes" \
@@ -104,6 +106,7 @@ function prepare_config() {
104106 --felony-jail-time " 3 minutes" \
105107 --init-voting-delay " 1 minutes / BLOCK_INTERVAL" \
106108 --init-voting-period " 2 minutes / BLOCK_INTERVAL" \
109+ --init-quorum-numerator " 7" \
107110 --init-min-period-after-quorum " uint64(1 minutes / BLOCK_INTERVAL)" \
108111 --governor-protector " ${INIT_HOLDER} " \
109112 --init-minimal-delay " 1 minutes"
@@ -115,13 +118,14 @@ function initNetwork() {
115118 mkdir ${workspace} /.local/bsc/node${i} /geth
116119 cp ${workspace} /keys/nodekey${i} ${workspace} /.local/bsc/node${i} /geth/nodekey
117120 done
118- ${workspace} /bin/geth init-network --init.dir ${workspace} /.local/bsc --init.size=${size} --config ${workspace} /config.toml ${workspace} /genesis/genesis.json
121+ ${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
119122 rm -rf ${workspace} /* bsc.log*
120123 for (( i = 0 ; i < size; i++ )) ; do
121124 sed -i -e ' /"<nil>"/d' ${workspace} /.local/bsc/node${i} /config.toml
122125 mv ${workspace} /.local/bsc/validator${i} /keystore ${workspace} /.local/bsc/node${i} / && rm -rf ${workspace} /.local/bsc/validator${i}
123126
124- cp ${workspace} /bin/geth ${workspace} /.local/bsc/node${i} /geth${i}
127+ # cp ${workspace}/bin/geth ${workspace}/.local/bsc/node${i}/geth${i}
128+ cp ${workspace} /bin/geth ${workspace} /.local/bsc/node${i} /bsc
125129 # init genesis
126130 initLog=${workspace} /.local/bsc/node${i} /init.log
127131 if [ $i -eq 0 ] ; then
@@ -179,15 +183,34 @@ function native_start() {
179183
180184function register_stakehub(){
181185 if ${needRegister} ; then
182- echo " sleep 45s to wait feynman enable"
183- sleep 45
186+ echo " sleep 100s to wait feynman enable"
187+ sleep 100
184188 for (( i = 0 ; i < size; i++ )) ; do
185189 ${workspace} /create-validator/create-validator --consensus-key-dir ${workspace} /keys/validator${i} --vote-key-dir ${workspace} /keys/bls${i} \
186190 --password-path ${workspace} /keys/password.txt --amount 20001 --validator-desc Val${i} --rpc-url ${RPC_URL}
187191 done
188192 fi
189193}
190194
195+ function remote_start() {
196+ rm -rf /mnt/efs/bsc-qa/clusterNetwork
197+ cp -r ${workspace} /.local/bsc /mnt/efs/bsc-qa/clusterNetwork
198+ ips=(${validator_ips_comma// ,/ } )
199+ for (( i= 0 ;i< ${# ips[@]} ;i++ )) ; do
200+ dst_id=${ips2ids[${ips[i]} ]}
201+ 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"
202+ done
203+ }
204+
205+ function remote_upgrade() {
206+ cp ${workspace} /bin/geth /mnt/efs/bsc-qa/clusterNetwork/
207+ cp ${workspace} /qa-env-resource/upgrade-single.sh /mnt/efs/bsc-qa/clusterNetwork/
208+ for dst_id in ${ips2ids[@]} ; do
209+ aws ssm send-command --instance-ids " ${dst_id} " --document-name " AWS-RunShellScript" \
210+ --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"
211+ done
212+ }
213+
191214# # docker relate begin
192215function generate_static_peers() {
193216 tool=${workspace} /bin/bootnode
@@ -296,6 +319,17 @@ restart)
296319 exit_previous $ValidatorIdx
297320 native_start $ValidatorIdx
298321 ;;
322+ remote_reset)
323+ create_validator
324+ reset_genesis
325+ prepare_config
326+ initNetwork
327+ remote_start
328+ register_stakehub
329+ ;;
330+ remote_upgrade)
331+ remote_upgrade
332+ ;;
299333install_k8s)
300334 create_validator
301335 reset_genesis
@@ -308,6 +342,6 @@ uninstall_k8s)
308342 uninstall_k8s
309343 ;;
310344* )
311- echo " Usage: start_cluster.sh | reset | stop | start | restart"
345+ echo " Usage: start_cluster.sh | reset | stop | start | restart | remote_reset | remote_upgrade "
312346 ;;
313347esac
0 commit comments