OpenPoly logo
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:debit
  • mini_app_order:1:debit_reversal
  • mini_app_redemption:42:credit

Recovery rule

If direct mutation result is ambiguous, OpenPoly will call operation lookup using same key.

Copyright © 2026