Skip to content

IPNS — Veränderbare Namen für IPFS

IPNS (InterPlanetary Name System) bietet Ihnen stabile, teilbare Adressen, die aktualisiert werden können, um im Laufe der Zeit auf unterschiedliche Inhalte zu verweisen. Während sich IPFS-CIDs bei jeder Inhaltsänderung ändern, bleibt ein IPNS-Name gleich — Sie aktualisieren lediglich, worauf er verweist.

Verfügbar in den Plänen Bodhi (3 Namen, 100 Veröffentlichungen/Monat) und Nirvana (10 Namen, 1.000 Veröffentlichungen/Monat).

Mehr über IPNS erfahren

Für einen tieferen Einblick in die Funktionsweise von IPNS auf Protokollebene, siehe die offizielle IPFS-Dokumentation zu IPNS.

IPNS-Namensverwaltungsseite

Warum IPNS verwenden?

Das Problem: Jedes Mal, wenn Sie eine neue Version einer Datei auf IPFS hochladen, erhalten Sie einen anderen CID. Wenn Sie den alten CID mit Benutzern geteilt haben, sehen diese weiterhin den alten Inhalt. Sie müssten jedes Mal einen neuen Link teilen.

Die Lösung: Erstellen Sie einmalig einen IPNS-Namen, teilen Sie ihn und aktualisieren Sie, worauf er verweist, wann immer sich Ihr Inhalt ändert. Jeder mit der IPNS-Adresse erhält immer die neueste Version.

Häufige Anwendungsfälle

  • Websites auf IPFS — Stellen Sie Ihre Website bereit, erhalten Sie einen CID, veröffentlichen Sie ihn unter Ihrem IPNS-Namen. Erneute Bereitstellung → neuer CID → IPNS-Namen aktualisieren. Die URL ändert sich nie.
  • NFT-Metadaten, die sich weiterentwickeln — Verweisen Sie die tokenURI Ihres NFTs auf eine IPNS-Adresse. Aktualisieren Sie die Metadaten (z. B. Spielgegenstand steigt im Level auf), ohne den Smart Contract zu ändern.
  • Konfigurationsdateien — Ihre App liest die Konfiguration von einer IPNS-Adresse. Aktualisieren Sie die Konfiguration, ohne die App erneut bereitzustellen.
  • Daten-Feeds — Veröffentlichen Sie tägliche Datensätze oder Preis-Feeds unter einer stabilen IPNS-Adresse.
  • DNSLink — Verbinden Sie Ihre Domain mit IPNS, damit https://yourdomain.com immer die neuesten IPFS-Inhalte ausliefert.

Dashboard verwenden

1. IPNS-Namen erstellen

  1. Gehen Sie zu IPNS in der Seitenleiste unter Hosting.
  2. Klicken Sie auf Name erstellen.
  3. Geben Sie eine Bezeichnung ein (z. B. "my-website") und klicken Sie auf Erstellen.
  4. Kopieren Sie die IPNS-Adresse (beginnt mit k51...) — dies ist Ihre permanente, teilbare Adresse.
IPNS-Seite mit erstellten Schlüsseln

2. Einen CID unter Ihrem IPNS-Namen veröffentlichen

  1. Finden Sie den IPNS-Namen in der Liste und klicken Sie auf Veröffentlichen.
  2. Geben Sie den CID ein, auf den er verweisen soll (z. B. QmXk7VRz... oder bafybei...).
  3. Klicken Sie auf Veröffentlichen. Dies wird im IPFS-Netzwerk propagiert und kann bis zu 60 Sekunden dauern.
  4. Nach der Veröffentlichung ist der Inhalt erreichbar unter:
    • IPFS-Gateway: https://ipfs.ninja/ipns/{your-ipns-name}
    • Jedes öffentliche Gateway: https://dweb.link/ipns/{your-ipns-name}
    • IPFS nativ: ipns://{your-ipns-name}
IPNS-Seite mit veröffentlichtem CID

3. Ihren Inhalt aktualisieren

Wenn sich Ihr Inhalt ändert:

  1. Laden Sie die neue Version auf IPFS hoch (über Dashboard oder API) → Sie erhalten einen neuen CID.
  2. Gehen Sie zurück zu IPNS, klicken Sie auf Veröffentlichen beim selben Namen, geben Sie den neuen CID ein.
  3. Die IPNS-Adresse bleibt gleich — jeder, der sie verwendet, erhält automatisch den neuen Inhalt.

4. Einen IPNS-Namen auflösen

Verwenden Sie den Abschnitt Auflösen am Ende der Seite, um den aktuellen CID für einen beliebigen IPNS-Namen nachzuschlagen — Ihren eigenen oder den eines anderen.

5. Einen IPNS-Namen löschen

Klicken Sie auf die Schaltfläche Löschen neben einem beliebigen Namen. Der IPNS-Eintrag wird innerhalb von 48 Stunden aus dem Netzwerk ablaufen.

Sie können Ihren eigenen Domainnamen mit DNSLink auf eine IPNS-Adresse verweisen. So können Benutzer über eine reguläre URL wie https://yourdomain.com auf Ihre IPFS-Inhalte zugreifen.

  1. Erstellen Sie einen IPNS-Namen und veröffentlichen Sie Ihren Inhalts-CID dafür (Schritte oben).

  2. Fügen Sie einen DNS-TXT-Eintrag bei Ihrem DNS-Anbieter hinzu:

    _dnslink.yourdomain.com  TXT  "dnslink=/ipns/{your-ipns-name}"

    Beispiel: Wenn Ihr IPNS-Name k51qzi5uqu5djcpbukxs... lautet:

    _dnslink.myapp.com  TXT  "dnslink=/ipns/k51qzi5uqu5djcpbukxs..."
  3. Überprüfen Sie den Eintrag mit dig oder nslookup:

    bash
    dig +short TXT _dnslink.myapp.com
    # Sollte zurückgeben: "dnslink=/ipns/k51qzi5uqu5djcpbukxs..."
  4. Zugriff über jedes IPFS-Gateway, das DNSLink unterstützt:

    https://ipfs.ninja/ipns/myapp.com

    Oder über einen Browser mit IPFS-Unterstützung (wie Brave):

    ipns://myapp.com

DNS-Propagation

DNS-Änderungen können bis zu 24 Stunden für die weltweite Propagation benötigen. Warten Sie nach dem Hinzufügen des TXT-Eintrags einige Stunden, bevor Sie testen.

TIP

Sie müssen DNSLink nur einmal einrichten. Wenn Sie einen neuen CID unter Ihrem IPNS-Namen veröffentlichen, löst die Domain automatisch zum neuen Inhalt auf — keine DNS-Änderungen erforderlich.

Wenn Sie Cloudflare verwenden:

  1. Gehen Sie zu DNSRecords.
  2. Fügen Sie einen neuen Eintrag hinzu: Typ: TXT, Name: _dnslink, Inhalt: dnslink=/ipns/k51...
  3. Setzen Sie den Proxy-Status auf Nur DNS (graue Wolke).
  1. Gehen Sie zu Ihrer gehosteten Zone in Route 53.
  2. Erstellen Sie einen Eintrag: Name: _dnslink.yourdomain.com, Typ: TXT, Wert: "dnslink=/ipns/k51..."

Nutzungsbeispiele

Beispiel 1: Statische Website-Bereitstellung

bash
# 1. Build your site
npm run build

# 2. Upload the build output to IPFS
CID=$(curl -s -X POST https://api.ipfs.ninja/upload/new \
  -H "X-Api-Key: bws_your_api_key" \
  -H "Content-Type: application/json" \
  -d "{\"content\": $(cat dist/index.html | base64 -w0 | jq -Rs .), \"description\": \"Website v2.1\"}" \
  | jq -r '.cid')

echo "Uploaded: $CID"

# 3. Update your IPNS name to point to the new build
curl -X POST https://api.ipfs.ninja/ipns/publish \
  -H "X-Api-Key: bws_your_api_key" \
  -H "Content-Type: application/json" \
  -d "{\"ipnsName\": \"k51qzi5uqu5dlvj2bv6...\", \"cid\": \"$CID\"}"

# Your site at ipns://k51... now serves the new version

Beispiel 2: Veränderbare NFT-Metadaten

javascript
// Smart contract points tokenURI to IPNS address:
// tokenURI = "ipns://k51qzi5uqu5dlvj2bv6..."

// When the NFT evolves (e.g., game item levels up):
const newMetadata = {
  name: "Dragon Sword",
  description: "A legendary weapon — Level 5",
  image: "ipfs://QmNewImageCID...",
  attributes: [
    { trait_type: "Level", value: 5 },
    { trait_type: "Damage", value: 150 }
  ]
};

// Upload new metadata
const uploadRes = await fetch("https://api.ipfs.ninja/upload/new", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "X-Api-Key": "bws_your_api_key"
  },
  body: JSON.stringify({ content: newMetadata, description: "Dragon Sword v5" })
});
const { cid } = await uploadRes.json();

// Update the IPNS pointer — tokenURI stays the same!
await fetch("https://api.ipfs.ninja/ipns/publish", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "X-Api-Key": "bws_your_api_key"
  },
  body: JSON.stringify({ ipnsName: "k51qzi5uqu5dlvj2bv6...", cid })
});

Beispiel 3: CI/CD-Integration

yaml
# GitHub Actions: auto-publish to IPNS on every push
- name: Upload to IPFS and publish IPNS
  run: |
    CID=$(curl -s -X POST https://api.ipfs.ninja/upload/new \
      -H "X-Api-Key: ${{ secrets.IPFS_NINJA_API_KEY }}" \
      -H "Content-Type: application/json" \
      -d '{"content": '"$(cat build/output.json)"', "description": "Deploy ${{ github.sha }}"}' \
      | jq -r '.cid')

    curl -X POST https://api.ipfs.ninja/ipns/publish \
      -H "X-Api-Key: ${{ secrets.IPFS_NINJA_API_KEY }}" \
      -H "Content-Type: application/json" \
      -d '{"ipnsName": "${{ vars.IPNS_NAME }}", "cid": "'"$CID"'"}'

API-Referenz

Alle API-Beispiele verwenden den X-Api-Key-Header. Holen Sie sich Ihren API-Schlüssel auf der Seite API-Schlüssel.

IPNS-Schlüssel auflisten

bash
curl https://api.ipfs.ninja/ipns/keys \
  -H "X-Api-Key: bws_your_api_key_here"

Antwort:

json
[
  {
    "ipnsName": "k51qzi5uqu5dlvj2bv6...",
    "keyName": "my-website",
    "currentCid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
    "lastPublishedAt": 1711123200000,
    "publishCountMonth": 12,
    "status": "active",
    "createdAt": 1711036800000
  }
]

IPNS-Schlüssel erstellen

bash
curl -X POST https://api.ipfs.ninja/ipns/keys \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"name": "my-website"}'

Antwort 201:

json
{
  "ipnsName": "k51qzi5uqu5dlvj2bv6...",
  "keyName": "my-website",
  "createdAt": 1711036800000
}

Auf IPNS veröffentlichen

Die Veröffentlichung aktualisiert den IPNS-Namen, um auf einen neuen CID zu verweisen. Dies wird an das IPFS DHT propagiert und kann bis zu 60 Sekunden dauern.

bash
curl -X POST https://api.ipfs.ninja/ipns/publish \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"ipnsName": "k51qzi5uqu5dlvj2bv6...", "cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi"}'

Antwort:

json
{
  "ipnsName": "k51qzi5uqu5dlvj2bv6...",
  "cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
  "published": true
}

IPNS-Namen auflösen

Suchen Sie den aktuellen CID für einen beliebigen IPNS-Namen.

bash
curl https://api.ipfs.ninja/ipns/resolve/k51qzi5uqu5dlvj2bv6... \
  -H "X-Api-Key: bws_your_api_key_here"

Antwort:

json
{
  "ipnsName": "k51qzi5uqu5dlvj2bv6...",
  "cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi"
}

IPNS-Schlüssel löschen

bash
curl -X DELETE https://api.ipfs.ninja/ipns/keys/k51qzi5uqu5dlvj2bv6... \
  -H "X-Api-Key: bws_your_api_key_here"

Antwort:

json
{ "success": true }

Wie IPNS funktioniert

  1. Schlüsselgenerierung: Wenn Sie einen IPNS-Namen erstellen, wird ein kryptographisches Schlüsselpaar (Ed25519) generiert. Der öffentliche Schlüssel-Hash wird zu Ihrer IPNS-Adresse (k51...).
  2. Veröffentlichung: Wenn Sie veröffentlichen, signieren Sie einen Eintrag, der besagt „dieser Name verweist auf CID X", und senden ihn an das IPFS DHT (Distributed Hash Table).
  3. Auflösung: Wenn jemand Ihren IPNS-Namen nachschlägt, fragen IPFS-Knoten das DHT nach dem neuesten signierten Eintrag ab und folgen ihm zum CID.
  4. Erneute Veröffentlichung: IPNS-Einträge laufen nach 48 Stunden ab. IPFS Ninja veröffentlicht Ihre Einträge automatisch alle 12 Stunden erneut, um sie aktiv zu halten.
  5. Sicherheit: Nur der Inhaber des privaten Schlüssels (Sie) kann aktualisieren, worauf ein IPNS-Name verweist. Niemand anderes kann Ihren Namen übernehmen.

Plan-Limits

PlanIPNS-NamenVeröffentlichungen / Monat
Dharma (Kostenlos)Nicht verfügbar
Bodhi (5 $/Monat)3100
Nirvana (29 $/Monat)101.000
  • Einträge werden automatisch alle 12 Stunden erneut veröffentlicht, um sie im IPFS-Netzwerk aktiv zu halten.
  • Namen, unter denen seit 90 Tagen nicht veröffentlicht wurde, werden als inaktiv markiert und nicht mehr erneut veröffentlicht.
  • Inaktive Namen können durch Veröffentlichung eines neuen CID reaktiviert werden.

Weiterführende Lektüre