Minimum hardware requirements:
1) Auto_install script
wget -O sifchain https://raw.githubusercontent.com/111STAVR111/props/main/Sifchain/sifchain && chmod +x sifchain && ./sifchain
2) Manual installation
Preparing the server
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.21.6
ver="1.21.6"
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 23.05.24
cd $HOME && mkdir -p go/bin/
git clone https://github.com/Sifchain/sifnode
cd $HOME/sifnode
git checkout v1.4.1
make install
sifnoded version --long | grep -e commit -e version
commit: 1f07f1be4fbaa4cc4a12bf32cdce760a1584cabf
Initiation
sifnoded init STAVR_guide --chain-id=sifchain-1
sifnoded config chain-id sifchain-1
Create/recover wallet
sifnoded keys add <walletname>
OR
sifnoded keys add <walletname> --recover
Download Genesis
cd "${HOME}"/.sifnoded/config
wget -O genesis.json.gz https://raw.githubusercontent.com/Sifchain/networks/master/betanet/sifchain-1/genesis.json.gz
gunzip genesis.json.gz
sha256sum $HOME/.sifnoded/config/genesis.json
b534aac6334611c2209f12f60a22dd86ec38151704d00063dc2243184fa53887
Set up the minimum gas price and Peers/Seeds/Filter peers/MaxPeers
sed -i "s/persistent_peers =.*/persistent_peers = \"0d4981bdaf4d5d73bad00af3b1fa9d699e4d3bc0@44.235.108.41:26656,bcc2d07a14a8a0b3aa202e9ac106dec0bef91fda@13.55.247.60:26656,663dec65b754aceef5fcccb864048305208e7eb2@34.248.110.88:26656,0120f0a48e7e81cc98829ef4f5b39480f11ecd5a@52.76.185.17:26656,6535497f0152293d773108774a705b86c2249a9c@44.238.121.65:26656,fdf5cffc2b20a20fab954d3b6785e9c382762d14@34.255.133.248:26656,8c240f71f9e060277ce18dc09d82d3bbb05d1972@13.211.43.177:26656,9fbcb6bd5a7f20a716564157c4f6296d2faf5f64@18.138.208.95:26656\"/g" "${HOME}"/.sifnoded/config/config.toml
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0rowan\"/;" ~/.sifnoded/config/app.toml
external_address=$(wget -qO- eth0.me)
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:26656\"/" $HOME/.sifnoded/config/config.toml
seeds=""
sed -i.bak -e "s/^seeds =.*/seeds = \"$seeds\"/" $HOME/.sifnoded/config/config.toml
sed -i 's/max_num_inbound_peers =.*/max_num_inbound_peers = 50/g' $HOME/.sifnoded/config/config.toml
sed -i 's/max_num_outbound_peers =.*/max_num_outbound_peers = 10/g' $HOME/.sifnoded/config/config.toml
Pruning (optional)
pruning="custom"
pruning_keep_recent="1000"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.sifnoded/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.sifnoded/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.sifnoded/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.sifnoded/config/app.toml
Indexer (optional)
indexer="null" &&
sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.sifnoded/config/config.toml
Download addrbook
wget -O $HOME/.sifnoded/config/addrbook.json "https://raw.githubusercontent.com/111STAVR111/props/main/Sifchain/addrbook.json"
Create a service file
sudo tee /etc/systemd/system/sifnoded.service > /dev/null <<EOF
[Unit]
Description=sifchain
After=network-online.target
[Service]
User=$USER
ExecStart=$(which sifnoded) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
StateSync Sifchain Mainnet
SNAP_RPC=https://sifchain.rpc.m.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/.sifnoded/config/config.toml
sifnoded tendermint unsafe-reset-all --home $HOME/.sifnoded
wget -O $HOME/.sifnoded/config/addrbook.json "https://raw.githubusercontent.com/111STAVR111/props/main/Sifchain/addrbook.json"
sudo systemctl restart sifnoded && sudo journalctl -fu sifnoded -o cat
SnapShot Mainnet updated every 5 hours
Start
sudo systemctl daemon-reload
sudo systemctl enable sifnoded
sudo systemctl restart sifnoded && sudo journalctl -fu sifnoded -o cat
Create validator
sifnoded tx staking create-validator \
--amount=1000000rowan \
--broadcast-mode=block \
--pubkey=`sifnoded tendermint show-validator` \
--moniker=STAVR_guide \
--commission-rate="0.1" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.1" \
--min-self-delegation="1" \
--from=<walletName> \
--chain-id=sifchain-1 \
--gas=auto -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
sudo systemctl stop sifnoded
sudo systemctl disable sifnoded
rm /etc/systemd/system/sifnoded.service
sudo systemctl daemon-reload
cd $HOME
rm -rf sifnode
rm -rf .sifnoded
rm -rf $(which sifnoded)