This page walks the whole SF128-RE flow: mint an identity, verify its structure, attach append-only metadata, then resolve it.


    Process 

    1. Mint a stable SF128-RE identity (under fd53::/16).
    2. Verify the ID layout: extract RR, SS, PP, HH, timestamp_ms, sequence.
    3. Append metadata as an event (append-only): location (lat/lng/geohash), optional h3, optional owner, optional postal_code.
    4. 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 

    HostRR:SSWireGuard (PP=40)Resolver (1000)DB (1100)
    us-01.registrar.earth01:01fd53:0101:4001::1fd53:0101:1000::10fd53:0101:1100::10
    us-02.registrar.earth01:02fd53:0102:4001::1fd53:0102:1000::10fd53:0102:1100::10
    us-03.registrar.earth01:03fd53:0103:4001::1fd53:0103:1000::10fd53:0103:1100::10
    registrar.earth (US edge)01:04fd53:0104:4001::1fd53:0104:1000::10fd53:0104:1100::10
    eu-01.registrar.earth (EU edge)03:01fd53:0301:4001::1fd53:0301:1000::10fd53: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 be fd53)
    • RR, SS, PP, HH
    • timestamp_ms and human-readable timestamp
    • sequence
    • sf128_hex and canonical_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 typeCHECKIN_AT, OBSERVED_AT, or MINTED
    • 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 (returns sf128_hex for further resolution)

    Input formats 

    FormatExample
    IPv6fd53:0101:2002:0190:f2a2:9b3c:0000:0001
    Hex (32 char)fd5301012002019of2a29b3c00000001
    Short codeXXXXX-XXXXX or AAA-BBB-CCC-X
    NamespaceAny other string (looked up in directory first)

    Region codes (RR) 

    CodeRegionCoverage
    01N. AmericaUS, CA, MX
    02S. AmericaCentral + South, Caribbean
    03EuropeEU, UK, EEA
    04AfricaContinental Africa
    05W. Asia / MEGulf, Levant, Turkey, Iran
    06S. AsiaIndia, Pakistan, Bangladesh
    07E. AsiaChina, Japan, Korea, Taiwan
    08SE AsiaASEAN, Philippines, Indonesia
    09OceaniaAU, NZ, Pacific Islands
    0AAntarcticaResearch, non-territorial
    FETestDev and staging

    Service planes (PP) 

    CodePlaneDescription
    10ResolverHTTP resolution endpoints
    11DatabasePostgreSQL gateways + replicas
    12RelayMessage relays, notifications
    20SF128 AliasIdentity addresses as keys
    30ObservabilityMetrics, logs, health probes
    40AdminManagement, minting, key mgmt