Контракт Wallet управляет взносами и возвратами взносов по ЦПП "Цифровой Кошелёк".
Подробнее...
#include <wallet.hpp>
|
| 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()
◆ completedpst()
| void wallet::completedpst |
( |
eosio::name |
coopname, |
|
|
checksum256 |
deposit_hash |
|
) |
| |
◆ completewthd()
◆ 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()
Отменяет процесс возврата средств в контракте 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 в той же транзакции на тех же данных.
Объявления и описания членов классов находятся в файлах: