Mein Bitcoin-Node läuft seit Monaten stabil: Bitcoin Core 29.x, electrs 0.10.x, Electrum-Wallet vom Laptop, kein fremder Server, keine Ausfälle. Dann kam das Update. Nicht auf ein neues Feature, nicht auf bessere Performance – sondern auf eine Zeile in der Konfiguration, die vorher niemand gebraucht hat:
rest=1
Ohne diese Zeile startet electrs nicht mehr. Punkt. Was sich geändert hat, warum das Sinn macht und wie das Update bei mir ablief – das hier.
Was ist passiert?
electrs 0.12.0 (September 2026) bringt zwei Dinge mit, die niemanden kalt lassen sollten:
- Ein komplett neues Index-Format. Das RocksDB-Schema wurde geändert. Wer von einer älteren Version updatet, muss den Index neu aufbauen – ohne Ausnahme.
- electrs fragt Bitcoin Core jetzt über die REST-API ab, nicht mehr per JSON-RPC oder P2P. Dafür braucht Bitcoin Core mindestens Version 31, und die REST-API muss explizit aktiviert sein.
Das erste ist lästig, aber automatisch. Das zweite ist die eigentliche Änderung, und sie hat Konsequenzen für jede bitcoin.conf da draußen.
Warum REST und nicht mehr RPC?
Bitcoin Core bietet zwei Schnittstellen: die JSON-RPC-API und eine REST-API. Beide laufen auf derselben Port (8332), aber sie tun unterschiedliche Dinge. Die REST-API existiert seit Jahren, war aber bislang Nischenwissen – sie bot nicht alles, was electrs brauchte.
Das hat sich geändert. Zwei Commits in Bitcoin Core haben die Lücke geschlossen:
- PR #32540 (in Bitcoin Core 30): Block-Hash-basiertes Abrufen von ausgegebenen Outputs
- PR #33657 (in Bitcoin Core 31): partieller Lesezugriff auf Blockdaten
Damit kann electrs alles über REST holen, was es vorher über RPC und P2P zusammengekauft hat. Die REST-API ist schlanker, effizienter und benötigt keine P2P-Verbindung oder komplizierte Authentifizierung mehr.
electrs-Entwickler Roman Zeyde dazu in den Release-Notes:
"Switch to bindex: requires Bitcoin Core 31+ and rebuilding the index."
Kurz: Das alte Auslesen von blk*.dat-Dateien und der P2P-Hack sind Geschichte. Jetzt REST – sauber, offiziell dokumentiert, und Bitcoin Core hat endlich die Endpoints, die dafür nötig sind.
Mein Update: Bitcoin Core 31 und electrs 0.12
Schritt 1: Bitcoin Core upgraden
Ich hatte noch Bitcoin Core 29 laufen. Für electrs 0.12 brauche ich mindestens
- Der Weg über Source ist derselbe wie beim ersten Mal:
cd ~/bitcoin-src
git fetch --tags
git tag -v v31.0 # GPG prüfen – immer!
git checkout v31.0
./autogen.sh
./configure --without-gui --disable-wallet --enable-hardening
make -j$(nproc)
sudo make install
Zwischen zwei Stunden Kaffee und einem Abendessen. Danach starten:
sudo systemctl stop bitcoind
sudo systemctl start bitcoind
Die Blockchain selbst bleibt unverändert, das Upgrade ist abwärtskompatibel. Ein reindex von Bitcoin Core ist nicht nötig – das Index-Format der Blockchain ist stabil, anders als bei electrs.
Schritt 2: REST aktivieren
Hier kommt der entscheidende Teil. In der bitcoin.conf (bei mir unter /var/lib/bitcoind/bitcoin.conf) ergänze ich eine Zeile:
# Vorher
server=1
daemon=1
txindex=1
# Nachher
server=1
daemon=1
txindex=1
rest=1
Das war's. Ohne rest=1 meldet electrs beim Start einen kryptischen Fehler zur REST-API und gibt auf. Kein schöner Fehler, kein Hinweis auf die fehlende Konfiguration – einfach nichts.
Schritt 3: electrs upgraden
electrs selbst hat sich kaum geändert, was die Installation angeht. Die Datenbank muss aber komplett neu aufgebaut werden:
cd ~/electrs-src
git fetch --tags
git tag -v v0.12.0
git checkout v0.12.0
cargo build --release
sudo cp target/release/electrs /usr/local/bin/
Wichtig: Die alte Datenbank löschen – oder electrs selbst machen lassen. Laut Upgrade-Anleitung braucht man mindestens 120 GB freien Platz für den Reindex der Mainnet-Chain. Bei mir waren es etwa 100 GB, da der alte Index noch herumlag.
# Alter Index weg – electrs baut neuen auf
sudo rm -rf /var/lib/electrs/db/bitcoin
Schritt 4: electrs starten und warten
sudo systemctl restart electrs
journalctl -u electrs -f
Der Log zeigt sofort, ob REST gefunden wird:
INFO electrs::server: serving Electrum RPC on 127.0.0.1:50001
INFO bindex::chain: index: Config { db_path: "...", url: "http://127.0.0.1:8332" }
INFO bindex::db: CF config: 0 files, 0.000000 MBs
Kein P2P mehr, kein blk*.dat-Parsing – einfach eine HTTP-Verbindung auf Port 8332. Und dann: Reindex. Je nach Hardware und Platte dauert das ein paar Stunden. In der Zwischenzeit ist electrs nicht ansprechbar, die Electrum-Wallet meldet "Server not found" – das ist normal und vorübergehend.
Was sich sonst noch geändert hat
Bitcoin Core 31 ist Pflicht
Das Minimum ist nicht mehr "irgendeine aktuelle Version", sondern 31.0. Ältere Versionen fehlen die REST-Endpoints, die electrs braucht. Wer noch auf 29 oder 30 läuft, muss also erst Bitcoin Core upgraden, dann electrs.
txindex ist optional
In der alten Konfiguration hatte ich txindex=1 gesetzt – für andere Dienste und weil electrs es früher manchmal brauchte. Laut aktueller Doku ist txindex für electrs nicht mehr nötig. REST liefert die Transaktionsdaten direkt. Ich habe es drin gelassen, weil ich gelegentlich bitcoin-cli getrawtransaction für Debugging nutze – aber es ist kein Muss mehr.
Cookie-Auth weiterhin empfohlen
electrs authentifiziert sich weiterhin über die Cookie-Datei (~/.bitcoin/.cookie bzw. der konfigurierte Pfad). Das hat sich nicht geändert und ist nach wie vor die empfohlene Methode – sicherer als feste Benutzer/Passwort-Paare in der Konfiguration.
Die neue bitcoin.conf im Überblick
Meine aktuelle Konfiguration sieht so aus:
# /var/lib/bitcoind/bitcoin.conf
server=1
daemon=1
txindex=1
rest=1
# Netzwerk
listen=1
maxconnections=40
whitelist=download@127.0.0.1
# Speicher
prune=0
Die whitelist-Zeile ist historisch – sie war nötig, als electrs Blöcke per P2P abrufte. Jetzt, wo alles über REST läuft, ist sie überflüssig. Ich lasse sie aber drin, schadet nicht und falls ich je auf eine ältere electrs-Version zurückfallen muss.
Fazit: Ein Update, das nachdenklich macht
electrs 0.12 ist schneller und sauberer als der Vorgänger. Die Abhängigkeit von Bitcoin Core ist dafür strenger geworden – was an sich gut ist, weil es die Integration vertieft statt sie zu hacken.
Aber: Das Update ist nicht "ein apt upgrade und gut". Man braucht Bitcoin Core 31, eine rest=1-Zeile und ein paar Stunden Reindex. Für einen Produktions-Node sollte man das einplanen, nicht in der Mittagspause anfangen.
Meine Electrum-Wallet meldet nach einigen Stunden wieder "Connected to my own node". Nichts hat sich am Verhalten geändert, keine Adresse musste neu eingerichtet werden, keine Transaktion ist verloren. Nur der Weg von der Wallet zur Blockchain ist jetzt ein andere – und potenziell ein bisschen schneller.
Für alle, die jetzt updaten wollen: rest=1 nicht vergessen. Es ist eine Zeile, aber ohne sie bleibt der Log leer und der Frust groß.
