Wer Bitcoin erhalten möchte, muss zunächst eine Bitcoin-Adresse veröffentlichen. Während dies in vielen Fällen ganz einfach durch direkte Kommunikation über einen Kurznachrichtendienst oder gar durch ein Treffen in Person geschieht, gibt es auch viele Anwendungsfälle, bei denen es auf Dauer unpraktisch wäre, für jede Transaktion manuell eine neue Adresse zu teilen. Schnell weicht man daher auf Alternativen aus, die zwar praktisch sind, aber dabei vor allem der Privatsphäre des Empfängers schaden.

Sowohl das Wiederverwenden einer einzelnen Adresse, als auch das Teilen eines erweiterten öffentlichen Schlüssels (xpub), mit dem beliebig viele Bitcoin-Adressen erzeugt werden können, sind alles andere als ideal für die eigene Privatsphäre. Schließlich möchte man sicherstellen, dass von außen möglichst wenig über eine Transaktion und deren Zusammenhänge mit anderen in Erfahrung gebracht werden kann.

Eine elegante Lösung für dieses Problem schauen wir uns in diesem Beitrag etwas genauer an: Silent Payments und das zugehörige BIP-352 (Bitcoin Improvement Proposal). Die ersten Schritte zur Umsetzung in Bitcoin Core, der Referenzimplementation von Bitcoin, sind bereits in die Wege geleitet und es dürfte nicht mehr allzu lange dauern, bis die erste Implementierung in der Wallet von Bitcoin Core vollendet ist.

Kein Austausch ohne Kommunikation

Silent Payments sind nicht der erste Lösungsansatz, der sich diesem spezifischen Problem, insbesondere unter Berücksichtigung der Privatsphäre, annimmt. Bereits relativ etabliert sind sogenannte wiederverwendbare Payment Codes, definiert im BIP-47, die man sich vereinfacht gesagt wie eine feste Kontonummer eines Bankkontos vorstellen kann. Diese Nummer ist statisch, verändert sich also nicht, kann aber trotzdem genutzt werden, um beliebig viele Bitcoin-Adressen auf private Weise auszutauschen - und zwar mit beliebig vielen Nutzern. Beliebte Wallets wie die BlueWallet für Smartphones oder die Sparrow Wallet für den Desktop unterstützten diese Funktion bereits.

Lese-Tipp: BIP-47: Wie funktionieren Reusable Payment Codes?

Bei der Nutzung eines Payment Codes nach BIP-47 muss man sich allerdings auf einen mehr oder weniger uneleganten Kompromiss einlassen. Zum Austausch von Bitcoin-Adressen muss, wenig überraschend, zunächst miteinander kommuniziert werden. Konkret kommt es zwischen den beiden Transaktionspartnern zu einem Diffie-Hellman-Schlüsselaustausch, einem Verfahren in der Kryptografie, sich auf ein gemeinsames Geheimnis zu einigen, ohne dabei tatsächlich geheime Informationen preiszugeben.

Vereinfachte Darstellung der Funktionsweise eines BIP-47 Payment Codes

Diese Kommunikation findet im Fall von BIP-47 mit einer zusätzlichen, einmaligen Bitcoin-Transaktion statt, die man sich wie eine "Anmeldung an der Rezeption" vorstellen kann. Was dann im Hotelzimmer passiert, also auf welche Bitcoin-Adressen sich die beiden Transaktionspartner einigen, kann zwar sonst niemand wissen, aber die Tatsache, dass man sich an der Rezeption gemeldet hat schon. Der Nachteil von BIP-47 Payment Codes liegt also in den veröffentlichten Metadaten der Transaktionspartner, während der eigentliche Austausch der Bitcoin-Adressen durchaus ein sehr hohes Niveau an Privatsphäre genießt. Und genau hier setzen wir mit Silent Payments an.

Silent Payments

Während die Notwendigkeit zur Kommunikation unausweichlich ist, können wir dennoch die Notwendigkeit für eine gesonderte Benachrichtigungs-Transaktion umschiffen. Denn der Sender einer Transaktion hat, auch im Fall von BIP-47, von Anfang an eigentlich alle Informationen, die er für die Ableitung eines gemeinsamen Geheimnisses und damit für die Erzeugung von Bitcoin-Adressen benötigt: Den öffentlichen Schlüssel des Empfängers, der in der Silent-Payment-Adresse liegt, und natürlich den eigenen privaten Schlüssel. Die entscheidende Frage ist also nur, wie der Empfänger beim gleichen gemeinsamen Geheimnis landet - ohne eine explizite Einigung.

Dafür muss der Empfänger schlichtweg Ausschau halten und sämtliche Bitcoin-Transaktionen, genauer gesagt sämtliche Taproot-Transaktionen mit den passenden Eigenschaften, "in die Hand nehmen" und prüfen, ob es sich um eine eigene Adresse handelt, die aus einem gemeinsamen Geheimnis mit dem öffentlichen Schlüssel des Senders abgeleitet wurde. Da es hierfür keine explizite Benachrichtigung mehr gibt, muss der Empfänger bzw. der Nutzer einer Silent-Payment-Adresse also selbst aktiv werden, und eine manuelle Überprüfung von allen potenziellen Transaktionen vornehmen.

Bildquelle: memes.mobi

Der eigentliche Schlüsselaustausch findet also eher indirekt, nämlich erst mit dem Eingang der ersten Transaktion statt, während auf eine zusätzliche Benachrichtigungs-Transaktion verzichtet werden kann. Dies bringt nicht nur den offensichtlichen Vorteil der Kosteneinsparung der Transaktion selbst mit sich, sondern räumt vor allem den durch die Benachrichtungs-Transaktionen entstandenen Privatsphäre-Nachteil aus dem Weg.

Niemand kann anhand einer Silent-Payment-Adresse nachvollziehen, wie oft diese bereits verwendet wurde, geschweige denn von wem.

Der Nachteil

Leider kommen auch Silent Payments nicht ohne Nachteile daher, was nach der Erklärung der Funktionsweise nicht wirklich überraschend sein sollte. Denn selbstverständlich bedeutet das aktive Suchen nach passenden Transaktionen einen nicht gerade vernachlässigbaren Überhang an Aufwand für den Empfänger bzw. für dessen Wallet-Software.

Vor allem bei der Frage der Backups, also wie man die eigene Wallet im Notfall wiederherstellen kann, wird dieser Nachteil erst richtig deutlich. Die gesammelten Informationen auf der Benachrichtigungs-Adresse eines BIP-47 Payment Codes sind zwar aus Sicht der Privatsphäre ein Nachteil, was die Nutzererfahrung und Komplexität angeht, aber ein Segen: Denn zur Wiederherstellung muss man nur einen kurzen Blick auf besagte Adresse werfen, und kann sofort sämtliche Geheimnisse bzw. Bitcoin-Adressen mitsamt ihren passenden privaten Schlüssel wiederherstellen.

Mit Silent Payments dreht man den Spieß um, und muss bei einer Wiederherstellung streng genommen die gesamte Bitcoin-Blockchain, zumindest ab der erstmaligen Verwendung, abscannen und Schritt für Schritt die eigenen Bestände zusammenkratzen. Natürlich sind diese zu keinem Zeitpunkt gefährdet, die Wiederherstellung ist lediglich mit zusätzlichem Aufwand verbunden. Grob schätzen lässt sich der Gesamtaufwand einer solchen Wiederherstellung auf mehrere Stunden, sofern auch wirklich das gesamte UTXO-Set, also alle noch nicht ausgegebenen Bitcoin-Outputs, abgesucht werden muss. Die Dauer eines solchen Scans ist natürlich auch stark von der verwendeten Hardware abhängig. Idealerweise macht man als Nutzer regelmäßige Backups, um einen kompletten Scan zu vermeiden.

Fazit

Im Vergleich zu BIP-47 Payment Codes geht man mit Silent Payments schlichtweg einen anderen Kompromiss ein. Keine der beiden Funktionen ist also pauschal besser als die andere. Welcher Kompromiss eher in Kauf genommen werden kann, hängt alleine von den eigenen, individuellen Präferenzen ab, jedoch gibt es dennoch einen entscheidenden Unterschied, der berücksichtigt werden sollte.

Beide Funktionen sind in erste Linie für eine Verbesserung der eigenen Privatsphäre da. Man will sich möglichst einfach und fortlaufend auf Bitcoin-Adressen einigen, ohne unnötig viele Informationen im Bitcoin-Netzwerk preiszugeben. Legt man darauf besonderen Wert, so ist man mit Silent Payments ein Stück besser bedient, da es hier keinerlei Kompromisse unter dem Aspekt der Privatsphäre gibt. Die Kosten fallen stattdessen an anderer Stelle an, nämlich mit zusätzlichem Aufwand bei der Wiederherstellung und Suche nach eingehenden Transaktionen.

Doch damit diese Abwägungen überhaupt relevant werden, müssen Silent Payments zunächst einmal umgesetzt werden. Nicht nur in der Bitcoin-Core-Wallet, sondern natürlich auch für möglichst viele weitere Hard- und Software-Wallets. Ein hohes Niveau an Privatsphäre im Bitcoin-Netzwerk zu erreichen und vor allem zu wahren ist alles andere als einfach, weshalb die Entwicklung und Verbesserung entsprechender Funktionen umso wichtiger ist.