Развертывание Avalanche на платформе Akash

aoritus
3 min readMar 16, 2022

Одно из заданий второй недели 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
NodeID-LXUWAErM5AqNccuPwVe6Y42yBCdJGHdBh

Это же значение можно увидеть в логах развертывания:

Закрытие развертывания

После всех действий закрываем развертывание кликом по трем точкам, а затем Close:

--

--