COOPENOMICS  v1
Кооперативная Экономика
Класс coop_contract

Базовый класс контрактов платформы. Подробнее...

#include <coop_contract.hpp>

Граф наследования:coop_contract:
ano apps branch capital contributor draft expense fund gateway ledger ledger2 loan marketplace meet registrator soviet wallet

Открытые члены

 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-действий, так что выданная память успевает и для действия, в котором заявка подана.

Чтение строки расписания — одно обращение к таблице без записи; заявка подаётся не чаще интервала проверки из настройки системного контракта.

Конструктор(ы)

◆ coop_contract()

coop_contract::coop_contract ( eosio::name  receiver,
eosio::name  code,
eosio::datastream< const char * >  ds 
)
inline

Методы

◆ request_ram_check_if_due()

static void coop_contract::request_ram_check_if_due ( eosio::name  self)
inlinestaticprivate

Объявления и описания членов класса находятся в файле: