Перейти к содержанию

B. Digital wallet

Раздел 05

Тип материала — инженерный walkthrough. HYPOTHETICAL — все операции, схемы и учебные числа.

Компоненты и границы

flowchart LR
 A["Wallet API"] --> B["Spend guard"] --> C["Ledger and hold store"] --> D["Balance projection"]

Нормальная последовательность

Booked 100, hold 60, available 40. Два запроса по 30 сериализуются на позиции. Первый резервирует 30, второй видит 10 и получает отказ. Capture переносит 30 из hold в posted debit одной транзакцией.

sequenceDiagram
 participant A as Wallet API
 participant B as Spend guard
 participant C as Ledger and hold store
 participant D as Balance projection
 A->>B: Supply stable input
 B->>C: Reserve against locked available
 C-->>B: Return recorded evidence
 B->>D: Advance downstream work

Отказ и восстановление

После ledger commit UI потерял event. Booked стал 70, остаток holds 60, available 10. Устаревший UI не участвует в spend. Выстроить shadow view по snapshot frontier, применить хвост, сравнить поколения.

sequenceDiagram
 participant B as Spend guard
 participant C as Ledger and hold store
 participant R as Recovery owner
 B->>C: Begin operation
 Note over B,C: Projection misses committed debit
 R->>C: Rebuild from ledger and holds
 C-->>R: Record verified outcome

Контроль завершения

Проверить account-level recomputation и суммы по валютам. Row locking требует реального multi-session PostgreSQL теста для проверки выбранного interleaving.

Интеграционный прогон сценария имеет статус NOT_RUN. Локальные результаты приведены отдельно. Практические примеры