This page walks the whole SF128-RE flow: mint an identity, verify its structure, attach append-only metadata, then resolve it.
Process
- Mint a stable SF128-RE identity (under
fd53::/16). - Verify the ID layout: extract
RR,SS,PP,HH,timestamp_ms,sequence. - Append metadata as an event (append-only): location (
lat/lng/geohash), optionalh3, optionalowner, optionalpostal_code. - Resolve the ID: the resolver parses fields from the ID and pulls attached metadata from the append-only log (and projections).
RR is the region code. SS is the site code within that region. PP is the plane (what kind of network/service this ID is for). HH is the host/issuer inside that plane.
Postal codes are not encoded in SF128-RE. They are stored as append-only metadata events, the same way lat/lng/geohash are stored.
Mint and verify (SF128-RE)
An SF128-RE identifier is 128 bits: fd53 prefix + RR SS PP HH + timestamp_ms + sequence. The ID never changes; metadata does.
RR / SS / PP / HH mappings
In SF128-RE, the 16 bytes are interpreted (big-endian) as: fd53 (prefix), then RR (region), SS (site), PP (plane), HH (host/issuer), then timestamp_ms (48-bit), then sequence (32-bit).
In this demo deployment, we use these common plane values: PP=0x40 (gateway/admin plane, WireGuard), PP=0x10 (resolver plane prefix fd53:RRSS:1000::/48), PP=0x11 (database plane prefix fd53:RRSS:1100::/48).
Current mesh host mappings
| Host | RR:SS | WireGuard (PP=40) | Resolver (1000) | DB (1100) |
|---|---|---|---|---|
us-01.registrar.earth | 01:01 | fd53:0101:4001::1 | fd53:0101:1000::10 | fd53:0101:1100::10 |
us-02.registrar.earth | 01:02 | fd53:0102:4001::1 | fd53:0102:1000::10 | fd53:0102:1100::10 |
us-03.registrar.earth | 01:03 | fd53:0103:4001::1 | fd53:0103:1000::10 | fd53:0103:1100::10 |
registrar.earth (US edge) | 01:04 | fd53:0104:4001::1 | fd53:0104:1000::10 | fd53:0104:1100::10 |
eu-01.registrar.earth (EU edge) | 03:01 | fd53:0301:4001::1 | fd53:0301:1000::10 | fd53:0301:1100::10 |
Note: the "plane prefixes" …:1000::/48 and …:1100::/48 are routed blocks for services. The minted SF128-RE identities include a real timestamp + sequence.
Mint
Minting calls the resolver API. The server generates the timestamp and allocates a collision-free sequence number. The identity is stored for resolution.
Parameters:
- RR — Region code (e.g.
01= N. America,03= Europe,FE= Test) - SS — Site / cluster ID (e.g.
01= Primary,02= Secondary) - PP — Service plane (e.g.
10= Resolver,20= SF128 Alias,40= Admin) - HH — Host ID (e.g.
01= Primary node)
API endpoint: POST /mint with JSON body { rr, ss, pp, hh }
Verify
Paste an IPv6 fd53:…, a 32-hex SF128 value, a short code (XXXXX-XXXXX / AAA-BBB-CCC-X), or a namespace to verify the layout and extract fields.
The verifier parses the 128-bit value and extracts:
prefix(should befd53)RR,SS,PP,HHtimestamp_msand human-readabletimestampsequencesf128_hexandcanonical_ipv6
Append metadata (append-only)
Metadata is attached to an identity by appending an event. The identity stays stable; the event log grows.
Fields:
- SF128 input — The identity being annotated (IPv6, hex, short code, or namespace)
- Event type —
CHECKIN_AT,OBSERVED_AT, orMINTED - Owner (optional) — e.g.
alice@example.com - H3 (optional) — H3 cell index, e.g.
8a2a1072b59ffff - Country — ISO 2-letter code for postal lookup (e.g.
US) - Postal code — Used for postal geocoding via
/geo/postal/{country}/{postal} - Lat / Lng — Decimal coordinates (can be filled from postal lookup or browser geolocation)
- Accuracy (optional) — GPS accuracy in meters
- Geohash — Auto-computed from lat/lng (7-character precision)
- Notes (optional) — Freeform notes stored in the event payload
- Write token (optional) — Bearer token for protected writes
API endpoint: POST /event with JSON body { id, event_type, payload }
In the resolved JSON, look at routing.best_location and routing.best_location_payload. Postal lookups call /geo/postal/{country}/{postal}. Geolocation uses the browser and only fills the form.
Resolve an identity
Paste an IPv6 fd53:…, a 32-hex SF128 value, a short code (XXXXX-XXXXX / AAA-BBB-CCC-X), or a namespace. This calls the resolver API and shows the full JSON response.
API endpoints:
/resolve/sf128/{hex}— Resolve by 32-character hex/resolve/ip/{ipv6}— Resolve by IPv6 address/resolve/{short_code}— Resolve by short code/api/directory/{namespace}— Resolve by namespace (returnssf128_hexfor further resolution)
Input formats
| Format | Example |
|---|---|
| IPv6 | fd53:0101:2002:0190:f2a2:9b3c:0000:0001 |
| Hex (32 char) | fd5301012002019of2a29b3c00000001 |
| Short code | XXXXX-XXXXX or AAA-BBB-CCC-X |
| Namespace | Any other string (looked up in directory first) |
Region codes (RR)
| Code | Region | Coverage |
|---|---|---|
01 | N. America | US, CA, MX |
02 | S. America | Central + South, Caribbean |
03 | Europe | EU, UK, EEA |
04 | Africa | Continental Africa |
05 | W. Asia / ME | Gulf, Levant, Turkey, Iran |
06 | S. Asia | India, Pakistan, Bangladesh |
07 | E. Asia | China, Japan, Korea, Taiwan |
08 | SE Asia | ASEAN, Philippines, Indonesia |
09 | Oceania | AU, NZ, Pacific Islands |
0A | Antarctica | Research, non-territorial |
FE | Test | Dev and staging |
Service planes (PP)
| Code | Plane | Description |
|---|---|---|
10 | Resolver | HTTP resolution endpoints |
11 | Database | PostgreSQL gateways + replicas |
12 | Relay | Message relays, notifications |
20 | SF128 Alias | Identity addresses as keys |
30 | Observability | Metrics, logs, health probes |
40 | Admin | Management, minting, key mgmt |