For wallets, exchanges and developers
Let your users send to @names
One call returns the address and the destination tag or memo. The SDK checks the owner's signature on the user's device, so a hacked registry can't hand out a fake address.
With the SDK
import { resolve } from "@glittergoldtag/sdk";
const seen = new Map(); // keep it, so old records are refused
const r = await resolve("@tommy-xrp", {
chain: "xrpl",
registry: "https://YOUR-REGISTRY",
network: "mainnet",
seen,
});
r.address // "rN7n7otQDd6FczFgLdSqtcsAUxDkw6fzRH"
r.destinationTag // 198425
r.displayName // show it before the user confirms
r.changePending // warn if a change is waiting
TypeScript, no network calls except the registry, built on the audited noble crypto libraries.
With plain HTTP
| Call | What it returns |
|---|---|
GET /v1/resolve/:handle?chain=xrpl | The signed bundle for sending. 404 unknown, 410 inactive. |
GET /v1/bundle/:handle | The full record, including a pending change. |
GET /v1/quote/:handle | Is it free, and its price. |
GET /v1/check?chain=&address= | Does this address require a tag or memo? |
GET /v1/pricing | Current prices. |
GET /v1/health | Registry version and network. |
If you call the API directly, check the bundle signature yourself before showing an address. That check is what keeps users safe.
Open standard
Glitter Tags v1, free for anyone
The handle format, the signed bundle and the API are published as an open standard. Any wallet can support it, and anyone can run a compatible registry. No license fee.
- Handles:
@nameand@name-label - Bundle: JSON, canonicalized (RFC 8785), signed by the owner's wallet
- Owner keys: XRPL (ed25519 / secp256k1), Stellar (SEP-53), Ethereum (EIP-191)
- QR codes: X-address, SEP-7, EIP-681
Checklist for wallets
- Check the owner's signature on the device
- Refuse a bundle for the wrong network
- Remember the highest sequence per handle
- Show the display name and wallet name before sending
- Warn on a pending change or a new owner
- Never send without the tag when one is required