Pontem /// v1.0
Устанавливаем ноду Pontem для участия в открытом тесте сети.
Если вы не знаете, что такое нода — читаем статью.
Если вы не знаете, где арендовать сервер для ноды — читаем статью.
Если вы не знаете, как подключиться к серверу — читаем статью.
Если вы всё знаете — открываем MobaXterm и создаём сессию.
- Описание проекта: несколько слов о проекте, условия участия в ивенте.
- Требования к железу: рекомендуемые технические параметры сервера.
- Установка
- Кран: запрашиваем токены для теста;
- Установка: скачиваем и настраиваем ПО;
- Кошелёк: регистрируем аккаунт Nimbus;
- Полезные вещи
- Перенос и бэкап: пригодится при переезде;
- Удаление ноды: на будущее.
- Благодарности
- Полезные ресурсы на каждый день
Pontem - это мост между регулируемым и нерегулируемым мирами, который позволит обмениваться ценностями между ними.
Что делает Pontem, так это соединяет Diem (проект, поддерживаемый компанией Meta (в прошлом: Facebook) с 3,1 миллиардом пользователей) и децентрализованный мир, включая традиционные крипторынки.
Сеть поможет пользователям Diem получить доступ к таким инструментам, как финансы, средства безопасности и даже игры.
Pontem стремится соединить виртуальную машину Move, язык и сообщество, созданные блокчейн-проектом Diem с "разрешениями" (permissioned) Facebook, с экосистемой блокчейна "без разрешений" (permissionless) через Polkadot.
Язык Move и виртуальная машина Move - это безопасные, готовые для использования технологии, которые обеспечивают функциональность блокчейна, такую как платежи и смарт-контракты.
В отличие от других проектов блокчейна первого уровня, которые сосредоточены на разработке с использованием такого языка, как Solidity, Pontem - первый проект, который привнес технологию Facebook Move в "разрешенную" криптометавселенную, позволяя новым и крипто-нативным проектам создавать, тестировать и развертывать приложения на блокчейне Diem Facebook.
Pontem обладает уникальным потенциалом создания инфраструктуры для поддержки миллиардов пользователей, которые впервые в жизни откроют для себя удивительные возможности криптовалюты с помощью финансовых услуг, предоставляемых экосистемой Diem Facebook, но также захотят подключиться к криптовселенной "без разрешений".
Таким образом, Pontem станет привлекательным вариантом для команд разработчиков, предоставляя им инструменты для создания приложений для большого потока пользователей, привлеченных в криптометавселенную Facebook и ассоциацией Diem, которая будет обеспечивать ценность сети Pontem.
Backers: Animoca, Delphi, Mechanism, Morningstar, CMS, Alameda, GBIC, Kenetic, Spartan, NGC, Skynet, Momentum6, Genesis Block, AU21, Altonomy, Avalanche, Taureon и ещё около 10 фондов.
Pontem будет награждать активных валидаторов (коллаторов), а также делегаторов, которые вложили свои монеты в ноды активных коллаторов.
Если вам интересно стать валитором в основной сети - Kusama, можно заполнить форму интереса.
Стать участником тестнета можно двумя способами:
- делегировать токены активным коллаторам и получать тестовые награды (фантики) за делегирование;
- запустить собственного коллатора (валидатора) и получать награды (фантики) за валидирование.
Можно стать либо номинатором (делегировать через интерфейс), либо быть коллатором (запускать ноду). Одновременно нельзя держать ноду и делегировать кому-то с одного аккаунта.
Medium | Docs | GitHub | WebSite | Twitter | Discord | Telegram | RU_Chat
Официальные требования: 4 CPU x 8 GB RAM x 100 GB SSD - Ubuntu 20.04.
Субъективные наблюдения: 2 CPU x 4 GB RAM x 100 GB SSD - Ubuntu 20.04.
Прежде всего, нам нужно запросить токены.
Для этого переходим на страницу дашборда Pontem. Подключаем расширение polkadot.js и копируем свой адрес, на которые хотим запросить токены:
После того, как адрес получен - переходим в телеграм бота и запрашиваем токены:
На текущий момент, чтобы стать коллатором, нужно 1000 монет.
Сначала я покажу, как создать собственного коллатора, после чего мы будем делегировать ПОНТы на чужих валидаторов.
# обновляем 'базу данных', обновляем дистрибутив $ sudo apt-get update && sudo apt-get upgrade -y
# скачиваем докер одной командой $ sudo apt-get install curl gnupg apt-transport-https ca-certificates \ lsb-release -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-get update && \ sudo apt-get install docker-ce docker-ce-cli containerd.io -y # если не работает команда, гуглите 'how to install docker on ubuntu'
# скачиваем 'docker-compose' одной командой $ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \ sudo chmod +x /usr/local/bin/docker-compose && docker-compose --version
# клонируем репозиторий одной командой $ git clone https://github.com/pontem-network/bootstrap.git pontem-bootstrap && \ cd ~/pontem-bootstrap && cp .env.testnet .env
# вставляем в 'конфиг' свой никнейм $ nano ~/pontem-bootstrap/.env
# билдим $ cd ~/pontem-bootstrap && docker-compose build
Генерируем новый кошелёк Nimbus и сохраняем весь вывод команды.
$ cd ~/pontem-bootstrap && \ docker-compose run pontem-node pontem key generate --scheme sr25519
Теперь привязываем ключи к ноде.
Копируем команду в текстовый редактор, меняем условную переменную <your_mnemonic> на вашу мнемонику из первого пункта.
$ cd ~/pontem-bootstrap && \ docker-compose run pontem-node pontem key insert \ --suri "<your_mnemonic>" --keystore-path /opt/pontem/keys --key-type nmbs
Выводим ключи на экран, чтобы сделать бэкап. Сохраняем весь вывод команды.
$ cd ~/pontem-bootstrap && \ docker-compose run pontem-node pontem key inspect \ --keystore-path /opt/pontem/keys "<you_mnemonic>"
# запуск 'pontem-node' $ cd ~/pontem-bootstrap && docker-compose up -d
Открываем файл конфига и редактируем порты.
Дело в том, что у меня уже стоит другой контейнер с другой нодой на данном сервере.
Так как 2 контейнера не могут использовать одни и те же порты, придётся их развести.
В моём случае я произвёл следующие замены в файле по пути $HOME/pontem-bootstrap/docker-compose.yml:
По какому принципу я выбирал новые значения? Ни по какому, можно указывать любые свободные порты.
$ nano $HOME/pontem-bootstrap/docker-compose.yml
Теперь контейнер успешно создался.
$ cd ~/pontem-bootstrap && docker-compose logs -f --tail 10
Узнать последний блок можно в эксплорере:
Пример рабочих логов после синхронизации:
Можно стать либо номинатором (делегировать через интерфейс), либо быть коллатором (запускать ноду). Одновременно нельзя держать ноду и делегировать кому-то с одного аккаунта.
Переходим на сайт и теперь будем работаем с дашбордом польки.
Во вкладке Developer будем использовать следующие инструменты:
- Extrinsics: здесь будем создавать коллатора, делегировать токены.
- Chain State: а здесь будем запрашивать данные о блокчейне.
Первым делом, связываем аккаунт из расширения (я надеюсь, вы уже установили polkadot.js и имеете личный кошелёк) и свой публичный ключ.
Открываем Extrinsics и выбираем authorMapping, addAssociation(author_id) и вставляем свой публичный ключ, который мы сохраняли раннее, в соответствующее поле.
Подтверждаем транзакцию. С баланса спишется 1 PONT и небольшая комиссия за транзакцию.
Теперь запрашиваем данные об уже созданных коллаторах.
Переходим в JavaScript и "выполняем" следующий код (предварительно удалив дефолтный, разумеется):
const candidatePool = await api.query.parachainStaking.candidatePool(); console.log(`Candidate pool size is: ${candidatePool.length}`);
Чтобы "выполнить" код, нужно нажать белую стрелочку в фиолетовом круге посередине.
Возвращаемся к Extrinsics и выбираем parachainStaking, joinCandidates(bond, candidate_count).
Вставляем своё значение PONT, которое хотите заделегировать в своего коллатора. Минимум 1000 токенов.
В поле canditate_count вставляем своё значение из прошлого пункта. Для меня это 20.
Пример на скриншоте. Подписываем транзакцию:
Если встретили эту ошибку, просто увеличьте на 1 своё значение кандидатов.
Между получением значения кандидатов и отправлением транзакции, образуется время, в которое кто-то другой может стать кандидатом.
Поэтому выбивает ошибку, что слишком маленькое число кандидатов. Просто за это время кандидатов стало больше.
Как только ваш коллатор окажется в числе первых, вы станете активным и начнёте генерировать блоки и, соответственно, получать реварды.
Реварды будут начисляться прямо на кошелёк.
Как проверить, всё ли прошло удачно?
Переходим в Chain State, выбираем parachainStaking, затем candidatePool (чтобы посмотреть весь список, включая активных и неактивных) или selectedCandidates (чтобы увидеть список только активных коллаторов).
Чтобы выполнить запрос нужно нажать белый плюсик в фиолетовом круге.
Теперь просто ищем свой адрес, с которого отправляли транзакции по созданию коллатора.
С большим количеством полезных запросов можно ознакомиться в соответствующем разделе официальной документации.
После того, как вас добавили в активные коллаторы, нода начнёт принимать участие в консесусе. Доказательство тому можно лицезреть в логах контейнера:
Можно стать либо номинатором (делегировать через интерфейс), либо быть коллатором (запускать ноду). Одновременно нельзя держать ноду и делегировать кому-то с одного аккаунта.
В этом разделе попробуем делегировать свои токены в уже активного коллатора, чтобы получать награды за делегирование.
Переходим в Chain State, выбираем parachainStaking, затем selectedCandidates (чтобы увидеть список только активных коллаторов).
Выбираем любого понравившегося и копируем его адрес.
Теперь переходим на JavaScript и выполняем следующий код, чтобы получить количество номинаторов у выбранного коллатора:
const collatorAccount = 'COLLATOR_ADDRESS'; const collatorInfo = await api.query.parachainStaking.collatorState2(collatorAccount); console.log('Nominators count: ' + collatorInfo.toHuman()["nominators"].length);
Вместо COLLATOR_ADDRESS вставляем адрес выбранного нами коллатора.
На этой же странице выполняем следующий код, чтобы получить количество номинированных нами коллаторов:
const yourNominatorAccount = 'YOUR_ADDRESS_HERE'; const nominatorInfo = await api.query.parachainStaking.nominatorState2(yourNominatorAccount); console.log('Nominations: ' + nominatorInfo.toHuman()["nominations"].length);
Вместо YOUR_ADDRESS_HERE вставляем свой адрес, с которого хотите номинировать.
Так как я номинирую в первый раз, у меня выбивает ошибку. Это нормально, значит, моё значение: снова 0.
Теперь приступаем к стейкингу. Переходим к Extrinsics, выбираем parachainStaking > nominate(collator, amount, collatorNominatorCount, nominationCount).
В поле collator вставляем адрес выбранного коллатора, в amount - количество PONT, в collatorNominatorCount - результат из первого запроса, в nominationCount - результат из второго запроса.
Подписываем транзакцию. Вот и всё.
Чтобы застейкать больше или меньше, используем соответствующие запросы:
Чтобы забрать свой стейк у коллатора, выполняем запрос:
С большим количеством полезных запросов можно ознакомиться в соответствующем разделе официальной документации.
# посмотреть логи контейнера $ cd ~/pontem-bootstrap && docker-compose logs -f --tail 10
# рестартануть контейнер $ cd ~/pontem-bootstrap && docker-compose restart
# стопнуть контейнер $ cd ~/pontem-bootstrap && docker-compose stop
Про перенос я написал полноценную статью. Читаем внимательно и вдумчиво.
Конкретно в случае Pontem, нам нужно удалить текущий контейнер со старого сервера и запустить новый контейнер на тех же ключах, что и старый.
Если вы вдруг разочаровались в проекте и хотите удалить его с сервера, то можно просто разрушить/удалить сервер из личного кабинета хостинга.
Это сработает, если на сервере нет других важных нод. В случае, если вы хотите оставить сервер, но удалить конкретную ноду - приступаем к её удалению:
# получаем ID контейнера и отключаем его $ docker ps $ docker stop <ID> && docker rm <ID>
# получаем ID образа и удаляем образ $ docker images $ docker rmi <ID> --force
# удаляем каталог $ sudo rm -Rvf $HOME/pontem-bootstrap
мамичу за то, что родила такого гения.
@saltedsanya за помощь с гайдом.
@how_to_node - канал, где я выкладываю свои гайды.