EOSDEV #4. Сущности в блокчейн сети EOS

По плану у меня был пост, рассматривающий аутентификацию в смарт контрактах. Но сейчас у разработчиков EOS в работе тикет по переименования кода C++ из CamelCase в under_score. Куча несостыковок, бранч master не собирается, а делать примеры для старого кода нет смысла. Поэтому в этот раз немного теории.

Сущности

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

  • Account
  • Key Pair
  • Wallet
  • Contract
  • Message
  • Transaction

Оперировать с данными ними можно несколькими способами:

  • Напрямую с нодой через HTTP API запросы (должен быть подключен соответствующий плагин)
  • Через клиентов к вышеупомянотому API (консольный клиент eosc, JavaScript клиент eosjs, клиенты на других языках программирования)
  • Из исходного кода смарт-контракта (только Message и Transaction)

img1.png

Account

Аккаунт используется пользователем либо напрямую, либо в него загружается смарт-контракт. Представляет собой строку длиной от 2 до 32 символов. Имеет следующие основные связи:

  • как минимум 2 ключа Key (для каждого из разрешений owner и active), которые задаются при его создании
  • родительский аккаунт, который задается при его создании
  • набор разрешений (permissions)
eosc create account creator_account my_new_account $OWNER_PRIVATE_KEY $ACTIVE_PRIVATE_KEY

Key Pair

Пара приватного/публичного ключей.

  • может быть привязана к >= 0 аккаунтам
  • может быть привязана к >= 0 кошелькам

Пара ключей создается командой eosc create key. После создания эти ключи не привязаны ни к какому-либо кошельку ни к аккаунту. Привязку необходимо осуществить явно, выполнив соответствующую команду.

Wallet

Кошелек, хранящий ключи. Напрямую с аккаунтами не взаимдействует, но содержит в себе ключи, которые могут принадлежать существующим аккаунтам. Имеет 0 или более импортированных ключей. Импортировать ключ можно командой:

eosc wallet import PRIVATE_KEY

Не забываем, что после перезагрузки демона eosd кошелек, используемый eosc закрывается и его необходимо заново открыть, а в некоторых случаях и разлочить. Далее приведен пример этих операций для кошелька default. Если используется другой кошелек, его необходимо указать после операций open или unlock:

eosc wallet open
eosc wallet unlock

Contract

По умолчанию аккаунт не содержит какого либо смарт-контракта, но его можно явно назначить:

eosc set contract account4mycontract my_contract.wast my_contract.abi

Этот код назначает скомпилированный WAST файл с интерфейсом ABI смарт-контрактом для аккаунта account4mycontract. Проверить, привязан ли какой смарт-контракт к аккаунту можно следующим способом:

eosc get code account4mycountract

Message

Сообщения в сети EOS используются для коммуникации между аккаунтами.
Смарт-контракт слушает входящие сообщения и обрабатывает их с помощью функции apply. Отправка сообщений контрактом возможно с помощью класса eosio::message.
Отправить сообщение из консоли можно с помощью

eosc push message

Transaction

Транзакция в сети EOS содержит в себе список сообщений, которые необходимо применить. Принадлежит определенному блоку. Отправить одну или несколько транзакций можно как из смарт-контракта так и из консоли следующими командами:

eosc push transaction
eosc push transactions

Есть и другие

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

Предыдущие статьи.

eoseosdevблокчейнпрограммированиеvox-populi
139
2.459 GOLOS
0
В избранное
chebykin
На Golos с 2017 M07
139
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (5)
Сортировать по:
Сначала старые