Начинаем работу с EOS Mainnet за 10 минут

ylzqxf_cpsk2pvxpdr5v7fjx1_a.png

Запуск сети EOS стал самым ожидаемым событием этого лета для сообщества разработчиков криптовалют. Теперь, когда сеть запущена (пусть и с изъянами), нам всем не терпится приступить к разработке приложений на EOS.

Я не буду спорить о проблемах с запуском и общей моделью EOS, а дам лишь краткое введение, чтобы все желающие сразу же смогли попробовать свои силы в разработке.

Вот о чем я расскажу в этой статье:

  • Как проще всего подключиться к EOS Mainnet
  • Как использовать кошельки и счета
  • Как выделяются ресурсы
  • Что еще стоит почитать


Начало работы


В этой статье не используется локальный нод EOS. Хотя его довольно легко создать, мы для простоты будем подключаться к API одного из 21 блок продюсеров.

Для работы c API необходимо установить несколько локальных приложений. Главное из них — cleos, утилита командной строки для подписания транзакций и формирования вызовов API. Сейчас для локальной установки cleos лучше всего подходит Docker.

Вот что нужно сделать:

# Скачайте Docker-образ EOS:
docker pull eosio/eos-dev
# Запустите инструмент keosd в Docker:
docker run --rm --name eosio -d -v ~/eosio-wallet:/root/eosio-wallet eosio/eos-dev /bin/bash -c 'keosd'
# Для удобства создайте alias:
alias cleos='docker exec -i eosio /opt/eosio/bin/cleos --wallet-url http://localhost:8888 -u https://api.eosnewyork.io:443'


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

cleos get info


Если результат будет примерно таким, как на картинке ниже, то все сделано правильно!

72mamcokthmnrvpyn1vl0ley7le.png

Кошельки


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

Изначально кошелька нет, так что давайте создадим его.

# не забудьте сохранить отображаемый пароль — он нужен для разблокировки кошелька и просмотра закрытых ключей
cleos wallet create


Эта команда создает кошелек с именем default.

Проверим, есть ли в нем ключи:

cleos wallet private_keys


!!! ВНИМАНИЕ!!! В кошельке по умолчанию записана следующая пара открытого и закрытого ключей EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV / 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3. Никогда не используйте эту пару: она жестко встроена в исходный код и небезопасна.

Давайте создадим новую пару ключей:

# создаем новую пару ключей
cleos create key
# импортируем закрытый ключ в кошелек
cleos wallet import ${private key you just generated}


Кошелек автоматически блокируется после 15 минут простоя. Для разблокирования введите:

cleos wallet unlock


Теперь кошелек полностью настроен. Переходим к счетам.

Счета


В отличие от биткиона и эфира, где открытый ключ — это счет, с которого отправляются транзакции, в EOS реализован другой принцип. Он ближе к традиционным веб-приложениям.

Вы создаете в EOS именной счет длиной 12 символов, например eoscentralio, а публичным ключом будет пароль к созданному счету.

Это несколько упрощенное описание — все подробно изложено в официальной документации EOS.

Есть одно «но»: создать счет невозможно, если у вас нет другого счета с каким-то количеством EOS. То есть для взаимодействия с сетью нужно попросить пользователя, у которого уже есть счет, создать счет и для вас.

И это не бесплатно! Что? Да-да, классическая «проблема курицы и яйца», и связана она с тем, как выделяются ресурсы в EOS. Об этом чуть ниже.

В результате появились сервисы, предлагающие создать счет в EOS за скромное вознаграждение.

Уже вышли и статьи с подробными инструкциями, но я не могу советовать какой-либо сервис, так как не пользовался ни одним из них.

Выделение ресурсов


Теперь пару слов о том, как выделяются ресурсы и почему счета не бесплатны.

В отличие от эфира, биткоина и других блокчейнов, EOS не берет комиссии за транзакции.

Вместо этого защита от спама и распределение ресурсов регулируются через стейкинг и рынок оперативной памяти.

Счета используют три типа ресурсов:

  • Сетевой трафик и место для журналов на диске — стейкинг
  • Вычислительные мощности и резервы (CPU) — стейкинг
  • Оперативная память — покупка на рынке


Первые два ресурса (сетевой трафик и CPU) выделяются пропорционально сумме токенов в трехдневном стейкинг-контракте.

Пусть, например, общая вычислительная мощность сети равна 1000 CPU единиц. Если за эти три дня вы хотите задействовать 10 CPU, то у вас должен быть 1% от всех токенов в стейкинг-контракте. Иными словами, вы конкурируете с другими пользователями за доступные ресурсы CPU, и чем больше ваша ставка по сравнению с другими, тем больше ресурсов вы получите.

Со временем использованные ресурсы CPU и сети будут освобождаться, и вы сможете многократно использовать те же токены. Например, если у вас не будет транзакций за 3 дня, ваши ресурсы полностью освободятся и вы сможете задействовать их снова даже без стейкинга дополнительных токенов.

С оперативной памятью все не так. Ее надо покупать по рыночной цене, которая определяется соотношением спроса и предложения.

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

В отличие от CPU и сетевого трафика, оперативная память не освобождается автоматически. Для ее очистки необходимо удалить данные из памяти. Затем очищенную оперативную память можно продать по рыночной цене.

Стоит отметить, что для получения ресурсов CPU и сети вы можете делать стейк своими EOS, или чужими от своего имени (если вам их делегировали). Делегирование — это не подарок, а скорее временное пользование: владелец EOS имеет право забрать их обратно.

То же самое верно и для оперативной памяти, однако ее как раз можно подарить, если перенести с одного аккаунта на другой — принудительно забрать ее уже не получится.

Что еще стоит почитать


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

Если вы знаете другие полезные инструменты, предложите их в комментариях.

© Habrahabr.ru