Minimum hardware requirements :
1) Auto_install script
Copy source <( curl -s https://raw.githubusercontent.com/111STAVR111/props/refs/heads/main/Sge/Testnet/sgge )
2) Manual installation
Preparing the server
Copy sudo apt update && sudo apt upgrade -y
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu gcc git jq chrony liblz4-tool -y
GO 1.23.1
Copy ver = "1.23.1"
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz"
rm "go$ver.linux-amd64.tar.gz"
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME /.bash_profile
source $HOME /.bash_profile
go version
Build 27.11.24
Copy cd $HOME && mkdir -p go/bin/
git clone https://github.com/sge-network/sge
cd sge
git checkout v1.7.5
make install
sged version --long | grep -e commit -e version
commit: 14c8a487f5fcb2e41cf5a97c580ae72b02e2218d
Initiation
Copy sged init STAVR_guide --chain - id = sge - network - 4
sged config chain - id sge - network - 4
Create/recover wallet
Copy sged keys add < walletnam e >
OR
sged keys add < walletnam e > --recover
Download Addrbook and Genesis
Copy wget - O $HOME / . sge / config / addrbook . json "https://server-1.stavr.tech/Testnet/Sge/addrbook.json"
wget - O $HOME / . sge / config / genesis . json "https://server-1.stavr.tech/Testnet/Sge/genesis.json"
sha256sum $HOME/.sge/config/genesis.json
08f37f99e33fe2521ff1d1128b437f6351018bad871aedb942c9167d2d83964b
Set up the minimum gas price and Peers/Seeds/Filter peers/MaxPeers
Copy sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0usge\"/" $HOME /.sge/config/app.toml
external_address = $( wget -qO- eth0.me )
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:26656\"/" $HOME /.sge/config/config.toml
peers = ""
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME /.sge/config/config.toml
seeds = ""
sed -i.bak -e "s/^seeds =.*/seeds = \"$seeds\"/" $HOME /.sge/config/config.toml
sed -i 's/max_num_inbound_peers =.*/max_num_inbound_peers = 10/g' $HOME /.sge/config/config.toml
sed -i 's/max_num_outbound_peers =.*/max_num_outbound_peers = 40/g' $HOME /.sge/config/config.toml
Pruning (optional)
Copy pruning = "custom"
pruning_keep_recent = "1000"
pruning_keep_every = "0"
pruning_interval = "10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME /.sge/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME /.sge/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME /.sge/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME /.sge/config/app.toml
Indexer (optional)
Copy indexer = "null" &&
sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME /.sge/config/config.toml
Create a service file
Copy sudo tee /etc/systemd/system/sged.service > /dev/null << EOF
[Unit]
Description=sge Testnet
After=network-online.target
[Service]
User=$USER
ExecStart=$( which sged) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
StateSync Sge Testnet
Copy systemctl stop sged
SNAP_RPC = https://sge.rpc.t.stavr.tech:443
LATEST_HEIGHT = $( curl -s $SNAP_RPC /block | jq -r .result.block.header.height ); \
BLOCK_HEIGHT = $(( LATEST_HEIGHT - 1000 )); \
TRUST_HASH = $( curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash )
echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"| ; \
s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\"\"|" $HOME /.sge/config/config.toml
sged tendermint unsafe-reset-all --home /root/.sge
wget -O $HOME /.sge/config/addrbook.json "https://server-1.stavr.tech/Testnet/Sge/addrbook.json"
curl -o - -L https://server-3.stavr.tech/Testnet/Sge/wasm-sget.tar.lz4 | lz4 -c -d - | tar -x -C $HOME /.sge
sudo systemctl restart sged && journalctl -fu sged -o cat
SnapShot Testnet updated every 5 hours
You can check the size and time of snapshot creation with this command
curl -sI https://server-1.stavr.tech/Testnet/Sge/sge-snap-1.tar.lz4 | grep "last" && curl -sI https://server-1.stavr.tech/Testnet/Sge/sge-snap-1.tar.lz4 | grep content-length | awk '{printf "%.2f GB\n", $2/1024/1024/1024}'
Copy cd $HOME
apt install lz4
sudo systemctl stop sged
cp $HOME /.sge/data/priv_validator_state.json $HOME /.sge/priv_validator_state.json.backup
rm -rf $HOME /.sge/data
LATEST_SNAPSHOT = $( curl -s https://server-1.stavr.tech/Testnet/Sge/ | grep -oE 'sge-snap-[0-9]+\.tar\.lz4' | while read SNAPSHOT ; do HEIGHT = $( curl -s "https://server-1.stavr.tech/Testnet/Sge/${SNAPSHOT % .tar.lz4}-info.txt" | awk '/Block height:/ {print $3}' ); echo "$SNAPSHOT $HEIGHT" ; done | sort -k2 -nr | head -n 1 | awk '{print $1}' )
curl -o - -L https://server-1.stavr.tech/Testnet/Sge/ $LATEST_SNAPSHOT | lz4 -c -d - | tar -x -C $HOME /.sge
curl -o - -L https://server-3.stavr.tech/Testnet/Sge/wasm-sget.tar.lz4 | lz4 -c -d - | tar -x -C $HOME /.sge
mv $HOME /.sge/priv_validator_state.json.backup $HOME /.sge/data/priv_validator_state.json
wget -O $HOME /.sge/config/addrbook.json "https://server-1.stavr.tech/Testnet/Sge/addrbook.json"
sudo systemctl restart sged && journalctl -fu sged -o cat
Start
Copy sudo systemctl daemon-reload
sudo systemctl enable sged
sudo systemctl restart sged && sudo journalctl -fu sged -o cat
Create validator
Copy sged tx staking create - validator \
--amount 1000000usge \
-- from < walletName > \
--commission - max - change - rate "0.1" \
--commission - max - rate "0.2" \
--commission - rate "0.1" \
-- min - self - delegation "1" \
--pubkey $(sged tendermint show - validator) \
--moniker STAVR_guide \
--chain - id sge - network - 4 \
--identity = "" \
--details = "" \
--website = "" - y
Monitoring
You can set up your node status alarm here - Monitoring
Security
You can create secure management of your wallet and your node by following this links.
TMKMS Wallet Security
Delete node
Copy sudo systemctl stop sged
sudo systemctl disable sged
rm /etc/systemd/system/sged.service
sudo systemctl daemon-reload
cd $HOME
rm -rf sge
rm -rf .sge
rm -rf $( which sged )