CoinJoin mit Sparrow: So anonymisierst du deine Bitcoins

Wer sich intensiv mit Bitcoin und Privatsphäre befasst, der wird früher oder später auf den sogenannten CoinJoin treffen.

Kurz gesagt ist ein CoinJoin ein Protokoll zur Verbesserung der On-Chain-Privacy, bei dem mehrere Teilnehmer eine gemeinsame Transaktion erstellen, die Bitcoin von allen Teilnehmer enthält und sie an neue Adressen dieser Teilnehmer auszahlt. Dadurch lässt sich am Ende nicht mehr genau sagen, welche Adresse zu welchem Teilnehmer gehört.

Ein CoinJoin macht aus wenigen unterschiedlich großen Transaktionen viele gleichgroße – via wasabiwallet.io

Diese Transaktionen müssen zum Glück nicht von Hand gebaut werden. Einige Entwicklerteams haben sich dieser Herausforderung angenommen, so unter anderem auch Samourai, die mit ihrem Whirlpool einen der beliebtesten CoinJoin Implementierungen bereitstellen. Whirlpool kann sowohl mit Samourai Wallet (Android), als auch mit Sparrow Wallet (Linux, Mac, Windows) genutzt werden. Im folgenden findet ihr eine Anleitung wie ihr Whirlpool mit Sparrow Wallet nutzen könnt.

Vorbereitung

Sparrow Wallet herunterladen und verifizieren

Bevor wir Whirlpool an unserem Mac, Linux oder Windows nutzen können, müssen wir Sparrow Wallet herunterladen und installieren. Den aktuellsten Release der Software findet ihr auf dem Sparrow Wallet Repository.

Nach dem Download könnt ihr die Integrität der Software überprüfen, um sicherzustellen, dass ihr auch tatsächlich die vom Entwickler zur Verfügung gestellte Wallet-Applikation installiert. Hierzu stellt Sparrow eine Manifest-Datei mit SHA256 Checksums, sowie eine zugehörige PGP-Signatur-Datei zur Verfügung.

Sparrow Wallet einrichten

Nachdem ihr die Wallet Software installiert habt, könnt ihr mit der Einrichtung beginnen. Startet ihr Sparrow Wallet zum ersten mal, öffnet sich automatisch ein Einrichtungs-Assistent, welcher die Grundzüge der Software erklärt. Des Weiteren müsst ihr euch Entscheiden woher das Wallet seine Blockchain Daten beziehen soll. Um maximale Privatsphäre zu bieten, solltet ihr an dieser Stelle euren eigenen Fullnode/Electrum Rust Server verbinden.

Ein neues Wallet erstellen

Nun müsst ihr ein Wallet erstellen oder importieren. Im folgenden seht ihr wie ihr ein BIP39 Software Wallet in Sparrow erstellen könnt. Über den Settingstab findet ihr die Option, ein neues Wallet zu erstellen.

Sucht euch einen Namen für euer Wallet aus und erstellt ein neues Software Wallet.

Das Wallet aufladen

Nachdem ihr euer neues Wallet erstellt habt, landet ihr auf der Transaktionsübersicht, welche aktuell natürlich noch leer ist. Um nun im nächsten Schritt eure Bitcoin CoinJoinen zu können, müsst ihr natürlich erstmal Satoshis auf euer neues Wallet senden. Geht hierfür einfach auf den Receive-Tab und sendet ein paar Sats an die Adresse eurer Wallet.

WICHTIG: Der kleinste CoinJoin-Pool bei Whirlpool ist 100.000 Sats groß, sendet also mindestens 110.000 Sats auf das Wallet (Die 10% extra sind für die Pool- und Mininggebühren, hierzu später mehr).

Einen CoinJoin durchführen

Wenn ihr Coins an eure neue Wallet gesendet habt und diese Transaktion mindestens eine Bestätigung erhalten hat, kann es nun endlich mit dem CoinJoin los gehen.

Um zu starten müsst ihr auf den UTXO-Tab eurer Wallet gehen, die Unspent Transaktion Outputs (UTXOs), die ihr mixen wollt auswählen und auf „Mix Selected“ klicken.

Coinjoin

Nun erscheint ein kurzer Erklärungsdialog, der euch das Samourai Whirlpool Prinzip erklärt. Sobald ihr den ersten Mix begonnen habt, erstellt euch Sparrow Wallet drei neue Unterkonten auf euerer Wallet. Den Premix, den Postmix und die Badbank.

Premix, Postmix und Badbank

Da Whirlpool nur mit gleich großen Inputs und Outputs arbeitet, kann es durchaus sein, dass eure Coins erstmal entsprechend gestückelt werden müssen. Hierfür erstellt Sparrow eine Transaktion die euren Coins vom Deposit-Account in den Premix-Account sendet. Hier warten die korrekte gestückelten UTXOs dann auf einen Platz im Whirlpool.

Wenn ein Platz gefunden wurde werden eure UTXOs zusammen mit 4 weiteren Inputs gemixt und landen anschließend im Postmix-Account. Dieser Schritt ist der eigentliche CoinJoin. UTXOs die im Postmix-Account liegen können beliebig oft weiter gemixed werden, ohne dass dafür eine Pool- oder Mininggebühr anfällt.

Die Badbank ist eine Art Wechselgeldkasse für die Teile der initialen Transaktion, die nach der Stückelung übrig geblieben sind. Um das Konzept besser dar zu stellen hier ein kleines Beispiel:

Wir wollen 1.000.000 Sats im 100.000er Pool mixen. Damit die Mining Gebühren beglichen werden können, muss jede Premix-UTXO 100.310 Sats groß sein. Hierzu kommt noch die Pool-Gebühr von 5.000 Sats.

5000 + (9 * 100300) = 907790

Von den 1.000.000 bleiben also 92.210 Sats übrig. Dieser Rest ist zu klein, um daraus eine weitere Premix UTXO zu bilden. Würde man diesen Rest nun einfach mit den bereits gemixten Coins zusammen legen, könnten Dritte durch dieses Wechselgeld wieder Premix und Postmix Coins miteinander verknüpfen. Um sicher zu stellen, dass dies nicht passiert, deponiert Samourai diese Coins in der Badbank. Diese Coins sind keineswegs verloren. Wir können die erstmal hier liegen lassen und sie bei dem nächsten CoinJoin in den Mixer geben.

SCODE

SCODEs sind Rabattcodes die Samourai Wallet von Zeit zu Zeit z.B. über Twitter verteilt. Mit ihnen spart ihr euch einen Teil der Whirlpool Gebühr. Wenn ihr keinen habt, dann lasst das Feld einfach leer.

Whirlpool Gebühren

Samourai bietet den Whirlpool nicht kostenfrei an. Dieser Mix muss bezahlt werden, dabei bestimmt allerdings nicht die Menge an Coins die wir mixen wollen die Kosten, sondern die Poolgröße. Aktuell gibt es vier verschiedene Pools, die jeweils ihre eigenen UTXO Größe und Gebühr haben. Wählt euren Pool und fahrt fort.

  • 100.000 Sats – Eintrittsgebühr 5.000 Sats
  • 1.000.000 Sats – Eintrittsgebühr 50.000 Sats
  • 5.000.000 Sats – Eintrittsgebühr 250.000 Sats
  • 50.000.000 Sats – Eintrittsgebühr 2.500.000 Sats

Broadcast Premix Transaction

Ihr habt es beinahe geschafft. Im letzten Schritt sehr ihr nochmal eine Übersicht über eure Premix Transaktion, also die Transaktion die eure Coins, sauber gestückelt von euer Deposit Wallet in die Premix-Wallet sendet.

Von Premix zu Postmix

Es ist vollbracht! Euro Coins liegen nun als einzelne UTXOs auf verschiedenen Adressen eures Premix-Accounts. Sparrow wird nun eure UTXOs als Inputs bei Whirlpool anmelden und sie in den Mixer geben. Da die Nachfrage nach Premix Inputs bei Whirlpool relativ hoch ist, solltet ihr nicht lange warten müssen bis ihr einen Platz in einem Mix bekommt.

WICHTIG: Da nicht Samourai, sondern ihr, die Keys zu eurem Wallet hält, muss Sparrow zum mixen geöffnet bleiben und eine aktive Verbindung zu eurem Fullnode haben, da die Software die CoinJoin-Transaktionen nicht signieren kann.

Glückwunsch! Nun ist es nur noch eine Frage der Zeit und euer erster CoinJoin ist vollbracht!

Extras

Nach dem Mix ist vor dem Mix

Ihr habt eure UTXOs erfolgreich gemixt, doch was jetzt? Das coole an Samourai Whirlpool ist, dass ihr UTXOs, welche in eurem Postmix-Account liegen, einfach wieder und wieder in den Mixer werfen könnt und das auch noch vollkommen kostenfrei (ihr zahlt weder eine Pool-Gebühr, noch eine Mining-Gebühr, da diese von neuen Pool-Teilnehmern übernommen werden).

Um eure Postmix UTXOs weiter zu mixen, klickt ihr einfach im UXTO-Tab eures Postmix-Accounts auf „Start Mixing“

CoinControl

CoinControl ist ein sehr wichtiges Konzept, wenn ihr mit gemixten Coins arbeitet. Im Bitcoin Protokoll können Transaktionen Inputs von mehreren Adressen verwenden. Ich kann zum Beispiel ein Wallet mit 5 aktiven Adressen haben. Auf diesen 5 Adressen liegen jeweils 100.000 Sats. Wenn ich nun eine Zahlung in Höhe von 450.000 Sats durchführen möchte, stellt das kein Problem dar, denn mein Wallet hat die privaten Schlüssel zu allen 5 Adressen und kann somit eine Transaktion erstellen die Inputs von allen 5 Adressen erhält und zwei Outputs ausgibt (einmal 450.000 Sats an den Empfänger und einmal unser Wechselgeld – Gebühr).

Manch einem mag nun auch klar werden, warum dieses Konzept gerade bei gemixten Coins so wichtig ist. Wenn wir ein Wallet haben, welches sowohl gemixte UTXOs, als auch nicht-gemixte UTXO verwaltet, müssen wir enorm darauf achten, dass wir diese nicht zusammen ausgeben. Denn dadurch das die Adressen gemeinsam in der Blockchain auftauchen, lassen sich die Verbindungen die wir durch den CoinJoin gebrochen haben, wieder herstellen.

Um auf Nummer sicher zu gehen, solltet ihr einfach einen extra Account in eurer Wallet erstellen und ausschließlich gemixte Coins dorthin senden. So vermeidet ihr diese aus Versehen mit ungemixten Sats auszugeben.

CoinJoin direkt aufs Hardware Wallet

Sparrow erlaubt es euch UTXOs automatisch an ein anderes Wallet, welches in Sparrow Wallet angelegt, ist zu senden, nachdem eine gewünschte Anzahl an Mixes durchgeführt wurde. Dieses Wallet kann auch ein sogenanntes Watch-Only Wallet sein, was uns ermöglicht unsere gemixten UTXOs direkt an unser Hardware Wallet zu senden, ohne dass wir Sparrow Wallet die private Keys anvertrauen müssen.

Hierzu erstellt ihr zuerst ein neues Wallet in Sparrow Wallet. Diesmal allerdings kein Software Wallet, sondern ein „xPub / Watch Only“ Wallet. Nun fügt ihr unter xPub euren Extended Public Key und unter Derivation Path den Ableitungspfad dieser Wallet ein. Wie bereits oben erwähnt, eignet sich für gemixte UTXOs ein eigenständiger Account, also legt am besten einen neuen auf eurer Hardware Wallet an. Da der Masterfingerprint bei einem WatchOnly-Wallet nicht benötigt wird, gebt ihr hier einfach „00000000“ ein.

Das erstellte Wallet kann keine Transaktionen signieren, denn es kennt die privaten Schlüssel nicht, aber es kann Adressen abrufen und deren Kontostand sehen. Ersteres erlaubt es Sparrow die gemixten UTXOs von unserem „Mix-Wallet“ auf Adressen unseres WatchOnly-Wallet zu senden. Nun müssen wir Sparrow Wallet nur noch anweisen dies zu tun.

Hierfür müsst ihr in den UTXO-Tab, des Postmix-Accounts, eurer CoinJoin-Wallet navigieren und hier auf „Mix to“ klicken (aktive Mixed müssen unterbrochen werden). Nun wählt ihr das eben erstellte WatchOnly-Wallet als Ziel und legt fest wie oft die UTXOs gemixt werden sollen, bevor Sparrow Wallet sie an dieses sendet.

Spende uns:

Wenn dir dieser oder einer unserer anderen Beiträge gefallen hat, würden wir uns über eine kleine Spende freuen:

4 comments

  1. Hallo, danke. Leider wird bei mir unter den UTXOs der Button Mix selected nicht angezeigt (eine Transaktion über 110k und eine 100k). Sie sind auch beide bestätigt. Wie kommt man an den Button?

    1. Moin!
      Kann es sein, dass dein Sparrow Wallet file aus einer älteren Version stammt. Aus einem mir unbekannten Grund taucht der Button nur bei “neuen” Wallets auf.

  2. Hi, nein hatte es ganz neu installiert. Es liegt anscheinend daran, dass ich dafür den Ledger als Hardwarewallet verwendet habe dann geht es nicht.

    1. Hi,
      Ja das ist leider ganz normal. Zum CoinJoinen braucht Sparrow natürlich die Keys, gerade für das Weitermixen, welches auch mal ein paar Tage dauern kann (je nach Menge und Mempool) müsste das Hardware Wallet unentsperrt dauerhaft am Rechner hängen. Deshalb nutzt Sparrow/Whirlpool ein Hotwallet zum mixen.

Schreibe einen Kommentar