dns4sats

DYNAMIC DNS SERVICE // ECASH PAYMENTS

staging // PAY WHAT YOU WANT
⚠️ EXPERIMENTAL SERVICE ⚠️
THIS IS A HACKATHON DEMO - NOT FOR PRODUCTION USE
SERVICE MAY BE DISCONTINUED AT ANY TIME // EDUCATIONAL PURPOSES ONLY
DO NOT RELY ON THIS SERVICE FOR CRITICAL INFRASTRUCTURE
Your public IP address or target server IP
STAGING: Any amount accepted for testing
If not provided, your Cashu token becomes your password for future updates
Domain registration duration (1-365 days, default 30)
CURL COMMAND:
curl "https://staging.dns4sats.xyz/nic/update?hostname=enter-hostname.dns4sats.xyz&myip=127.0.0.1"

PROCESSING REQUEST...

🔐 ANONYMOUS DYNDNS PROTOCOL

DOMAIN REGISTRATION

1. SELECT "REGISTER NEW DOMAIN" MODE

2. PROVIDE CASHU ECASH TOKEN (ANY AMOUNT FOR TESTING)

3. OPTIONALLY SET CUSTOM PASSWORD

4. CONFIGURE EXPIRY PERIOD (1-365 DAYS)

DOMAIN UPDATES

1. SELECT "UPDATE EXISTING DOMAIN" MODE

2. AUTHENTICATE WITH PASSWORD OR ORIGINAL TOKEN

3. NO ADDITIONAL PAYMENT REQUIRED

PROTOCOL COMPATIBILITY

• HTTP GET/POST requests to /nic/update endpoint

• Standard DynDNS response codes (good, nochg, badauth, etc.)

• Compatible with router firmware and DynDNS clients

• User-Agent validation and rate limiting for abuse prevention

• IPv6 dual-stack support (myipv6 parameter or comma-separated)

• Source IP fallback when myip parameter omitted

• Multiple record types: A (IPv4), AAAA (IPv6), TXT (text records)

• ❌ CNAME records NOT supported (DNS semantic violation)

• RFC 2136 Dynamic DNS Updates (roadmap) - RFC 2136

• Anonymous payments via Cashu ecash tokens

• 60-second TTL for rapid IP propagation

API ENDPOINT: GET /nic/update

EXAMPLE: hostname.dns4sats.xyzYOUR_IP

ROUTER CONFIGURATION

Service: Custom DynDNS

Server: staging.dns4sats.xyz

Path: /nic/update

Username: (leave empty)

Password: Your domain password

CURL EXAMPLES

REGISTER A RECORD (IPv4):

curl "https://staging.dns4sats.xyz/nic/update?hostname=elliot.dns4sats.xyz&myip=203.0.113.42&token=cashuAeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJrZXlzZXQiOiIwMmI0OTcyNjQxNGM0YzNhIn0.xyz123..."&password=my-secret-password&expiry=90"

REGISTER AAAA RECORD (IPv6):

curl "https://staging.dns4sats.xyz/nic/update?hostname=darlene.dns4sats.xyz&type=AAAA&myip=2001:db8::1&token=cashuAbc123..."&password=my-password"

REGISTER TXT RECORD:

curl "https://staging.dns4sats.xyz/nic/update?hostname=verify.dns4sats.xyz&type=TXT&myip=v=spf1+include:_spf.google.com+~all&token=cashuDef456..."

REGISTER CNAME RECORD:

curl "https://staging.dns4sats.xyz/nic/update?hostname=alias.dns4sats.xyz&type=CNAME&myip=target.example.com&token=cashuGhi789..."

UPDATE EXISTING DOMAIN:

curl "https://staging.dns4sats.xyz/nic/update?hostname=elliot.dns4sats.xyz&myip=203.0.113.99&password=my-secret-password"

RFC COMPLIANCE

📋 RFC 2136 - Dynamic Updates in DNS

📋 RFC 1035 - Domain Names Implementation

📋 RFC 2845 - Secret Key Transaction Authentication

ACKNOWLEDGMENTS

🙏 Built with inspiration from:

LNbits Subdomainsand - Lightning-paid subdomain service

Cashu TypeScript - Ecash protocol implementation

Thank you to these open source projects that made dns4sats possible!

SECURITY NOTICE

⚠️ EXPERIMENTAL PROTOCOL - USE AT YOUR OWN RISK

⚠️ NO SERVICE LEVEL GUARANTEES

⚠️ HACKATHON DEMONSTRATION ONLY