Одно из заданий второй недели Testnet 3 от Akash — развернуть валидатора от Avalanche.
Список действий для выполнения задания:
1. Развернуть Avalanche на Akash и получить идентификатор транзакции
2. Отправить рабочий SDL
3. Получить CURL запрос
4. Закрыть развертывание и получить идентификатор транзакции
Подробную информацию по взаимодействию с узлом Avalanche — можно найти в официальной документации.
Установка Akashlytics
В прошлой статье для развертывания был использован CLI без графического интерфейса, в этот раз выберем более простой путь.
Akashlytics доступен на Windows, macOS и Linux
После установки клиента нужно будет импортировать или создать новый кошелек. В сети edgenet-1 можно воспользоваться краном.
При первом использовании нужно будет создать сертификат и отправить в блокчейн.
Развертывание
После этих действий становится доступен интерфейс для развертывания, Dashboard > Create Deployment:
В качестве основы для каждого файла развертывания используется образ Docker.
Для развертывания можно использовать оригинальный образ от Avalanche, появится возможность увидеть логи с Node-ID, но такое развертывание нельзя будет использовать в качестве RPC узла.
Для того, чтобы это исправить — нужно использовать параметр:
--http-host=0.0.0.0
В моем случае был создан образ, который не имеет проблем при работе с Akash.
Dockerfile:
FROM ubuntu:20.04
RUN apt update -y && apt upgrade -y && apt install wget -y
RUN wget https://github.com/ava-labs/avalanchego/releases/download/v1.7.7/avalanchego-linux-amd64-v1.7.7.tar.gz && tar -xvzf avalanchego-linux-amd64-v1.7.7.tar.gz
WORKDIR avalanchego-v1.7.7
CMD ./avalanchego --network-id=fuji --http-host=0.0.0.0
Использован SDL файл с параметрами ниже тех, что требует Avalanche, но в данный момент такие значения гарантируют успешный запуск.
SDL:
---
version: "2.0"services:
web:
image: nomorelies/avaxwakash
expose:
- port: 9650
as: 9650
to:
- global: true
- port: 9651
as: 9651
to:
- global: true
profiles:
compute:
web:
resources:
cpu:
units: 2
memory:
size: 4Gi
storage:
size: 128Gi
placement:
akash:
attributes:
host: akash
pricing:
web:
denom: uakt
amount: 100000
deployment:
web:
akash:
profile: web
count: 1
После отправки транзакции на развертывание нужно выбрать провайдера:
Развертывание активно:
Для получения адреса RPC узла нужно кликнуть на ссылку, которая перенаправляет порт 9650, в данном случае 32742.
Использование RPC
Получение NodeID на примере одного CURL запроса.
NodeID локальной машины:
curl -X POST --data '{
"jsonrpc":"2.0",
"id" :1,
"method" :"info.getNodeID"
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/info
NodeID развернутого приложения:
curl -X POST --data '{
"jsonrpc":"2.0",
"id" :1,
"method" :"info.getNodeID"
}' -H 'content-type:application/json;' http://provider.edgenet-3.ca.aksh.pw:32742/ext/info
Это же значение можно увидеть в логах развертывания:
Закрытие развертывания
После всех действий закрываем развертывание кликом по трем точкам, а затем Close: