Плательщик за оперативную память строки таблицы.
Оперативную память цепи оплачивает тот аккаунт, чьё имя передано в emplace или modify. Плательщик меняется при каждом изменении строки и остаётся тем, чьим именем её изменили последней. Пока имя передавалось в каждом месте вручную, одна и та же сущность оказывалась то на кооперативе, то на контракте, то на человеке: в registrator.accounts 43 % строк оплачивали кооперативы, за строки советов платило физическое лицо (C28-78, 20.09.2026).
Правило одно. Кооператив оплачивает свой бизнес-процесс — документы и их проведение: заявления, решения, акты, заказы, возвраты, взносы, собрания, проекты в работе. Всё остальное — счётчики, настройки, реестры, советы, кошельки, соглашения, аккаунты, договоры участия — оплачивает контракт.
Класс объявляется один раз у структуры строки макросом RAM_PAYER_CLASS, а каждый emplace и modify берёт плательщика только через RamPayer::of. Первичного определения у class_of нет намеренно: таблица без объявленного класса не соберётся, так что забыть правило для новой таблицы нельзя. Сообщения static_assert написаны латиницей: компилятор печатает кириллицу восьмеричными кодами, и разработчик не прочёл бы, что сломалось.
Строка, записанная до этого правила, переходит к правильному плательщику сама при следующем modify — отдельная миграция не нужна.
Кооператив может оплатить строку, только если подписал действие: цепь списывает память лишь с того, кто авторизовал запись. Часть действий приходит служебным вызовом — колбэком по решению совета, исполнением другого контракта, — и кооператив их не подписывает. В таком вызове за бизнес-процесс кооператива платит контракт. Жёсткое «платит кооператив» роняло бы эти транзакции отказом цепи.