Ended Events
November 26, 2021

Pontem /// v1.0

Устанавливаем ноду Pontem для участия в открытом тесте сети.

Если вы не знаете, что такое нода — читаем статью.
Если вы не знаете, где арендовать сервер для ноды — читаем статью.
Если вы не знаете, как подключиться к серверу — читаем статью.
Если вы всё знаете — открываем MobaXterm и создаём сессию.

Содержание

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 монет.

Бот выдаёт по 1100 монет.

Сначала я покажу, как создать собственного коллатора, после чего мы будем делегировать ПОНТы на чужих валидаторов.

Содержание
# обновляем 'базу данных', обновляем дистрибутив
$ 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:

  • 9934 > 8934
  • 9945 > 8945
  • 30333 > 30833
  • 30334 > 30834
  • 9933 > 9833
  • 9944 > 9844

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

$ nano $HOME/pontem-bootstrap/docker-compose.yml

Теперь контейнер успешно создался.

Посмотрим его логи:

$ cd ~/pontem-bootstrap && docker-compose logs -f --tail 10

Узнать последний блок можно в эксплорере:

Пример рабочих логов после синхронизации:

Perfect!

Содержание

Можно стать либо номинатором (делегировать через интерфейс), либо быть коллатором (запускать ноду). Одновременно нельзя держать ноду и делегировать кому-то с одного аккаунта.

Переходим на сайт и теперь будем работаем с дашбордом польки.

Во вкладке 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}`);

Чтобы "выполнить" код, нужно нажать белую стрелочку в фиолетовом круге посередине.

Вот так должно выглядеть:

Запомните своё значение. В моём случае, 20.

Возвращаемся к Extrinsics и выбираем parachainStaking, joinCandidates(bond, candidate_count).

Вставляем своё значение PONT, которое хотите заделегировать в своего коллатора. Минимум 1000 токенов.

1000 токенов = 10000000000000 в формате u64.

В поле 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 вставляем адрес выбранного нами коллатора.

Пример на скриншоте.

В моём случае, результат: 0.

На этой же странице выполняем следующий код, чтобы получить количество номинированных нами коллаторов:

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 - результат из второго запроса.

100 токенов = 1000000000000 в формате u64.

Пример на скриншоте:

Подписываем транзакцию. Вот и всё.

Чтобы застейкать больше или меньше, используем соответствующие запросы:

  • nominatorBontMore
  • nominatorBondLess

Чтобы забрать свой стейк у коллатора, выполняем запрос:

  • revokeNomination

С большим количеством полезных запросов можно ознакомиться в соответствующем разделе официальной документации.

Содержание
# посмотреть логи контейнера
$ 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 - канал, где я выкладываю свои гайды.

Полезные ресурсы.

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