Найти в Дзене
САТОША НАКАМОТОВ

APTOS NODE - Заходим в проект на ранней стадии

Оглавление
СТАТЬЯ ОБНОВЛЕНА 02.04.2022
ИНСТРУКЦИЯ ПО ОБНОВЛЕНИЮ НОДЫ В КОНЦЕ СТАТЬИ.

Приветсвую! Сегодня разбираемся с APTOS.

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

О проекте

  • Цель - создание самого безопасного и масштабируемого блокчейна Layer 1;
  • Инвесторы - Multicoin Capital, Katie Haun, 3 Arrows Capital, ParaFi Capital, IRONGREY, Hashed, Variant, Tiger Global, BlockTower, FTX Ventures, Paxos и Coinbase Ventures;
  • Сборы - привлекла 200 миллионов долларов в рамках стратегического раунда под руководством a16z.

Фазы запуска:

  • На 16.03.2022 Aptos находится в стадии devnet - наград не предусмотрено, но в перспективе...
  • Награждаемый тестнет начнется в 2022 Q2
  • Мэйннет в 2022 Q3 с последующими обновлениями.

Минимальный системные требования - 2 CPU, 4GB RAM. Про ОС информации не нашел, ставлю по стандарту на Ubuntu 20.04 LTS.

Перед запуском ноды
настоятельно рекомендую:

  1. вступить в Discord проекта
  2. покликать на различные эмодзи на всякий случай и самое главное - заполнить форму, прейдя по ссылке:
-2
-3

Если вы корректно заполните форму, то вам дадут роль в Discord - сервере (с 01.04.2022 роли перестали выдавать).

Пока не известно, что даёт данная роль... может это своеобразное разрешение на запуск ноды... может еще что-то.... Единственное что, роль даст доступ в отдельную ветку сервера для разрабочтиков. На текущий момент лично мне пока роль не дали и я запускаю ноду без неё (надеюсь дадут в скором времени).

Аренда VPS:

Беру в основном на сервисе VDSina.

Если регистрируетесь по данной ссылке, то получаете скидку в 10% на все товары. Спасибо.
-4

Установка (актуальна на 02.04.2022):

  1. Обновляем пакеты:

    sudo apt update && sudo apt upgrade -y
  2. Устанавливаем Docker:

    sudo apt install ca-certificates curl gnupg lsb-release wget jq sed -y

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    sudo apt update

    sudo apt install docker-ce docker-ce-cli containerd.io -y

  3. Проверяем версию Docker. Если всё правильно установили, то выдаст текущую версию:

    docker version
  4. Устанавливаем Docker Compose:

    mkdir -p ~/.docker/cli-plugins/

    curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose

    chmod +x ~/.docker/cli-plugins/docker-compose

    sudo chown $USER /var/run/docker.sock
  5. Проверяем версию Docker Compose. Если всё правильно установили, то выдаст текущую версию:

    docker compose version
  6. Далее создаём папку, переходим в неё и уже внутри продолжаем устанвоку:

    mkdir $HOME/aptos

    cd $HOME/aptos

    wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/public_full_node/docker-compose.yaml

    wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/public_full_node/public_full_node.yaml

    wget https://devnet.aptoslabs.com/genesis.blob

    wget https://devnet.aptoslabs.com/waypoint.txt
  7. Создаем папку, где будем хранить приватники:

    mkdir $HOME/aptos/identity
  8. Генерируем ID для нашей ноды:

    docker run --rm --name aptos_tools -d -i aptoslab/tools:devnet

    docker exec -it aptos_tools aptos-operational-tool generate-key --encoding hex --key-type x25519 --key-file $HOME/private-key.txt

    docker exec -it aptos_tools cat $HOME/private-key.txt > $HOME/aptos/identity/private-key.txt

    docker exec -it aptos_tools aptos-operational-tool extract-peer-from-file --encoding hex --key-file $HOME/private-key.txt --output-file $HOME/peer-info.yaml > $HOME/aptos/identity/id.json

    apt install jq

    PEER_ID=$(cat $HOME/aptos/identity/id.json | jq -r '.Result | keys[]')

    PRIVATE_KEY=$(cat $HOME/aptos/identity/private-key.txt)

    docker stop aptos_tools
  9. Сформированный ID связываем с нашей нодой:

    cd $HOME/aptos

    sed -i '/ discovery_method: "onchain"$/a\
    identity:\
    type: "from_config"\
    key: "'$PRIVATE_KEY'"\
    peer_id: "'$PEER_ID'"' public_full_node.yaml
  10. Запускаем нашу ноду:

    docker compose up -d
  11. Проверяем синхронизацию:

    curl 127.0.0.1:9101/metrics 2> /dev/null | grep aptos_state_sync_version | grep type
Результат команды
Результат команды

Дополнительные команды

Если интересен мониторинг логов:

docker logs -f aptos-fullnode-1 --tail 5000

Если логи такие, то нода еще не синхронизирована. Ждём.

-6

Если логи такие, то ты крутой!

-7

Чтобы выйти из логов:

Ctrl - C

Узнать приватный ключ:

cat $HOME/aptos/identity/private-key.txt

Узнать ID ноды:

cat $HOME/aptos/identity/id.json

Перезапустить ноду:

docker compose restart

Удалить ноду:

cd $HOME/aptos

docker compose down -v

rm -rf $HOME/aptos

Нода установлена, поздравляю! Теперь остается следить за новостями и мониторить будущие активности, а также надеяться на сюрпризы для ранних пташек.

Советую также подписаться на рассылки проекта (поле внизу сайта), вступить не только в Discord, но и подписаться на их Telegram.

Обновление от 01.04.2022, если вы до этого держали ноду:

  1. Останавливаем Docker:

    cd $HOME/aptos

    sudo docker compose down -v
  2. Проверяем доступны ли обновления для ноды:

    sudo docker pull aptoslab/validator:devnet

    sudo docker pull aptoslab/tools:devnet
  3. Запускаем инструмент для обновления пиров:

    sudo docker run --rm --name aptos_tools -d -i aptoslab/tools:devnet
  4. Обновляем сам идентификатор:

    sudo docker cp $HOME/aptos/identity/private-key.txt aptos_tools:/root

    sudo docker exec -it aptos_tools aptos-operational-tool extract-peer-from-file --encoding hex --key-file $HOME/private-key.txt --output-file $HOME/peer-info.yaml

    sudo docker exec -it aptos_tools cat $HOME/peer-info.yaml > $HOME/aptos/identity/peer-info.yaml
  5. Останавливаем инструмент обновления:

    sudo docker stop aptos_tools
  6. Вытаскиваем ID:

    PEER_ID=$(sed -n 2p $HOME/aptos/identity/peer-info.yaml | sed 's/..$//')
  7. Устанавливаем новый ID:

    sed -i -e "s/peer_id:.*/peer_id: \"$PEER_ID\"/" $HOME/aptos/public_full_node.yaml
  8. Удаляем старый genesis:

    rm $HOME/aptos/genesis.blob
  9. Ставим новый genesis:

    wget -P $HOME/aptos https://devnet.aptoslabs.com/genesis.blob
  10. Удаляем старый waypoint:

    rm $HOME/aptos/waypoint.txt
  11. Ставим новый waypoint и меняем файл конфигурации :

    wget -P $HOME/aptos https://devnet.aptoslabs.com/waypoint.txt

    sed -i.bak 's/\(from_config: \).*/\1"'$(cat $HOME/aptos/waypoint.txt)'"/g' $HOME/aptos/public_full_node.yaml
  12. Запуск ноды:

    sudo docker compose up -d

Благодарности:

drawrowfly за знания!
nodesguru за альтернативный гайд!
@asynco за решение ошибок! (ОБЯЗАТЕЛЬНО К ОЗНАКОМЛЕНИЮ)

А вот тут обитаю я.

Ссылки на проект:

GitHub: https://github.com/aptos-labs

Twitter: https://twitter.com/aptoslabs

Официальный сайт: https://aptoslabs.com

Discord: https://discord.gg/4fC2eU5V

Telegram: https://t.me/AptosLabs

Официальный гайд по ноде: https://aptos.dev/tutorials/run-a-fullnode