SafHandle hub
SafHandle maps short names (@john) and phone numbers to addr_safro addresses via an on-chain CosmWasm registry. Use it in mobile and web apps so users never paste 45-character addresses.
Status
The @safrochaindev/safhandle npm package is in spec / docs phase. Canonical API docs live on GitHub. npm publish is upcoming.
Why SafHandle?
| Raw address | SafHandle |
|---|---|
| Hard to verify | Short @name |
| Copy/paste errors | QR + deep links |
| Poor share UX | Pay links in chat apps |
Hero: resolve a handle
Full guide: Resolve handles.
- Web (TypeScript)
- React Native
- Flutter (CosmJS)
import { SafHandle } from '@safrochaindev/safhandle';
const safHandle = new SafHandle({ network: 'safrochain-testnet' });
const address = await safHandle.getAddress('john');
// addr_safro1...
Then build MsgSend with the resolved address. See Interact from apps.
// Same @safrochaindev/safhandle package when published to npm.
// Until then, wasm smart query via REST (see interact-from-apps).
import { SafHandle } from '@safrochaindev/safhandle';
const safHandle = new SafHandle({ network: 'safrochain-testnet' });
const address = await safHandle.getAddress('john');
import { SafHandle } from '@safrochaindev/safhandle';
const safHandle = new SafHandle({ network: 'safrochain-testnet' });
const address = await safHandle.getAddress('john');
Bundle via flutter_js or use the same npm package in a shared TS module. See Flutter guide.
Resolution flow
Why use the SDK?
| Benefit | Detail |
|---|---|
| Network-aware | Testnet vs mainnet config built in |
| Typed API | Resolve, validate, format handles |
| Contract alignment | Matches safhandle-contract messages |
SDK operations
| Operation | Method | Page |
|---|---|---|
Resolve @name or phone | getAddress() | Resolve |
| Register short name | registerName() | Register |
| Link phone (Phase 2) | linkPhone() | Register |
| Transfer name | transferName() | Manage |
| Release name | releaseName() | Manage |
| Read fees | getConfig() | Manage |
| Validate input | isValidName(), normalizeName() | Resolve |
Registration fees (on-chain)
| Handle type | Fee (approx.) |
|---|---|
Name (@john) | 50 SAF |
| Phone number | 100 SAF |
Fees are paid in usaf at registration time on chain.
Canonical documentation (GitHub)
| Topic | Link |
|---|---|
| Getting started | safhandle-sdk README |
| API reference | SDK docs folder |
| Integration guide | Integration |
| Wallet integration | Wallet integration |
| Architecture | Architecture |
| Contract | safhandle-contract |
Related
- Resolve handles:
getAddress, validation, caching, errors - Register names:
registerName, fees, CosmJS execute - Transfer and release: ownership changes, reverse lookup
- Payments flow: wallet → SafHandle → sign
- Interact from apps: raw
MsgExecuteContract - Partnerships: team@safrochain.com