Solana Wallet Manager: wallets, ledger and safe transactions
Case study · Solana · FinTech · Laravel · 2026
A private administrative system manages Solana wallets and financial operations: encrypted wallet creation, SOL and SPL synchronization, an immutable ledger, transactional outbox, reservations and on-chain reconciliation. The deployed environment is locked to Devnet; Mainnet writes and financial submission are disabled by default.
In short: this is not merely a “send coins” interface. It is a financial backend where an ambiguous RPC response causes neither a blind resend nor an early release of reserved funds.
The problem: manage wallets without financial guesswork
A dashboard with a balance and a transfer button is not enough. A process can stop after sending transaction bytes but before receiving the RPC response. Retrying may create a double spend; releasing the reservation immediately may make the internal balance disagree with the chain.
The system therefore separates the user's economic intent, the technical submission attempt, the observed blockchain movement and the accounting entry. Each has its own lifecycle and history.
What the operator gets
Managed wallets
Devnet wallet creation, a dedicated Treasury role, public addresses, receive QR codes and SOL/SPL balances.
Network history
Scheduled balance and signature synchronization, parsed movements and network-correct Solana Explorer links.
Financial operations
Status, attempts, reservations, ledger records, reconciliation and recovery evidence in one read-only operational view.
Operational control
Health components, metrics, queue and outbox state, scheduler heartbeats, alerts and a manual-review queue.
The single outgoing transaction path
Production code has no second “shortcut” for SOL or SPL submission. Every economic intent uses the same pipeline, while architecture tests guard against new direct signing or sendTransaction call sites.
Intent and idempotency
An immutable FinancialOperation and matching outbox event are committed together. Reusing the same key with different economic data is a conflict.
intent · fingerprint · outboxReservation
Funds are reserved atomically before signing. Available balance equals confirmed minus active reservations; all raw amounts remain integer strings.
ledger · exact amount · lockPreparation and submission
A TransactionAttempt receives a blockhash, is signed in memory and crosses the network boundary once. Signed bytes and private keys are not persisted.
prepare · sign · submit onceReconciliation
A background process verifies the signature and parses source, destination, asset, mint and raw amount. Only matching confirmed evidence closes the reservation.
reconciliation · chain evidenceSettlement or review
Confirmation settles exactly once. Conflicting provider evidence, mismatches or an unknown result keep the reservation intact and raise an incident.
settle once · manual review
Handling a timeout after submission
Definitely not submitted
A local pre-submission error or definite preflight rejection terminates the attempt and follows the explicit release policy.
Submitted
The public signature is stored, the operation remains reserved, and the system waits for the required commitment.
Unknown result
EOF, reset or timeout after the submission boundary becomes unknown. The system searches for the original transaction and never resends it automatically.
Mismatched evidence
A different amount, destination, mint or unexpected Treasury outgoing creates an incident rather than an automatic accounting correction.
Ledger, chain history and audit are different records
The ledger explains the internal financial balance. A blockchain movement records what was observed on Solana. The audit log records an actor's action. Reconciliation connects an expected operation to chain evidence.
This separation makes queue redelivery, repeated signature reads and observation from both managed sides safe without creating a second credit or settlement.
Access and key custody
- Passwordless administrative access. A known email identity is followed by a short-lived email OTP and authenticator TOTP.
- Encrypted secrets. Private material uses Laravel encryption at rest and is decrypted only in backend memory for signing.
- Private infrastructure. MySQL and Redis expose no host ports and remain on the internal Docker network.
- No financial-state editor. Operators may add append-only notes and trigger policy-bound analysis, but cannot force-confirm, rewrite an amount or delete ledger history.
Observability without automated “money repair”
The system monitors RPC, queues, outbox, reconciliation, recovery and scheduler heartbeats. Metrics allow only bounded low-cardinality labels and exclude wallet addresses, signatures, operation UUIDs, RPC URLs and arbitrary provider text.
Acknowledging or resolving an alert never changes financial state. Monitoring reports operational evidence; ledger and reconciliation rules retain authority over settlement and release.
Technology and operations
Explicit limits of the current release
The deployment is locked to Solana Devnet. Three independent feature gates disable new financial operations, low-level submission and Mainnet writes. The MMCP mint is empty; token creation and every Mainnet write are outside this release.
Historical reconciliation is explicitly marked incomplete because the current scanner is limited to the latest 25 signatures per address or token account. The UI exposes this limit instead of presenting a partial scan as complete history.
Result
The result is an isolated Wallet Manager where wallet custody, network observation and financial execution have separate responsibilities. Its defining behavior appears under uncertainty: it does not resend blindly and does not release funds without sufficient blockchain evidence.
Devnet provides a controlled verification environment, health and audit tools give operators a clear system view, and a separate Mainnet-readiness procedure prevents production writes from being enabled through a casual configuration change.
Solana · Laravel 13 · PHP 8.4 · MySQL · Redis · Ledger · Outbox · Reconciliation · TOTP · Docker




