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

Контракт Wallet управляет взносами и возвратами взносов по ЦПП "Цифровой Кошелёк". Подробнее...

#include <wallet.hpp>

Граф наследования:wallet:

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

void migrate ()
 
void createdpst (eosio::name coopname, eosio::name username, checksum256 deposit_hash, eosio::asset quantity)
 
void completedpst (eosio::name coopname, checksum256 deposit_hash)
 
void declinedpst (eosio::name coopname, checksum256 deposit_hash, std::string reason)
 
void createwthd (eosio::name coopname, eosio::name username, checksum256 withdraw_hash, eosio::asset quantity, document2 statement)
 
void completewthd (COMPLETEWTHD_SIGNATURE)
 
void declinewthd (DECLINEWTHD_SIGNATURE)
 Отменяет процесс возврата средств в контракте wallet. Подробнее...
 
void authwthd (AUTHWTHD_SIGNATURE)
 
void signagree (eosio::name coopname, eosio::name username, uint64_t program_id, document2 document, uint64_t draft_id)
 Подписание программного соглашения пайщиком (ADR-008). Подробнее...
 
void revokeagree (eosio::name coopname, eosio::name username, uint64_t program_id)
 Расторжение программного соглашения пайщика. Подробнее...
 
void migrate3 (eosio::name coopname, eosio::name username, uint64_t program_id, checksum256 doc_hash, uint16_t version, uint64_t draft_id, time_point signed_at)
 Идемпотентная миграция программного соглашения из soviet::agreements3. Подробнее...
 

Подробное описание

Контракт Wallet управляет взносами и возвратами взносов по ЦПП "Цифровой Кошелёк".

Методы

◆ authwthd()

void wallet::authwthd ( AUTHWTHD_SIGNATURE  )

◆ completedpst()

void wallet::completedpst ( eosio::name  coopname,
checksum256  deposit_hash 
)

◆ completewthd()

void wallet::completewthd ( COMPLETEWTHD_SIGNATURE  )

◆ createdpst()

void wallet::createdpst ( eosio::name  coopname,
eosio::name  username,
checksum256  deposit_hash,
eosio::asset  quantity 
)

◆ createwthd()

void wallet::createwthd ( eosio::name  coopname,
eosio::name  username,
checksum256  withdraw_hash,
eosio::asset  quantity,
document2  statement 
)

◆ declinedpst()

void wallet::declinedpst ( eosio::name  coopname,
checksum256  deposit_hash,
std::string  reason 
)

◆ declinewthd()

void wallet::declinewthd ( DECLINEWTHD_SIGNATURE  )

Отменяет процесс возврата средств в контракте wallet.

◆ migrate()

void wallet::migrate ( )

◆ migrate3()

void wallet::migrate3 ( eosio::name  coopname,
eosio::name  username,
uint64_t  program_id,
checksum256  doc_hash,
uint16_t  version,
uint64_t  draft_id,
time_point  signed_at 
)

Идемпотентная миграция программного соглашения из soviet::agreements3.

Per-record self-service миграция: для каждой записи agreements3 с program_id > 0 и status = "confirmed" — append/update в wallet::users.

Идемпотентность: повторный вызов с теми же параметрами = update до того же значения, без бух-эффектов. migration_state.json не используется (объёмы 20–30 пайщиков; ADR-006).

Без проверок программы/пайщика/документа: миграция доверяет источнику (soviet::agreements3) и заполняет state как есть. Полные проверки делает нормальный flow signagree.

Аргументы
coopnameКооператив (ключей от него у нас нет — поэтому НЕ авторизатор)
usernameПайщик
program_idИдентификатор программы
doc_hashХэш документа из agreements3.document.hash
versionВерсия шаблона
draft_idИдентификатор шаблона документа
signed_atМомент подписания (берётся из agreements3.updated_at)
Заметки
Auth: wallet@active (через get_self()) ИЛИ coopname@active. Первый путь — для централизованного migrator (раскатка из CI). Второй — для self-service backfill из контроллера кооператива (BlockchainService имеет WIF только coopname; для wallet@active отдельного ключа нет). Payer: тот, кто подал auth (wallet или сам кооператив).

◆ revokeagree()

void wallet::revokeagree ( eosio::name  coopname,
eosio::name  username,
uint64_t  program_id 
)

Расторжение программного соглашения пайщика.

Удаляет программу из users[username].programs[]. Если в результате vector пустеет — удаляет запись users целиком (RAM освобождается).

Аргументы
coopnameКооператив (auth: coopname@active)
usernameПайщик, расторгающий соглашение
program_idИдентификатор программы
Заметки
Авторизация требуется от аккаунта: coopname (active)

◆ signagree()

void wallet::signagree ( eosio::name  coopname,
eosio::name  username,
uint64_t  program_id,
document2  document,
uint64_t  draft_id 
)

Подписание программного соглашения пайщиком (ADR-008).

Wallet — owner программных соглашений (Эпик 2 компонента 48). Запись хранит только хэш и метаданные документа; полный текст лежит в action data (audit trail) и в off-chain реестре документов — НЕ в state контракта.

Upsert по (username, program_id):

  • если у username нет записи в users — emplace новой записью с одной программой в programs[];
  • если запись есть, но program_id ещё не подписан — push в programs[];
  • если program_id уже подписан — update version/draft_id/signed_at/doc_hash (повторная подпись = пересоглашение).
Аргументы
coopnameКооператив (payer для записи users)
usernameПайщик, подписывающий соглашение
program_idИдентификатор программы (см. soviet::programs)
documentДокумент соглашения с подписями (только в action data, не в state)
draft_idИдентификатор шаблона документа (см. draft::drafts)
Заметки
Авторизация: coopname (active) ИЛИ один из системных контрактов из contracts_whitelist (например, capital@active для inline-вызова из capital::regcontrib). В обоих случаях кооператив остаётся payer-ом записи wallet::users. Whitelist гарантирует атомарность связки «документ из payload → wallet::users.programs[] → реестр»: контракт не может разойтись, поскольку выполняет signagree в той же транзакции на тех же данных.

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