Autor:
witcher_senseOriginal Thema:
Silent payments
EinführungIn diesem Thread möchte ich einen interessanten Vorschlag von Ruben Somsen mit dem Namen "Silent payments" diskutieren. Dabei handelt es sich um eine Technik zur Verbesserung der Privatsphäre, die darauf abzielt, Zahlungen zwischen zwei Parteien auf der Blockchain für einen außenstehenden Beobachter weniger transparent zu machen. Sie basiert auf Konzepten wie "Stealth-Adressen" und "wiederverwendbaren Zahlungscodes" und versucht im Wesentlichen, dasselbe Problem zu lösen, allerdings auf elegantere Weise.
Die GrundideeDie Grundidee ist die folgende:
Benutzer A veröffentlicht eine
Kennung (in der Regel einen öffentlichen Schlüssel), und
Benutzer B kombiniert seinen privaten Schlüssel mit dem veröffentlichten Schlüssel von
A und erstellt eine eindeutige Adresse, von der aus nur
A Geld ausgeben kann.
Benutzer C kann ebenfalls Geld an
Benutzer A senden, indem er seinen privaten Schlüssel mit einer Adresse von
A kombiniert und eine weitere eindeutige Adresse ableitet.
Benutzer A wird wissen, dass die beiden Benutzer
B und
C ihm Geld geschickt haben, aber
B und
C werden nichts voneinander wissen. So kann
Nutzer A mit nur einer öffentlichen Adresse Zahlungen an völlig getrennte Adressen erhalten.
Wie funktioniert esAngenommen, Bob möchte eine stille Zahlung (Silent payment) an Alice senden.
1) Alice erstellt eine eindeutige Kennung (z. B. einen öffentlichen Schlüssel) mit Hilfe der Standardmathematik der elliptischen Kurve:
A = a*G, wobei
A - der öffentliche Schlüssel von Alice (ein Punkt auf einer elliptischen Kurve) ist,
a - der private Schlüssel von Alice (eine Zufallszahl, die geheim gehalten werden sollte) ist und
G - den Generatorpunkt (ein vordefinierter Punkt auf einer elliptischen Kurve) darstellt.
2) Alice macht diese Kennung
A öffentlich, damit Bob (und auch andere Nutzer wie Carol) wissen, wohin die Zahlungen zu senden sind.
3) Bob wählt einen der von ihm kontrollierten Eingänge, der einen öffentlichen Schlüssel enthält
B = b*G, wobei
B - Bobs öffentlicher Schlüssel (ein Punkt auf einer elliptischen Kurve) ist,
b - Bobs privater Schlüssel (eine zufällige ganze Zahl, die nur Bob kennt) ist und
G - den Generatorpunkt darstellt.
4) Bob nimmt den öffentlichen Schlüssel von Alice
A und konstruiert einen neuen öffentlichen Schlüssel nach der folgenden Formel:
A' = hash(b*A)*G + A, wobei
A' - einen öffentlichen Schlüssel, an den Bob seine Zahlung leistet.
5) Bob leistet eine Zahlung an Alice und erzeugt eine Ausgabe, die mit einem zuvor erstellten öffentlichen Schlüssel
A' verbunden ist.
6) Angesichts der Tatsache, dass
b*A = b*a*G = a*b*G = a*B ist, kann Alice denselben öffentlichen Schlüssel
A' mit ihrem privaten Schlüssel
a mit der folgenden Formel rekonstruieren:
A' = (hash(a*B) + a)*G, wobei
hash(a*B) + a - Alices neuer privater Schlüssel ist, der es ihr ermöglicht, Geld aus der Ausgabe auszugeben, die dem öffentlichen Schlüssel
A' entspricht.
Das Problem ist jedoch, dass Alice Bobs öffentlichen Schlüssel
B kennen muss, um ihre Zahlung zu erkennen. Deshalb durchsucht sie ständig die Blockchain, um herauszufinden, welche der öffentlichen Schlüssel mit ihrem privaten Schlüssel
a kombiniert werden können, um bestehende Bitcoin-Adressen zu rekonstruieren.
Vorteile:1) Es ist keine Interaktion zwischen Absendern und Empfängern erforderlich. Damit ein Sender eine Zahlung leisten kann, muss er nur eine Adresse aus dem geheimen öffentlichen Schlüssel des Empfängers konstruieren.
2) Silent Payments nutzen den Blockspace effizienter, da keine "Ankündigungstransaktionen" wie im Fall von BIP47 erforderlich sind. Daher ist eine Transaktion gleich eine Zahlung, was für einmalige Spenden perfekt ist.
3) Stille Transaktionen sind nicht von regulären Transaktionen zu unterscheiden (z. B. keine OP_RETURN-Ausgänge, um einen ephemeren öffentlichen Schlüssel wie im Fall von "Stealth-Adressen" zu teilen), was bedeutet, dass es für Nutzer trivial ist, sich in der Masse zu verstecken - die Anonymität ist die gesamte Blockchain.
4) Adressen, die aus dem anfänglichen stillen öffentlichen Schlüssel abgeleitet werden, sind immer deterministisch und einzigartig, da jeder Sender seine eigenen einzigartigen Schlüssel verwendet, um den stillen öffentlichen Schlüssel des Empfängers zu manipulieren.
5) Stille Zahlungen (Silent Payments) bieten dem Empfänger von Geldern einen Anreiz, seinen eigenen Bitcoin-Vollknoten am Laufen zu halten, was automatisch zu einem dezentraleren Netzwerk führt.
6) Niemand, außer dem Sender der Transaktion und dem Empfänger, wird wissen, dass die Zahlung tatsächlich stattgefunden hat.
7) Silent Payments verbessern die Fungibilität von Bitcoin-Transaktionen erheblich.
Nachteile:1) Der größte Nachteil dieser Technik sind die relativ hohen Validierungskosten. Da ein Zahlungsempfänger nicht im Voraus weiß, welche Bitcoin-Adressen mit einem von ihm kontrollierten privaten Schlüssel ausgegeben werden können, muss er jede Eingabe jeder Transaktion prüfen und dabei öffentliche Schlüssel berechnen und vergleichen.
2) Das Potenzial des Absenders zur Wiederverwendung von Adressen. Wenn ein Absender mehrere Eingaben hat, die denselben öffentlichen Schlüssel verwenden, führt jede dieser Eingaben zu derselben berechneten Adresse. Die Wiederverwendung der Adresse gilt als schlechte Datenschutzpraxis und sollte unbedingt vermieden werden. Dies könnte durch die Einbeziehung zusätzlicher Informationen in den Berechnungsprozess abgemildert werden, was jedoch eine zusätzliche Belastung darstellt, insbesondere für einfache Clients. Alternativ kann ein Absender alle Eingaben in einer einzigen Transaktion ausgeben, aber auch dies offenbart den gemeinsamen Besitz, was der Privatsphäre schadet.
Referenzen:1]
https://gist.github.com/RubenSomsen/c43b79517e7cb701ebf77eec6dbb46b82]
https://github.com/genjix/bips/blob/master/bip-stealth.mediawiki3]
https://github.com/bitcoin/bips/blob/master/bip-0047.mediawiki4]
https://en.m.wikipedia.org/wiki/Elliptic-curve_Diffie%E2%80%93Hellman5]
https://bitcoinops.org/en/newsletters/2022/04/06/6]
https://bitcoinmagazine.com/technical/bitcoin-silent-payments-secret-keys7]
https://bitcoinmagazine.com/technical/improving-bitcoin-privacy-with-silent-payments8]
https://gist.github.com/w0xlt/72390ded95dd797594f80baba5d2e6ee