|
COOPENOMICS
v1
Кооперативная Экономика
|
Базовый класс контрактов платформы. Подробнее...
#include <coop_contract.hpp>
Открытые члены | |
| coop_contract (eosio::name receiver, eosio::name code, eosio::datastream< const char * > ds) | |
Закрытые статические члены | |
| static void | request_ram_check_if_due (eosio::name self) |
Базовый класс контрактов платформы.
Служебные записи контракта (реестры, счётчики, договоры участия) оплачивает сам контракт, и его квота памяти со временем подходит к концу. Пополнять её руками по каждому контракту — значит однажды забыть, поэтому контракт просит проверку сам (C28-78).
Проверка стоит в конструкторе: класс контракта создаётся на каждое действие, и одна строка здесь охватывает все действия всех контрактов без правки самих действий. Сам контракт свою квоту узнать не может — вызовы квоты узел разрешает только привилегированным контрактам, — поэтому он лишь читает у системного контракта время следующей проверки и, когда оно подошло, подаёт заявку eosio::ramreq. Квоту сверяет и память выдаёт системный контракт.
Заявка уходит inline-действием и выполняется в той же транзакции. Квоту памяти узел сверяет в самом конце транзакции, после всех inline-действий, так что выданная память успевает и для действия, в котором заявка подана.
Чтение строки расписания — одно обращение к таблице без записи; заявка подаётся не чаще интервала проверки из настройки системного контракта.
|
inline |
|
inlinestaticprivate |