APTOS AIT3
Условия получения наград за AIT3
- Выполнить все необходимые задачи вовремя
- Удовлетворение LIVENESS ноды, как определено метриками push-данных ≥ 95%
- REWARDS PERFORMANCE ≥ 80% от максимума
- Успешное участие во всех операциях governance, созданных Aptos
Каждый, кто соответствует этим критериям, получит 800 токенов Aptos. Кроме того, команда предложит две возможности получить дополнительные 200 токенов Aptos
UPD - пул наград обещали увеличить из-за увеличения времени тестирования
AIT3 Регистрация
Офф инструкция - https://aptos.dev/nodes/ait/ait-3/
Для регистрации в AIT3 необходимо выполнить следующие условия:
- Удостоверьтесь, что вы присоединилсь к серверу Aptos в дискорде
- Скачайте и установите кошелек Petra
- Создайте аккаунт (или авторизируйтесь) на сайте community site
- Следуйте шагам регистрации на AIT-3, заполняйте форму и установите ноду валидатора (переходите к установке), зарегестрируйте свою ноду (после установки)
Если установка на том же сервере, то сначала удаляем ноду
# Остановить ноду и удалить тома данных cd ~/.aptos && docker-compose down -v # удалить genesis.blob и waypoint.txt rm ~/.aptos/genesis.blob rm ~/.aptos/waypoint.txt # можно удалить сразу все cd && rm -rf ~/.aptos # Чтобы полностью удалить Docker: apt-get purge -y docker-engine docker docker.io docker-ce apt-get autoremove -y --purge docker-engine docker docker.io docker-ce rm /usr/local/bin/docker-compose # приведенные выше команды не будут удалять изображения, контейнеры, тома или созданные пользователем файлы конфигурации на вашем хосте. Если вы хотите удалить все изображения, контейнеры и тома, выполните следующие команды: # rm -rf /var/lib/docker /etc/docker # rm /etc/apparmor.d/docker # groupdel docker # rm -rf /var/run/docker.sock # при ошибке установки переконфигурируем dpkg #sudo dpkg --configure -a
Новая установка
# обновляем репозитории apt update && apt upgrade -y # устанавливаем необходимые утилиты apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y
Установка docker + docker-compose
# автоматическая установка docker + docker-compose . <(wget -qO- https://raw.githubusercontent.com/letsnode/Utils/main/installers/docker.sh) # проверить версию docker --version docker-compose --version
# ручная установка docker https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-ru apt update apt install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" apt update apt-cache policy docker-ce sudo apt install docker-ce systemctl status docker # проверить версию docker --version
# ручная установка docker-compose https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04-ru # проверяем версию https://github.com/docker/compose/releases и подставляем в команду установки curl -L "https://github.com/docker/compose/releases/download/v2.10.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose # проверить версию docker-compose --version
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # в процесе прожмите "y" и нажмите на "1" source "$HOME/.cargo/env" # проверить версию rustc --version
Устанавливаем ноду через cargo
cargo install --git https://github.com/aptos-labs/aptos-core.git aptos --branch testnet
WORKSPACE=.aptos USERNAME=lesnik_utsa IP=$(wget -qO- eth0.me) echo 'export WORKSPACE='$WORKSPACE >> $HOME/.bash_profile && \ echo 'export USERNAME='$USERNAME >> $HOME/.bash_profile && \ echo 'export IP='$IP >> $HOME/.bash_profile && \ echo "WORKSPACE: $WORKSPACE" && echo "USERNAME: $USERNAME" && echo "IP: $IP" # подгрузить переменные #. $HOME/.bash_profile
Создаем каталог и переходим в него
mkdir ~/$WORKSPACE cd ~/$WORKSPACE
wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/aptos-node/docker-compose.yaml wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/aptos-node/validator.yaml
aptos genesis generate-keys --output-dir ~/$WORKSPACE/keys
Устанавливаем конфигурации для валидатора
aptos genesis set-validator-configuration \ --local-repository-dir ~/$WORKSPACE \ --username $USERNAME \ --owner-public-identity-file ~/$WORKSPACE/keys/public-keys.yaml \ --validator-host $IP:6180 \ --full-node-host $IP:6182 \ --stake-amount 100000000000000
aptos genesis generate-layout-template --output-file ~/$WORKSPACE/layout.yaml
⠀Меняем несколько переменных в конфиге
nano /root/$WORKSPACE/layout.yaml
root_key: "D04470F43AB6AEAA4EB616B72128881EEF77346F2075FFE68E14BA7DEBD8095E" users: ["YOUR_NAME"] chain_id: 43
Скачиваем framework необходимый для запуска
wget https://github.com/aptos-labs/aptos-core/releases/download/aptos-framework-v0.3.0/framework.mrb -P ~/$WORKSPACE
Генерируем genesis.blob и waypoint.txt
aptos genesis generate-genesis --local-repository-dir ~/$WORKSPACE --output-dir ~/$WORKSPACE
ВАЖНО! Сделайте бекап созданных ключей (keys) и папку с названием вашего валидатора (YOUR_NAME).
cd ~/$WORKSPACE && docker-compose up -d
cd ~/$WORKSPACE && docker-compose logs -f --tail 100
# рестарт ноды cd ~/$WORKSPACE && docker-compose restart # остановить ноду cd ~/$WORKSPACE && docker-compose stop
curl 127.0.0.1:9101/metrics 2> /dev/null | grep aptos_state_sync_version
Данные для заполнения формы можно посмотреть выполнив команды:
cat ~/$WORKSPACE/$USERNAME/operator.yaml
cd ~/$WORKSPACE && docker-compose down && cd && rm -rf ~/$WORKSPACE
Нода использует порты: TCP port: 80, 6180, 6181, 6182, 9101
ОБНОВЛЕНИЕ AIT3
Инициализируем стейкинг пул (офф инструкция)
- В самом начале обновляем кошелек Petra на версию 0.1.8
- Для начала проверяем, что получили монеты на кошелек, который создавали в Petra (это будет кошелек владельца Owner). После этого создаем второй кошелек и называем его Voter. Далее нам предлагают почитать информацию о стейкинге
- После того как кошельки созданы переходим на сайт Aptos Governance, где подключаем свой кошелек Owner и заполняем следующие данные:
Staking Amount: 100000000000000 (1 миллион монет Aptos с 8 десятичными знаками)
Operator Address: Адрес Вашей учетной записи на ноде - operator_account_address
из файла "operator.yaml
", расположенного в папке ~/$WORKSPACE/$USERNAME
. В моем случае это /root/.aptos/lesnik_utsa/operator.yaml
Voter Address: Адрес кошелька Voter
После заполнения нажимаем SUBMIT
Затем с Owner кошелька, используя Petra wallet, переведите по 5000 (именно 5000, без 8 нулей) монет на Operator Address и Voter Address. И оператор, и избиратель будут использовать эти средства для оплаты платы за газ во время проверки и голосования. Не обращаем внимание на надпись "account not found, will be created" ("учетная запись не найдена, будет создана" - это просто предупреждение)
Присоединяемся к AIT3 (офф инструкция)
Останавливаем ноду с очисткой данных
cd /root/.aptos docker compose down --volumes #Убедитесь, что вы также удалили файл secure-data.json в path: /opt/aptos/data/secure-data.json
wget -O $HOME/.aptos/genesis.blob "https://github.com/aptos-labs/aptos-ait3/raw/main/genesis.blob" # Проверим генезис sha256sum ~/.aptos/genesis.blob # 307f6846179c257badc4e50fbf1d7d4d332b82046e6ff297bff087c5a8efe68f
wget -O $HOME/.aptos/waypoint.txt "https://raw.githubusercontent.com/aptos-labs/aptos-ait3/main/waypoint.txt" # Проверим cat ~/.aptos/waypoint.txt # 0:96d6b0c072ae759ee3d071d1b41a87b3bc983eb852a805e7054482235eace373
Обновляем account_address в validator-identity.yaml на адрес Owner
# nano /root/.aptos/keys/validator-identity.yaml account_address: 0x815790639a8e36f49c7fa24...
Меняем тег образа в docker-compose.yaml
# nano /root/.aptos/docker-compose.yaml image: "aptoslabs/validator:testnet_18b8c628ea9424fe3cb03e2f65172ecef7ca678c"
Нода использует порты: TCP port: 80, 6180, 6181, 6182, 9101
Необходимо закрыть порт metrics на 9101 и порт REST API 80 для вашего валидатора
# nano /root/.aptos/docker-compose.yaml
ports: - "6180:6180" - "6181:6181" - "127.0.0.1:80:8080" - "127.0.0.1:9101:9101" expose: - 6180 - 6181
docker compose up -d
ПРИСОЕДИНЕНИЕ К НАБОРУ ВАЛИДАТОРОВ
На данный момент мы уже использовали свою учетную запись владельца для инициализации пула ставок валидатора и назначили оператора своей учетной записи оператора. На следующем шаге необходимо настроить узел валидатора, используя учетную запись оператора, и присоединиться к набору валидаторов
Инициализируем ноду. <account_private_key> берем из файла private-keys.yaml
aptos init --profile ait3-operator \ --private-key <operator_account_private_key> \ --rest-url https://ait3.aptosdev.com \ --skip-faucet
Проверим есть ли баланс на кошельке
aptos account list --profile ait3-operator | grep value
Обновляем сетевые адреса валидатора в сети
aptos node update-validator-network-addresses \ --pool-address <owner-address> \ --operator-config-file ~/$WORKSPACE/$USERNAME/operator.yaml \ --profile ait3-operator
ВАЖНО: Если после команды выше появляется ошибка, то обновляем CLI до версии 0.3.2 и повторяем команду выше
# обновить CLI cargo install --git https://github.com/aptos-labs/aptos-core.git aptos --branch testnet # проверить версию aptos --version # aptos 0.3.2
Обновляем согласованный ключ валидатора в сети
aptos node update-consensus-key \ --pool-address <owner-address> \ --operator-config-file ~/$WORKSPACE/$USERNAME/operator.yaml \ --profile ait3-operator
Присоединяемся к валидаторскому сету
Набор валидаторов будет обновляться при каждом изменении эпохи, то есть раз в 2 часа. Вы увидите, что ваш узел присоединяется к набору валидаторов только в следующую эпоху. Как Validator, так и fullnode начнут синхронизацию, как только ваш валидатор будет включен в набор валидаторов
UPD - добавьте к кошельку ноды еще 20000 + монет
aptos node join-validator-set \ --pool-address <owner-address> \ --profile ait3-operator \ --max-gas 20000
Проверить сет ожидающих валидаторов в pending_active
aptos node show-validator-set --profile ait3-operator | jq -r '.Result.pending_active' | grep <owner-address>
Проверить сет валидаторов в active
aptos node show-validator-set --profile ait3-operator | jq -r '.Result.active_validators' | grep <owner-address>
После того, как валидатор появится в активном сете, то пойдет синхронизация и мы можем проверить состояние
# проверяем входящие и исходящие подключения curl 127.0.0.1:9101/metrics 2> /dev/null | grep "aptos_connections{.*\"Validator\".*}" # проверяем высоту сети curl 127.0.0.1:9101/metrics 2> /dev/null | grep "aptos_state_sync_version{.*\"synced\"}" | awk '{print $2}' curl 127.0.0.1:9101/metrics 2> /dev/null | grep "aptos_state_sync_version" # проверяем пиры. Должно быть больше 0 curl 127.0.0.1:9101/metrics 2> /dev/null | grep "aptos_connections{direction=\"outbound\"" # проверяем соединение с нодой Aptos curl 127.0.0.1:9101/metrics 2> /dev/null | grep "aptos_network_peer_connected{.*remote_peer_id=\"f326fd30\".*}" # после синхронизации проверяем достигается ли консенсус. Число должно будет увеличиваться curl 127.0.0.1:9101/metrics 2> /dev/null | grep "aptos_consensus_current_round" curl 127.0.0.1:9101/metrics 2> /dev/null | grep "aptos_consensus_proposals_count" # проверяем статистику валидатора по каждой эпохе curl -s https://aptos-analytics-data-it3.s3.us-west-2.amazonaws.com/validator_epoch_history.json|jq '.[]|select(.validator_addr == "<OWNER_ADR>>")'
Наконец, самый простой способ проверить, правильно ли функционирует нода - это проверить, получает ли она вознаграждение за размещение ставок. Вы можете проверить это в проводнике https://explorer.devnet.aptos.dev/account/<owner-account-address>?network=ait3
0x1::stake::StakePool "active": { "value": "100009129447462" }
Полезные команды
# посмотреть логи docker logs -f --tail 100 aptos-validator-1 # рестарт ноды cd ~/.aptos && docker-compose restart # остановить ноду cd ~/.aptos && docker-compose stop
Проверить сколько занимает база данных
du -h /var/lib/docker/volumes/aptos-validator/
# Остановить ноду и удалить тома данных cd $HOME/.aptos docker-compose down -v # удалить genesis.blob и waypoint.txt rm genesis.blob rm waypoint.txt # также можем удалить .aptos cd $HOME rm -rf .aptos # проверяем образы docker system df -v # удаляем старые образы aptos docker image rm <id>
Изменить учетную запись Voter (также можно через UI)
aptos stake set-delegated-voter \ --voter-address <new-voter-address> \ --profile ait3-owner
aptos init --profile ait3-voter \ --private-key <voter_account_private_key> \ --rest-url https://ait3.aptosdev.com \ --skip-faucet
aptos governance vote \ --proposal-id <proposal id> \ --pool-address <owner address> \ --profile ait3-voter \ --yes
Посмотреть статистику валидатора сквозь эпохи
curl -s https://aptos-analytics-data-it3.s3.us-west-2.amazonaws.com/validator_epoch_history.json|jq '.[]|select(.validator_addr == "<OWNER_ADDRESS_HERE>")'
Посмотреть статистику валидатора сквозь эпохи в табличном виде
curl -s https://aptos-analytics-data-it3.s3.us-west-2.amazonaws.com/validator_epoch_history.json|jq -r -C '["EPOCH","FAILED","SUCCESS"], ["-----","------","--------"], (.[]|select(.validator_addr == "<OWNER_ADDRESS_HERE>")|[.epoch, .failed_proposal_count, .successful_proposal_count])|@tsv'
ОПЦИОНАЛЬНО
# заменить в файле docker-compose.yaml # nano /root/.aptos/docker-compose.yaml image: "aptoslabs/validator:testnet_18b8c628ea9424fe3cb03e2f65172ecef7ca678c" # перезагрузить docker-compose down && docker-compose up -d # проверить версию docker ps
ОПЦИОНАЛЬНО - ИЗМЕНИТЬ РАЗМЕР ЗАНИМАЕМОГО МЕСТА ЛОГ ФАЙЛА
# проверить занимаемое место du -h /var/lib/docker/volumes/aptos-validator/ # для ограничения размера лога, в docker-compose.yaml прописать # nano /root/.aptos/docker-compose.yaml logging: options: max-file: "3" max-size: "100m" # перезагрузить docker compose down && docker compose up -d
ОПЦИОНАЛЬНО - НАСТРОЙКА КОНФИГУРАЦИИ ТАЙМАУТА КОНСЕНСУСА (после настройки уменьшилась PARTICIPATION)
# открываем validator.yaml nano /root/.aptos/validator.yaml # для изменения таймаута, в validator.yaml прописать round_initial_timeout_ms: 2000 # перезагрузить docker compose down && docker compose up -d
ОПЦИОНАЛЬНО - старт со снепшота
state_sync: state_sync_driver: bootstrapping_mode: DownloadLatestAccountStates # Tells state sync to skip all historic transactions data_streaming_service: max_concurrent_requests: 3 # Enables data pre-fetching so syncing isn't super slow
ОПЦИОНАЛЬНО - настраиваем concurrency_level, что позволяет оптимизировать работу при высокой нагрузке на сеть
Можно настроить и для fullnode - для этого отредактировать fullnode.yaml
# открываем validator.yaml nano /root/.aptos/validator.yaml # настраиваем concurrency_level: 8 concurrency_level: 8 # перезагружаем docker-compose down && docker-compose up -d
Вывод средств с валидатора и правильное закрытие
Офф доки здесь
cd $HOME/.aptos # оставьте набор валидаторов (вступит в силу в следующую эпоху) # при ошибке "API error: Unknown error transaction execution failed: Out of gas" добавляем --max-gas 20000 aptos node leave-validator-set --profile ait3-operator --pool-address <owner-address> --max-gas 20000
# Проверить active сет валидаторов (owner адрес должен пропасть из этого списка) aptos node show-validator-set --profile ait3-operator | jq -r '.Result.active_validators' | grep <owner-address>
# Остановить ноду и удалить тома данных cd $HOME/.aptos docker-compose down -v # удалить genesis.blob и waypoint.txt rm genesis.blob rm waypoint.txt # также можем удалить .aptos cd $HOME rm -rf .aptos
В зависимости от того, хотите ли вы повторно использовать свой идентификатор узла, вы можете сохранить или удалить созданные ключи (keys) и папку с названием вашего валидатора (YOUR_NAME).