Validator Setup
Agoric Node
Agoric is a layer-1 blockchain based on the Cosmos network. The main feature of the project is the ability to create smart contracts with the use of JavaScript. It makes the integration of developers from Web2 to Web3 much easier and expands the ecosystem significantly. Agoric's native token is BLD.
Minimum hardware requirements:
16 GB RAM
4 cores/ vCPU
100GB SSD
Ubuntu 20.04
Server preparation:
Before running the node on the server, it's necessary to install Node.js, Yarn, Go and update the system.
Add a package repository Node.js
curl -Ls https://deb.nodesource.com/setup_16.x | sudo bashDownload the package repository Yarn
curl -Ls https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.listUpdate the system and download the building tools
sudo apt -q update
sudo apt -qy install curl git jq lz4 build-essential nodejs=16.* yarn
sudo apt -qy upgradeInstall Go
sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go1.19.9.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh)
eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile)Node installation:
The node installation process is much easier with the use of previously taken snapshot. We use our variant of snapshot in this guide. You can change ports, seeds, the minimum gas price and the snapshot, if you want.
Clone the project repository
cd $HOME
rm -rf pismoC
git clone https://github.com/Agoric/agoric-sdk.git pismoC
cd pismoC
git checkout pismoCInstall Agoric Javascript packages
yarn install
yarn buildIntegrate Agoric Cosmos SDK support
(cd packages/cosmic-swingset && make)Prepare binaries for Cosmovisor
mkdir -p $HOME/.agoric/cosmovisor/genesis/bin
ln -s $HOME/pismoC/packages/cosmic-swingset/bin/ag-chain-cosmos $HOME/.agoric/cosmovisor/genesis/bin/ag-chain-cosmos
ln -s $HOME/pismoC/packages/cosmic-swingset/bin/ag-nchainz $HOME/.agoric/cosmovisor/genesis/bin/ag-nchainz
cp golang/cosmos/build/agd $HOME/.agoric/cosmovisor/genesis/bin/
cp golang/cosmos/build/ag-cosmos-helper $HOME/.agoric/cosmovisor/genesis/bin/Create application symlinks
sudo ln -s $HOME/.agoric/cosmovisor/genesis $HOME/.agoric/cosmovisor/current -f
sudo ln -s $HOME/.agoric/cosmovisor/current/bin/agd /usr/local/bin/agd -fDownload and install Cosmovisor
go install cosmossdk.io/tools/cosmovisor/cmd/[email protected]Create service
sudo tee /etc/systemd/system/agd.service > /dev/null << EOF
[Unit]
Description=agoric node service
After=network-online.target
[Service]
User=$USER
ExecStart=$(which cosmovisor) run start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="DAEMON_HOME=$HOME/.agoric"
Environment="DAEMON_NAME=agd"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:$HOME/.agoric/cosmovisor/current/bin"
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable agdSet up node configurations
agd config chain-id agoric-3
agd config keyring-backend file
agd config node tcp://localhost:12757Initialize the node
agd init NODE_NAME --chain-id agoric-3Instead of NODE_NAME, enter your name of the node.
Add the genesis and addrbook files
curl -Ls https://s3.eu-central-1.amazonaws.com/w3coins.io/genesis/agoric-mainnet/genesis.json > $HOME/.agoric/config/genesis.json
curl -Ls https://s3.eu-central-1.amazonaws.com/w3coins.io/addrbook/agoric-mainnet/addrbook.json > $HOME/.agoric/config/addrbook.jsonAdd seeds
sed -i -e "s|^seeds *=.*|seeds = \"[email protected]:26656\"|" $HOME/.agoric/config/config.tomlSet the minimum gas price
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.03ubld\"|" $HOME/.agoric/config/app.tomlAdd custom ports
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:12758\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:12757\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:12760\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:12756\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":12766\"%" $HOME/.agoric/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:12717\"%; s%^address = \":8080\"%address = \":12780\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:12790\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:12791\"%; s%:8545%:12745%; s%:8546%:12746%; s%:6065%:12765%" $HOME/.agoric/config/app.tomlDownload the snapshot
curl -L https://s3.eu-central-1.amazonaws.com/w3coins.io/snapshots/agoric-mainnet/agoric_snapsot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.agoric
[[ -f $HOME/.agoric/data/upgrade-info.json ]] && cp $HOME/.agoric/data/upgrade-info.json $HOME/.agoric/cosmovisor/genesis/upgrade-info.jsonRun the node
sudo systemctl start agdChecking and syncing
After installation, the node has to be synchronized.
Check the sync status
agd status | jq .SyncInfoIf everything is set up correctly, the response will be something like:
{
"latest_block_hash": "3A0F2AD88C987F6EEDB322BA2CC762A5BC69CF91FB02359DA535D49FFF35CB74",
"latest_app_hash": "BE512418BDC91AA6BC887F5F33ED2226139D96B5DDB963D2ED4C61BAB4D49F91",
"latest_block_height": "10123111",
"latest_block_time": "2023-05-31T13:18:38.478539726Z",
"earliest_block_hash": "3AB9448D36EF7B2DF224E4721A5BB0EE4182F5CE00B87E78B04E466CF7586568",
"earliest_app_hash": "64018478AE11A0D2C4262874EE8B65F975DC7CE9720434074AFC25422EACE638",
"earliest_block_height": "10110283",
"earliest_block_time": "2023-05-30T16:13:50.226497159Z",
"catching_up": true
}Complete sync
The node is synchronized when "latest_block_height" catches up with the last block in the network. At that moment "catching_up" will change from true to false.
For monitoring, you can use the script:
while sleep 5; do
sync_info=`agd status | jq .SyncInfo`
echo "$sync_info"
if test `echo "$sync_info" | jq -r .catching_up` == false; then
echo "Caught up"
break
fi
doneWhen the synchronization is completed, the terminal will say "Caught up"
Check logs (if errors occur)
journalctl -u agd -fKey addition.
For further work keys/wallets are necessary.
Create a new key
agd keys add KEY_NAMEChange KEY_NAME to the name of your key. Add a password and save the mnemonic phrase.
Add an existing key
agd keys add KEY_NAME --recoverList all keys
agd keys listDelegation to the validator
agd tx staking delegate OPERATOR_ADRESS AMOUNT --from KEY_NAME --chain-id agoric-3 --gas-adjustment 1.4 --gas auto --gas-prices 0.03ubld -yChange the following parameters:
- OPERATOR_ADRESS - enter the address of the validator, for example, the w3coins address:
agoricvaloper1tfmed8ueaxrmdsvkecrae6renyxjct8xwdkes5- AMOUNT - enter the number of delegated tokens in the ubld value (1BLD = 1000000UBLD), for example:
1000000ubld- KEY_NAME - enter your key name
Last updated