СТАТЬЯ ОБНОВЛЕНА 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.
Перед запуском ноды настоятельно рекомендую:
Если вы корректно заполните форму, то вам дадут роль в Discord - сервере (с 01.04.2022 роли перестали выдавать).
Пока не известно, что даёт данная роль... может это своеобразное разрешение на запуск ноды... может еще что-то.... Единственное что, роль даст доступ в отдельную ветку сервера для разрабочтиков. На текущий момент лично мне пока роль не дали и я запускаю ноду без неё (надеюсь дадут в скором времени).
Аренда VPS:
Беру в основном на сервисе VDSina.
Если регистрируетесь по данной ссылке, то получаете скидку в 10% на все товары. Спасибо.
Установка (актуальна на 02.04.2022):
- Обновляем пакеты:
sudo apt update && sudo apt upgrade -y - Устанавливаем 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 - Проверяем версию Docker. Если всё правильно установили, то выдаст текущую версию:
docker version - Устанавливаем 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 - Проверяем версию Docker Compose. Если всё правильно установили, то выдаст текущую версию:
docker compose version - Далее создаём папку, переходим в неё и уже внутри продолжаем устанвоку:
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 - Создаем папку, где будем хранить приватники:
mkdir $HOME/aptos/identity - Генерируем 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 - Сформированный 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 - Запускаем нашу ноду:
docker compose up -d - Проверяем синхронизацию:
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
Если логи такие, то нода еще не синхронизирована. Ждём.
Если логи такие, то ты крутой!
Чтобы выйти из логов:
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, если вы до этого держали ноду:
- Останавливаем Docker:
cd $HOME/aptos
sudo docker compose down -v - Проверяем доступны ли обновления для ноды:
sudo docker pull aptoslab/validator:devnet
sudo docker pull aptoslab/tools:devnet - Запускаем инструмент для обновления пиров:
sudo docker run --rm --name aptos_tools -d -i aptoslab/tools:devnet - Обновляем сам идентификатор:
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 - Останавливаем инструмент обновления:
sudo docker stop aptos_tools - Вытаскиваем ID:
PEER_ID=$(sed -n 2p $HOME/aptos/identity/peer-info.yaml | sed 's/..$//') - Устанавливаем новый ID:
sed -i -e "s/peer_id:.*/peer_id: \"$PEER_ID\"/" $HOME/aptos/public_full_node.yaml - Удаляем старый genesis:
rm $HOME/aptos/genesis.blob - Ставим новый genesis:
wget -P $HOME/aptos https://devnet.aptoslabs.com/genesis.blob - Удаляем старый waypoint:
rm $HOME/aptos/waypoint.txt - Ставим новый 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 - Запуск ноды:
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