COOPENOMICS  v1
Кооперативная Экономика
operations.hpp
См. документацию.
1#pragma once
2
3#include <array>
4#include <cstdint>
5#include <string_view>
6
7#include <eosio/eosio.hpp>
8
9#include "accounts.hpp"
10#include "processes.hpp"
11#include "wallets.hpp"
12
45namespace operations {
46
47 // registrator
48 namespace registrator {
49 inline constexpr eosio::name PAY_ENTRANCE = "o.reg.payent"_n;
50 inline constexpr eosio::name PUT_MINSHARE = "o.reg.putmin"_n;
51 }
52
53 // wallet
54 namespace wallet {
55 inline constexpr eosio::name COMPLETE_DEPOSIT = "o.wal.depcpl"_n;
56 inline constexpr eosio::name COMPLETE_WITHDRAW = "o.wal.wthcpl"_n;
57 }
58
59 // capital
60 namespace capital {
61 inline constexpr eosio::name IMPORT = "o.cap.import"_n;
62 inline constexpr eosio::name INVEST = "o.cap.invest"_n;
63 inline constexpr eosio::name COMMIT_RID = "o.cap.commit"_n;
64 inline constexpr eosio::name ACCEPT_RID = "o.cap.accept"_n;
65 inline constexpr eosio::name ACCEPT_PROPERTY = "o.cap.actprp"_n;
66 inline constexpr eosio::name LEND = "o.cap.lend"_n;
67 inline constexpr eosio::name REPAY = "o.cap.repay"_n;
68 }
69
70 // marketplace
71 namespace marketplace {
72 inline constexpr eosio::name CONFIRM_SUPPLY = "o.mkt.supply"_n;
73 inline constexpr eosio::name CONFIRM_RECEIPT = "o.mkt.recv"_n;
74 }
75
76 // soviet
77 namespace soviet {
78 inline constexpr eosio::name CONVERT_AXN = "o.sov.axncnv"_n;
79 }
80
81 // migration (только из migrate.cpp)
82 //
83 // В OPERATION_REGISTRY включены **только** те транзиты, которые проводятся
84 // через `ledger::accounts` (51/80/86). Программные кошельки soviet::progwallets
85 // (Благорост, Генератор) мигрируются отдельным прямым `wallets2.emplace`
86 // в migrate.cpp — БЕЗ бух-проводок, поскольку в legacy::ledger::accounts
87 // этих сумм нет (soviet::progwallets и ledger::accounts — параллельные
88 // системы учёта, не синхронизированные).
89 namespace migration {
90 inline constexpr eosio::name MIN_SHARE = "o.mig.minshr"_n;
91 inline constexpr eosio::name SHARE = "o.mig.share"_n;
92 inline constexpr eosio::name ENTRY = "o.mig.entry"_n;
93 inline constexpr eosio::name RID = "o.mig.rid"_n;
94 }
95
96 // adjustment (ручные корректировки председателя)
97 //
98 // Не входят в OPERATION_REGISTRY: их параметры (wallet_from/to,
99 // debit/credit_account_id) задаются динамически каждый вызов, что несовместимо
100 // со static_assert проверками реестра. Выполняются отдельными actions:
101 // - ledger2::walmove — WALMOVE: перевод между кошельками одного бух.счёта;
102 // - ledger2::revert — REVERSAL: зеркальная проводка по operation_id оригинала.
103 // Для UI human_name → см. OPERATION_ADJUSTMENT_REGISTRY ниже.
104 namespace adjustment {
105 inline constexpr eosio::name WALMOVE = "o.adj.walmove"_n;
106 inline constexpr eosio::name REVERSAL = "o.adj.rev"_n;
107 }
108
109} // namespace operations
110
120enum class WalletOp : uint8_t {
121 ISSUE = 0,
122 TRANSFER = 1,
123 BLOCK = 2,
124 UNBLOCK = 3,
125 WALLET_ONLY = 4,
126 REVOKE = 5,
127};
128
137 eosio::name code;
138 eosio::name process_type;
140 eosio::name wallet_from;
141 eosio::name wallet_to;
144 const char* human_name;
145};
146
153 // 1. Вступительный взнос: Dr 51 / Cr 86, ISSUE ENTRANCE_FEES
156 "Вступительный взнос пайщика" },
157
158 // 2. Минимальный паевой взнос (при регистрации): Dr 51 / Cr 80, ISSUE MIN_SHARE_FUND
161 "Минимальный паевой взнос пайщика при регистрации" },
162
163 // 3. Внесение паевого взноса: Dr 51 / Cr 80, ISSUE SHARE_FUND_PAY
166 "Внесение пайщиком паевого взноса" },
167
168 // 4. Возврат паевого взноса: Dr 80 / Cr 51, TRANSFER SHARE_FUND_PAY → WITHDRAWALS_SINK
172 "Возврат паевого взноса пайщику" },
173
174 // 5. Импорт пайщика Благорост (offline): Dr 51 / Cr 80, ISSUE BLAGOROST_INVEST
177 "Паевой взнос по целевой потребительской программе «Благорост» (офлайн-импорт)" },
178
179 // 6. Инвестиция из Цифрового Кошелька в Благорост: WALLET_ONLY TRANSFER 2001 → 9001
182 0, 0,
183 "Инвестиция в ЦПП «Благорост» (перенос между кошельками паевого фонда)" },
184
185 // 7. Коммит РИД: Dr 08 / Cr 80, ISSUE GENERATOR_COMMIT
188 "Коммит результата интеллектуальной деятельности по программе «Благорост»" },
189
190 // 8. Приём РИД в НМА: Dr 04 / Cr 08, TRANSFER GENERATOR_COMMIT → BLAGOROST_RID
194 "Приём результата интеллектуальной деятельности в паевой фонд" },
195
196 // 9. Акт-2 имущественный паевой взнос: Dr 51 / Cr 80, ISSUE BLAGOROST_PROPERTY
199 "Паевой взнос (не денежный) по программе «Благорост»" },
200
201 // 10. Выдача беспроцентного займа пайщику: Dr 58 / Cr 51, ISSUE LOAN_ISSUED
204 "Выдача пайщику беспроцентного займа" },
205
206 // 11. Возврат займа по акту-2: Dr 80 / Cr 58, TRANSFER LOAN_ISSUED → SHARE_FUND_PAY
210 "Возврат беспроцентного займа пайщика по акту-2" },
211
212 // 12. Подтверждение поставки: Dr 51 / Cr 80, ISSUE SHARE_FUND_PAY
215 "Подтверждение поставки товара/услуги" },
216
217 // 13. Подтверждение получения: Dr 80 / Cr 51, TRANSFER SHARE_FUND_PAY → SUPPLIER_PAYMENTS
221 "Подтверждение получения товара/услуги — выплата поставщику" },
222
223 // 14. Конвертация в AXN: Dr 80 / Cr 86, TRANSFER SHARE_FUND_PAY → DELEGATE_FEES
227 "Трансляция паевого взноса из ЦПП «Цифровой Кошелёк» в членский взнос за пользование инфраструктурой" },
228
229 // ----- Миграционные (o.mig.*) — вызываются только из migrate.cpp -----
230
231 // 15. Миграция: минимальный паевой: Dr 51 / Cr 80, ISSUE MIN_SHARE_FUND
234 "Транзитный перенос: минимальные паевые взносы при миграции" },
235
236 // 16. Миграция: остаток паевых деньгами: Dr 51 / Cr 80, ISSUE SHARE_FUND_PAY
239 "Транзитный перенос: остаток паевых взносов деньгами при миграции" },
240
241 // 17. Миграция: вступительные: Dr 51 / Cr 86, ISSUE ENTRANCE_FEES
244 "Транзитный перенос: вступительные взносы при миграции" },
245
246 // 18. Миграция: РИД в НМА: Dr 04 / Cr 80, ISSUE SHARE_FUND_RID
249 "Транзитный перенос: принятые РИД в паевой фонд при миграции" },
250};
251
252static constexpr size_t OPERATION_REGISTRY_SIZE = sizeof(OPERATION_REGISTRY) / sizeof(OPERATION_REGISTRY[0]);
253
254// =====================================================================
255// Compile-time валидация реестра.
256// =====================================================================
257//
258// Правила:
259// 1. `code` уникален. `process_type` может повторяться.
260// 2. Для операций с бухпроводками: `debit_account_id` ≠ `credit_account_id`.
261// 3. Для TRANSFER и WALLET_ONLY: `wallet_from` ≠ `wallet_to`.
262// 4. Для ISSUE: `wallet_from` == 0 и `wallet_to` ≠ 0.
263// 5. Для WALLET_ONLY: оба счёта == 0 (без проводок).
264// 6. Все id счетов/кошельков из registry существуют в справочниках.
266 constexpr bool operation_codes_unique() {
267 for (size_t i = 0; i < OPERATION_REGISTRY_SIZE; ++i) {
268 for (size_t j = i + 1; j < OPERATION_REGISTRY_SIZE; ++j) {
269 if (OPERATION_REGISTRY[i].code == OPERATION_REGISTRY[j].code) return false;
270 }
271 }
272 return true;
273 }
274
275 constexpr bool dr_ne_cr_when_posting() {
276 for (size_t i = 0; i < OPERATION_REGISTRY_SIZE; ++i) {
277 const auto& e = OPERATION_REGISTRY[i];
278 if (e.wallet_op == WalletOp::WALLET_ONLY) continue;
279 if (e.debit_account_id == e.credit_account_id) return false;
280 }
281 return true;
282 }
283
285 for (size_t i = 0; i < OPERATION_REGISTRY_SIZE; ++i) {
286 const auto& e = OPERATION_REGISTRY[i];
287 if (e.wallet_op != WalletOp::WALLET_ONLY) continue;
288 if (e.debit_account_id != 0 || e.credit_account_id != 0) return false;
289 }
290 return true;
291 }
292
293 constexpr bool transfer_wallet_from_ne_to() {
294 for (size_t i = 0; i < OPERATION_REGISTRY_SIZE; ++i) {
295 const auto& e = OPERATION_REGISTRY[i];
296 if (e.wallet_op == WalletOp::TRANSFER || e.wallet_op == WalletOp::WALLET_ONLY) {
297 if (e.wallet_from == e.wallet_to) return false;
298 if (e.wallet_from.value == 0 || e.wallet_to.value == 0) return false;
299 }
300 }
301 return true;
302 }
303
304 constexpr bool accounts_exist_in_map() {
305 for (size_t i = 0; i < OPERATION_REGISTRY_SIZE; ++i) {
306 const auto& e = OPERATION_REGISTRY[i];
307 if (e.wallet_op == WalletOp::WALLET_ONLY) continue;
308 if (ledger2_find_account_meta(e.debit_account_id) == nullptr) return false;
309 if (ledger2_find_account_meta(e.credit_account_id) == nullptr) return false;
310 }
311 return true;
312 }
313
314 constexpr bool wallets_exist_in_registry() {
315 for (size_t i = 0; i < OPERATION_REGISTRY_SIZE; ++i) {
316 const auto& e = OPERATION_REGISTRY[i];
317 if (e.wallet_from.value != 0 && !ledger2_is_known_wallet(e.wallet_from)) return false;
318 if (e.wallet_to.value != 0 && !ledger2_is_known_wallet(e.wallet_to)) return false;
319 }
320 return true;
321 }
322}
323
325 "OPERATION_REGISTRY: duplicate operation_code detected");
327 "OPERATION_REGISTRY: debit_account_id == credit_account_id (self-posting) на non-WALLET_ONLY записи");
329 "OPERATION_REGISTRY: WALLET_ONLY запись с ненулевыми debit/credit");
331 "OPERATION_REGISTRY: TRANSFER/WALLET_ONLY с wallet_from == wallet_to");
333 "OPERATION_REGISTRY: ссылка на account id вне LEDGER2_ACCOUNT_MAP");
335 "OPERATION_REGISTRY: ссылка на wallet id вне LEDGER2_WALLET_REGISTRY");
336
340inline const OperationRegistryEntry* find_operation(eosio::name operation_code) {
341 for (size_t i = 0; i < OPERATION_REGISTRY_SIZE; ++i) {
342 if (OPERATION_REGISTRY[i].code == operation_code) {
343 return &OPERATION_REGISTRY[i];
344 }
345 }
346 return nullptr;
347}
348
349// =====================================================================
350// Adjustment-операции (ручные корректировки) — отдельный мини-реестр.
351// =====================================================================
352//
353// Зачем отдельно: у adjustment-операций wallet_from/wallet_to и
354// debit/credit_account_id заполняются ДИНАМИЧЕСКИ при каждом вызове
355// (определяются параметрами walmove/revert, не справочником). В
356// OPERATION_REGISTRY их положить нельзя — сломаются static_assert
357// (transfer_wallet_from_ne_to: 0==0, dr_ne_cr_when_posting и пр.).
358//
359// Здесь — только code + process_type + human_name для UI/audit
360// (cooptypes mirror живёт в src/ledger2/operations.ts → addAdjustment).
362 eosio::name code;
363 eosio::name process_type;
364 std::string_view human_name;
365};
366
367inline constexpr std::array<OperationAdjustmentEntry, 2> OPERATION_ADJUSTMENT_REGISTRY = {{
368 { operations::adjustment::WALMOVE, processes::adjustment::CORRECTION, "Перевод между кошельками" },
370}};
371
372inline constexpr const OperationAdjustmentEntry* find_adjustment(eosio::name operation_code) {
373 for (size_t i = 0; i < OPERATION_ADJUSTMENT_REGISTRY.size(); ++i) {
374 if (OPERATION_ADJUSTMENT_REGISTRY[i].code == operation_code) {
376 }
377 }
378 return nullptr;
379}
constexpr const Ledger2AccountMeta * ledger2_find_account_meta(uint64_t account_id)
Definition: accounts.hpp:108
Контракт Capital управляет вкладами, распределением вознаграждений и выводом средств для участников....
Definition: capital.hpp:61
Класс marketplace предоставляет функционал кооперативного маркетплейса, позволяя пользователям создав...
Definition: marketplace.hpp:43
Класс registrator служит воротами в блокчейн-систему для новых участников, позволяя регистрировать ак...
Definition: registrator.hpp:54
Definition: soviet.hpp:40
Контракт Wallet управляет взносами и возвратами взносов по ЦПП "Цифровой Кошелёк".
Definition: wallet.hpp:16
constexpr bool ledger2_is_known_wallet(eosio::name wallet_name)
Проверяет, что wallet_name присутствует в LEDGER2_WALLET_REGISTRY.
Definition: wallets.hpp:141
Definition: operations.hpp:265
constexpr bool transfer_wallet_from_ne_to()
Definition: operations.hpp:293
constexpr bool operation_codes_unique()
Definition: operations.hpp:266
constexpr bool wallet_only_has_zero_accounts()
Definition: operations.hpp:284
constexpr bool wallets_exist_in_registry()
Definition: operations.hpp:314
constexpr bool dr_ne_cr_when_posting()
Definition: operations.hpp:275
constexpr bool accounts_exist_in_map()
Definition: operations.hpp:304
constexpr eosio::name REVERSAL
Откат операции: зеркальная проводка по operation_id.
Definition: operations.hpp:106
constexpr eosio::name WALMOVE
Перевод между кошельками внутри одного бух.счёта (без Dr/Cr).
Definition: operations.hpp:105
constexpr eosio::name COMMIT_RID
Коммит РИД (Dr 08 / Cr 80, ISSUE GENERATOR_COMMIT).
Definition: operations.hpp:63
constexpr eosio::name ACCEPT_PROPERTY
Акт-2 имущественный паевой взнос (Dr 51 / Cr 80, ISSUE BLAGOROST_PROPERTY).
Definition: operations.hpp:65
constexpr eosio::name REPAY
Возврат займа пайщика по акту-2 (Dr 80 / Cr 58, TRANSFER LOAN_ISSUED → SHARE_FUND_PAY).
Definition: operations.hpp:67
constexpr eosio::name IMPORT
Оффлайн-импорт пайщика Благорост (Dr 51 / Cr 80, ISSUE BLAGOROST_INVEST).
Definition: operations.hpp:61
constexpr eosio::name LEND
Выдача беспроцентного займа пайщику (Dr 58 / Cr 51, ISSUE LOAN_ISSUED).
Definition: operations.hpp:66
constexpr eosio::name ACCEPT_RID
Приём РИД в НМА (Dr 04 / Cr 08, TRANSFER GENERATOR_COMMIT → BLAGOROST_RID).
Definition: operations.hpp:64
constexpr eosio::name INVEST
Инвестиция в ЦПП Благорост (WALLET_ONLY TRANSFER 2001 → 9001).
Definition: operations.hpp:62
constexpr eosio::name CONFIRM_SUPPLY
Подтверждение поставки (Dr 51 / Cr 80, ISSUE SHARE_FUND_PAY).
Definition: operations.hpp:72
constexpr eosio::name CONFIRM_RECEIPT
Подтверждение получения (Dr 80 / Cr 51, TRANSFER SHARE_FUND_PAY → SUPPLIER_PAYMENTS).
Definition: operations.hpp:73
constexpr eosio::name SHARE
Перенос: остаток паевых деньгами (Dr 51 / Cr 80, ISSUE SHARE_FUND_PAY).
Definition: operations.hpp:91
constexpr eosio::name MIN_SHARE
Перенос: минимальный паевой взнос (Dr 51 / Cr 80, ISSUE MIN_SHARE_FUND).
Definition: operations.hpp:90
constexpr eosio::name RID
Перенос: РИД в НМА (Dr 04 / Cr 80, ISSUE SHARE_FUND_RID).
Definition: operations.hpp:93
constexpr eosio::name ENTRY
Перенос: вступительные (Dr 51 / Cr 86, ISSUE ENTRANCE_FEES).
Definition: operations.hpp:92
constexpr eosio::name PAY_ENTRANCE
Оплата вступительного взноса (Dr 51 / Cr 86, ISSUE ENTRANCE_FEES).
Definition: operations.hpp:49
constexpr eosio::name PUT_MINSHARE
Внесение минимального паевого при регистрации (Dr 51 / Cr 80, ISSUE MIN_SHARE_FUND).
Definition: operations.hpp:50
constexpr eosio::name CONVERT_AXN
Трансляция паевого взноса в членский (Dr 80 / Cr 86, TRANSFER SHARE_FUND_PAY → DELEGATE_FEES).
Definition: operations.hpp:78
constexpr eosio::name COMPLETE_WITHDRAW
Завершение возврата паевого взноса (Dr 80 / Cr 51, TRANSFER SHARE_FUND_PAY → WITHDRAWALS_SINK).
Definition: operations.hpp:56
constexpr eosio::name COMPLETE_DEPOSIT
Завершение внесения паевого взноса (Dr 51 / Cr 80, ISSUE SHARE_FUND_PAY).
Definition: operations.hpp:55
Реестр именованных операций ledger2 (operation registry).
Definition: operations.hpp:45
constexpr eosio::name CORRECTION
Ручная корректировка председателя (перевод между кошельками или откат операции).
Definition: processes.hpp:78
constexpr eosio::name IMPORT
Оффлайн-импорт пайщика Благорост (одноактовый).
Definition: processes.hpp:49
constexpr eosio::name INVEST
Инвестиция в ЦПП Благорост (wallet-only 2001→9001).
Definition: processes.hpp:50
constexpr eosio::name DEBT
Займ пайщику (o.cap.lend + o.cap.repay).
Definition: processes.hpp:51
constexpr eosio::name PROPERTY
Приём имущественного паевого взноса (одноактовый).
Definition: processes.hpp:53
constexpr eosio::name RID
Приём РИД в паевой фонд (o.cap.commit + o.cap.accept + опц. o.cap.repay).
Definition: processes.hpp:52
constexpr eosio::name REQUEST
Цикл запроса маркетплейса (o.mkt.supply + o.mkt.recv).
Definition: processes.hpp:58
constexpr eosio::name TRANSIT
Транзитный перенос остатков legacy (серия apply на кооп).
Definition: processes.hpp:68
constexpr eosio::name ACCEPT
Приём пайщика в кооператив (o.reg.payent + o.reg.putmin).
Definition: processes.hpp:38
constexpr eosio::name AXN_CONVERT
Конвертация паевого RUB → делегатский ЧВ (одноактовый).
Definition: processes.hpp:63
constexpr eosio::name DEPOSIT
Внесение паевого взноса деньгами.
Definition: processes.hpp:43
constexpr eosio::name WITHDRAW
Возврат паевого взноса пайщику.
Definition: processes.hpp:44
const OperationRegistryEntry * find_operation(eosio::name operation_code)
Линейный поиск записи реестра по operation_code.
Definition: operations.hpp:340
static constexpr size_t OPERATION_REGISTRY_SIZE
Definition: operations.hpp:252
static constexpr OperationRegistryEntry OPERATION_REGISTRY[]
Хардкод-реестр именованных операций.
Definition: operations.hpp:152
WalletOp
Элементарные операции по кошелькам.
Definition: operations.hpp:120
@ ISSUE
первичный вход средств на кошелёк wallet_to
@ BLOCK
available-=amount, blocked+=amount на wallet_from
@ WALLET_ONLY
TRANSFER wallet_from → wallet_to БЕЗ debit/credit inline-actions.
@ REVOKE
изъятие amount с wallet_from без увеличения куда-либо (зеркало ISSUE для o.adj.rev)
@ TRANSFER
перемещение wallet_from → wallet_to (с Dr/Cr)
@ UNBLOCK
blocked-=amount, available+=amount на wallet_from
constexpr const OperationAdjustmentEntry * find_adjustment(eosio::name operation_code)
Definition: operations.hpp:372
constexpr std::array< OperationAdjustmentEntry, 2 > OPERATION_ADJUSTMENT_REGISTRY
Definition: operations.hpp:367
Definition: operations.hpp:361
eosio::name process_type
Definition: operations.hpp:363
std::string_view human_name
Definition: operations.hpp:364
eosio::name code
Definition: operations.hpp:362
Описание одной именованной операции.
Definition: operations.hpp:136
const char * human_name
Definition: operations.hpp:144
WalletOp wallet_op
Definition: operations.hpp:139
uint64_t credit_account_id
0 для WALLET_ONLY
Definition: operations.hpp:143
eosio::name wallet_from
пустое имя для ISSUE
Definition: operations.hpp:140
eosio::name code
operation_code с префиксом o.<contract>.<verb>
Definition: operations.hpp:137
uint64_t debit_account_id
0 для WALLET_ONLY
Definition: operations.hpp:142
eosio::name wallet_to
пустое имя для BLOCK/UNBLOCK/REVOKE
Definition: operations.hpp:141
eosio::name process_type
тип процесса с префиксом p.<contract>.<noun>
Definition: operations.hpp:138
static constexpr uint64_t TARGET_RECEIPTS
86 — Целевое финансирование (П)
Definition: accounts.hpp:60
static constexpr uint64_t FINANCIAL_INVESTMENTS
58 — Финансовые вложения (А)
Definition: accounts.hpp:56
static constexpr uint64_t INTANGIBLE_ASSETS
04 — Нематериальные активы (А)
Definition: accounts.hpp:53
static constexpr uint64_t NON_CURRENT_INVESTMENTS
08 — Вложения во внеоборотные активы (А)
Definition: accounts.hpp:54
static constexpr uint64_t BANK_ACCOUNT
51 — Расчётный счёт (А)
Definition: accounts.hpp:55
static constexpr uint64_t SHARE_FUND
80 — Паевой фонд (П)
Definition: accounts.hpp:59
static constexpr eosio::name BLAGOROST_INVEST
Благорост — инвестиции деньгами (Cr 80)
Definition: wallets.hpp:54
static constexpr eosio::name GENERATOR_COMMIT
Генератор — паевой взнос имуществом в статусе «принятый коммит» (Dr 08 / Cr 80)
Definition: wallets.hpp:58
static constexpr eosio::name DELEGATE_FEES
Делегатские членские взносы (цель CONVERT_TO_AXN) (Cr 86)
Definition: wallets.hpp:50
static constexpr eosio::name MIN_SHARE_FUND
Минимальный паевой взнос при регистрации (Cr 80)
Definition: wallets.hpp:45
static constexpr eosio::name BLAGOROST_RID
Благорост — принятые РИД (Dr 04 / Cr 08 после accept)
Definition: wallets.hpp:55
static constexpr eosio::name SHARE_FUND_RID
Паевой фонд — РИД, принятые в НМА (Dr 04 / Cr 80)
Definition: wallets.hpp:41
static constexpr eosio::name SUPPLIER_PAYMENTS
Выплаты поставщикам (sink RECEIVE_CONFIRM)
Definition: wallets.hpp:62
static constexpr eosio::name WITHDRAWALS_SINK
Возвраты паевых взносов пайщикам (sink TRANSFER)
Definition: wallets.hpp:42
static constexpr eosio::name SHARE_FUND_PAY
ЦПП «Цифровой Кошелёк» — паевые взносы деньгами (Cr 80)
Definition: wallets.hpp:40
static constexpr eosio::name BLAGOROST_PROPERTY
Благорост — имущественные паевые взносы
Definition: wallets.hpp:56
static constexpr eosio::name ENTRANCE_FEES
Вступительные взносы (Cr 86)
Definition: wallets.hpp:46
static constexpr eosio::name LOAN_ISSUED
Выданные пайщикам беспроцентные займы (Dr 58 / Cr 51)
Definition: wallets.hpp:53