Ledger
The Ledger is the core transaction processing engine in Wallet-Core, responsible for atomic payments, account management, and transaction integrity.Core Principles
Atomicity
All operations complete entirely or not at all
Idempotency
Duplicate requests return existing results
Consistency
Balances always reflect actual state
Auditability
Every operation is logged for traceability
Payment Flow
Idempotency
Every payment request requires a uniquerequest_id. If the same request_id is submitted again, the ledger returns the existing transaction without re-executing.
Implementation
Client Usage
Account Model
Accounts are created per user and currency combination.Schema
Lazy Creation
Accounts are created automatically when needed:Transaction Model
Schema
Transaction Statuses
| Status | Description |
|---|---|
PENDING | Transaction initiated, not yet processed |
COMPLETED | Successfully executed |
FAILED | Processing failed |
REVERSED | Transaction was reversed |
EXPIRED | Pending transaction expired |
Balance Operations
Get Balance
Debit/Credit
Audit Logging
Every transaction creates an audit log entry:Audit Log Schema
Transaction Queries
List Transactions
Account Statement
Reconciliation
Wallet-Core includes VULT reconciliation for external processor integration:Error Handling
Common ledger errors:| Error | Code | Description |
|---|---|---|
ErrInsufficientBalance | INSUFFICIENT_BALANCE | Sender balance too low |
ErrAccountNotFound | ACCOUNT_NOT_FOUND | Account doesn’t exist |
ErrDuplicateRequest | DUPLICATE_REQUEST | Request ID already used |
ErrInvalidAmount | INVALID_AMOUNT | Amount must be positive |
ErrCurrencyMismatch | CURRENCY_MISMATCH | Sender/recipient currency mismatch |