Кошелёк и история операций
Балансы, статусы, выписки и «подтверждение в реестре»
Кошелёк и история операций
Цель кошелька — дать пользователю крипто‑опыт (баланс/активы/история), сохранив юридическую корректность: пользователь видит «токены», но система трактует их как учтённые цифровые права.
1) Объекты интерфейса
Баланс
Баланс отображается по группам:
- Деньги в РФ‑контуре: CFA‑RUB.
- Инвестиции: CFA‑EQ[X], CFA‑BOND[X].
- Международные операции: EUR/USD/crypto как статусы заявок (результат внешнего контура).
История
События истории нормализованы:
- тип: пополнение / оплата / P2P / покупка / продажа / доход / вывод;
- статус: создано → комплаенс → в обработке → выполнено/отклонено;
- атрибуты: сумма, комиссия, курс, контрагент, идентификаторы.
Выписка и подтверждение
Пользователь может получить:
- выписку по лицевому счёту за период;
- выписку по конкретному активу;
- «криптографическое подтверждение» целостности записи:
- hash транзакции в DLT;
- hash блока;
- hash «слоя реестра» (включая ГОСТ‑контроль, если применимо).
2) Набор статусов (единый словарь)
Мы используем единый набор статусов для всех процессов. Это позволяет и пользователю, и аудитору одинаково трактовать состояние операции.
| UI Статус | Код (Backend) | Описание |
|---|---|---|
| Создано | CREATED | Заявка зарегистрирована в системе. |
| Проверка | COMPLIANCE_CHECK | Проверка AML/санкций/лимитов. |
| В обработке | PROCESSING | Выполнение транзакции (в т.ч. в блокчейне). |
| Подтверждено | FINALIZED | Транзакция успешно записана в DLT. |
| Завершено | SETTLED | Все учетные действия завершены. |
| Отклонено | REJECTED | Операция отклонена комплаенсом или банком. |
3) Типовой набор причин отказа/блокировки
Причины фиксируются кодами и описанием:
- превышение лимита;
- недостаточно данных KYC;
- санкционное совпадение;
- подозрительная операция (AML‑флаг);
- техническая ошибка интеграции (банк/СБП/внешний провайдер);
- неверные реквизиты/адрес внешнего кошелька.
4) Модель данных кошелька (на уровне БД)
Кошелёк пользователя — это представление из:
wallet_accounts(кошельки по типам);subaccounts(по каждому активу/выпуску);operations(журнал операций);postings(движения/проводки для баланса).
Для регулятора важно: баланс рассчитывается детерминированно из проводок, а история имеет неизменяемый след (audit log + on-chain proof).
5) «Как в крипте»: адреса и реквизиты
Для CFA‑RUB
Пользователь получает:
- реквизиты пополнения (СБП: номер телефона/QR/платёжная ссылка);
- данные для выписки (идентификатор лицевого счёта).
Для вывода crypto (внешний контур)
Пользователь указывает:
- сеть (например, TRON/ETH — по продуктовой политике);
- адрес внешнего кошелька;
- сумму и комиссию.
Далее включается адрес‑валидатор и комплаенс (санкционные и риск‑модели).