Althea

Althea

cyberomanov

Минимальные требования

2 CPU x 4 GB RAM x 40 GB HDD | min
4 CPU x 8 GB RAM x 60 GB HDD | max
Ubuntu 20.04

Арендуем сервер на любом удобном сервисе. Сохраняем IP и пароль от VPS.

Я покупаю здесь: vdsina.ru (быстро и дорого), ihor.ru (медленно и дёшево).
При регистрации по моей ссылке 10% скидка на стоимость всех услуг.

Открываем MobaXterm и создаём сессию. Гайд по MobaXterm.

Установка ноды

# создаём пользователя и логинимся в новую учётную запись

$ sudo adduser althea
$ usermod -aG sudo althea
$ sudo su althea

# обновляем 'базу данных' и скачиваем необходимые зависимости

$ cd && sudo apt-get update
$ sudo apt-get upgrade -y
$ sudo apt install jq -y

# создаём папку для ноды и скачиваем все необходимые файлы

$ mkdir althea-bin && cd althea-bin
$ wget https://github.com/althea-net/althea-chain/releases/download/v0.0.5/althea-0.0.4-16-g6812f87-linux-amd64
$ mv althea-0.0.4-16-g6812f87-linux-amd64 althea
$ wget https://github.com/althea-net/althea-chain/releases/download/v0.0.5/client
$ wget https://github.com/althea-net/althea-chain/releases/download/v0.0.5/orchestrator
$ wget https://github.com/althea-net/althea-chain/releases/download/v0.0.5/register-delegate-keys
$ wget https://github.com/althea-net/althea-chain/releases/download/v0.0.5/relayer
$ chmod +x *
$ sudo mv * /usr/bin/

# генерируем ключи, обязательно сохраняем мнемонику

$ cd
$ althea init mymoniker --chain-id althea-testnet1v5
$ althea keys add <NICKNAME>
# копируем файл генезиса

$ wget https://github.com/althea-net/althea-chain/releases/download/v0.0.5/althea-testnet1-v5-genesis.json
$ cp althea-testnet1-v5-genesis.json $HOME/.althea/config/genesis.json

Открываем файл конфига через nano или проводник:

Находим строку под номером 187, меняем значение в кавычках на следующее:

05ded2f258ab158c5526eb53aa14d122367115a7@testnet1.althea.net:26656

В этой же папке открываем файл app.toml, находим строку под номером 104, меняем значение на "true":

Сохраняем изменения и создаём сервис "althead":

$ sudo nano /etc/systemd/system/althead.service

# вставляем следующий код в редактор 'nano'

[Unit]
Description=Althea
After=network-online.target
[Service]
User=althea
ExecStart=/usr/bin/althea start
Restart=always
RestartSec=3
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target

# сохраняем файл 'Ctrl + S', закрываем редактор 'Ctrl + X'
# перезагружаем данные о сервисах, включаем сервис 'althead'

$ sudo systemctl daemon-reload
$ sudo systemctl enable althead
$ sudo systemctl start althead

# смотрим журнал сервиса

$ sudo journalctl -u althead -f

# закрываем логи сервиса сочетанием клавиш 'Ctrl + C'

Началась синхронизация:

Скачиваем ещё пару файлов для синхронизации с сетью Goerli:

# скачиваем ещё пару файлов для синхронизации с сетью 'goerli'

$ wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.10.1-c2d2f4ed.tar.gz
$ tar -xvf geth-linux-amd64-1.10.1-c2d2f4ed.tar.gz
$ mv geth-linux-amd64-1.10.1-c2d2f4ed geth

# создадим сервис для 'geth'

$ sudo nano /etc/systemd/system/gethd.service

# вставляем следующий код в редактор 'nano'

[Unit]
Description=Althea Geth
After=network-online.target
[Service]
User=althea
ExecStart=/home/althea/geth/geth --syncmode "light" --goerli --http --cache 128
Restart=always
RestartSec=3
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target

# сохраняем файл 'Ctrl + S', закрываем редактор 'Ctrl + X'
# перезагружаем данные о сервисах, включаем сервис 'geth'

$ sudo systemctl daemon-reload
$ sudo systemctl enable gethd
$ sudo systemctl start gethd

# журнал сервиса

$ sudo journalctl -u gethd -f

# закрываем логи сервиса сочетанием клавиш 'Ctrl + C'
Если за 10-15 минут нода не нашла ни одного пира, как у меня было в первый раз, я сделал следующее.
Открыл заново файл сервиса в редакторе, удалил параметр "--syncmode "light"", перезагрузил "daemon-reload", перезапустил сервис.
geth начал полную синхронизацию, через 5-10 минут после запуска полной синхронизации я опять остановил сервис, вернул параметр "--syncmode "light"" и заново перезапустил сервис.
После этой махинации у меня при лёгком моде началась синхронизация.
Скорее всего, оставив машину на час-два, она автоматически найдёт нужные пиры и успешно синхронизируется.

Валидатор

Выключаем лог сочетанием клавиш "Ctrl + C".

# получаем наш адрес для запроса тестовых токенов 

$ althea keys list

Переходим в дискорд канал команды и запрашиваем токены:

Проверяем баланс через эксплорер: testnet.althea.aneka.io (не обновился до версии 1.5) или gravity.paullovette.com:

Также необходимо дождаться конца синхронизации.
Открываем эксплорер, включаем логи сервиса "althead" и сравниваем высоту:

# можно проверить статус синхронизации командой

$ althea status 2>&1 | jq .SyncInfo | jq .catching_up

# пока результат 'true', вы всё ещё на стадии синхронизации
# если результат 'false', пора создавать валидатора
# синхронизация может занять до 2-ух суток
# баланс можно проверить командой в консоли
# но только после полной синхронизации 

$ althea query bank balances <COSMOS_ADDRESS>
# ждём синхронизацию, ждём токены
# после чего выполняем команду создания валидатора
# если выполнить её раньше, ничего не выйдет
# меняем <NICKNAME> на собственные значения

$ althea tx staking create-validator \
  --amount=100000000ualtg \
  --pubkey=$(althea tendermint show-validator) \
  --moniker="<NICKNAME>" \
  --chain-id=althea-testnet1v5 \
  --commission-rate="0.10" \
  --commission-max-rate="0.20" \
  --commission-max-change-rate="0.01" \
  --min-self-delegation="1" \
  --gas="auto" \
  --gas-adjustment=1.5 \
  --gas-prices="0.025ualtg" \
  --from=<NICKNAME>

Чтобы удостовериться, что вы теперь валидатор:

$ althea query staking validator $(althea keys show <NICKNAME> --bech val --address)

Отлично, теперь вы проходите валидацию в блокчейне Althea. Но в качестве валидатора вам также необходимо запустить компоненты Gravity Bridge, иначе вы будете удалены из списка валидаторов примерно через 16 часов и попадёте в тюрьму.

Gravity Brigde

# данная команда создаст ещё один аккаунт для делегации
# сохраняем весь вывод в блокнот, не потеряйте мнемоническую фразу

$ RUST_LOG=INFO register-delegate-keys --validator-phrase="<MNEMONIC>" --cosmos-rpc="http://localhost:1317" --fees=footoken
# отправляем в делегацию тестовые монеты
# не забываем указать имя валидатора и 
# только что сгенерированный cosmos-адрес

$ althea tx bank send <NICKNAME> <DELEGATE_COSMOS_ADDRESS> 50000000footoken --chain-id=althea-testnet1v5

В предыдущем шаге мы сгенерировали 2 адреса для делегации: ETH и Cosmos.
Теперь идём на этот кран (или этот) и запрашиваем на ETH-адрес тестовый Goerli Ethereum.

Orchestrator 

И последний пункт настройки валидатора. Создаём ещё один сервис:

$ sudo nano /etc/systemd/system/orchestratord.service

# вставляем следующий код в редактор 'nano'
# попутно заменяя необходимые переменные
# космическую мнемонику и приватный эфировский ключ берём
# из пункта, где создавали адреса для делегации

[Unit]
Description=Althea Orchestrator 
After=network-online.target
[Service]
User=althea
ExecStart=orchestrator \
    --cosmos-phrase="<DELEGATE_COSMOS_MNEMONIC>" \
    --ethereum-key="<DELEGATE_ETH_PRIVATE_KEY>" \
    --cosmos-legacy-rpc="http://localhost:1317" \
    --cosmos-grpc="http://localhost:9090" \
    --ethereum-rpc="http://localhost:8545" \
    --fees=footoken \
    --contract-address="0xB48095a68501bC157654d338ce86fdaEF4071B24"
Restart=always
RestartSec=3
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target

# сохраняем файл 'Ctrl + S', закрываем редактор 'Ctrl + X'
# перезагружаем данные о сервисах, включаем сервис 'orchestratord'

$ sudo systemctl daemon-reload
$ sudo systemctl enable orchestratord
$ sudo systemctl start orchestratord

$ sudo systemctl restart althead
$ sudo systemctl restart gethd
$ sudo systemctl restart orchestratord

# журнал сервиса

$ sudo journalctl -u orchestratord -f

Сначала вы можете увидеть большое количество ошибок, но через пару десятков минут вывод должен прекратиться:

Стали ли вы активным валидатором, можно посмотреть в этом эксплорере, также там можно увидеть номера последних блоков и подсчитать, когда примерно кончится синхронизация:

Testing Gravity

Сейчас мы поиграемся с переводами между сетями: Ethereum и Cosmos.
Ниже приведены 3 адреса с тестовыми монетами:

0xD7600ae27C99988A6CD360234062b540F88ECA43 - Bitcoin MAX (MAX)
0x7580bFE88Dd3d07947908FAE12d95872a260F2D8 - 2 Ethereum (E2H)
0xD50c0953a99325d01cca655E57070F1be4983b6b - Byecoin (BYE)

Следующая команда запрашивает с указанного ERC20-адреса тестовые монеты в сеть Cosmos, #ETH-TO-COSMOS:

Обратите внимание, что параметр "ethereum-key" заполнен, его не трогаем.
$ RUST_LOG=info client eth-to-cosmos \
     --ethereum-key="0xb1bab011e03a9862664706fc3bbaa1b16651528e5f0e7fbfcbfdd8be302a13e7" \
     --ethereum-rpc="http://localhost:8545" \
     --contract-address="0xB48095a68501bC157654d338ce86fdaEF4071B24" \
     --erc20-address="<ЛЮБОЙ_ИЗ_ТРЁХ_АДРЕСОВ>" \
     --amount=1 \
     --cosmos-destination="<DELEGATE_COSMOS_ADDRESS>"

На скриншоте я отправил транзакцию с запросом на первый эфир-адрес, давайте проверим баланс кошелька, на который я запросил монеты:

$ althea query bank balances <DELEGATE_COSMOS_ADDRESS>

Круто, теперь у меня на балансе появились какие-то "peggy".
Также можно отследить транзакцию в эксплорере:

Произведём обратную операцию, #COSMOS-TO-ETH:

$ RUST_LOG=info client cosmos-to-eth \
        --cosmos-phrase="<DELEDATE_COSMOS_MNEMONIC>" \
        --cosmos-legacy-rpc="http://localhost:1317" \
        --cosmos-grpc="http://localhost:9090" \
        --cosmos-denom="peggy0xD7600ae27C99988A6CD360234062b540F88ECA43" \
        --amount=.5 \
        --eth-destination="<DELEGATE_ETH_ADDRESS>"

На моём скриншоте вышла ошибка: означает, что синхронизация ноды чуть-чуть отстала. Пару секунд можно подождать и попробовать отправить транзакцию заново.

Со второго раза у меня получилось:

Транзакцию можно отследить в эксплорере:

How to unjail?

Чтобы выйти из тюрьмы:

$ althea tx slashing unjail --from <NICKNAME> --chain-id=althea-testnet1v5

Также добавим пару монет в стейк:

$ althea keys show <NICKNAME> --bech val

Вставляем свой адрес и никнейм:

$ althea tx staking delegate <ADDRESS> 9900000ualtg --from <NICKNAME> --chain-id althea-testnet1v5 --fees 50ualtg --broadcast-mode block

Проверяем статус валидатора:

$ althea query staking validator $(althea keys show <NICKNAME> --bech val --address)

Обновление сети (в случае выхода v1.6+)

# создаём временную папку

$ mkdir -p althea-bin
$ cd althea-bin

# скачиваем необходимые файлы

$ wget https://github.com/althea-net/althea-chain/releases/download/v0.0.5/althea-0.0.4-16-g6812f87-linux-amd64
$ mv althea-0.0.4-16-g6812f87-linux-amd64 althea
$ wget https://github.com/althea-net/althea-chain/releases/download/v0.0.5/client
$ wget https://github.com/althea-net/althea-chain/releases/download/v0.0.5/orchestrator
$ wget https://github.com/althea-net/althea-chain/releases/download/v0.0.5/register-delegate-keys
$ wget https://github.com/althea-net/althea-chain/releases/download/v0.0.5/relayer
$ chmod +x *
$ sudo mv * /usr/bin/

# скачиваем файл генезиса

$ wget https://github.com/althea-net/althea-chain/releases/download/v0.0.5/althea-testnet1-v5-genesis.json
$ cp althea-testnet1-v5-genesis.json $HOME/.althea/config/genesis.json

# перезапускаем ноду

$ althea unsafe-reset-all
$ sudo systemctl stop althead
$ althea start

# ждём такой вывод, останавливаем 'Ctrl + C'
$ sudo systemctl restart althead
$ sudo journalctl -u althead -f

# ждём такой вывод, останавливаем 'Ctrl + C'
$ sudo systemctl restart gethd
$ sudo systemctl restart orchestratord

Скорее всего вы попали в тюрьму, пока обновлялись. Это можно проверить командой:

$ althea query staking validator $(althea keys show <NICKNAME> --bech val --address)

В таком случае, необходимо выполнить команды из пункта "How to unjail".

Вывод

Тестнет интересный. Вряд ли гем, но ради опыта можно и поставить.
По наградам пусто. Администрация отмалчивается, но постоянно на связи и поможет в любом техническом вопросе.

Сам я смог поставить только со второго раза, потому что столкнулся с проблемой, которую даже вместе с админом не сумели решить.
Вторая нода - с полного нуля поставилась без проблем.

Возможно, и у вас выскочит какая-либо неприятная штука - милости прошу в дискорд канал команды. В беде вас не оставят.

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

мамичу за то, что родила такого гения.

Ссылки

Красивые оригинальные гайды.
Телеграм-канал @how_to_node, где я выкладываю свои гайды.
Телеграм-канал @crypto_watermelon, где мой товарищ выкладывает посты об интересных крипто-проектах и ивентах.

Поблагодарить автора

Крипто-кошельки автора.


Report Page