Rent server onSponsored
Доступен скрипт быстрой установки:
wget -O agoric.sh https://api.nodes.guru/agoric.sh && chmod +x agoric.sh && ./agoric.sh
Для мейннета используйте следующий скрипт:
wget -q -O agoric_mainnet.sh https://api.nodes.guru/agoric_mainnet.sh && chmod +x agoric_mainnet.sh && sudo /bin/bash agoric_mainnet.sh
Имейте в виду, что вместо ag-chain-cosmos в мейннете используется ag0.
Введите имя вашей ноды, дождитесь установки и переходите к шагу 6.
Протестировано на Vultr
1. Устанавливаем Node.js
Если у вас уже установлен Node.js, этот шаг можно пропустить
sudo apt install curl
curl https://deb.nodesource.com/setup_14.x | sudo bash
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt upgrade -y
sudo apt install nodejs=14.* yarn build-essential jq -y
2. Устанавливаем Go
Если у вас уже установлен Go, этот шаг можно пропустить
sudo rm -rf /usr/local/go
curl https://dl.google.com/go/go1.15.7.linux-amd64.tar.gz | sudo tar -C/usr/local -zxvf -
cat <<'EOF' >>$HOME/.bash_profile
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GO111MODULE=on
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
EOF
source $HOME/.bash_profile
Проверяем, что Go установлен корректно:
go version
Если все ок, должен показать “go version go1.15.7 linux/amd64” (или другую версию, если Go уже был установлен ранее)
3. Устанавливаем Agoric SDK
NB: Актуальную версию, которую вы должны указать в git checkout можете узнать здесь.
export GIT_BRANCH=agorictest-17
git clone https://github.com/Agoric/agoric-sdk -b $GIT_BRANCH
cd agoric-sdk
yarn install
yarn build
(cd packages/cosmic-swingset && make)
Проверяем, что нода установилась корректно:
ag-chain-cosmos version --long | grep version
Выдать должен следующее (версия может отличаться):
4. Настраиваем ноду
4.1. Проверяем параметры сети
curl https://testnet.agoric.net/network-config > chain.json
chainName=`jq -r .chainName < chain.json`
echo $chainName
Вывод должен быть такой (на 19.04.2021 – agorictest-8):
4.2. Устанавливаем параметры сети
Измените “NodesGuru” на имя своей ноды.
ag-chain-cosmos init --chain-id $chainName NodesGuru
curl https://testnet.agoric.net/genesis.json > $HOME/.ag-chain-cosmos/config/genesis.json
ag-chain-cosmos unsafe-reset-all
peers=$(jq '.peers | join(",")' < chain.json)
seeds=$(jq '.seeds | join(",")' < chain.json)
echo $peers
echo $seeds
sed -i.bak 's/^log_level/# log_level/' $HOME/.ag-chain-cosmos/config/config.toml
sed -i.bak -e "s/^seeds *=.*/seeds = $seeds/; s/^persistent_peers *=.*/persistent_peers = $peers/" $HOME/.ag-chain-cosmos/config/config.toml
5. Синхронизируем ноду
sudo tee <<EOF >/dev/null /etc/systemd/system/ag-chain-cosmos.service
[Unit]
Description=Agoric Cosmos daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$HOME/go/bin/ag-chain-cosmos start --log_level=warn
Restart=on-failure
RestartSec=3
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable ag-chain-cosmos
sudo systemctl daemon-reload
sudo systemctl start ag-chain-cosmos
После этого нужно немного подождать (примерно минуту).
Проверяем статус синхронизации:
ag-chain-cosmos status 2>&1 | jq .SyncInfo
Выдать должен следующее:
"catching_up": true должен смениться на false когда нода будет полностью засинхронизирована.
После того как нода засинхронизировалась, можно переходить к следующему этапу.
6. Создаем валидатора
Мы будем использовать имя кошелька “wallet”, но вы можете ставить любое на свое усмотрение:
ag-cosmos-helper keys add wallet
ag-cosmos-helper keys list
Выдача должна быть следующая:
Теперь заходим в дискорд Agoric, проходим капчу, в канале #testnet-faucet запрашиваем токены, запросы должны выглядеть следующим образом:
!faucet delegate agoric1...
В нашем случае это выглядит так:
!faucet delegate agoric1v3ymyn5vflashmwpv29ytadhw7ymxyehm2wc6c
Проверить баланс можно следующей командой (вместо “wallet” напишите имя своего кошелька):
ag-chain-cosmos query bank balances `ag-chain-cosmos keys show -a wallet`
После создаем валидатора (замените “NodesGuru” на имя своей ноды):
chainName=`curl https://testnet.agoric.net/network-config | jq -r .chainName`
echo $chainName
ag-cosmos-helper tx staking create-validator \
--amount=50000000ubld \
--broadcast-mode=block \
--pubkey=`ag-chain-cosmos tendermint show-validator` \
--moniker=NodesGuru \
--commission-rate="0.10" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--min-self-delegation="1" \
--from=wallet \
--chain-id=$chainName \
--gas=auto \
--fees=3000ubld \
--gas-adjustment=1.4
Если все сделано верно, вы увидите запрос на пароль от кошелька и информацию о транзакции.
Проверить статус валидатора можно командой:
ag-chain-cosmos status 2>&1 | jq .ValidatorInfo
Вывод должен быть такой:
Если ваш “VotingPower” > 0 – все ок!
Можно проверить статус вашего валидатора в эксплорере:
7. Дополнительно
7.1. Выход из тюрьмы (unjail):
Измените “wallet” на имя своего кошелька:
chainName=`curl https://testnet.agoric.net/network-config | jq -r .chainName`
echo $chainName
ag-cosmos-helper tx slashing unjail \
--broadcast-mode=block \
--from=wallet \
--chain-id=$chainName \
--gas=auto \
--fees=3000ubld \
--gas-adjustment=1.4
7.2. Добавление метрик
Для включения возможности получения метрик вашей ноды (Task 1) выполните следующие команды:
echo 'export OTEL_EXPORTER_PROMETHEUS_PORT=9464' >> $HOME/.bashrc
source ~/.bashrc
sed -i '/\[telemetry\]/{:a;n;/enabled/s/false/true/;Ta};/\[api\]/{:a;n;/enable/s/false/true/;Ta;}' $HOME/.ag-chain-cosmos/config/app.toml
sed -i "s/prometheus-retention-time = 0/prometheus-retention-time = 60/g" $HOME/.ag-chain-cosmos/config/app.toml
sed -i "s/prometheus = false/prometheus = true/g" $HOME/.ag-chain-cosmos/config/config.toml
sudo tee <<EOF >/dev/null /etc/systemd/system/ag-chain-cosmos.service
[Unit]
Description=Agoric Cosmos daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$HOME/go/bin/ag-chain-cosmos start --log_level=warn
Restart=on-failure
RestartSec=3
LimitNOFILE=10000
Environment="OTEL_EXPORTER_PROMETHEUS_PORT="$OTEL_EXPORTER_PROMETHEUS_PORT
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl restart ag-chain-cosmos
echo 'Metrics URL: http://'$(curl -s ifconfig.me)':9464/metrics'
Перейдя по ссылке вы увидите метрики вашей ноды (после рестарта ноды нужно немного подождать).
7.3. Обновление до agorictest-17
Для обновления до актуальной (на момент 19.08.2021) версии выполните следующие команды:
service ag-chain-cosmos stop
curl https://deb.nodesource.com/setup_14.x | sudo bash
sudo apt install nodejs=14.* -y
source $HOME/.bash_profile
export GIT_BRANCH=agorictest-17
cd $HOME
rm -r agoric-sdk
git clone https://github.com/Agoric/agoric-sdk -b $GIT_BRANCH
cd agoric-sdk
yarn install
yarn build
(cd packages/cosmic-swingset && make)
curl https://testnet.agoric.net/network-config > chain.json
chainName=`jq -r .chainName < chain.json`
echo $chainName
curl https://testnet.agoric.net/genesis.json > $HOME/.ag-chain-cosmos/config/genesis.json
ag-chain-cosmos unsafe-reset-all
peers=$(jq '.peers | join(",")' < chain.json)
seeds=$(jq '.seeds | join(",")' < chain.json)
echo $peers
echo $seeds
sed -i.bak 's/^log_level/# log_level/' $HOME/.ag-chain-cosmos/config/config.toml
sed -i.bak -e "s/^seeds *=.*/seeds = $seeds/; s/^persistent_peers *=.*/persistent_peers = $peers/" $HOME/.ag-chain-cosmos/config/config.toml
service ag-chain-cosmos start
Для проверки того, что все прошло корректно выполните команду:
journalctl -u ag-chain-cosmos -f
Спустя некоторое время вы должны увидеть, что нода ждет времени генезис блока:
7.4. Установка Prometheus Node (OS)
Для установки воспользуйтесь нашим скриптом, для этого выполните следующую команду:
curl -s https://api.nodes.guru/agoric_prometheus.sh | sudo bash
После этого перейдите по адресу, указанному в конце вывода скрипта (этот адрес – http://IP_адрес_вашей_ноды:9100/metrics) – вы должны увидеть страницу с метриками вашего сервера.
7.5. Включение Slog
Это необходимо для задания “Create and submit a slogfile”, нам нужно добавить строчку в наш сервис файл и перезапустить ноду, выполните следующие команды:
sudo tee <<EOF >/dev/null /etc/systemd/system/ag-chain-cosmos.service
[Unit]
Description=Agoric Cosmos daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$HOME/go/bin/ag-chain-cosmos start --log_level=warn
Restart=on-failure
RestartSec=3
LimitNOFILE=10000
Environment="OTEL_EXPORTER_PROMETHEUS_PORT="$OTEL_EXPORTER_PROMETHEUS_PORT
Environment="SLOGFILE=$HOME/user-agorictest16-chain.slog"
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl restart ag-chain-cosmos
7.6. Установка генератора нагрузки
В первую очередь вам необходимо поднять RPC ноду (это можно сделать скриптом в самом верху гайда), после синхронизации установите генератор командами ниже:
cd $HOME/agoric-sdk
yarn link-cli /usr/bin/agoric
cd ..
git clone https://github.com/Agoric/testnet-load-generator.git
cd testnet-load-generator/
agoric install
wget https://testnet.agoric.net/network-config
echo '{
"chainName": "agorictest-17",
"gci": "80280a37099594d8be7323f30a7c757535bd014c9f5198303b3f866d6656e41a",
"peers": [
"[email protected]:26656",
"[email protected]:26656",
"[email protected]:26656",
"[email protected]:26656"
],
"rpcAddrs": [
"127.0.0.1:26657",
"167.172.36.124:26657",
"138.68.134.166:26657",
"157.245.11.32:26657",
"178.128.51.171:26657"
],
"seeds": [
"[email protected]:26656",
"[email protected]:26656"
]
}' > network-config
sudo tee <<EOF >/dev/null /etc/systemd/system/loadgen.service
[Unit]
Description=Agoric Loadgen daemon
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/testnet-load-generator
ExecStart=/usr/bin/agoric --sdk start testnet 8000 $HOME/testnet-load-generator/network-config
Restart=on-failure
RestartSec=3
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable loadgen
systemctl restart loadgen
journalctl -u loadgen -f
В логах должен быть адрес вашего кошелька, пополните его соответствующей командой через кран (!faucet client …).
Помимо этого вам нужно отправить несколько BLD с вашего валидатора на кошелек, для этого выполните команду:
ag-cosmos-helper tx bank send ИМЯ_ВАШЕГО_КОШЕЛЬКА (в наших гайдах обычно это wallet) АДРЕС_НА_КОТОРЫЙ_ЗАПРАШИВАЛИ_ТОКЕНЫ (через !faucet client) КОЛИЧЕСТВОubld (10000 достаточно) --chain-id agorictest-17 --fees=5000ubld
Теперь запустите сам генератор нагрузки:
cd $HOME/testnet-load-generator
screen -dmS loadgen bash -c "agoric deploy loadgen/loop.js ; exec bash"
Зайдите в скрин командой:
screen -rd loadgen
Через некоторое время вы должны увидеть следующее:
После этого перейдите на сайт https://submit.agoric.app/ и залогиньтесь через свой Discord, вам нужно перейти на страницу https://submit.agoric.app/participant/loadGenKey, скопировать команду из поля и выполнить ее на сервере:
После этого ваш генератор будет подключен к централизованной системе Agoric, а в логах скрина вы должны увидеть следующее:
Это значит, что вы успешно подключили свой генератор нагрузки.
Если наш гайд помог вам установить ноду и даже немного заработать, поддержите проект!