Schnellstart
Von null zu einem kryptografisch verifizierten Aufruf gegen das echte Netzwerk. Ohne Registrierung, ohne API-Key, ohne Abhängigkeiten.
Vier Schritte. Der erste braucht nur curl, die übrigen nur Node.js oder Python — keine Pakete zu installieren. Jeder Codeausschnitt auf dieser Seite wurde vor der Veröffentlichung gegen das echte Netzwerk ausgeführt, und die gezeigten Ausgaben sind die echten.
Es gibt keinen Registrierungsschritt. Discovery bei LibertyNet ist öffentlich. Du wartest nicht auf einen Key — es existiert keiner. Falls eine Seite dich auffordert, einen zu beantragen, um das Netzwerk zu lesen, ist diese Seite falsch.
1. Prüfen, ob das Netzwerk da ist
curl -s https://registry.libertynet.ai/health{ "status": "ok", "service": "libertynet-registry-standalone", "count": 27 }count ist die Anzahl der Knoten, die die Registry gerade kennt. Implementiert
2. Sehen, wer im Netzwerk ist
curl -s https://registry.libertynet.ai/nodes | head -c 400{
"did": "did:svrp:df9d4b9f390bc49b2210eca81ca3c54c4d63b37b739442a21e28f2ed5b8aa02d",
"public_key": "df9d4b9f390bc49b2210eca81ca3c54c4d63b37b739442a21e28f2ed5b8aa02d",
"capabilities": ["inference", "health:ready"],
"region": "asia-southeast",
"status": "active",
"last_seen": "2026-07-31T16:33:08Z"
}status: "active" bedeutet nicht online.
Ein Knoten, der letzte Woche vom Strom getrennt wurde, behält diesen Wert für immer — nichts setzt ihn zurück. Das einzige Feld, das veraltet, ist last_seen; die Aktualitätsprüfung liegt also bei dir. Schritt 3 macht das richtig.
Das ist der häufigste Anfängerfehler in diesem Netzwerk.
3. Eine Identität selbst verifizieren
Hier unterscheidet sich LibertyNet, und es lohnt die zwei Minuten.
Eine LibertyNet-DID ist selbstzertifizierend: Der Bezeichner wird aus dem öffentlichen Schlüssel abgeleitet. Mit nichts als SHA-256 kannst du die Behauptung bestätigen — ohne Verzeichnisabfrage, ohne Zertifizierungsstelle und ohne der gerade erhaltenen Antwort zu vertrauen.
Als verify.py speichern und ausführen. Nichts zu installieren.
import hashlib, json, re, urllib.request
B58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
def b58decode(s):
n = 0
for c in s:
i = B58.find(c)
if i < 0:
return None
n = n * 58 + i
raw = n.to_bytes((n.bit_length() + 7) // 8, "big")
# base58 verwirft führende Nullbytes: pro führender '1' eines zurückgeben
return b"\0" * (len(s) - len(s.lstrip("1"))) + raw
# Die Registry liefert Schlüssel als hex unter /nodes und als base58 unter /peers.
def key_bytes(pk):
if re.fullmatch(r"[0-9a-f]{64}", pk):
return bytes.fromhex(pk)
return b58decode(pk)
def verify_id_binding(did: str, public_key: str) -> bool:
"""Ist diese DID tatsächlich aus diesem öffentlichen Schlüssel abgeleitet?"""
key = key_bytes(public_key)
if not key or len(key) != 32:
return False
digest = hashlib.sha256(key).hexdigest()
body = re.sub(r"^did:svrp:(?:[a-z]:)?", "", did)
if len(body) == 64:
return body == key.hex() # vollständige Hex-Form
if len(body) == 8:
return body == digest[:8] # Kurzform
if len(body) == 10:
return body == digest[:10] # Kollisions-Rückfallform
return False
with urllib.request.urlopen("https://registry.libertynet.ai/nodes", timeout=10) as r:
nodes = json.load(r)["nodes"]
verified = sum(verify_id_binding(n["did"], n["public_key"]) for n in nodes)
print(f"{verified}/{len(nodes)} Identitäten verifiziert")27/27 Identitäten verifiziertDu hast gerade jede Identität in diesem Netzwerk kryptografisch geprüft, ohne irgendjemanden um Erlaubnis zu fragen. Genau darum geht es.
Warum zwei DID-Kodierungen? Derselbe Schlüssel erscheint als Kurzform did:svrp:n:<8hex> (gekürzter SHA-256 des Schlüssels) und als Vollform did:svrp:<64hex> (der Schlüssel selbst). Bindungen speichern die kurze, ein laufender Daemon kündigt die lange an. Es ist derselbe Knoten. Ein Stringvergleich zerlegt hier einen Knoten in zwei.
4. Oder in einer Zeile
All das Obige übernimmt das SDK für dich — und die Verifikation ist nicht abschaltbar.
from libertynet import LibertyNet
ln = LibertyNet() # Verifikation an; nicht deaktivierbar
nodes = ln.discovery.online() # nur verifizierte, aktuelle Knoten
for n in nodes:
print(n.did, n.region, ",".join(n.capabilities))online() weist jeden Datensatz zurück, dessen Identität nicht verifiziert, und verwirft alles, was sich länger nicht gemeldet hat. Es gibt kein Flag, um diese Prüfung abzuschalten — einen Client, der unverifizierten Identitäten vertraut, wollen wir nicht ausliefern.