COOPENOMICS  v1
Кооперативная Экономика
Файл wallets.hpp
#include <array>
#include <cstdint>
#include <string_view>
#include <eosio/eosio.hpp>

См. исходные тексты.

Классы

struct  ledger2_wallets
 Стандарт кошельков ledger2 (пересмотр 2026-05-05 — финальный реестр + WalletKind). Подробнее...
 
struct  Ledger2WalletMeta
 Справочник кошелька: machine name → human-readable name + kind. Подробнее...
 
struct  Ledger2WalletProgramMapping
 Маппинг USER_SHARED-кошелька → требуемый program_id для cross-contract проверки wallet::users.programs[] (ADR-004; Story 3.2). Подробнее...
 

Пространства имен

namespace  ledger2_wallets_detail
 

Перечисления

enum class  WalletKind : uint8_t { USER_SHARED = 0 , COOPERATIVE = 1 }
 Тип кошелька второго уровня (ADR-002). Подробнее...
 

Функции

constexpr uint8_t ledger2_wallets_detail::decode_char_at (uint64_t value, size_t pos)
 
constexpr bool ledger2_wallets_detail::wallet_names_unique ()
 
constexpr bool ledger2_wallets_detail::wallet_names_nonempty ()
 
constexpr bool ledger2_wallets_detail::user_shared_naming_convention ()
 
constexpr std::string_view ledger2_get_wallet_human_name (eosio::name wallet_name)
 Возвращает human-readable имя кошелька по его eosio::name. Подробнее...
 
constexpr bool ledger2_is_known_wallet (eosio::name wallet_name)
 Проверяет, что wallet_name присутствует в LEDGER2_WALLET_REGISTRY. Подробнее...
 
uint64_t ledger2_required_program_id (eosio::name wallet_name)
 Возвращает required program_id для USER_SHARED-кошелька. Подробнее...
 
WalletKind ledger2_get_wallet_kind (eosio::name wallet_name)
 Возвращает WalletKind кошелька по его eosio::name (ADR-002, ADR-010). Подробнее...
 

Переменные

constexpr std::array< Ledger2WalletMeta, 26 > LEDGER2_WALLET_REGISTRY
 
static constexpr size_t LEDGER2_WALLET_REGISTRY_SIZE = LEDGER2_WALLET_REGISTRY.size()
 
static constexpr uint8_t ledger2_wallets_detail::CHAR_DOT = 0
 
static constexpr uint8_t ledger2_wallets_detail::CHAR_W = 28
 
constexpr std::array< Ledger2WalletProgramMapping, 12 > LEDGER2_USER_SHARED_PROGRAM_MAPPING
 
constexpr std::array< eosio::name, 3 > LEDGER2_EXIT_REFUND_WALLETS
 Сет «боевых» (паевых) кошельков пайщика, возвращаемых при выходе из кооператива (заявление registry 200 → одобрение совета confirmexit). Подробнее...
 

Перечисления

◆ WalletKind

enum class WalletKind : uint8_t
strong

Тип кошелька второго уровня (ADR-002).

USER_SHARED — обязателен L3-разрез по пайщику (ledger2::userwallets), walletop требует параметр username (Эпик 3). COOPERATIVE — единый кооперативный баланс, без L3.

WalletKind обязателен для каждой записи LEDGER2_WALLET_REGISTRY (поле без default — попытка добавить элемент без kind ломает сборку).

Элементы перечислений
USER_SHARED 
COOPERATIVE 

Функции

◆ ledger2_get_wallet_human_name()

constexpr std::string_view ledger2_get_wallet_human_name ( eosio::name  wallet_name)
inlineconstexpr

Возвращает human-readable имя кошелька по его eosio::name.

Возвращает пустой string_view для незарегистрированных имён и для пустого имени (sentinel — кошелёк вне системы при ISSUE/BURN).

◆ ledger2_get_wallet_kind()

WalletKind ledger2_get_wallet_kind ( eosio::name  wallet_name)
inline

Возвращает WalletKind кошелька по его eosio::name (ADR-002, ADR-010).

Для имени, отсутствующего в реестре — eosio::check(false, ...) (фейлит tx). Используется на runtime-write-путях, прежде всего в Эпике 3 при walletop с username (валидация подмножества L3 ⊆ L2 USER_SHARED). Здесь же — общий доступ к классификации.

◆ ledger2_is_known_wallet()

constexpr bool ledger2_is_known_wallet ( eosio::name  wallet_name)
inlineconstexpr

Проверяет, что wallet_name присутствует в LEDGER2_WALLET_REGISTRY.

◆ ledger2_required_program_id()

uint64_t ledger2_required_program_id ( eosio::name  wallet_name)
inline

Возвращает required program_id для USER_SHARED-кошелька.

Возвращает 0 если:

  • кошелёк не USER_SHARED (запрос не имеет смысла);
  • кошелёк USER_SHARED но в списке исключений (например, w.reg.minshr).

Если кошелёк USER_SHARED, но его нет в маппинге — eosio::check(false, ...) (защита от добавления нового USER_SHARED-кошелька без соответствующей записи в маппинге).

Переменные

◆ LEDGER2_EXIT_REFUND_WALLETS

constexpr std::array<eosio::name, 3> LEDGER2_EXIT_REFUND_WALLETS
inlineconstexpr
Инициализатор
= {{
}}
static constexpr eosio::name MIN_SHARE_FUND
Минимальный паевой взнос пайщика (USER_SHARED, без сверки соглашений)
Definition: wallets.hpp:54
static constexpr eosio::name BLAGOROST_FUND
Благорост — единый агрегированный кошелёк программы (USER_SHARED; ADR-009)
Definition: wallets.hpp:67
static constexpr eosio::name SHARE_FUND_PAY
Паевой взнос пайщика (USER_SHARED)
Definition: wallets.hpp:48

Сет «боевых» (паевых) кошельков пайщика, возвращаемых при выходе из кооператива (заявление registry 200 → одобрение совета confirmexit).

Единый источник истины для суммы возврата. При одобрении выхода советом registrator::confirmexit обходит этот сет в цикле, аккумулирует доступный L3-баланс пайщика по каждому кошельку (>0), консолидирует на главный паевой (w.wal.share) и ставит всю сумму на возврат единым платежом. Тот же сет генерируется в cooptypes (gen:from-cppwallets.generated.ts) и используется backend-preview, поэтому расчёт на фронте всегда совпадает с тем, что реально вернёт контракт.

Состав — только паевые/возвратные USER_SHARED-кошельки: w.reg.minshr — минимальный паевой взнос; w.wal.share — целевой паевой взнос (ЦК); w.cap.blago — паевой взнос в ЦПП «Благорост».

НЕ входят: w.wal.member (членский — невозвратный), w.exp.adv (подотчёт под расход), w.cap.gen (Генератор — COOPERATIVE, без L3-разреза по пайщику), w.cap.preimp (пред-импорт-учёт РИД).

Каждому не-главному кошельку сета должна соответствовать операция переноса на w.wal.share в Registrator::consolidate_share_to_main (exit_helpers.hpp) — иначе runtime упадёт с явным сообщением (защита от тихой потери средств).

◆ LEDGER2_USER_SHARED_PROGRAM_MAPPING

constexpr std::array<Ledger2WalletProgramMapping, 12> LEDGER2_USER_SHARED_PROGRAM_MAPPING
inlineconstexpr
Инициализатор
= {{
}}
static constexpr eosio::name CK_MEMBER
ЦК — членская часть пайщика (USER_SHARED)
Definition: wallets.hpp:49
static constexpr eosio::name ADVANCE_HOLD
Подотчётные средства пайщика (USER_SHARED; резерв при ADVANCE-механике шасси расходов)
Definition: wallets.hpp:89
static constexpr eosio::name BRANCH_COMMON
Общий кошелёк членских взносов кооперативного участка (USER_SHARED с разрезом по braname КУ,...
Definition: wallets.hpp:80
static constexpr eosio::name BRANCH_PERSONAL
Персональный кошелёк доверенного/председателя КУ (USER_SHARED по доверенному, счёт 86)....
Definition: wallets.hpp:79
static constexpr eosio::name MARKETPLACE_MEMBER_FUND
ЦПП «Стол Заказов» — членский кошелёк пайщика программы (USER_SHARED, счёт 86). Сюда возвращается ост...
Definition: wallets.hpp:74
static constexpr eosio::name MARKETPLACE_ORDER_LOCK
ЦПП «Стол Заказов» — резерв средств пайщика под конкретный Order (USER_SHARED). TRANSFER w....
Definition: wallets.hpp:73
static constexpr eosio::name PREIMP_FUND
Первичный учёт РИД-взносов до перехода на электронный учёт (USER_SHARED; o.cap.preimp / o....
Definition: wallets.hpp:69
static constexpr eosio::name GENERATOR_FUND
Генератор — единый агрегированный кошелёк программы (COOPERATIVE — кооперативный пул,...
Definition: wallets.hpp:68
static constexpr eosio::name REGISTRATION_PENDING
Регистрационный взнос в ожидании решения совета (суспенс счёта 76, USER_SHARED, без сверки соглашений...
Definition: wallets.hpp:56

◆ LEDGER2_WALLET_REGISTRY

constexpr std::array<Ledger2WalletMeta, 26> LEDGER2_WALLET_REGISTRY
inlineconstexpr

◆ LEDGER2_WALLET_REGISTRY_SIZE

constexpr size_t LEDGER2_WALLET_REGISTRY_SIZE = LEDGER2_WALLET_REGISTRY.size()
staticconstexpr