ParitrDocs
Alles zur Funktionsweise des Netzwerks, zur Installation einer eigenen Node auf Linux und Windows sowie zur Verbindung mit deinem Wallet.
Was ist Paritr?
Paritr ist eine eigenständige Kryptowährung nach Bitcoin-Vorbild. Das Netzwerk besteht aus zwei Teilen:
- Full Nodes – unabhängige Server, die die gesamte Blockchain speichern, alle Regeln prüfen, Transaktionen weiterleiten und per Proof of Work neue Blöcke erzeugen. Jeder kann eine Node betreiben.
- Web-Plattform – dein Wallet im Browser. Der private Schlüssel wird lokal erzeugt und verlässt deinen Browser nie. Die Plattform ist im Hintergrund mit einer Node verbunden, um Guthaben zu lesen und signierte Transaktionen einzureichen.
Funktionsweise der Blockchain
Blöcke und Proof of Work
Jeder Block trägt einen 80 Byte großen Header aus Version, Hash des Vorgängers, Merkle-Wurzel aller Transaktionen, Zeitstempel, Schwierigkeit (nBits) und einem Zähler (Nonce). Die Kennung eines Blocks ist SHA256(SHA256(header)). Der Arbeitsnachweis nutzt dagegen scrypt mit 2 MiB Arbeitsspeicher je Hash (N = 2048, r = 8, p = 1). Gültig ist ein Block, wenn dieser scrypt-Hash kleiner oder gleich der Zielmarke ist. Miner variieren den Nonce so lange, bis das zutrifft.
Die Speicherbindung ist Absicht: Reines SHA256d lässt sich mit fertiger Spezialhardware (ASICs) millionenfach beschleunigen, die für Bitcoin ohnehin existiert. Ein Bruchteil davon würde die Schwierigkeit hier so weit anheben, dass normale Rechner chancenlos wären. scrypt macht die Speicherlatenz zum Flaschenhals statt der Rechenwerke – genau der Ansatz, der ASICs jahrelang von CryptoNight ferngehalten hat.
Kontenmodell
Statt UTXO nutzt Paritr ein Konto-/Nonce-Modell: Jede Adresse hat einen Kontostand und einen fortlaufenden Zähler. Jede Transaktion trägt die nächste Nonce des Absenders – doppelte oder übersprungene Nonces werden abgelehnt. Das schützt vor Wiedereinreichung (Replay) und erlaubt sehr schlanke Wallets.
Über das Netzwerk treffen Transaktionen desselben Absenders aber nicht zwangsläufig in Reihenfolge ein. Kommt Nonce n+1 vor n an, wird sie deshalb nicht verworfen, sondern kurzzeitig zwischengespeichert und automatisch nachgerückt, sobald die Lücke geschlossen ist.
Signaturen und Adressen
Signiert wird mit ECDSA auf der Kurve secp256k1. Die Adresse ist Base58Check(0x37 ‖ RIPEMD160(SHA256(pubkey))) und beginnt daher immer mit P. Die Node prüft, dass die Absenderadresse zum mitgelieferten öffentlichen Schlüssel passt.
Konsens und Reorganisation
Nodes vergleichen nicht die Länge einer Kette, sondern die insgesamt hineingesteckte Arbeit. Eine fremde Kette wird nur übernommen, wenn sie mehr Arbeit enthält und jeder einzelne Block alle Regeln erfüllt. Bei einer Reorganisation wandern Transaktionen verwaister Blöcke zurück in die Warteschlange (Mempool), Shares zurück in den Share-Speicher.
Umgestellt wird dabei nur der abweichende Teil: Die Blöcke ab dem Verzweigungspunkt werden rückabgewickelt, danach wird ausschließlich der neue Ast geprüft und angewendet. Der Aufwand hängt so von der Tiefe der Reorganisation ab – nicht von der Länge der gesamten Kette.
Ein zugestellter Block, der nicht direkt an die eigene Spitze passt, wird nicht verworfen, sondern als Seitenast zwischengespeichert. Sobald genug Folgeblöcke eintreffen und der Ast mehr Arbeit enthält, wird umgeschwenkt. Ohne diesen Schritt könnte eine Node, die selbst keine ausgehenden Verbindungen aufbauen kann, dauerhaft auf ihrer eigenen Gabelung verharren – die Blöcke und Belohnungen der Gegenseite gingen dann verloren.
State-Wurzeln und Snapshots
Die gesamte Historie nachzurechnen ist bei einer jungen Kette unproblematisch und bei einer alten mühsam. Paritr verankert deshalb alle 720 Blöcke (etwa zwölf Stunden) eine State-Wurzel im Block – eine Merkle-Wurzel über alle Kontostände und Nonces. Weil die Wurzel Teil des Blocks ist, kann eine neue Node einen heruntergeladenen Snapshot gegen die Kette prüfen, statt Millionen Blöcke abzuspielen.
Jede Node hält die zwei jüngsten Snapshots vor und bietet sie unter /state/snapshot an. Da die Wurzel nur alle 720 Blöcke berechnet wird, kostet sie in den übrigen 719 Blöcken exakt nichts.
Wie sich Nodes finden
- Fest hinterlegte Seed-Nodes im Programmcode.
- DNS-Seeds: aufgelöste Adressen werden als Kandidaten genutzt – aber nur für Hosts, die nicht ohnehin schon als Seed-URL hinterlegt sind. Sonst entstehen tote Einträge, weil die A-Records hinter einem Reverse-Proxy oder CDN auf dessen Edge-Adressen zeigen, unter denen der RPC-Port gar nicht offen ist.
- Gossip: Beim Handshake tauschen Nodes ihre Peer-Listen aus.
- Rückweg: Meldet eine Gegenstelle keine öffentliche Adresse, wird ein Kandidat aus ihrer Absender-IP und dem gemeldeten RPC-Port gebildet und geprüft.
- Entdopplung: Ist dieselbe Node über mehrere Adressen bekannt (Seed-URL, Port-Variante, aufgelöste IP), wird für Relay und Sync nur die beste davon verwendet und weitergegeben.
- Headers-First-Sync: Erst alle Header prüfen, dann die Blöcke laden.
- Der Genesis-Block wird auf jeder Node deterministisch identisch berechnet.
Über dieselben Verbindungen laufen drei Arten von Nachrichten: Blöcke, Transaktionen und Shares. Alle ausgehenden Aufrufe werden von einer festen Zahl Hintergrund-Worker abgearbeitet. Eine langsame oder bösartige Gegenstelle kann den Node dadurch weder ausbremsen noch über unbegrenzt viele Verbindungen überlasten.
Übertragungsformat
Shares und Blöcke werden zusätzlich in einem kompakten Binärformat unter /p2p/share/bin und /p2p/block/bin angeboten (Magic PSH1 / PBK1, Obergrenze 4 MiB je Nachricht). Das halbiert den Relay-Verkehr gegenüber JSON ungefähr. Nodes handeln das Format automatisch aus und fallen auf JSON zurück, wenn eine Gegenstelle es nicht unterstützt.
Emission und Tail-Emission
Jeder neue Block erzeugt frische Coins – die Subvention. Sie startet bei 10 PAR und halbiert sich alle 1.600.000 Blöcke, also etwa alle drei Jahre.
Warum ohne Obergrenze?
Ein Netzwerk mit harter Obergrenze finanziert seine Sicherheit irgendwann ausschließlich über Transaktionsgebühren. Bleiben die aus, sinkt die Rechenleistung – und mit ihr der Schutz vor Angriffen. Die Tail-Emission löst das: Sie garantiert eine planbare Mindestbelohnung, ohne dass die Geldmenge aus dem Ruder läuft.
Entscheidend ist nämlich nicht die absolute Menge, sondern die jährliche Inflationsrate. Weil die Umlaufmenge wächst, die Neuemission je Jahr aber konstant bleibt, fällt diese Rate dauerhaft gegen null – ohne sie jemals ganz zu erreichen. Den aktuellen Wert zeigt der Endpunkt /supply.
| Zeitraum (ca.) | Blöcke | Belohnung je Block |
|---|---|---|
| Jahr 1–3 | 1 – 1.600.000 | 10 PAR |
| Jahr 4–6 | 1.600.001 – 3.200.000 | 5 PAR |
| Jahr 7–9 | 3.200.001 – 4.800.000 | 2,5 PAR |
| … | … | … |
| ab ca. Jahr 13 | dauerhaft | 0,5 PAR (Tail-Emission) |
Mining und Belohnungen
Ablauf
- Eingereichte Transaktionen sammeln sich im Mempool, eingehende Shares im Share-Speicher der Node.
- Die Node baut einen Kandidaten-Block: zuerst die zu bestätigenden Shares, daraus der Verteilschlüssel und die Coinbase-Ausgänge, danach die Transaktionen mit der höchsten Gebühr.
- Der Nonce wird variiert, bis der Header-Hash unter der Zielmarke liegt. Zwischentreffer unter der leichteren Share-Marke werden als Shares veröffentlicht.
- Der Finder hängt den Block an und verteilt ihn an alle bekannten Peers.
Liegt keine Transaktion vor, entsteht ein leerer Block mit nur den Coinbase-Ausgängen. Das Netzwerk rechnet dadurch ununterbrochen weiter.
Wer bekommt wie viel?
| Anteil | Empfänger | Zweck |
|---|---|---|
| 95 % der Subvention | alle Miner mit Shares im Messfenster | strikt anteilig: Pool × eigene Shares / alle Shares |
| 5 % der Subvention | die Node, die den Block gefunden hat | Anreiz, fremde Shares aufzunehmen statt zu zensieren |
| 100 % der Gebühren | die Node, die den Block gefunden hat | Anreiz, volle Blöcke zu bauen und den Mempool zu leeren |
Je Block gibt es höchstens 32 Empfänger; Kleinstbeträge unter 0,00001 PAR sowie Rundungsreste gehen an den Finder. Dadurch entspricht die Summe aller Ausgänge exakt Subvention plus Gebühren – jede Node rechnet das mit reiner Ganzzahlarithmetik nach. Die aggregierten Kennzahlen zeigt der Bereich Mining › Netzwerk sowie der Endpunkt /mining/distribution.
Reifezeit
Frisch geschürfte Coins sind zunächst gesperrt und erst nach 10 weiteren Blöcken ausgebbar. In der Übersicht steht bis dahin Ausstehend, danach Bestätigt. Das schützt vor Umkehrungen, falls sich die Kette kurzfristig reorganisiert.
Konsens-Parameter
Diese Werte sind fest im Protokoll verankert und auf jeder Node identisch. Sie lassen sich weder über die Konfiguration noch über die Weboberfläche ändern.
| Netz-Kennung | paritr-mainnet |
| Kleinste Einheit | 0,00000001 PAR (1 Coin = 100.000.000 Einheiten) |
| Start-Belohnung | 10 PAR je Block |
| Halbierung | alle 1.600.000 Blöcke (ca. 3 Jahre) |
| Mindest-Belohnung | 0,5 PAR je Block (Tail-Emission) |
| Maximalmenge | keine feste Obergrenze – siehe Emission |
| Soll-Blockzeit | 60 Sekunden |
| Arbeitsnachweis | scrypt (N = 2048, r = 8, p = 1) – 2 MiB je Hash |
| Schwierigkeitsanpassung | alle 60 Blöcke (ca. 1 h), gedämpft auf Faktor 4 |
| Reifezeit der Belohnung | 10 Blöcke |
| Verteilung der Belohnung | 95 % nach Share-Anteil, 5 % + alle Gebühren an den Finder |
| Messfenster der Leistung | 120 Blöcke (ca. 2 Stunden) |
| Share-Schwierigkeit | 1/100 der Blockschwierigkeit |
| Shares je Block | max. 32 |
| Coinbase-Empfänger je Block | max. 32 |
| State-Checkpoint | alle 720 Blöcke (ca. 12 h) |
| Mindestgebühr | 0,001 PAR |
| Mindestbetrag | 0,00001 PAR |
| Blockgröße | max. 500 Transaktionen |
| Adressformat | Base58Check, Präfix P |
Node installieren
Eine Paritr-Node läuft überall dort, wo Python 3.9 oder neuer verfügbar ist. Getestete Plattformen:
| System | Architektur | Installation |
|---|---|---|
| Ubuntu 20.04+ / Debian 11+ | x86_64 | install.sh |
| Ubuntu / Debian / Raspberry Pi OS | aarch64, armv7l | install.sh |
| Windows 10 / 11 / Server 2019+ | x64, ARM64 | install.ps1 |
| macOS, andere Distributionen | beliebig | manuell |
Mindestanforderungen
- Python 3.9 oder neuer
- 2 GB RAM, 2 GB freier Speicher (wächst mit der Kette)
- Dauerhafte Internetverbindung
- Erreichbarer TCP-Port (Standard 5050) – empfohlen, aber nicht zwingend
Alle Dateien im Überblick
Die Installationsskripte laden alles Weitere selbst nach – einzeln brauchst du die Dateien nur für eine manuelle Einrichtung.
Linux: Ubuntu, Debian und ARM
Das Skript funktioniert identisch auf x86_64-Servern und auf ARM-Geräten (Raspberry Pi 4/5, Oracle Ampere, AWS Graviton, …). Die Architektur wird automatisch erkannt.
Ein Befehl richtet Python-Umgebung, Dienst und Firewall ein.
curl -fsSL https://paritr.highactive.de/dist/install.sh -o install.sh
bash install.sh --source https://paritr.highactive.de/dist
bash install.sh \
--address P… # Auszahlungsadresse deines Wallets
--port 5050 # RPC-Port
--public-url https://node1.example.org
--cores 2 # Rechenprozesse (0 = automatisch)
--intensity 60 # Auslastung je Prozess in Prozent
--cpu-quota 150% # harte CPU-Grenze (150 % = 1,5 Kerne)
Ohne Angaben fragt das Skript interaktiv nach der Wallet-Adresse und nutzt sonst sinnvolle Standardwerte. Die öffentliche Adresse wird automatisch erkannt, wenn du --public-url weglässt.
- Installiert Python, venv und Build-Werkzeuge (auf ARM nötig)
- Legt ~/paritr-node mit eigener Python-Umgebung an
- Lädt node.py, wsgi.py und manage.sh in dieses Verzeichnis
- Erzeugt config.json samt frischem Admin Secret Key
- Richtet den systemd-Dienst paritr-node ein (Autostart, Neustart bei Fehlern, gedrosselte CPU-Priorität)
- Öffnet den Port in ufw bzw. firewalld
Am Ende der Installation wird der Admin Secret Key ausgegeben. Du brauchst ihn, um die Node im Wallet zu verbinden. Später jederzeit abrufbar:
cd ~/paritr-node && ./manage.sh secret
Windows
Unter Windows übernimmt install.ps1 die Einrichtung. Als Serverprozess kommt waitress zum Einsatz; der Autostart läuft über eine geplante Aufgabe.
Falls noch nicht vorhanden – bei der manuellen Installation unbedingt „Add python.exe to PATH“ ankreuzen.
winget install -e --id Python.Python.3.12
Rechtsklick auf das Startmenü → Terminal (Administrator). Administratorrechte werden für die Firewall-Regel und den Autostart benötigt.
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
Invoke-WebRequest 'https://paritr.highactive.de/dist/install.ps1' -OutFile install.ps1
.\install.ps1 -Source 'https://paritr.highactive.de/dist'
.\install.ps1 `
-Address P… `# Auszahlungsadresse
-Port 5050 `# RPC-Port
-Cores 2 `# Rechenprozesse (0 = automatisch)
-Intensity 60 `# Auslastung je Prozess in Prozent
-Dir 'D:\Paritr' `# eigenes Verzeichnis
-NoAutostart # ohne geplante Aufgabe
Standardverzeichnis ist %LOCALAPPDATA%\Paritr\node.
Wird am Ende ausgegeben und ist später abrufbar mit:
.\manage.ps1 secret
Manuelle Installation (macOS, andere Systeme)
# 1. Dateien holen
mkdir paritr-node && cd paritr-node
curl -fsSL https://paritr.highactive.de/dist/node.py -o node.py
curl -fsSL https://paritr.highactive.de/dist/wsgi.py -o wsgi.py
# 2. Python-Umgebung anlegen
python3 -m venv venv
./venv/bin/pip install Flask requests ecdsa waitress
# 3. Node starten (erzeugt config.json beim ersten Start)
./venv/bin/python node.py --port 5050 --address P…
# 4. Admin Secret Key auslesen
python3 -c "import json;print(json.load(open('config.json'))['admin_secret'])"
Hardware-Auslastung steuern
Wie viel Leistung deine Node fürs Mining einsetzt, ist frei einstellbar – bequem über die Regler im Bereich Mining der Web-Plattform oder direkt auf dem Server.
| Einstellung | Bedeutung | Werte |
|---|---|---|
| Rechenkerne mining_processes | Anzahl paralleler Rechenprozesse. Wird nie größer als die Zahl der vorhandenen CPU-Kerne. | 0 = automatisch (alle Kerne minus 1) |
| Intensität mining_intensity | Arbeitsanteil je Zeitscheibe. Bei 50 % rechnet die Node genauso lange, wie sie pausiert – das halbiert Verbrauch und Wärme. | 5 – 100 (%) |
| CPU-Quota (nur Linux) | Harte Obergrenze durch systemd, unabhängig von der Node-Konfiguration. | z. B. 150% |
Über die Web-Plattform
Mining › Meine Nodes › Einstellungen › Leistung: Die beiden Regler zeigen live die zu erwartende Gesamtlast an. Änderungen greifen sofort nach dem Speichern – ein Neustart ist nicht nötig. Voraussetzung ist ein hinterlegter Admin Secret Key.
Auf dem Server
# Linux
./manage.sh cores 2 # zwei Rechenprozesse
./manage.sh intensity 60 # 60 % Auslastung je Prozess
./manage.sh cpuquota 150% # harte systemd-Grenze
# Windows
.\manage.ps1 cores 2
.\manage.ps1 intensity 60
.\manage.ps1 priority BelowNormal
Erreichbarkeit herstellen
Deine Node findet das Netzwerk auch hinter einem Router von allein. Damit andere Nodes sie erreichen und die Web-Plattform sie direkt ansprechen kann, sollte der Port erreichbar sein.
- Dem Server im Router eine feste lokale IP-Adresse zuweisen.
- Portweiterleitung einrichten: 5050/TCP auf diese IP.
- Bei wechselnder öffentlicher IP einen DynDNS-Namen einrichten und ihn beim Installieren als --public-url angeben.
- Erreichbarkeit prüfen: curl http://DEINE-ADRESSE:5050/status
Der Installer erkennt deine öffentliche Adresse automatisch und trägt sie in config.json ein. Korrigieren kannst du sie später mit ./manage.sh publicurl https://…; was die Gegenstellen sehen, meldet die Node unter /p2p/whoami.
Node mit dem Wallet verbinden
Erst durch das Verbinden kannst du deine Node in der Web-Plattform überwachen und steuern. Die Verbindung gilt nur für dein Konto.
Er wurde am Ende der Installation angezeigt. Erneut auslesen:
./manage.sh secret # Linux
.\manage.ps1 secret # Windows
Mining › Meine Nodes › Node verbinden. Trage ein:
- Bezeichnung – frei wählbar, z. B. „Heim-Server“
- Adresse – vollständig inkl. Port, z. B. http://meine-node.de:5050
- Admin Secret Key – Pflichtangabe
Der Button Testen prüft Erreichbarkeit, Blockhöhe und ob die Node zur richtigen Kette gehört. Danach auf Verbinden tippen.
Im Bereich Mining die Node-Einstellungen öffnen, Meine Adresse nutzen und speichern. Ab jetzt fließen alle geschürften Coins direkt in dein Wallet.
Betrieb und Wartung
Linux
./manage.sh status # Dienststatus und Blockhöhe
./manage.sh logs # Live-Protokoll
./manage.sh restart # Dienst neu starten
./manage.sh secret # Admin Secret Key anzeigen
./manage.sh address P… # Auszahlungsadresse setzen
./manage.sh mining on|off # Mining schalten
./manage.sh cores 2 # Rechenprozesse begrenzen
./manage.sh intensity 60 # Auslastung begrenzen
./manage.sh publicurl https://node1.example.org
./manage.sh peers # bekannte Nodes
./manage.sh addpeer http://… # Peer manuell ergänzen
./manage.sh rmpeer http://… # Peer entfernen
./manage.sh update https://paritr.highactive.de/dist # Software aktualisieren
Windows
.\manage.ps1 status
.\manage.ps1 restart
.\manage.ps1 secret
.\manage.ps1 address P…
.\manage.ps1 mining on
.\manage.ps1 cores 2
.\manage.ps1 intensity 60
.\manage.ps1 peers
.\manage.ps1 update https://paritr.highactive.de/dist
Konfigurationsdatei
{
"rpc_host": "0.0.0.0",
"rpc_port": 5050,
"public_url": "https://node1.example.org",
"admin_secret": "…",
"miner_address": "P…",
"mining_enabled": true,
"mining_processes": 0,
"mining_intensity": 100,
"seed_nodes": ["https://node0.oe-net.de"],
"data_dir": "data",
"rpc_cors_origins": "*"
}
Nach Handänderungen an config.json den Dienst neu starten. Änderungen über die Web-Plattform oder manage greifen dagegen sofort.
Datensicherung
Sichern musst du nur config.json (enthält den Admin Secret Key). Die Blockchain selbst lädt eine neue Node automatisch aus dem Netzwerk. Dein Guthaben liegt in der Blockchain – nicht auf der Node.
Sicherheit
- Privater Schlüssel: Wird im Browser erzeugt und nur mit deinem Passwort verschlüsselt (AES-256-GCM) gespeichert. Ohne Schlüssel und Passwort gibt es keinen Zugriff auf dein Guthaben – und keine Wiederherstellung durch Dritte. Sichere ihn unter Konto › Schlüssel sichern.
- Admin Secret Key: Gehört zur Node, nicht zum Wallet. Er erlaubt keine Überweisungen, sondern nur das Steuern der Node.
- Node-Rechte: Der systemd-Dienst läuft ohne erweiterte Rechte und darf nur in sein eigenes Verzeichnis schreiben.
- CORS: Über rpc_cors_origins lässt sich der Zugriff auf die eigene Plattform begrenzen, statt * zu erlauben.
- Server-Proxy: Die Plattform ruft nur freigegebene Endpunkte auf und verweigert Anfragen in private Netze (SSRF-Schutz).
Häufige Probleme
| Symptom | Ursache und Lösung |
|---|---|
| Node in der Plattform „nicht erreichbar“ | Portweiterleitung und Firewall prüfen. Bei HTTPS-Seite und http-Node greift der Server-Proxy – die Node muss dafür aus dem Internet erreichbar sein. |
| „Admin Secret Key ungültig“ (403) | Schlüssel erneut mit manage.sh secret auslesen und unter Meine Nodes › Einstellungen › Verbindung neu eintragen. |
| Badge „Adresse fehlt“ | Es ist keine Auszahlungsadresse gesetzt. Ohne sie schürft die Node nicht. |
| Alle Werte in der Plattform bleiben bei 0 | Dein Konto trägt noch eine Adresse aus der Zeit vor Version 5.0.0 (beginnend mit C). Melde dich einmal an – die Plattform leitet die Adresse automatisch neu aus deinem öffentlichen Schlüssel ab. Prüfe außerdem, ob die Node läuft und ihre Netz-Kennung paritr-mainnet lautet. |
| „Das ist keine gültige Paritr-Adresse“ | Gleiche Ursache: Adressen beginnen jetzt mit P. Kopiere die Adresse erneut aus dem Wallet und setze sie auf der Node mit ./manage.sh address P…. |
| Hashrate bleibt bei 0 | Mining ist deaktiviert, es fehlt die Auszahlungsadresse, oder die Intensität steht sehr niedrig. |
| Blockhöhe bleibt bei 0 | Keine Verbindung zu Seed-Nodes. Ausgehende Verbindungen und DNS prüfen, danach ./manage.sh addpeer https://node0.oe-net.de. |
| unsupported hash type ripemd160 | Alte Node-Version. Mit manage.sh update aktualisieren – die aktuelle Fassung bringt eine eigene Implementierung mit. |
| scrypt is not available beim Start | Das Python-Paket wurde ohne OpenSSL gebaut. Installiere das offizielle Python für dein System; ohne OpenSSL kann die Node nicht schürfen. |
| Die Kette startet nach einem Update nicht | Im Datenverzeichnis liegen noch Blöcke einer älteren Konsens-Version. Die Node verweigert die Nutzung bewusst. Dienst stoppen, data/ löschen und neu starten – die Kette wird aus dem Netzwerk neu geladen. |
| Server wird sehr warm / laut | Kerne oder Intensität unter Hardware-Auslastung reduzieren. |
| Mining-Belohnung nicht ausgebbar | Coinbase-Reifezeit: 10 Blöcke. Bis dahin steht dort Ausstehend. |
| Node schürft, findet aber nie einen Block | Das ist bei kleinen Nodes normal und kein Fehler: Entscheidend sind die Shares. Prüfe unter Mining › Mein Anteil, ob deine Share-Zahl steigt – dann fließen die Auszahlungen. |
| Eigene Shares bleiben bei 0 | Die Node ist zu jung (das Messfenster umfasst 120 Blöcke), hat keine Peers, denen sie Shares melden kann, oder läuft noch auf einer Version vor 5.0.0. |
| Node findet Blöcke, erhält aber kaum Auszahlungen | Ihre Blöcke werden von der Gegenseite nicht übernommen. Alle Nodes auf Version 5.0.0 oder neuer bringen, die Systemzeit per NTP synchronisieren (zu alte Zeitstempel verletzen die Median-Time-Past-Regel) und prüfen, ob public_url gesetzt und erreichbar ist. |
| Peer meldet „Coinbase entspricht nicht dem Share-Verteilschlüssel“ | Die beteiligten Nodes laufen auf unterschiedlichen Konsens-Versionen. Alle Nodes mit manage.sh update bzw. manage.ps1 update auf 5.0.0 heben. |
| Peer-Liste enthält fremde IP-Adressen | Das sind die A-Records des DNS-Seeds – bei einer Node hinter einem CDN die Edge-Adressen des Anbieters, unter denen der RPC-Port nicht offen ist. Sie werden nicht mehr aufgenommen; bestehende Einträge löscht ./manage.sh rmpeer <url> oder das Entfernen von data/peers.json. |
| Haupt-Node zeigt 0 Peers | Normal, solange die Gegenstellen keine erreichbare public_url melden: Sie wählen die Haupt-Node an, nicht umgekehrt. Die Zahl der Gegenstellen steht in network_nodes bzw. inbound_count. |
Schnittstellenreferenz
Jede Node bietet eine offene JSON/REST-Schnittstelle. Admin-Endpunkte erwarten den Header X-Admin-Secret.
| Endpunkt | Beschreibung |
|---|---|
| GET /status | Vollständiger Netz- und Node-Status |
| GET /health | Kurzer Erreichbarkeitscheck |
| GET /chain/params | Konsens-Parameter inkl. Share- und Emissionsregeln |
| GET /supply | Umlaufmenge, Emission und Inflationsrate |
| GET /address/<adresse> | Guthaben und nächste Nonce |
| GET /address/<adresse>/transactions | Buchungen einer Adresse |
| POST /transaction | Signierte Transaktion einreichen |
| GET /transaction/<txid> | Einzelne Transaktion |
| GET /block/<höhe|hash> | Block abrufen |
| GET /fee/estimate | Gebührenempfehlung |
| GET /mining/info | Mining-Zustand, Share-Schwierigkeit, Hardware-Budget |
| GET /mining/rewards/<adresse> | Eigene Gutschriften |
| GET /mining/distribution | Aggregierte Pool-Kennzahlen (optional ?address=) |
| GET /state/snapshot | Prüfbarer Kontostand-Snapshot zum letzten State-Checkpoint |
| GET /p2p/whoami | Die öffentliche Adresse, unter der dich eine Gegenstelle sieht |
| POST /p2p/share | Share einreichen und weiterverteilen (JSON) |
| POST /p2p/share/bin | Dasselbe im Binärformat |
| POST /p2p/block/bin | Block im Binärformat einreichen |
| POST /admin/mining | Adresse, Mining, Kerne und Intensität setzen |
| GET /admin/peers | Peer-Liste mit Zustand |
| POST /admin/sync | Kettenabgleich anstoßen |
Beispiel
curl -s http://127.0.0.1:5050/mining/info | python3 -m json.tool
curl -s -X POST http://127.0.0.1:5050/admin/mining \
-H "Content-Type: application/json" \
-H "X-Admin-Secret: DEIN-SECRET" \
-d '{"mining_processes": 2, "mining_intensity": 60}'