Klokk Ledger
Dieser Inhalt ist für v1.0. Wechseln Sie zur neuesten Version, um die aktuelle Dokumentation zu sehen.
Klokk Ledger ist ein unabhängiger Indexer- und Verifizierungsdienst. Er liest Klokk-Anchor-Nachweise aus dem öffentlichen IOTA-Ledger zurück, speichert sie und stellt eine schreibgeschützte Verifizierungs-API bereit — sodass jeder einen Nachweis prüfen kann, ohne dem Betreiber zu vertrauen, und selbst dann, wenn der Ledger-Knoten alte Transaktionen später entfernt. Er benötigt keinen API-Schlüssel und keine Geheimnisse; er liest nur öffentliche Daten und füllt beim ersten Lauf die vollständige Package-Historie automatisch nach.
Image: klokkme/ledger / ghcr.io/klokk-me/ledger (Tags stable, latest). SQLite ist reines Go (kein CGO); PostgreSQL optional.
docker-compose.yml
Abschnitt betitelt „docker-compose.yml“services: klokk-ledger: image: klokkme/ledger:stable restart: unless-stopped read_only: true tmpfs: - /tmp cap_drop: [ALL] security_opt: - no-new-privileges:true pids_limit: 200 ports: - "127.0.0.1:8080:8080" volumes: - ledger-data:/app/data environment: ACCEPT_TERMS: "true" # Zustimmung zu den Nutzungsbedingungen: https://klokk.me/de/terms IOTA_NETWORK: "mainnet" IOTA_ANCHOR_PACKAGE: "0x..." # dasselbe Package, in das Ihr Anchor schreibt DB_DRIVER: "sqlite" DB_DSN: "data/klokk-ledger.db" POLL_INTERVAL: "60s"
volumes: ledger-data:services: klokk-ledger: image: klokkme/ledger:stable restart: unless-stopped read_only: true tmpfs: - /tmp cap_drop: [ALL] security_opt: - no-new-privileges:true pids_limit: 200 ports: - "127.0.0.1:8080:8080" environment: ACCEPT_TERMS: "true" # Zustimmung zu den Nutzungsbedingungen: https://klokk.me/de/terms IOTA_NETWORK: "mainnet" IOTA_ANCHOR_PACKAGE: "0x..." # dasselbe Package, in das Ihr Anchor schreibt DB_DRIVER: "postgres" DB_DSN: "postgres://klokk:klokk@postgres:5432/klokk_ledger?sslmode=disable" POLL_INTERVAL: "60s" depends_on: postgres: condition: service_healthy
postgres: image: postgres:18-alpine restart: unless-stopped read_only: true tmpfs: - /var/run/postgresql - /tmp cap_drop: [ALL] cap_add: [CHOWN, DAC_OVERRIDE, FOWNER, SETGID, SETUID] security_opt: - no-new-privileges:true environment: POSTGRES_DB: klokk_ledger POSTGRES_USER: klokk POSTGRES_PASSWORD: klokk volumes: - postgres-data:/var/lib/postgresql healthcheck: test: ["CMD-SHELL", "pg_isready -U klokk -d klokk_ledger"] interval: 10s timeout: 5s retries: 5
volumes: postgres-data:Umgebungsvariablen
Abschnitt betitelt „Umgebungsvariablen“| Variable | Standard | Beschreibung |
|---|---|---|
ACCEPT_TERMS Erforderlich |
— | Mit true den Nutzungsbedingungen zustimmen. Ohne die Variable protokolliert Klokk Ledger den Link und beendet sich. |
IOTA_ANCHOR_PACKAGE Erforderlich |
— | Adresse des zu indexierenden klokk_anchor-Move-Packages — dasselbe, in das Ihr Anchor schreibt. |
IOTA_NETWORK |
mainnet | mainnet, testnet oder devnet (wählt den Standard-GraphQL-Endpunkt; mit IOTA_GRAPHQL_URL überschreibbar). |
DB_DRIVER / DB_DSN |
sqlite / data/… | sqlite oder postgres, mit dem passenden Dateipfad bzw. DSN. |
LISTEN_ADDR |
:8080 | Adresse, auf der die HTTP-API lauscht. |
POLL_INTERVAL |
60s | Wie oft der Ledger nach neuen Nachweis-Ereignissen abgefragt wird (z. B. 30s, 5m). |
ADDRESSES |
all | Optionale kommagetrennte Anchor-Absenderadressen zum Indexieren. Leer = jeder Nachweis für das Package. |
TRUSTED_PROXIES |
— | Proxys vor Ihrem Reverse Proxy, deren Adressen bei der Suche nach der Client-Adresse für das Anfragelimit übersprungen werden: cloudflare und/oder Adressen bzw. CIDRs, durch Kommas getrennt. Hinter Cloudflare cloudflare setzen. |
Verifizierungs-API
Abschnitt betitelt „Verifizierungs-API“Alle Endpunkte sind offen verfügbar. GET /api/v1/verify/{tx}?root=<expected> liefert den unabhängig indexierten Nachweis und ob er der erwarteten Merkle-Wurzel entspricht — dieselbe Gegenprüfung, die Klokk Anchor über LEDGER_URLS durchführt.
| Endpunkt | Beschreibung |
|---|---|
GET /api/v1/status |
Netzwerk, Package, Anzahl indexiert, Zeitpunkt der letzten Indexierung. |
GET /api/v1/verify/{tx} |
Verifizierungsergebnis; mit ?root= gegen die indexierte Wurzel vergleichen. |
GET /api/v1/proofs/{tx} |
Ein einzelner indexierter Nachweis anhand des Transaktions-Digests. |
GET /api/v1/proofs |
Nachweise für einen sender auflisten, mit Filtern company_token/period. |
GET /api/v1/companies/{token}/proofs |
Nachweise für ein Firmen-Token, optional nach Zeitraum. |