Zwei Stolperfallen für Entwickler: Signaturpräfix und Gebühreneinstellung
Doichain Core signiert Nachrichten mit dem Namecoin-Präfix, und die Option paytxfee gibt es in Core 31 nicht mehr. Was das für eigene Software bedeutet.
Beim Faktencheck der Kurse für die Doichain Academy haben wir Aussagen aus unseren eigenen Unterlagen gegen den Quellcode von Doichain Core 31 geprüft. Zwei davon waren falsch und sind inzwischen im Doichain Hub korrigiert. Wer Software für die Doichain schreibt, sollte beide kennen.
1. Das Präfix signierter Nachrichten
Vor dem Signieren setzt die Software ein festes Präfix vor die Nachricht. Es verhindert, dass eine Nachrichtensignatur als Transaktionssignatur missbraucht werden kann. Verbreitet war die Angabe Doichain Signed Message:\n. Dieses Präfix gibt es nicht.
| Software | Präfix |
|---|---|
Doichain Core 31 (signmessage, verifymessage) |
Namecoin Signed Message:\n |
| Electrum-DOI | \x18Bitcoin Signed Message:\n |
Doichain Core hat das Präfix von Namecoin geerbt, Quelle ist MESSAGE_MAGIC in src/common/signmessage.cpp. Daraus folgt:
- Eine Signatur aus Electrum-DOI lässt sich mit Doichain Core oder der Doichain-API nicht zwingend prüfen und umgekehrt. Zum Prüfen dieselbe Software verwenden, mit der signiert wurde.
signmessageundverifymessagearbeiten in Doichain Core nur mit Legacy-Adressen, die mitNbeginnen. Beidc1q…-Adressen meldet die Node „Address does not refer to key“.- Wer Eigentumsnachweise per Signatur plant, etwa für eine Anmeldung, legt sich vorher auf ein Wallet fest und testet die Prüfung mit genau diesem Wallet.
2. paytxfee wirkt nicht mehr
Viele Anleitungen empfahlen paytxfee=0.001 in der doichain.conf, um eine feste Gebührenrate zu setzen. Die Option stammt aus Bitcoin Core, wurde dort mit Version 30 als veraltet markiert und ist in Version 31 entfernt. Doichain Core 31 folgt Bitcoin Core 31. Die Zeile wird beim Start stillschweigend übergangen.
Das ist tückisch, denn ohne Gebührenschätzung und ohne Rückfallwert scheitert das Senden aus dem Wallet. Richtig ist:
# doichain.conf
minrelaytxfee=0.001
fallbackfee=0.001
und beim Senden die Rate ausdrücklich übergeben:
doichain-cli -named sendtoaddress address=<adresse> amount=1.0 fee_rate=100
Die Doichain hat keinen Gebührenmarkt, die Mining-Nodes nehmen Transaktionen ab 100 sat/vB auf. Software sollte diese Rate fest hinterlegen und sich nicht auf eine Gebührenschätzung verlassen. Transaktionen mit weniger bleiben womöglich im Mempool hängen, ohne dass irgendwo ein Fehler erscheint.
Korrigiert im Doichain Hub
Beide Punkte sind in den Wissensartikeln Adressen und Schlüssel, Netzwerkparameter, Transaktionen und Gebühren, Node betreiben und Integration für Börsen richtiggestellt. Wer eigene Skripte oder Konfigurationen nach den alten Angaben gebaut hat, sollte sie prüfen.
Ausführlich behandelt beide Themen der Kurs Developer Associate der Doichain Academy.