-
Notifications
You must be signed in to change notification settings - Fork 41
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
248 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,14 +9,16 @@ basedir=$( | |
) | ||
workspace=${basedir} | ||
source ${workspace}/.env | ||
size=$((BSC_CLUSTER_SIZE)) | ||
source ${workspace}/qa-env-resource/machines_meta.sh # including machine ips and ids, don't upload!!! | ||
size=${#ips2ids[@]} | ||
stateScheme="hash" | ||
dbEngine="leveldb" | ||
gcmode="full" | ||
epoch=200 | ||
blockInterval=3 | ||
needRegister=false | ||
needRegister=true | ||
sleepBeforeStart=10 | ||
copyDir="bsc-qa" | ||
|
||
# stop geth client | ||
function exit_previous() { | ||
|
@@ -47,14 +49,13 @@ function reset_genesis() { | |
mv genesis-template.json.bk genesis-template.json | ||
fi | ||
|
||
poetry install --no-root | ||
# poetry install --no-root | ||
npm install | ||
rm -rf lib/forge-std | ||
forge install --no-git --no-commit foundry-rs/[email protected] | ||
cd lib/forge-std/lib | ||
rm -rf ds-test | ||
git clone https://github.com/dapphub/ds-test | ||
|
||
} | ||
|
||
function prepare_config() { | ||
|
@@ -73,6 +74,8 @@ function prepare_config() { | |
mkdir -p ${workspace}/.local/bsc/node${i} | ||
cp ${workspace}/keys/password.txt ${workspace}/.local/bsc/node${i}/ | ||
cp ${workspace}/.local/bsc/hardforkTime.txt ${workspace}/.local/bsc/node${i}/ | ||
cp ${workspace}/qa-env-resource/* ${workspace}/.local/bsc/node${i}/ | ||
sed -i -e "s/{{validatorAddr}}/${cons_addr}/g" ${workspace}/.local/bsc/node${i}/chaind.sh | ||
bbcfee_addrs=${fee_addr} | ||
powers="0x000001d1a94a2000" #2000000000000 | ||
mv ${workspace}/.local/bsc/bls${i}/bls ${workspace}/.local/bsc/node${i}/ && rm -rf ${workspace}/.local/bsc/bls${i} | ||
|
@@ -87,11 +90,12 @@ function prepare_config() { | |
git checkout HEAD contracts | ||
if ${needRegister};then | ||
sed -i -e '/registeredContractChannelMap\[VALIDATOR_CONTRACT_ADDR\]\[STAKING_CHANNELID\]/d' ${workspace}/genesis/contracts/deprecated/CrossChain.sol | ||
sed -i -e 's/currentRelayers\[addr\] = true;/currentRelayers\[addr\] = true; relayersExistMap\[addr\] = true;/' ${workspace}/genesis/contracts/deprecated/RelayerHub.sol | ||
sed -i -e 's/public onlyCoinbase onlyZeroGasPrice {/public onlyCoinbase onlyZeroGasPrice {if (block.number < 30) return;/' ${workspace}/genesis/contracts/BSCValidatorSet.sol | ||
fi | ||
poetry run python -m scripts.generate generate-validators | ||
poetry run python -m scripts.generate generate-init-holders "${initHolders}" | ||
poetry run python -m scripts.generate dev --dev-chain-id ${BSC_CHAIN_ID} --whitelist-1 "${INIT_HOLDER}" \ | ||
python3 -m scripts.generate generate-validators | ||
python3 -m scripts.generate generate-init-holders "${initHolders}" | ||
python3 -m scripts.generate dev --dev-chain-id ${BSC_CHAIN_ID} --whitelist-1 "${INIT_HOLDER}" \ | ||
--epoch ${epoch} \ | ||
--init-felony-slash-scope "60" \ | ||
--breathe-block-interval "10 minutes" \ | ||
|
@@ -115,13 +119,14 @@ function initNetwork() { | |
mkdir ${workspace}/.local/bsc/node${i}/geth | ||
cp ${workspace}/keys/nodekey${i} ${workspace}/.local/bsc/node${i}/geth/nodekey | ||
done | ||
${workspace}/bin/geth init-network --init.dir ${workspace}/.local/bsc --init.size=${size} --config ${workspace}/config.toml ${workspace}/genesis/genesis.json | ||
${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 | ||
rm -rf ${workspace}/*bsc.log* | ||
for ((i = 0; i < size; i++)); do | ||
sed -i -e '/"<nil>"/d' ${workspace}/.local/bsc/node${i}/config.toml | ||
mv ${workspace}/.local/bsc/validator${i}/keystore ${workspace}/.local/bsc/node${i}/ && rm -rf ${workspace}/.local/bsc/validator${i} | ||
|
||
cp ${workspace}/bin/geth ${workspace}/.local/bsc/node${i}/geth${i} | ||
#cp ${workspace}/bin/geth ${workspace}/.local/bsc/node${i}/geth${i} | ||
cp ${workspace}/bin/geth ${workspace}/.local/bsc/node${i}/bsc | ||
# init genesis | ||
initLog=${workspace}/.local/bsc/node${i}/init.log | ||
if [ $i -eq 0 ] ; then | ||
|
@@ -179,15 +184,34 @@ function native_start() { | |
|
||
function register_stakehub(){ | ||
if ${needRegister};then | ||
echo "sleep 45s to wait feynman enable" | ||
sleep 45 | ||
echo "sleep 100s to wait feynman enable" | ||
sleep 100 | ||
for ((i = 0; i < size; i++));do | ||
${workspace}/create-validator/create-validator --consensus-key-dir ${workspace}/keys/validator${i} --vote-key-dir ${workspace}/keys/bls${i} \ | ||
--password-path ${workspace}/keys/password.txt --amount 20001 --validator-desc Val${i} --rpc-url ${RPC_URL} | ||
done | ||
fi | ||
} | ||
|
||
function remote_start() { | ||
rm -rf /mnt/efs/${copyDir}/clusterNetwork | ||
cp -r ${workspace}/.local/bsc /mnt/efs/${copyDir}/clusterNetwork | ||
ips=(${validator_ips_comma//,/ }) | ||
for ((i=0;i<${#ips[@]};i++));do | ||
dst_id=${ips2ids[${ips[i]}]} | ||
aws ssm send-command --instance-ids "${dst_id}" --document-name "AWS-RunShellScript" --parameters commands="sudo bash -x /mnt/efs/${copyDir}/clusterNetwork/node${i}/init.sh" | ||
done | ||
} | ||
|
||
function remote_upgrade() { | ||
cp ${workspace}/bin/geth /mnt/efs/${copyDir}/clusterNetwork/ | ||
cp ${workspace}/qa-env-resource/upgrade-single.sh /mnt/efs/${copyDir}/clusterNetwork/ | ||
for dst_id in ${ips2ids[@]}; do | ||
aws ssm send-command --instance-ids "${dst_id}" --document-name "AWS-RunShellScript" \ | ||
--parameters commands="sudo cp /mnt/efs/${copyDir}/clusterNetwork/geth /tmp/bsc && sudo cp /mnt/efs/${copyDir}/clusterNetwork/upgrade-single.sh /tmp/ && sudo bash -x /tmp/upgrade-single.sh" | ||
done | ||
} | ||
|
||
CMD=$1 | ||
ValidatorIdx=$2 | ||
case ${CMD} in | ||
|
@@ -210,7 +234,18 @@ restart) | |
exit_previous $ValidatorIdx | ||
native_start $ValidatorIdx | ||
;; | ||
remote_reset) | ||
create_validator | ||
reset_genesis | ||
prepare_config | ||
initNetwork | ||
remote_start | ||
register_stakehub | ||
;; | ||
remote_upgrade) | ||
remote_upgrade | ||
;; | ||
*) | ||
echo "Usage: bsc_cluster.sh | reset | stop [vidx]| start [vidx]| restart [vidx]" | ||
echo "Usage: bsc_cluster.sh | reset | stop [vidx]| start [vidx]| restart [vidx]| remote_reset | remote_upgrade" | ||
;; | ||
esac |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
[Unit] | ||
Description=bsc | ||
After=network.target | ||
|
||
[Service] | ||
Type=simple | ||
User=root | ||
Group=root | ||
ExecStart=/server/validator/chaind.sh -start | ||
ExecReload=/server/validator/chaind.sh -restart | ||
ExecStop=/server/validator/chaind.sh -stop | ||
PrivateTmp=true | ||
Restart=always | ||
LimitNOFILE=10000 | ||
RestartSec=5 | ||
StartLimitInterval=0 | ||
|
||
[Install] | ||
WantedBy=multi-user.target |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
#!/bin/bash | ||
|
||
export GOGC=200 | ||
# default values | ||
FullImmutabilityThreshold=90000 | ||
MinBlocksForBlobRequests=524288 | ||
DefaultExtraReserveForBlobRequests=28800 | ||
BreatheBlockInterval=600 | ||
FixedTurnLength=1 | ||
LAST_FORK_MORE_DELAY=1800 | ||
|
||
function startChaind() { | ||
workspace=/server/validator | ||
|
||
PassedForkTime=`cat ${workspace}/hardforkTime.txt|grep passedHardforkTime|awk -F" " '{print $NF}'` | ||
LastHardforkTime=$(expr ${PassedForkTime} + ${LAST_FORK_MORE_DELAY}) | ||
initLog=${workspace}/init.log | ||
rialtoHash=`cat ${initLog}|grep "database=lightchaindata"|awk -F"=" '{print $NF}'|awk -F'"' '{print $1}'` | ||
|
||
ip=`ifconfig eth0|grep inet|grep -v inet6 |awk '{ print $2 }'` | ||
sed -i -e "s?FileRoot = \"\"?FileRoot = \"/mnt/efs/validator/${ip}/\"?g" /server/validator/config.toml | ||
mkdir -p /mnt/efs/validator/${ip} | ||
${workspace}/bsc --config ${workspace}/config.toml \ | ||
--datadir ${workspace} \ | ||
--password ${workspace}/password.txt \ | ||
--blspassword ${workspace}/password.txt \ | ||
--unlock {{validatorAddr}} --miner.etherbase {{validatorAddr}} --rpc.allow-unprotected-txs --allow-insecure-unlock \ | ||
--ws --ws.port 8545 --ws.addr ${ip} --http.addr 0.0.0.0 --http.corsdomain "*" \ | ||
--metrics --metrics.addr 0.0.0.0 \ | ||
--pprof --pprof.port 6061 \ | ||
--syncmode snap --mine --vote --monitor.maliciousvote \ | ||
--cache 10480 --light.serve 50 \ | ||
--rialtohash ${rialtoHash} --override.passedforktime ${PassedForkTime} --override.bohr ${LastHardforkTime} \ | ||
--override.immutabilitythreshold ${FullImmutabilityThreshold} --override.breatheblockinterval ${BreatheBlockInterval} \ | ||
--override.minforblobrequest ${MinBlocksForBlobRequests} --override.defaultextrareserve ${DefaultExtraReserveForBlobRequests} \ | ||
`# --override.fixedturnlength ${FixedTurnLength}` \ | ||
>> /mnt/efs/validator/${ip}/bscnode.log 2>&1 | ||
} | ||
|
||
function stopChaind() { | ||
pid=`ps -ef | grep /server/validator/bsc | grep -v grep | awk '{print $2}'` | ||
if [ -n "$pid" ]; then | ||
for((i=1;i<=4;i++)); | ||
do | ||
kill $pid | ||
sleep 5 | ||
pid=`ps -ef | grep /server/validator/bsc | grep -v grep | awk '{print $2}'` | ||
if [ -z "$pid" ]; then | ||
break | ||
elif [ $i -eq 4 ]; then | ||
kill -9 $kid | ||
fi | ||
done | ||
fi | ||
} | ||
|
||
CMD=$1 | ||
|
||
case $CMD in | ||
-start) | ||
echo "start" | ||
startChaind | ||
;; | ||
-stop) | ||
echo "stop" | ||
stopChaind | ||
;; | ||
-restart) | ||
stopChaind | ||
sleep 3 | ||
startChaind | ||
;; | ||
*) | ||
echo "Usage: chaind.sh -start | -stop | -restart .Or use systemctl start | stop | restart bsc.service " | ||
;; | ||
esac |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
[Eth] | ||
NetworkId = 714 | ||
SyncMode = "full" | ||
NoPruning = false | ||
NoPrefetch = false | ||
LightPeers = 100 | ||
TrieTimeout = 100000000000 | ||
DatabaseCache = 512 | ||
DatabaseFreezer = "" | ||
TriesInMemory = 128 | ||
TrieCleanCache = 256 | ||
TrieDirtyCache = 256 | ||
EnablePreimageRecording = false | ||
|
||
[Eth.Miner] | ||
GasFloor = 500000000 | ||
GasCeil = 500000000 | ||
GasPrice = 1000000000 | ||
Recommit = 10000000000 | ||
|
||
[Eth.TxPool] | ||
Locals = [] | ||
NoLocals = true | ||
Journal = "transactions.rlp" | ||
Rejournal = 3600000000000 | ||
PriceLimit = 1000000000 | ||
PriceBump = 10 | ||
AccountSlots = 512 | ||
GlobalSlots = 10000 | ||
AccountQueue = 256 | ||
GlobalQueue = 5000 | ||
Lifetime = 10800000000000 | ||
|
||
[Eth.GPO] | ||
Blocks = 20 | ||
Percentile = 60 | ||
OracleThreshold = 1000 | ||
|
||
[Node] | ||
IPCPath = "geth.ipc" | ||
HTTPHost = "localhost" | ||
NoUSB = true | ||
InsecureUnlockAllowed = false | ||
HTTPPort = 8545 | ||
HTTPVirtualHosts = ["localhost"] | ||
HTTPModules = ["eth", "net", "web3", "txpool", "parlia", "miner"] | ||
WSPort = 8546 | ||
WSModules = ["net", "web3", "eth"] | ||
|
||
[Node.P2P] | ||
MaxPeers = 30 | ||
NoDiscovery = false | ||
ListenAddr = ":30311" | ||
EnableMsgEvents = false | ||
|
||
[Node.HTTPTimeouts] | ||
ReadTimeout = 30000000000 | ||
WriteTimeout = 30000000000 | ||
IdleTimeout = 120000000000 | ||
|
||
[Node.LogConfig] | ||
FilePath = "bsc.log" | ||
TimeFormat = "01-02|15:04:05.000" | ||
MaxBytesSize = 10485760 | ||
Level = "debug" | ||
FileRoot = "" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
#!/bin/bash | ||
|
||
workspace=$(cd `dirname $0`; pwd) | ||
|
||
cp ${workspace}/bsc.service /usr/lib/systemd/system/ | ||
chmod +x ${workspace}/start.sh ${workspace}/chaind.sh ${workspace}/bsc | ||
|
||
service bsc stop | ||
rm -rf /server/validator | ||
mv ${workspace} /server/validator | ||
|
||
/server/validator/start.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#!/usr/bin/env bash | ||
|
||
validator_ips_comma="" | ||
declare -A ips2ids |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#!/bin/sh | ||
systemctl daemon-reload | ||
chkconfig bsc on | ||
service bsc restart |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
#!/usr/bin/env bash | ||
|
||
service bsc stop | ||
cp /tmp/bsc /server/validator/bsc | ||
|
||
#cd /server/validator/geth/ | ||
#rm -rf chaindata les.server nodes triecache | ||
|
||
#sed -i -e 's/sleep 5/sleep 40/' /server/validator/chaind.sh | ||
#sed -i -e 's/FixedTurnLength=1/FixedTurnLength=4/' /server/validator/chaind.sh | ||
|
||
#/server/validator/bsc init --datadir /server/validator/ /server/validator/genesis.json | ||
|
||
#sed -i -e 's/HTTPModules = \[/HTTPModules = \["debug",/g' /server/validator/config.toml | ||
#sed -i -e 's/GlobalSlots = 10000/GlobalSlots = 10000/g' /server/validator/config.toml | ||
#sed -i -e 's/GlobalQueue = 5000/GlobalQueue = 5000/g' /server/validator/config.toml | ||
#sed -i -e 's/Level = "info"/Level = "debug"/g' /server/validator/config.toml | ||
|
||
service bsc start |