По плану у меня был пост, рассматривающий аутентификацию в смарт контрактах. Но сейчас у разработчиков EOS в работе тикет по переименования кода C++ из CamelCase
в under_score
. Куча несостыковок, бранч master
не собирается, а делать примеры для старого кода нет смысла. Поэтому в этот раз немного теории.
Сущности
В EOS в нашем распоряжении имеется определенное количество сущностей, которые взаимодействуют между собой. Для разработки смарт-контрактов нам явно не помешает способность хорошо разбираться в этих вещях. Вот список наиболе популярных сущностей, с которыми нам предстоит сталкиваться:
- Account
- Key Pair
- Wallet
- Contract
- Message
- Transaction
Оперировать с данными ними можно несколькими способами:
- Напрямую с нодой через HTTP API запросы (должен быть подключен соответствующий плагин)
- Через клиентов к вышеупомянотому API (консольный клиент
eosc
, JavaScript клиентeosjs
, клиенты на других языках программирования) - Из исходного кода смарт-контракта (только Message и Transaction)
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
.
@chebykin, поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за Количество комментариев
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
@chebykin Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество голосов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
@chebykin Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за общую выплату получил
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
lelya, vik, sergeybogdanov, bystree, vika-teplo, ogion, lokkie, kito-boy, brainmechanic
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас:
@chebykin Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество полученных голосов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп