fix(constants): update Devnet chain ID and block parameters for devnet-108 setup (#2205)

* fix(constants): update Devnet chain ID and block parameters for devnet-108 setup

* refactor(ci): update masternode deployment logic to skip specifically masternode-1 to masternode-25

* ci: update Slack webhook variable names for pull request notifications

* ci: correct format for masternodeN

* ci: enhance start script to handle bootnodes and miner gas limit configuration in new devnet

* ci: update start script to set default netstats configuration and change network ID for devnet
This commit is contained in:
anunay-xin 2026-03-21 17:22:44 +05:30 committed by GitHub
parent 001bd7ef3b
commit 9579593438
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 60 additions and 27 deletions

View file

@ -138,20 +138,29 @@ jobs:
echo "${{ secrets.KUBE_CONFIG }}" | base64 --decode > $HOME/.kube/config echo "${{ secrets.KUBE_CONFIG }}" | base64 --decode > $HOME/.kube/config
chmod 600 $HOME/.kube/config chmod 600 $HOME/.kube/config
git_hash=$(git rev-parse --short "$GITHUB_SHA") git_hash=$(git rev-parse --short "$GITHUB_SHA")
masternodes=$(kubectl get deployment -o json| jq -r '.items[] | select(.metadata.name | test("devnet")) | "\(.metadata.name)"') masternodes=$(kubectl get deployment -o json | jq -r '.items[] | select(.metadata.name | test("^masternode[0-9]")) | .metadata.name' | sort)
rpcs=$(kubectl get deployment -o json| jq -r '.items[] | select(.metadata.name | test("rpc")) | "\(.metadata.name)"') rpcs=$(kubectl get deployment -o json| jq -r '.items[] | select(.metadata.name | test("rpc")) | "\(.metadata.name)"')
echo "Masternodes: $masternodes" echo "Masternodes: $masternodes"
echo "RPCs: $rpcs" echo "RPCs: $rpcs"
skip_names=("devnet1" "devnet2" "devnet3" "devnet4" "devnet9" "devnet10" "devnet11" "devnet12" "devnetrpc" "devnetrpc2") # Skip masternode1 through masternode25, update the rest.
while read -r name; do readarray -t mn_array <<< "$masternodes"
if [[ " ${skip_names[@]} " =~ " ${name} " ]]; then total=${#mn_array[@]}
echo "Skipping deployment: $name" echo "Total masternode deployments: $total, skipping masternode1..masternode25"
continue
for name in "${mn_array[@]}"; do
if [[ $name =~ ^masternode[0-9] ]]; then
num=${name#masternode}
num=${num%%-*}
if [[ $num =~ ^[0-9]+$ ]] && (( num >= 1 && num <= 25 )); then
echo "Skipping deployment: $name"
continue
fi
fi fi
echo "Updating deployment: $name" echo "Updating deployment: $name"
kubectl set image deployment/$name $name=xinfinorg/devnet:dev-upgrade-${git_hash} || true kubectl set image "deployment/$name" "$name=xinfinorg/devnet:dev-upgrade-${git_hash}" || true
done <<< "$masternodes" done
while read -r name; do while read -r name; do

View file

@ -14,14 +14,14 @@ jobs:
steps: steps:
- name: Test Slack webhook - name: Test Slack webhook
env: env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} SLACK_PULL_REQUEST_WEBHOOK_URL: ${{ secrets.SLACK_PULL_REQUEST_WEBHOOK_URL }}
run: | run: |
if [ -z "$SLACK_WEBHOOK_URL" ]; then if [ -z "$SLACK_PULL_REQUEST_WEBHOOK_URL" ]; then
echo "SLACK_WEBHOOK_URL secret is not set. Add it in repo Settings → Secrets → Actions." echo "SLACK_PULL_REQUEST_WEBHOOK_URL secret is not set. Add it in repo Settings → Secrets → Actions."
exit 1 exit 1
fi fi
BODY=$(jq -n --arg text "Test: PR notify Slack webhook is working (from ${{ github.repository }})" '{text: $text}') BODY=$(jq -n --arg text "Test: PR notify Slack webhook is working (from ${{ github.repository }})" '{text: $text}')
curl -sS -X POST -H 'Content-Type: application/json' --data "$BODY" "$SLACK_WEBHOOK_URL" curl -sS -X POST -H 'Content-Type: application/json' --data "$BODY" "$SLACK_PULL_REQUEST_WEBHOOK_URL"
echo "" echo ""
echo "If you see this and no curl error, check your Slack channel for the test message." echo "If you see this and no curl error, check your Slack channel for the test message."
@ -44,10 +44,10 @@ jobs:
steps: steps:
- name: Send Slack notification - name: Send Slack notification
env: env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} SLACK_PULL_REQUEST_WEBHOOK_URL: ${{ secrets.SLACK_PULL_REQUEST_WEBHOOK_URL }}
run: | run: |
if [ -z "$SLACK_WEBHOOK_URL" ]; then if [ -z "$SLACK_PULL_REQUEST_WEBHOOK_URL" ]; then
echo "SLACK_WEBHOOK_URL secret is not set; skipping notification." echo "SLACK_PULL_REQUEST_WEBHOOK_URL secret is not set; skipping notification."
exit 0 exit 0
fi fi
PR_URL="${{ github.event.pull_request.html_url }}" PR_URL="${{ github.event.pull_request.html_url }}"
@ -59,5 +59,5 @@ jobs:
--arg title "$PR_TITLE" \ --arg title "$PR_TITLE" \
--arg author "$PR_AUTHOR" \ --arg author "$PR_AUTHOR" \
'{text: ("PR ready for review: <" + $url + "|" + $title + "> by " + $author)}') '{text: ("PR ready for review: <" + $url + "|" + $title + "> by " + $author)}')
curl -sS -X POST -H 'Content-Type: application/json' --data "$BODY" "$SLACK_WEBHOOK_URL" curl -sS -X POST -H 'Content-Type: application/json' --data "$BODY" "$SLACK_PULL_REQUEST_WEBHOOK_URL"
if: env.SLACK_WEBHOOK_URL != '' if: env.SLACK_PULL_REQUEST_WEBHOOK_URL != ''

View file

@ -104,8 +104,16 @@ else
miner_gaslimit=$MINER_GASLIMIT miner_gaslimit=$MINER_GASLIMIT
fi fi
netstats="${NODE_NAME}-${wallet}-${instance_ip}:xinfin_xdpos_hybrid_network_stats@devnetstats.hashlabs.apothem.network:1999"
netstats_default="${NODE_NAME}-${wallet}-${instance_ip}:xinfin_xdpos_hybrid_network_stats@devnetstats.hashlabs.apothem.network:1999"
if test -z "$NETSTATS_CONFIG"
then
echo "NETSTATS_CONFIG not set, default to hashlabs devnet stats"
netstats=$netstats_default
else
echo "NETSTATS_CONFIG found, set to $NETSTATS_CONFIG"
netstats="${NODE_NAME}-${wallet}-${instance_ip}:$NETSTATS_CONFIG"
fi
echo "Running a node with wallet: ${wallet} at IP: ${instance_ip}" echo "Running a node with wallet: ${wallet} at IP: ${instance_ip}"
echo "Starting nodes with $bootnodes ..." echo "Starting nodes with $bootnodes ..."
@ -117,7 +125,7 @@ XDC --ethstats ${netstats} \
--gcmode ${gc_mode} --syncmode ${sync_mode} \ --gcmode ${gc_mode} --syncmode ${sync_mode} \
--nat extip:${instance_ip} \ --nat extip:${instance_ip} \
--bootnodes ${bootnodes} \ --bootnodes ${bootnodes} \
--datadir /work/xdcchain --networkid 551 \ --datadir /work/xdcchain --networkid 5551 \
--port $port --http --http-corsdomain "*" --http-addr 0.0.0.0 \ --port $port --http --http-corsdomain "*" --http-addr 0.0.0.0 \
--http-port $rpc_port \ --http-port $rpc_port \
--http-api db,eth,net,txpool,web3,XDPoS \ --http-api db,eth,net,txpool,web3,XDPoS \

View file

@ -24,6 +24,13 @@ do
bootnodes="${bootnodes},$line" bootnodes="${bootnodes},$line"
fi fi
done < "$input" done < "$input"
#check last line since it's not included in "read" command https://stackoverflow.com/questions/12916352/shell-script-read-missing-last-line
if [ -z "${bootnodes}" ]
then
bootnodes=$line
else
bootnodes="${bootnodes},$line"
fi
log_level=3 log_level=3
if test -z "$LOG_LEVEL" if test -z "$LOG_LEVEL"
@ -88,6 +95,15 @@ else
gc_mode=$GC_MODE gc_mode=$GC_MODE
fi fi
miner_gaslimit=50000000
if test -z "$MINER_GASLIMIT"
then
echo "MINER_GASLIMIT not set, default to $miner_gaslimit"
else
echo "MINER_GASLIMIT found, set to $MINER_GASLIMIT"
miner_gaslimit=$MINER_GASLIMIT
fi
ethstats_address=localhost:2000 ethstats_address=localhost:2000
if test -z "$STATS_ADDRESS" if test -z "$STATS_ADDRESS"
then then
@ -108,7 +124,7 @@ fi
netstats="${NODE_NAME}-${wallet}:$ethstats_secret@$ethstats_address" netstats="${NODE_NAME}-${wallet}:$ethstats_secret@$ethstats_address"
echo "Running a node with wallet: ${wallet}" echo "Running a node with wallet: ${wallet} at IP: ${instance_ip}"
echo "Starting nodes with $bootnodes ..." echo "Starting nodes with $bootnodes ..."
# Note: --gcmode=archive means node will store all historical data. This will lead to high memory usage. But sync mode require archive to sync # Note: --gcmode=archive means node will store all historical data. This will lead to high memory usage. But sync mode require archive to sync
@ -124,7 +140,7 @@ XDC \
--http-port $rpc_port \ --http-port $rpc_port \
--http-api db,eth,net,txpool,web3,XDPoS \ --http-api db,eth,net,txpool,web3,XDPoS \
--http-vhosts "*" --unlock "${wallet}" --password /work/.pwd --mine \ --http-vhosts "*" --unlock "${wallet}" --password /work/.pwd --mine \
--miner-gasprice "1" --miner-gaslimit "50000000" --verbosity ${log_level} \ --miner-gasprice "1" --miner-gaslimit "${miner_gaslimit}" --verbosity ${log_level} \
--debugdatadir /work/xdcchain \ --debugdatadir /work/xdcchain \
--store-reward \ --store-reward \
--ws --ws-addr=0.0.0.0 --ws-port $ws_port \ --ws --ws-addr=0.0.0.0 --ws-port $ws_port \

View file

@ -6,7 +6,7 @@ import (
) )
var DevnetConstant = constant{ var DevnetConstant = constant{
chainID: 551, chainID: 5551,
denylistHFNumber: 0, denylistHFNumber: 0,
maxMasternodesV2: 108, maxMasternodesV2: 108,
@ -29,11 +29,11 @@ var DevnetConstant = constant{
tipXDCXReceiverDisable: big.NewInt(0), tipXDCXReceiverDisable: big.NewInt(0),
eip1559Block: big.NewInt(32400), eip1559Block: big.NewInt(32400),
cancunBlock: big.NewInt(43200), cancunBlock: big.NewInt(43200),
pragueBlock: big.NewInt(45000), pragueBlock: big.NewInt(math.MaxInt64),
osakaBlock: big.NewInt(math.MaxInt64), osakaBlock: big.NewInt(math.MaxInt64),
dynamicGasLimitBlock: big.NewInt(45000), dynamicGasLimitBlock: big.NewInt(math.MaxInt64),
tipUpgradeReward: big.NewInt(45000), tipUpgradeReward: big.NewInt(math.MaxInt64),
tipUpgradePenalty: big.NewInt(45000), tipUpgradePenalty: big.NewInt(math.MaxInt64),
tipEpochHalving: big.NewInt(math.MaxInt64), tipEpochHalving: big.NewInt(math.MaxInt64),
trc21IssuerSMC: HexToAddress("0x8c0faeb5C6bEd2129b8674F262Fd45c4e9468bee"), trc21IssuerSMC: HexToAddress("0x8c0faeb5C6bEd2129b8674F262Fd45c4e9468bee"),

View file

@ -293,7 +293,7 @@ var (
// DevnetChainConfig contains the chain parameters to run a node on the devnet. // DevnetChainConfig contains the chain parameters to run a node on the devnet.
DevnetChainConfig = &ChainConfig{ DevnetChainConfig = &ChainConfig{
ChainID: big.NewInt(551), ChainID: big.NewInt(5551),
HomesteadBlock: big.NewInt(0), HomesteadBlock: big.NewInt(0),
EIP150Block: big.NewInt(0), EIP150Block: big.NewInt(0),
EIP155Block: big.NewInt(0), EIP155Block: big.NewInt(0),