COOPENOMICS  v1
Кооперативная Экономика
wallets.hpp
См. документацию.
1#pragma once
2
3#include <array>
4#include <cstdint>
5#include <string_view>
6
7#include <eosio/eosio.hpp>
8
39 // wallet — паевой фонд + возвраты
40 static constexpr eosio::name SHARE_FUND_PAY = "w.wal.share"_n;
41 static constexpr eosio::name SHARE_FUND_RID = "w.wal.sharid"_n;
42 static constexpr eosio::name WITHDRAWALS_SINK = "w.wal.wthdrw"_n;
43
44 // registrator — минимальный паевой + вступительные
45 static constexpr eosio::name MIN_SHARE_FUND = "w.reg.minshr"_n;
46 static constexpr eosio::name ENTRANCE_FEES = "w.reg.entry"_n;
47
48 // soviet — членские взносы
49 static constexpr eosio::name MEMBERSHIP_FEES = "w.sov.member"_n;
50 static constexpr eosio::name DELEGATE_FEES = "w.sov.delgte"_n;
51
52 // capital — программы Благорост, Генератор + займы
53 static constexpr eosio::name LOAN_ISSUED = "w.cap.loan"_n;
54 static constexpr eosio::name BLAGOROST_INVEST = "w.cap.bginv"_n;
55 static constexpr eosio::name BLAGOROST_RID = "w.cap.bgrid"_n;
56 static constexpr eosio::name BLAGOROST_PROPERTY = "w.cap.bgprop"_n;
57 static constexpr eosio::name BLAGOROST_MEMBERSHIP = "w.cap.bgmem"_n;
58 static constexpr eosio::name GENERATOR_COMMIT = "w.cap.gncom"_n;
59 static constexpr eosio::name GENERATOR_MEMBERSHIP = "w.cap.gnmem"_n;
60
61 // marketplace — выплаты + общий фонд
62 static constexpr eosio::name SUPPLIER_PAYMENTS = "w.mkt.payout"_n;
63 static constexpr eosio::name MARKETPLACE_FUND = "w.mkt.fund"_n;
64
65 // ledger2 — служебные
66 static constexpr eosio::name MANUAL_ADJUST = "w.led.adjust"_n;
67};
68
75 eosio::name name;
76 std::string_view human_name;
77};
78
79inline constexpr std::array<Ledger2WalletMeta, 17> LEDGER2_WALLET_REGISTRY = {{
80 { ledger2_wallets::SHARE_FUND_PAY, "ЦПП «Цифровой Кошелёк» — паевые взносы деньгами" },
81 { ledger2_wallets::MIN_SHARE_FUND, "Минимальный паевой взнос" },
82 { ledger2_wallets::SHARE_FUND_RID, "Паевой фонд — принятые РИД" },
83 { ledger2_wallets::ENTRANCE_FEES, "Вступительные взносы" },
84 { ledger2_wallets::MEMBERSHIP_FEES, "Членские взносы (платформенные)" },
85 { ledger2_wallets::DELEGATE_FEES, "Делегатские членские взносы" },
86 { ledger2_wallets::WITHDRAWALS_SINK, "Возвраты паевых взносов пайщикам" },
87 { ledger2_wallets::SUPPLIER_PAYMENTS, "Выплаты поставщикам" },
88 { ledger2_wallets::LOAN_ISSUED, "Выданные пайщикам беспроцентные займы" },
89 { ledger2_wallets::MANUAL_ADJUST, "Ручные корректировки" },
90 { ledger2_wallets::BLAGOROST_INVEST, "ЦПП «Благорост» — инвестиции деньгами" },
91 { ledger2_wallets::BLAGOROST_RID, "ЦПП «Благорост» — принятые РИД" },
92 { ledger2_wallets::BLAGOROST_PROPERTY, "ЦПП «Благорост» — имущественные паевые взносы" },
93 { ledger2_wallets::BLAGOROST_MEMBERSHIP, "ЦПП «Благорост» — членские взносы" },
94 { ledger2_wallets::GENERATOR_COMMIT, "ЦПП «Генератор» — принятый коммит (имущество)" },
95 { ledger2_wallets::GENERATOR_MEMBERSHIP, "ЦПП «Генератор» — членские взносы" },
96 { ledger2_wallets::MARKETPLACE_FUND, "ЦПП «Стол Заказов» — общий кошелёк" },
97}};
98
100
101// Compile-time проверка уникальности имён кошельков.
103 constexpr bool wallet_names_unique() {
104 for (size_t i = 0; i < LEDGER2_WALLET_REGISTRY_SIZE; ++i) {
105 for (size_t j = i + 1; j < LEDGER2_WALLET_REGISTRY_SIZE; ++j) {
106 if (LEDGER2_WALLET_REGISTRY[i].name == LEDGER2_WALLET_REGISTRY[j].name) return false;
107 }
108 }
109 return true;
110 }
111
112 constexpr bool wallet_names_nonempty() {
113 for (size_t i = 0; i < LEDGER2_WALLET_REGISTRY_SIZE; ++i) {
114 if (LEDGER2_WALLET_REGISTRY[i].name.value == 0) return false;
115 }
116 return true;
117 }
118}
119
121 "LEDGER2_WALLET_REGISTRY: duplicate wallet name detected");
123 "LEDGER2_WALLET_REGISTRY: empty eosio::name (sentinel) не должно быть в реестре");
124
131inline constexpr std::string_view ledger2_get_wallet_human_name(eosio::name wallet_name) {
132 for (size_t i = 0; i < LEDGER2_WALLET_REGISTRY_SIZE; ++i) {
133 if (LEDGER2_WALLET_REGISTRY[i].name == wallet_name) return LEDGER2_WALLET_REGISTRY[i].human_name;
134 }
135 return std::string_view{};
136}
137
141inline constexpr bool ledger2_is_known_wallet(eosio::name wallet_name) {
142 for (size_t i = 0; i < LEDGER2_WALLET_REGISTRY_SIZE; ++i) {
143 if (LEDGER2_WALLET_REGISTRY[i].name == wallet_name) return true;
144 }
145 return false;
146}
constexpr bool ledger2_is_known_wallet(eosio::name wallet_name)
Проверяет, что wallet_name присутствует в LEDGER2_WALLET_REGISTRY.
Definition: wallets.hpp:141
static constexpr size_t LEDGER2_WALLET_REGISTRY_SIZE
Definition: wallets.hpp:99
constexpr std::string_view ledger2_get_wallet_human_name(eosio::name wallet_name)
Возвращает human-readable имя кошелька по его eosio::name.
Definition: wallets.hpp:131
constexpr std::array< Ledger2WalletMeta, 17 > LEDGER2_WALLET_REGISTRY
Definition: wallets.hpp:79
Definition: wallets.hpp:102
constexpr bool wallet_names_unique()
Definition: wallets.hpp:103
constexpr bool wallet_names_nonempty()
Definition: wallets.hpp:112
Справочник кошелька: machine name → human-readable name.
Definition: wallets.hpp:74
eosio::name name
Definition: wallets.hpp:75
std::string_view human_name
Definition: wallets.hpp:76
Стандарт кошельков ledger2 (пересмотр 2026-04-27).
Definition: wallets.hpp:38
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 MANUAL_ADJUST
Ручные корректировки (резерв под ledger2::adjust)
Definition: wallets.hpp:66
static constexpr eosio::name BLAGOROST_RID
Благорост — принятые РИД (Dr 04 / Cr 08 после accept)
Definition: wallets.hpp:55
static constexpr eosio::name BLAGOROST_MEMBERSHIP
Благорост — членские взносы по программе (Cr 86)
Definition: wallets.hpp:57
static constexpr eosio::name GENERATOR_MEMBERSHIP
Генератор — членские взносы по программе (Cr 86)
Definition: wallets.hpp:59
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 MARKETPLACE_FUND
ЦПП «Стол Заказов» — общий кошелёк программы (резерв)
Definition: wallets.hpp:63
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 MEMBERSHIP_FEES
Членские взносы (платформенные) (Cr 86)
Definition: wallets.hpp:49
static constexpr eosio::name LOAN_ISSUED
Выданные пайщикам беспроцентные займы (Dr 58 / Cr 51)
Definition: wallets.hpp:53