Protocol specification
The protocol separates identifier resolution from registry management and keeps payment execution inside the user’s wallet.
Request and response model
identifier + type
↓
normalization
↓
registry or authoritative resolver
↓
status + trust metadata + payment options
↓
wallet transaction flowPOST /v1/resolve
{ "type": "email", "value": "pay@example.com" }
→ {
"status": "active",
"payment_ready": true,
"payment_options": [...]
}Normative rules
- Identifier types are explicit; a value without a type is ambiguous.
- Only active, payment-ready mappings are immediately payable.
- Pending and changed destinations must fail closed.
- Resolution must not mutate registry state.
- Protocol infrastructure does not custody or settle funds.
Implementation checklist
- Keep the identifier type next to the value at every boundary.
- Normalize and validate input before displaying a resolver result.
- Check both top-level and option-level payment readiness.
- Show chain, asset, contract, recipient, and amount constraints.
- Re-resolve after a meaningful delay or state transition.
- Let the wallet sign and broadcast only after user confirmation.