NG
Agoric

Agoric

Setup Guide

AI Translation
Этот гайд основан на официальном гайде проекта.

Доступен скрипт быстрой установки:

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

Выдать должен следующее (версия может отличаться):

Agoric-0

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):

Agoric-1

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

Выдать должен следующее:

Agoric-2

"catching_up": true должен смениться на false когда нода будет полностью засинхронизирована.

После того как нода засинхронизировалась, можно переходить к следующему этапу.

6. Создаем валидатора

Мы будем использовать имя кошелька “wallet”, но вы можете ставить любое на свое усмотрение:

ag-cosmos-helper keys add wallet
ag-cosmos-helper keys list

Выдача должна быть следующая:

Agoric-3

Теперь заходим в дискорд 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

Вывод должен быть такой:

Agoric-4

Если ваш “VotingPower” > 0 – все ок!

Можно проверить статус вашего валидатора  в эксплорере:

Agoric-5

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'

Перейдя по ссылке вы увидите метрики вашей ноды (после рестарта ноды нужно немного подождать).
Agoric-6

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

Спустя некоторое время вы должны увидеть, что нода ждет времени генезис блока:

Agoric-7

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

Через некоторое время вы должны увидеть следующее:

Agoric-8

После этого перейдите на сайт https://submit.agoric.app/ и залогиньтесь через свой Discord, вам нужно перейти на страницу https://submit.agoric.app/participant/loadGenKey, скопировать команду из поля и выполнить ее на сервере:

Agoric-9

После этого ваш генератор будет подключен к централизованной системе Agoric, а в логах скрина вы должны увидеть следующее:

Agoric-10

Это значит, что вы успешно подключили свой генератор нагрузки.

Если наш гайд помог вам установить ноду и даже немного заработать, поддержите проект!

Stuck? Ask!

By continuing to use our website, you consent to our use of cookies in accordance with our cookie policy