SPV-Brieftasche mit Verbindung zum persönlichen Bitcoin-Knoten

Ich habe mich entschieden, einen Bitcoin-Knoten zu betreiben, um sowohl das Netzwerk zu unterstützen, mehr darüber zu erfahren, wie es funktioniert, als auch, damit ich mich beteiligen und gleichzeitig das Vertrauen in externe Parteien minimieren kann. Ich habe einen Bitcoin Core Full Node, der mit dem ersten Block-Download verbunden ist, versuche aber herauszufinden, wie ich eine mobile Brieftasche damit verbinden kann. Nach meinem Verständnis von SPV-Wallets sollten sie in der Lage sein, sich direkt mit einem Bitcoin-Kernknoten zu verbinden, um die Blockheader und Transaktionen über den SPV-Prozess anzufordern, aber ich sehe keine Möglichkeit, dies in den meisten mobilen Wallets zu tun. Es scheint jedoch eine Möglichkeit zu geben, sich mit einem Electrum-Server zu verbinden.

Meine Fragen sind dann:

  1. Wie kommuniziert eine mobile SPV-Wallet tatsächlich mit dem Bitcoin-Netzwerk, und kann ich meine mobile SPV-Wallet dazu bringen, nur mit meinem Bitcoin-Code-Knoten zu kommunizieren?
  2. Was macht der Electrum-Server anders, als nur einen SPV-Knoten mit dem Bitcoin-Netzwerk oder einem persönlichen Knoten zu verbinden?

Ich habe versucht, etwas über diese Themen zu lesen, aber es fällt mir schwer, wirklich festzulegen, was jeder zu tun versucht und wie ich folglich versuchen sollte, meinen Knoten einzurichten, um volle Eigenständigkeit zu erreichen. Ich würde lieber verstehen, was los ist, als etwas "einfach funktionieren".

Antworten (1)

Wie kommuniziert eine mobile SPV-Wallet tatsächlich mit dem Bitcoin-Netzwerk, und kann ich meine mobile SPV-Wallet dazu bringen, nur mit meinem Bitcoin-Code-Knoten zu kommunizieren?

SPV-Knoten speichern nur Blockheader, die den Merkle-Root-Hash haben . Wenn ein SPV-Knoten einen vollständigen Knoten nach Details einer Transaktion fragt, gibt der vollständige Knoten dem Geschwister-Merkle-Knoten Hashes, mit denen der SPV-Knoten überprüfen kann, ob die Transaktion wirklich in der Blockchain enthalten war oder nicht.

Die Merkle-Baum-Verifizierung

Zum Beispiel sendet Ihr SPV-Wallet Transaktionshash Ihres Interesses an den vollständigen Knoten, der hier H k ist. Der vollständige Knoten sendet dann alle blau schattierten Merkle-Geschwister-Hashes zurück. Ihr SPV-Knoten verwendet dann Geschwister-Hashes, um den übergeordneten Hash zu berechnen, und so weiter bis zur Stammebene.

Zum Beispiel,

(H k + H L ) -> H KL

(H KL + H IJ ) -> H IJKL

(H IJKL + H MNOP ) -> H IJKLMNOP

(H IJKLMNOP + H ABCDEFGH )->H ABCDEFGHIJKLMNOP

Da Ihr SPV-Knoten nun den Root-Merkle-Hash hat, sollte das Endergebnis der obigen Berechnung genau übereinstimmen. Keine Übereinstimmung bedeutet, dass die Transaktion nicht in der Blockchain enthalten ist oder der vollständige Knoten lügt .

Wie umgeht man das Lügen von vollständigen Knoten?

Hier kommen Blütenfilter. Bloom-Filter sind wie die Beschreibung eines Musters, das Sie an Full Node senden und bitten können, mir alle Transaktionen zu geben, die diesem Muster entsprechen . Das Schöne an Bloom-Filtern ist, dass viele Muster auf denselben Bereich geätzt werden können. Und der SPV-Knoten enthält auch die Muster, an denen er interessiert ist, sowie einige redundante Muster . Dies trägt dazu bei, Ihre Privatsphäre zu verbessern, indem Ihre Daten nicht direkt an Full Node gesendet werden, und verringert auch die Wahrscheinlichkeit, dass Full Node lügt. Es gibt Brieftaschen wie BreadWallet, die benutzerdefinierte SPV-Verbindungen unterstützen, aber ich bin mir nicht sicher, ob die Funktion noch verfügbar ist.

Was macht der Electrum-Server anders, als nur einen SPV-Knoten mit dem Bitcoin-Netzwerk oder einem persönlichen Knoten zu verbinden?

Es ist wie ein weiteres Handy oder eine knotenlose Brieftasche. Es gibt keine Node-Wartungslast für Sie, aber der Client/die App, die Sie verwenden, pingt in den meisten Fällen einen zentralen Server an, um ihre gehosteten Nodes zu verwenden . Der Electrum-Server ist auf dem vollständigen Knoten aufgebaut. Die ElectrumX-Implementierung läuft mit txindex = 1 und lädt vollständige Blöcke auf Ihr System herunter. Schauen Sie sich ElectrumX an , mit dem Sie einen Electrum-Server betreiben können.

Von dort aus können Sie Ihr SPV-Wallet so konfigurieren, dass es sich mit dem von Ihnen betriebenen Elektron-Server verbindet.