Wallet Adapter
Idempotency
Idempotency key formats and replay expectations for wallet operations.
Idempotency
Every wallet mutation must be idempotent by idempotency_key.
Why
- network timeout may occur after wallet write
- OpenPoly and operator wallet are not one atomic transaction
- OpenPoly must recover by replay or lookup without double-charging user
Expectations
- same key + same params -> same effective result
- same key + conflicting params -> reject or return original result, never create second mutation
- keep idempotency records long enough for retry, replay, and reconciliation workflows
Example keys
mini_app_order:1:debitmini_app_order:1:debit_reversalmini_app_redemption:42:credit
Recovery rule
If direct mutation result is ambiguous, OpenPoly will call operation lookup using same key.
