Security
1) Product Mapping is the security boundary
In v0.1 (Phase 1), the game can only pass productId and cannot pass token / amount / payee directly:
- Prevents client tampering (changing amount/token/chain)
- Centralizes pricing and chain info, reducing integration mistakes
2) Phase 1: local entitlements can be tampered with
Phase 1 entitlements are stored locally by default:
- Written locally after confirmation
- Restored after refresh or restart
- ⚠️ Can be tampered with locally, only suitable for low-risk scenarios (offline / light backend / low-value consumables)
For high-value assets or strong anti-fraud, upgrade to:
- Server-side validation of on-chain transfers
- On-chain / server-side entitlements
- Native secure storage (host capability)
3) Recommendations for integrators
- Grant critical entitlements after
status === "CONFIRMED" - Keep
chainId/token/payee/amountexplicit perproductId, and use a release process for changes - Avoid exposing unnecessary internal implementation details in public docs (adapter / resolver, etc.)