Sao Network
dStorage infrastructure for Web3 based on Cosmos SDK IPFS to increase the adoption of Web3 content storage and facilitate its ecosystem applications.
Links
Website — https://sao.network
Twitter — https://twitter.com/SAONetwork
Discord — https://discord.gg/nH2unUFzKJ
Github https://github.com/SaoNetwork
Blog https://medium.com/@saonetwork
Explorers
SAO Network Explorer | Sr20de Explorer
Endpoints
- Api https://api-testnet-sao.sr20de.xyz
- RPC https://rpc-testnet-sao.sr20de.xyz
- GRPC https://grpc-testnet-sao.sr20de.xyz
Live peers
1 |
a5261e9fba12d7a59cd1d4515a449e705734c39b@46.101.144.90:27656, 91b67dd0d2904d95748e1ec5311e39033cfeaabc@65.109.92.240:1076, ea5e12b46921a53cd3feb12e0bba3c85a4b3961b@159.65.128.118:26656, f8f908d30e1fe5e8fa00b9be9eb8dbc17e99a013@65.109.92.148:26656, 66c929129cec42626237d119d4b35759e8994da0@94.46.187.220:26656, 5bf4920fac1647e12a24c0ae5af4b3ca19db2bb2@57.128.86.7:26656, 2e1e3cbce60bb72047e29c5219e0507c336c6d90@68.183.106.154:26656, c81f608a6c5fd43742f8243a55eeba876bebac1b@87.246.173.248:26656, 3b575db88967853f7e17a74e11da326d24bef0b4@95.217.57.232:26656, 3701543299190f8b7ef1c7ab2cf358e8e8a0b76a@42.115.245.11:26656, 6e9ef2dbaee1f797e43d81dc168cd8713af82de6@139.180.156.209:49656, 7bb7bac6552c0031450e7e42ba6306e6f9c1a0a4@149.102.129.76:26656, 4fa89d8492cdef5b7f887c4002b3df70d1283063@65.21.134.202:15756, 8a6983c4b3402c0a25c110eee8a9d0ca369b45c9@65.21.131.215:15756, 627d0c6e30676a0b4bdb73a324b1eb3a08e5cc45@137.184.197.65:26656, 1fc35ae3d417dc756b27e35c5695a241531f637c@178.128.31.194:27656, b559a6db59d8fe640c20b7bdfec665a5433fa48a@164.92.173.124:26656, b8429de484a1cf6108d57dc69fc02cd8b7592e01@157.230.245.237:09656, c0448ab167238f4222bc214afa855c9f97868c38@217.76.53.154:26656, c6425d191599ad2ac0f6cddaf088df0fa5110c2f@65.108.78.101:26656, 72bd1d4b59697e7759663309f60621015708e96b@66.225.243.53:26656, 5ae4ea3a5e77271a8f1a7e4b2c31eb07fc5121fc@217.76.50.155:27656, d89daa98861f3492380a7f64373e93955fe58d76@184.174.33.200:27656, 8a0d0808956c769c16db68aa57c153e2bb8ee6a1@31.220.72.135:26656, a796c557084058546deffca33dc21e8ba2930ad1@84.46.246.248:27656, 97291da4bb996f01554f112a50933d34f7e83752@74.208.253.159:27656, 5b1a021a6ed3274dc2c855490ad8fe45e03ace99@65.108.75.107:21656, 1ed54d64859edbfe8109155c0cf6bdb04e592cb6@142.132.248.253:65528, 4f7898c70637f2a5c65ea909afcd47c10f090863@213.133.100.172:27544, e9cef0ac2f67bc64666df7e36fe033781e5c79e7@165.227.146.100:26656, c635d91efca82df320e6d01df65bf6c829e87d06@190.15.217.229:15656, f297dd1baab4f619d05519947ea78466c0b2f416@159.223.77.250:30656, 7fe67df2d13d1b229a0e24504e7c1afe5d3c6936@143.198.204.248:27656, 8ec7e6351d1c0095174667b72b7514479758bd3e@89.58.59.75:60556, de4bf964d6ed88184181a157a8e3ad0620e97a3d@34.101.218.12:27656, 480407c8c32873a2846229a1cbc1d4243aeb702f@104.248.43.253:27656, 77067c04be636e78c9102cc767cd6a9d98a5c67b@161.97.134.64:27656, 841ae6ca44f1d51076c75ed3753e429775cb2ad9@134.209.76.124:26656, 5c0b9fbb37b9ef72b7b58e887a6fdc36c6ad4a02@167.172.89.169:26656, e05080c6307543b9aacb413317255583af2b787d@184.174.32.137:27656, 0c04c4ac35c7069493c21fa4fbab631cdd06836c@84.46.240.144:26656, 00899194ffdcb0df4ec554288f5e91ac532ae7a2@143.244.166.151:49656, ff53f177cf36e84d9534a570613990f58dac907f@14.231.132.71:49656, 48e9d12ec0e2cc80770777f0896429fd4d44d39d@209.126.13.77:27656, 4939ddb0d82a2ab40648afffc38e7cbc136d0875@113.23.48.43:26656, b0f922442e9b5d6ddd809788a77635ca2ae274ad@103.238.71.153:26656, e10131a22be304efa9333e2933da60668de00bfa@65.108.199.120:55756, 1d576348d2fe1d86975f7fb3c9d22ec4e6f4ca33@109.123.243.68:26656, 8c31f49053c732bd8e39ae780076069546682126@194.163.190.167:26656, 31f74fde29acbf4e1b6b72e24c581eed036ef2c8@130.255.170.151:26656 |
State Sync
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
sudo systemctl stop saod cp $HOME/.sao/data/priv_validator_state.json $HOME/.sao/priv_validator_state.json.backup saod tendermint unsafe-reset-all --home $HOME/.sao --keep-addr-book SNAP_RPC="https://rpc-testnet-sao.sr20de.xyz:443" LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height) BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000)) TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash) echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH PEERS="31f74fde29acbf4e1b6b72e24c581eed036ef2c8@130.255.170.151:26656" sed -i 's|^persistent_peers *=.*|persistent_peers = "'$PEERS'"|' $HOME/.sao/config/config.toml sed -i 's|^enable *=.*|enable = true|' $HOME/.sao/config/config.toml sed -i 's|^rpc_servers *=.*|rpc_servers = "'$SNAP_RPC,$SNAP_RPC'"|' $HOME/.sao/config/config.toml sed -i 's|^trust_height *=.*|trust_height = '$BLOCK_HEIGHT'|' $HOME/.sao/config/config.toml sed -i 's|^trust_hash *=.*|trust_hash = "'$TRUST_HASH'"|' $HOME/.sao/config/config.toml mv $HOME/.sao/priv_validator_state.json.backup $HOME/.sao/data/priv_validator_state.json sudo systemctl restart saod && sudo journalctl -u saod -f --no-hostname -o cat |
Install Node
1 |
sudo apt update && sudo apt upgrade -y |
1 |
sudo apt install curl build-essential git wget jq make gcc nano pkg-config libssl-dev libleveldb-dev tar clang ncdu unzip libleveldb-dev -y |
Install GO
1 2 3 4 5 6 7 8 |
ver="1.19.5" wget "https://go.dev/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 |
Install last binary
1 2 3 4 5 |
cd $HOME git clone https://github.com/SaoNetwork/sao-consensus.git cd sao-consensus git checkout v0.1.3 make install |
Init config files
1 2 |
saod init <moniker> --chain-id sao-testnet1 saod config chain-id sao-testnet1 |
Create a wallet
1 |
saod keys add <wallet_name> |
Download genesis
1 |
wget -O $HOME/.sao/config/genesis.json "https://raw.githubusercontent.com/SAONetwork/sao-consensus/testnet0/network/testnet0/config/genesis.json" |
Add peers and seeds
1 2 3 |
SEEDS="a5298771c624a376fdb83c48cc6c630e58092c62@192.18.136.151:26656,59cef823c1a426f15eb9e688287cd1bc2b6ea42d@152.70.126.187:26656" PEERS="a5261e9fba12d7a59cd1d4515a449e705734c39b@46.101.144.90:27656, 91b67dd0d2904d95748e1ec5311e39033cfeaabc@65.109.92.240:1076, ea5e12b46921a53cd3feb12e0bba3c85a4b3961b@159.65.128.118:26656, f8f908d30e1fe5e8fa00b9be9eb8dbc17e99a013@65.109.92.148:26656" sed -i.bak -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.sao/config/config.toml |
Add min gas
1 |
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.01sao\"/" $HOME/.sao/config/app.toml |
Pruning (optional)
1 2 3 4 5 6 7 8 |
pruning="custom" && \ pruning_keep_recent="1000" && \ pruning_keep_every="0" && \ pruning_interval="100" && \ sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" ~/.sao/config/app.toml && \ sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" ~/.sao/config/app.toml && \ sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" ~/.sao/config/app.toml && \ sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" ~/.sao/config/app.toml |
Indexer (optional)
1 2 |
indexer="null" && \ sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.sao/config/config.toml |
Create the service file
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
sudo tee /etc/systemd/system/saod.service > /dev/null <<EOF [Unit] Description=SaoConsensusNode After=network-online.target [Service] User=$USER ExecStart=$(which saod) start Restart=always RestartSec=3 LimitNOFILE=4096 [Install] WantedBy=multi-user.target EOF |
Load service and start
1 2 |
sudo systemctl daemon-reload && sudo systemctl enable saod sudo systemctl restart saod && journalctl -fu saod -o cat |
Create Validator
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
saod tx staking create-validator \ --amount=1000000sao \ --pubkey=$(saod tendermint show-validator) \ --moniker="<moniker>" \ --identity="<identity>" \ --website="<website>" \ --details="<details>" \ --security-contact="<contact>" \ --chain-id="sao-testnet1" \ --commission-rate="0.10" \ --commission-max-rate="0.20" \ --commission-max-change-rate="0.01" \ --min-self-delegation="1" \ --min-self-delegation="1" \ --broadcast-mode block \ --from=<wallet_name> |