Skip to main content

ZeqDNS

ZeqDNS replaces traditional DNS with mathematical addresses — a 16-character hex digest derived from a node's identity equation. Domains are bound to addresses with a cryptographic proof, and lookups return the canonical endpoint plus the zeqond tick at which the binding was minted.

Endpoints under /api/dns/*:

  • POST /api/dns/resolve — domain → mathematical address
  • POST /api/dns/register — bind a domain to a node (auth required)
  • GET /api/dns/lookup/:address — address → endpoint
  • GET /api/dns/status — registry health

POST /api/dns/resolve

Resolves a human-readable domain to its mathematical address and current endpoint.

Auth: None for public domains, API key for private ones Rate limit: 60 / minute / IP

Request

{ "domain": "alice.zeq" }

Response

{
"domain": "alice.zeq",
"address": "7f3a2b91c8d4e0f5",
"nodeId": "node-014",
"endpoint": "https://alice.example/zeq",
"zeqond": 65392841,
"proofHash": "9c1f2e..."
}

Errors

CodeStatusMeaning
INVALID_DOMAIN400Empty or non-string domain
NOT_FOUND404No binding registered
RESOLUTION_ERROR500Registry failure

POST /api/dns/register

Binds a domain to a node. The caller must present a proof — currently HMAC-SHA256(domain || nodeId, ZEQ_NODE_SECRET) — that demonstrates control of the node.

Auth: API key (x-api-key) Rate limit: 5 / minute / IP

Request

{
"domain": "alice.zeq",
"nodeId": "node-014",
"endpoint": "https://alice.example/zeq",
"proof": "9c1f2e..."
}

Response

{
"address": "7f3a2b91c8d4e0f5",
"nodeId": "node-014",
"endpoint": "https://alice.example/zeq",
"zeqond": 65392841,
"proofHash": "9c1f2e..."
}

Errors

CodeStatusMeaning
INVALID_DOMAIN / INVALID_NODE_ID / INVALID_ENDPOINT400Required field missing
INVALID_PROOF403Proof does not verify
REGISTRATION_ERROR500Registry write failure

GET /api/dns/lookup/:address

Reverse lookup. Address must be a 16-character lowercase hex string.

Auth: None Rate limit: 60 / minute / IP

Response

{
"address": "7f3a2b91c8d4e0f5",
"nodeId": "node-014",
"endpoint": "https://alice.example/zeq",
"status": "active",
"zeqond": 65392841
}

curl

curl https://zeq.dev/api/dns/lookup/7f3a2b91c8d4e0f5

GET /api/dns/status

Public registry health.

{
"totalAddresses": 248,
"activeNodes": 219,
"lastRegistration": 65392855,
"zeqond": 65392856
}

Address derivation

address = first 16 hex chars of SHA-256(nodeId || nodeSecret || domain)

The address is stable across registrations for the same (nodeId, domain) pair, so a node that re-registers after downtime keeps its identity.