Lassen Sie uns über die Synchronisation digitaler Geldbörsen mit dem Bitcoin-Netzwerk sprechen. Wir skizzieren die wichtigsten Ansätze, die Prinzipien ihrer Arbeit und Komplexität. Das Material kann nicht nur für Entwickler, sondern auch für normale Benutzer nützlich sein, um sich mit den Funktionen digitaler Geldbörsen und Aspekten der sicheren Arbeit mit Geldbörsen vertraut zu machen.
Basierend auf dem Material in diesem Artikel wurde eine der Vorlesungen des Blockchain-Online-Kurses „
Synchronisieren von Geldbörsen mit dem Bitcoin-Netzwerk “ aufgezeichnet.
Grundlegende Brieftaschenfunktionen
Beginnen wir mit der Grundfunktionalität einer digitalen Geldbörse:
- Sichern privater Schlüssel;
- Zahlungsannahme;
- Balance-Anzeige;
- Transaktionsverlauf anzeigen;
- Zahlungen senden.
Zum Sichern privater Schlüssel benötigen Sie nur das Modul, das für das Speichern und Verwalten von Schlüsseln verantwortlich ist. Bei den verbleibenden vier Funktionen müssen Sie jedoch unbedingt mit dem Bitcoin-Netzwerk arbeiten. Um eine gemeinsame Transaktionsdatenbank lesen und schreiben zu können, müssen Sie mindestens einer der Knoten dieses Netzwerks werden und die Spezifikationen für die Verarbeitung und den Austausch von Daten in diesem Netzwerk befolgen. Daher ist es erforderlich, Daten zu allen Transaktionen zu haben, an denen die Adressen einer bestimmten Brieftasche teilgenommen haben. Daten zum aktuellen Status des Netzwerks werden auch benötigt, um eine neue Transaktion vorzubereiten und eine Zahlung vorzunehmen.
Das Wichtigste, was ein Benutzer einer digitalen Geldbörse beim Akzeptieren und Senden von Zahlungen zuverlässig wissen muss, ist der Status seiner Transaktionen. Offensichtlich gilt die Transaktion als unvollständig, wenn die Transaktion gesendet wurde, aber keine vollständige Bestätigung erhalten hat. Infolgedessen kann der Empfänger die Zahlung nicht akzeptieren, um beispielsweise die Waren zurückzusenden oder die Dienstleistung zu erbringen.
Die Schwierigkeiten, in einem verteilten Netzwerk zu arbeiten
Die Arbeit mit einem verteilten Netzwerk ist ein ziemlich kompliziertes Thema, bei dem normalerweise die folgenden Probleme auftreten. Eine davon besteht in der Methode zum Überprüfen der von einem verteilten Netzwerk empfangenen Daten, und die zweite besteht darin, die Speicherung dieser Daten zu optimieren. Diese Anforderungen stehen in einem gewissen Konflikt, da eine größere Menge gespeicherter Daten eine vollständigere Überprüfung neuer Transaktionen und Blöcke ermöglicht. Es gibt keine ideale Lösung für diese Probleme. Es ist unmöglich, Transaktionen sowohl zuverlässig als auch mit minimalen Ressourcen zu verarbeiten. Sie müssen also nach einem Gleichgewicht suchen, einem Kompromiss zwischen Einfachheit und Sicherheit.
Ein weiteres Problem ist wie folgt. Um den Transaktionsverlauf an einer bestimmten Adresse auf einem vollständigen Netzwerkknoten abzurufen, müssen Sie die gesamte Blockchain (von der Genesis bis zur letzten bekannten) durchlaufen, was lang genug ist, da dies eine große Datenmenge ist und Brute Force ein wenig effektiver Ansatz ist. Daher können Sie bestimmte Ansätze verwenden, um Abfragen zu optimieren. Zu diesem Zweck werden über einen regulären Netzwerkknoten spezielle Add-Ons verwendet, mit deren Hilfe die Blockchain indiziert und einige Daten zwischengespeichert werden können, um die Suche nach gängigen Metriken zu beschleunigen. Nach diesem Prinzip funktioniert jeder Blockchain-Explorer, z. B. blockchain.info, der schnell Daten zu fast jeder Adresse, zu jeder Transaktion usw. zurückgibt.
Es gibt also mehrere grundlegend unterschiedliche Ansätze für die Implementierung der Interaktion und Synchronisation einer digitalen Geldbörse mit einem verteilten Netzwerk. Schauen wir sie uns an.
Wallet-Synchronisationsansätze mit einem Zahlungsnetzwerk
Es gibt drei Hauptansätze. Bei der ersten wird davon ausgegangen, dass die Brieftasche selbst ein vollständiger Knoten des Bitcoin-Netzwerks ist. Der zweite Ansatz verwendet den sogenannten vertrauenswürdigen Knoten. Tatsächlich ist dies ein seltsamer Host, aber der Brieftaschenbenutzer vertraut ihm. Der dritte Ansatz umfasst die direkte Interaktion mit anderen Netzwerkknoten, jedoch in einer kompakten Version unter Verwendung der SPV-Methode (Simplified Payment Verification). Mit dieser Technik können Sie die Gültigkeit von Transaktionen mit einem relativ hohen Maß an Zuverlässigkeit überprüfen, jedoch nicht auf den Start eines vollständigen Netzwerkknotens zurückgreifen. Schauen wir uns jeden dieser Synchronisationsansätze genauer an.

Arbeiten Sie mit einem vollständigen Host
Im ersten Fall ist alles ganz einfach. Ihre Brieftasche verfügt über ein Modul, in dem die gesamte Blockchain gespeichert ist, und ein Modul, das mit anderen Knoten des Bitcoin-Netzwerks kommuniziert. Daher können Sie eine neue eingehende Transaktion jederzeit überprüfen: Entspricht sie wirklich den Regeln des Protokolls, verursacht sie doppelte Kosten usw. Sie üben die vollständige Kontrolle über die Datenüberprüfung aus.
Der Nachteil dieses Ansatzes ist die Notwendigkeit, eine große Menge an Speicherplatz zum Speichern der gesamten Blockchain zuzuweisen, um den Netzwerkknoten in einem unterbrechungsfreien Betrieb zu halten und zeitnahe Software-Updates durchzuführen.
Diese Methode wird von normalen Benutzern verwendet, die regelmäßig Zahlungen in großen Mengen akzeptieren und senden, was ein hohes Maß an Zuverlässigkeit erfordert. Darüber hinaus verwenden alle wichtigen Dienste, die die Möglichkeit der zentralen Speicherung von Bitcoins und des Online-Zugriffs auf die Brieftasche bieten, diesen Ansatz. Weil hohe Anforderungen an die Sicherheit sowie an die unabhängige Arbeit mit Bitcoin gestellt werden.
Es ist wichtig zu verstehen, dass der Benutzer eines zentralen Bitcoin-Speichers vollständig von diesem Dienst und dem korrekten Betrieb des von diesem Dienst verwendeten Netzwerkknotens abhängt. Wenn Münzen in einem solchen Dienst gespeichert sind, gehören sie nicht dem Benutzer, sondern dem Dienst.
Beachten Sie, dass die Verwendung dieses Ansatzes selbst für den durchschnittlichen Benutzer eine der einfachsten und zuverlässigsten ist. Dazu müssen Sie nur den Quellcode oder vorgefertigte Binärdateien, z. B. Bitcoin Core, verwenden und die Software ausführen. Ein wesentlicher Nachteil kann nur die Anforderungen an den Computer berücksichtigt werden.
Arbeiten Sie mit einem vertrauenswürdigen Host
Der Unterschied zwischen diesem und dem vorherigen Ansatz besteht in der Trennung von Wallet-Logik und Transaktionsverifizierungslogik. Es gibt einen sogenannten vertrauenswürdigen Bitcoin-Netzwerkknoten. Grob gesagt ist dies der häufigste vollständige Bitcoin-Netzwerkknoten, dem der Benutzer die Überprüfung seiner Transaktionen anvertraut. Zum Beispiel könnte es ein Host sein, den sein Freund unterstützt, und der Benutzer kann ihm die Überprüfung seiner Transaktionen anvertrauen.
Sehr oft wird dieser Ansatz in mobilen digitalen Geldbörsen verwendet. Angenommen, ein Unternehmen, das eine mobile Geldbörse entwickelt, unterstützt vertrauenswürdige Websites und verspricht, die korrekte Überprüfung von Transaktionen sicherzustellen. In diesem Fall vertrauen Benutzer das Unternehmen dem Entwickler einer digitalen Geldbörse an und glauben tatsächlich an die Versprechen. Gleichzeitig lohnt es sich zu verstehen, dass der Benutzer seine privaten Schlüssel unabhängig speichern und Transaktionen auf seinem Gerät sicherstellen kann. Der Benutzer überprüft jedoch nicht den Status der Transaktionsbestätigung, sondern fragt den vertrauenswürdigen Knoten.
Was sind die Vor- und Nachteile dieses Ansatzes? Wie im vorherigen Fall können Sie, wenn auch indirekt, die Überprüfung von Transaktionen im Bitcoin-Netzwerk beeinflussen, da der Benutzer immer noch einen vertrauenswürdigen Netzwerkknoten hat. Der Vorteil besteht darin, dass keine vollständige Kopie der Blockchain auf dem Gerät gespeichert werden muss. Die Abhängigkeit von einem vertrauenswürdigen Knoten ist jedoch ein Nachteil, da der Benutzer im Falle eines Ausfalls nicht immer zu einem anderen vertrauenswürdigen Knoten wechseln kann. Da die Überprüfung von Transaktionen auf einem Remote-Server erfolgt, müssen Sie die Zuverlässigkeit des Datenübertragungskanals zwischen der Brieftasche und dem Server sicherstellen, auf dem die Überprüfung stattfindet. Bei diesem Ansatz treten Bedrohungen wie „Mann in der Mitte“ auf.
Wenn ein vertrauenswürdiger Host verwendet wird, werden private Schlüssel getrennt von den Brieftaschenadressen gespeichert. In diesem Fall kann der Knoten selbst die Änderungen, an welchen Adressen er verfolgen muss, nicht zuverlässig kennen. Dies bedeutet, dass die digitale Geldbörse den vertrauenswürdigen Knoten von Zeit zu Zeit über die Liste der Adressen informieren sollte, die ihn interessieren.
Der Nachteil dieses Ansatzes ist die Abhängigkeit der digitalen Geldbörse vom vertrauenswürdigen Knoten, insbesondere hinsichtlich des Zugriffs auf relevante Daten des Zahlungssystems. Sobald der Benutzer den Zugriff auf den vertrauenswürdigen Knoten verliert oder der Knoten den Dienst verweigert, verliert der Benutzer die Verbindung zum Netzwerk. Dementsprechend verliert der Benutzer die Fähigkeit, Zahlungen zu empfangen und zu senden. Um das Risiko zu verringern, den Zugriff auf eine vertrauenswürdige Site zu verlieren, können Sie mehrere vertrauenswürdige Sites auswählen. Dies bedeutet, dass der Benutzer unter normalen Bedingungen eine Verbindung zu einem vertrauenswürdigen Knoten herstellt und mit diesem arbeitet. Wenn jedoch der Zugriff verloren geht, stellt die digitale Geldbörse automatisch eine Verbindung zu einem anderen vertrauenswürdigen Knoten her. Tatsächlich wählt die Brieftasche bei jeder Verbindung zufällig einen Knoten aus der Liste der vertrauenswürdigen aus.
Diese Methode wird hauptsächlich von mobilen Geldbörsen verwendet, da Sie damit Transaktionen überprüfen und den Betrieb der mobilen Anwendung vereinfachen können. Beispiele für solche Bitcoin-Geldbörsen sind Mycelium und Coinomi. Distributed Lab hat auch eine Brieftasche namens Bitxfy entwickelt und verwaltet, in der dieser Ansatz angewendet wird.
Arbeiten Sie mit einem SPV-Host
Der dritte gängige Ansatz zum Synchronisieren einer digitalen Geldbörse mit einem Bitcoin-Netzwerk ist ein kompakter Netzwerkknoten. Dies ist eine vereinfachte Zahlungsüberprüfung (SPV). Bei diesem Ansatz müssen Sie möglicherweise nicht Ihre vollständigen Knoten ausführen oder vertrauenswürdige auswählen. Es wird davon ausgegangen, dass die digitale Geldbörse direkt mit anderen Knoten des Netzwerks kommuniziert: Tatsächlich wählt sie mehrere zehn vollständige Knoten anderer Personen aus und unterhält eine Verbindung zu ihnen. Der Unterschied besteht darin, dass der Lightweight-Knoten zu gleichen Bedingungen mit anderen Knoten kommuniziert und P2P-Nachrichten mit ihnen austauscht, jedoch nicht den gesamten Transaktionsverlauf speichert. Hier wird zur Überprüfung eingehender Transaktionen die SPV-Technik verwendet. Tatsächlich führt ein Lightweight-Knoten nur einen Teil der wichtigsten Überprüfungen derjenigen durch, die einen vollständigen Netzwerkknoten durchführen.
Wie funktioniert die Arbeit in diesem Fall? Anstatt wie ein vollständiger Knoten Blöcke zu empfangen, empfängt ein SPV-Knoten nur Blockheader, die viel kleiner sind (80 Byte). Der Header enthält die erforderlichen Daten, um die Bestätigung einer bestimmten Transaktion in diesem Block zu überprüfen. Insbesondere gibt es im Blockheader ein Merkle-Root-Feld, in dem der Hash-Wert aller Transaktionen im Block berechnet wird, der gemäß dem Merkle-Tree-Schema berechnet wird.

Mit dem Merkle Tree-Schema können Sie überprüfen, ob der Hash-Wert einer bestimmten Transaktion in der Merkle Root enthalten ist, ohne dass alle anderen Transaktionen im Block enthalten sind. Mit einer Transaktion, einem Blockheader und Merkle Branch für diese Transaktion (Sie können sie von einem vollständigen Knoten anfordern) kann eine digitale Geldbörse sicherstellen, dass die Transaktion tatsächlich in einem bestimmten Block bestätigt wurde.
Warum kann dies nicht als vollständige Überprüfung von Transaktionen angesehen werden? Natürlich erlangt der Benutzer Unabhängigkeit von bestimmten Netzwerkknoten und kann direkt mit einem verteilten Netzwerk kommunizieren. Dazu muss er nicht die gesamte Blockchain speichern. Der Nachteil ist jedoch, dass der Lightweight-Client die Transaktion nicht unabhängig vollständig überprüft, da Sie nicht über alle erforderlichen Daten verfügen (z. B. nicht ausgegebene Münzen). Er überprüft nur die Tatsache der Validierung der Transaktion durch Validatoren - das heißt, er stellt sicher, dass diese Transaktion von anderen Knoten und Eigentümern des Großteils der Rechenleistung des Netzwerks (Miner) vollständig überprüft wurde. In diesem Fall kommt es wiederum auf die Zuverlässigkeit an, dass der größte Teil der Verarbeitungsleistung für einen fairen Betrieb verwendet wird. Mit anderen Worten, Sie überprüfen die Transaktion nicht selbst, sondern vertrauen der Mehrheit.
Ein Merkmal der Verwendung digitaler Geldbörsen, die den SPV-Knotenansatz implementieren, ist die Notwendigkeit, eine Netzwerkverbindung mit einer großen Anzahl unabhängiger vollständiger Netzwerkknoten aufrechtzuerhalten. Dies ist erforderlich, um die Wahrscheinlichkeit zu minimieren, dass der Knoten nur von den Knoten des Angreifers eine Verbindung herstellt und Daten empfängt. Dann kann der Angreifer dem Benutzer einen alternativen (gefälschten) Status des Transaktionsverlaufs auferlegen. Infolgedessen kann das Opfer die Zahlung aus der Transaktion akzeptieren, die gemäß der Version des Angreifers bestätigt wird, obwohl dies tatsächlich nicht der Fall ist. Um die Wahrscheinlichkeit zu erhöhen, aktuelle Daten über den tatsächlichen Status des Netzwerks zu empfangen, sollte der Benutzer die Anzahl der unabhängigen Knoten für die Kommunikation maximieren. Je mehr es gibt, desto weniger wahrscheinlich sind sie alle in einer Verschwörung gegen den Benutzer.
Wie Sie bereits verstanden haben, fordern SPV-Knoten einen stabilen Betrieb der Netzwerkverbindung, werden jedoch häufig auch in mobilen Anwendungen verwendet. Dieser Synchronisationsansatz mit dem Zahlungsnetzwerk ist weit verbreitet und wird in einer Reihe beliebter Bitcoin-Geldbörsen verwendet. Unter ihnen sind Bitcoin Wallet, Electrum sowie Bread Wallet.
Häufig gestellte Fragen
"Wo finde ich vollständige Knoten, denen Sie vertrauen können?"Es ist schwer genug zu beantworten, welchen Knoten Sie vertrauen können. Dies ist eine Frage der persönlichen Präferenz. Es gibt Dienste, die vertrauenswürdige Informationen bereitstellen, wie z. B. Blockchain.info, denen selten jemand vertraut, insbesondere wenn es um große Mengen geht. Bei der Auswahl eines vertrauenswürdigen Knotens muss sehr vorsichtig vorgegangen werden, da dieser ein Vermittler zwischen dem Benutzer und dem Zahlungsnetzwerk ist. Nachdem Blockchain.info aufgrund von Problemen mit dem DNS-Anbieter zwei Tage lang abgestürzt war, konnten Wallets, die Blockchain.info als vertrauenswürdigen Knoten verwendeten, nicht mit dem Bitcoin-Netzwerk synchronisiert werden und funktionierten zumindest irgendwie.
- Welche Garantien gibt das Brieftaschenteam und welche Verantwortung trägt es?Dieses Problem ist eher legal als technisch. Jede Software, die offiziell vertrieben wird, hat „Nutzungsbedingungen“, in denen angegeben ist, was Sie Entwicklern präsentieren können, wenn bestimmte Probleme in ihrer Software auftreten. "Nutzungsbedingungen" unterscheiden sich in verschiedenen Anwendungen. Wie immer beantwortet der Benutzer die Frage, ob er den Entwicklern vertraut oder nicht, bevor er mit der Verwendung ihres Produkts beginnt.
- Wer entscheidet, ob ein vertrauenswürdiger Knoten?Nur der Benutzer, dem die Brieftasche gehört. Der Wert vertrauenswürdiger Websites besteht darin, die Brieftasche erheblich zu vereinfachen. Sie wählen einen bestimmten Knoten aus, dem Sie die Transaktionsüberprüfung vertrauen. Er übernimmt die gesamte Last der Durchführung von Überprüfungsvorgängen, und Sie vertrauen den Netzwerkstatusdaten, die er an Sie weitergibt. Dies ist eine Frage des persönlichen Vertrauens und mehr.
- Wie viele vertrauenswürdige Sites können sein?Sie können eine beliebige Anzahl vertrauenswürdiger Knoten auswählen, um das Risiko eines Verlusts des Netzwerkzugriffs zu minimieren. Zum Beispiel drei Knoten. Wenn Sie Probleme beim Zugriff auf den ersten haben, stellen Sie eine Verbindung zum zweiten her und arbeiten genauso weiter.
- Was passiert mit den Münzen, wenn die Server, auf denen sie gespeichert sind, durch das Erdbeben ganz oder teilweise zerstört werden?Hier muss nicht über Münzen gesprochen werden, sondern über die Aufbewahrung von Schlüsseln, mit denen auf diese Münzen zugegriffen wird. Betrachten Sie zwei Optionen für eine Situation. Wenn der Server, der den Zugriff auf das Bitcoin-Netzwerk bereitgestellt hat, zerstört wird. Dass es Sie in keiner Weise beeinflusst. Sie verlieren vorübergehend den Zugriff auf die verteilte Datenbank, haben jedoch weiterhin Schlüssel, mit denen Sie diese Münzen ausgeben können. Wenn der Server, auf dem Ihre Schlüssel gespeichert wurden, zerstört wird und Sie keine Sicherungskopie dieser Schlüssel haben, können Sie nicht auf Ihre Münzen zugreifen.
- Ist es sicher, eine Brieftasche zu legen, Münzen darauf zu legen, eine Samenphrase auf Papier zu schreiben und sie zu löschen?In der Tat ja. Sie müssen die Startphrase speichern - dies ist ein ausreichendes Minimum. Die Blockchain speichert Informationen darüber, welche Münzen an welchen Adressen gespeichert sind. Sie müssen Ihre privaten Schlüssel speichern, um auf diese Münzen zugreifen zu können. In Ihrem Fall ist dies eine Startphrase.
- Ist es möglich, lokal ein Add-On in die Blockchain einzufügen, um Daten in der Blockchain analysieren zu können?Sie können jede Software hinzufügen, die die Blockchain analysiert. Dies kann Software sein, die vom Benutzer selbst geschrieben wurde, oder es kann eine schlüsselfertige Lösung geben. Es hängt alles von Ihren Zielen ab. Wenn Sie Abfragen optimieren möchten, um nach bestimmten Transaktionen zu suchen, die an bestimmte Adressen gebunden sind, wie dies der Blockchain-Explorer tut, können Sie eine Software verwenden, die die Blockchain indiziert und bestimmte Daten zwischenspeichert. Ein Beispiel für eine solche Software ist BitCore (von BitPay unterstützt). BitCore ist Open Source und kann einfach zusammen mit Ihrer gesamten Site verwendet werden.