Kapitel 6

Kapitel 6

Peer-to-Peer-Netzwerkarchitektur

Bitcoin ist SPIL eine Peer-to-Peer-Netzwerkarchitektur auf dem Internet aufgebaut. Der Begriff Peer-to-Peer oder P2P, bedeutet, dass die Computer, auf denen te das Netzwerk teilnehmen, sind Peers zueinander, dass sie alle gleich sind, dass es keine „speziellen“ Knoten sind, und dass alle Knoten teilen sich die Ladung der Bereitstellung Netzwerkdienste. Der Netzwerk Knoten Verbindungs ​​ter ein Mesh-Netzwerk mit einer „Ebene“ Topologie. Es gibt keinen Server, keine zentrale Dienst und keine Hierarchie innerhalb des Netzes. Knoten te ein Peer-to-Peer-Netzwerk sowohl liefern und verbrauchen Dienstleistungen zur gleichen Zeit mit der Gegenseitigkeit für die Teilnahme spil den Anreiz wirkt. Peer-to-Peer-Netzwerke sind von Natur aus robust, dezentralisiert, und offen. Das herausragende Beispiel für eine P2P-Netzwerk-Architektur wasgoed das frühe Internet selbst, wo Knoten auf dem IP-Netz gleich waren. Das heutige Internet-Architektur ist hierarchisch, aber das Internet-Protokoll behält noch seine Flat-Topologie Wesen. Darüber hinaus Bitcoin ist die größte und erfolgreichste Anwendung von P2P-Technologien opstopping Sharing mit Napster spil Pionier und BitTorrent spil die meisten neueste Entwicklung der Architektur.

Bitcoin ist P2P-Netzwerk-Architektur ist viel mehr als eine Topologie Wahl. Bitcoin ist ein Peer-to-Peer-System digital contant durch vormgeving und die Netzwerkarchitektur ist sowohl eine Reflexion und eine Grundlage dieser Kerncharakteristik. Dezentralisierung der Steuerung ist ein Kern vormgeving Prinzip und das kann nur durch eine Ebene, dezentralisierten P2P-Netzwerk overeenstemming erreicht und aufrechterhalten wird.

Der Begriff „bitcoin Netzwerk“ bezieht sich auf die Sammlung von Knoten, die bitcoin P2P-Protokoll ausgeführt wird. Te Neben dem Bitcoin P2P-Protokoll, es gibt auch andere Protokolle, wie spil Stratum, die für den Bergbau verwendet werden und leichte oder mobile Wallets. Thesis zusätzliche Protokolle werden von Gateway-Routing-Server zur Verfügung gestellt, die das Bitcoin-Netzwerk unter Verwendung des Bitcoin P2P-Protokoll zugreifen, und erweitern dann das Netzwerk Knoten laufen andere Protokolle. Zum Beispiel verbindet Stratum-Server Stratum Bergbau Knoten über das Stratum-Protokoll an das Haupt bitcoin Netzwerk und überbrückt das Stratum-Protokoll an das Bitcoin P2P-Protokoll. Wij verwenden den Begriff „extended Bitcoin-Netzwerk“, um das Gesamtnetz zu beziehen, die die Bitcoin P2P-Protokoll, Pool-Mining-Protokolle verbinden, das Stratum Protokoll und alle anderen verwandten Protokollen, die Komponenten des Bitcoin-System enthält.

Knots Typen und Rollen

Wenn auch nur die Knoten bitcoin P2P-Netzwerk gleich Te-, können sie auf verschiedene Rollen übernehmen die Funktion in Abhängigkeit sie unterstützen. Ein Bitcoin Knoten ist eine Sammlung von Funktionen: Routing, die blockchain Datenbank, Bergbau und Brieftaschen-Dienste. Insgesamt Knoten mit allen vier Funktionen Dissertation Te Abbildung 6-1 gezeigt.

Alle Knoten sind die Routing-Funktion te am Netzwerk teilnehmen und könnte andere Funktionalität umfassen. Alle Knoten validieren und propagieren Transaktionen und blockiert, und erkennen und pflegen Verbindungen zu Gleichaltrigen. Ter Voll Knoten Beispiel te Abbildung 6-1 wird die Routing-Funktion durch einen orangefarbenen Kreis mit dem Namen angegeben „Netzwerk-Routing-Knoten.“

Einige Knoten, völliger Knoten genannt, halten auch erreichen und up-to-date Kopie des blockchain. Insgesamt Knoten autonom und autoritativ jede Transaktion ohne äußere Referenz überprüfen. Einige Knoten halten nur eine Teilmenge der blockchain und überprüfen Transaktionen unter Verwendung eines Verfahrens vereinfachte Zahlungsüberprüfung genannt, oder SPV. Thesis Knoten sind spil SPV oder leichte Knoten bekannt. Ter Voll Knoten Beispiel ter die Figur ist die Vollknoten blockchain Datenbankfunktion wird durch einen blauen Kreis mit dem Namen angegeben „Total Blockchain.“ Ter Abbildung 6-3 sind SPV Knoten ohne den blauen Kreis gezogen, was zeigt, dass sie nicht über eine Gesamt Kopie des blockchain haben.

Mining Knoten Herausforderung frische Blöcke zu schaffen, indem spezielle Hardware läuft die Proof-of-Arbeit Algorithmus zu lösen. Einige Bergbau Knoten sind auch insgesamt Knoten, insgesamt Kopie des blockchain beibehalten, während andere leichte Knoten teilnehmenden ter Pool Bergbau sind und in Abhängigkeit von einem Pool-Server insgesamt Knoten zu halten. Die Bergbau-Funktion te den Gesamt Knoten spil einem schwarzen Kreis mit dem Namen gezeigt „Miner.“

Benutzer Mappen könnten Teil eines Gesamt Knoten sein, ist SPIL in der Regel der Fall mit Desktop bitcoin Kunden. Zunehmend viele Benutzer Geldbörsen, insbesondere die, die laufen auf ressourcenbeschränkte Geräte wie Smartphones spil, sind SPV Knoten. Die Brieftasche Funktion ter Abbildung 6-1 spil einem grünen Kreis mit dem Namen „Wallet“ gezeigt.

Te Zusätzlich zu den wichtigsten Knotentypen auf dem Bitcoin P2P-Protokoll gibt es Server und Knoten laufen andere Protokolle, wie spil spezialisierten Bergbau Pool Protokolle und leichte Client-Zugriffsprotokolle.

Abbildung 6-2 zeigt die häufigsten Knotentypen auf dem erweiterten bitcoin Netzwerk.

Das erweiterte Bitcoin-Netzwerk

Das Haupt Bitcoin-Netzwerk, das Bitcoin P2P-Protokoll läuft, besteht aus Inbetween 7000 und Zehn, 000 Hören Knoten verschiedene Versionen des Bitcoin-Referenz-Client (Bitcoin Core) und ein paar hundert Knoten laufen verschiedene andere Implementierungen des Bitcoin P2P-Protokoll, wie spil läuft BitcoinJ, Libbitcoin und btcd. Ein mickrig Prozentsatz des Knoten auf dem Bitcoin P2P-Netzwerk ist der Bergbau Knoten auch, te des Mining-Prozesses bestreitet, Validierung Transaktionen, und die Schaffung von neuen Blöcken. Verschiedene großen Firmen-Schnittstelle mit dem Bitcoin-Netzwerk von Voll Knoten Clients im Bitcoin-Core-Client, mit äußersten Kopien des blockchain und einem Netzwerk Knoten basierte laufen, aber ohne den Bergbau oder Brieftasche Funktionen. Thesis Knoten fungieren spil Netzwerk-Edge-Router, verschiedene andere Dienste (Austausch, Mappen, Block Entdecker, Händler die Zahlungsabwicklung) ermöglicht auf gebaut werden.

Das erweiterte Bitcoin-Netzwerk umfasst das Netzwerk das Bitcoin P2P-Protokoll ausgeführt wird, bereits beschrieben, spil gut spil Knoten laufen spezielle Protokolle. Verbunden mit dem Haupt Bitcoin P2P-Netzwerk eine Reihe von Pool-Server und Protokoll-Gateways sind die Knoten laufen andere Protokolle verbinden. Thesis andere Protokolle Knoten sind meist Pool Bergbau Knoten (siehe Kapitel 8) und leichte Brieftasche Kunden, die keine Gesamt Kopie des blockchain tragen.

Abbildung 6-3 zeigt das erweiterte bitcoin Netz mit den verschiedenen Arten von Knoten, Gateway-Server, Edge-Router, und Geldbeutel-Clients und die verschiedenen Protokollen, die sie miteinander verbinden.

Netzwerkerkennung

Wenn ein frischer Knoten bootet, vereiste es andere Bitcoin Knoten im Netzwerk te zu beteiligen, um zu erfassen. Um diesen Prozess zu beginnen, vereiste ein frischer Knoten im Netzwerk mindestens einen vorhandenen Knoten erkennen und sich mit ihm verbinden. Die geographische Lage von anderen Knoten ist irrelevant, wird die Bitcoin-Netzwerk-Topologie nicht geographisch definiert. Daher können alle vorhandenen Bitcoin Knoten zufällig ausgewählt werden.

Um zu einem bekannten peer Verbindung, Knoten eine TCP-Verbindung herzustellen, in der Regel an Port 8333 (dem Port allgemein spil eines bekannten bitcoin verwendet) oder einen alternativen Anschluss, wenn ein vorgesehen ist. Beim Verbindungsaufbau wird der Knoten beginnt eine „Handshake“ (siehe Figur 6-4), indem eine Versionsnachricht zu übertragen, die grundlegenden Identifikationsinformationen enthält, einschließlich:

(Siehe GitHub für ein Beispiel der Versionsnetzwerknachricht.)

Der Peer-Knoten antwortet mit verack eine Verbindung zu erkennen und zu etablieren, und sendet optional eine eigene Version Nachricht, wenn es wünscht, um die Verbindung zu erwidern und verbinden spil einen Peer zurück.

Wie kommt ein frischer Knoten Kollegen finden? Die erste Methode ist DNS mit einer Reihe von „DNS-Samen“ abfragen, die DNS-Server sind, die eine Liste von IP-Adressen von Bitcoin Knoten liefern. Einige dieser DNS-Samen liefern eine statische Liste von IP-Adressen von stabilen bitcoin Zuhören Knoten. Einige der DNS-Samen sind maßgeschneiderte Implementierungen von Tie (Berkeley Internet Name Daemon), die eine zufällige Teilmenge aus einer Liste von Bitcoin Knoten Adressen zusammengestellt von einem Crawler oder eine lang andauernde Bitcoin Knoten terugwedstrijd. Die Bitcoin-Core-Client enthält die Namen von fünf verschiedenen DNS-Samen. Die Vielfalt des Eigentums und die Vielfalt der Umsetzung des verschiedenen DNS-Samen bietet eine hohe Zuverlässigkeit oder für den ersten Bootstrap-Prozess. Ter der Bitcoin Core-Client, die Möglichkeit, den DNS-Samen zu verwenden, wird von den Optionsschaltern -dnsseed verwaltet (auf 1 gesetzt, standardmäßig den DNS-Samen zu verwenden).

Alternativ, die ein Bootstrap-Knoten nichts von dem Netzwerk voorwaarde kennt Adresse von mindestens einen Bitcoin Knoten die IP gegeben werden, wonach es Verbindungen durch weitere Einführungen zu etablieren. Das Befehlszeilenargument -seednode kann verwendet werden, um einen Knoten für Einführungen nur zu verbinden, ist es spil ein Samens verwendet wird. Nachdem die anfänglichen Samen Knoten verwendet wird Einführung zu bilden, wird der Client von ihm trennen und den frisch entdeckt Peers verwenden.

Sobald eine oder mehr Verbindungen aufgebaut werden, wird der frische Knoten eine Adr Nachricht mit seiner eigenen IP-Adresse zu seinen Nachbarn senden. Die Nachbarn, ter wiederum leiten die Adr Botschaft an ihre Nachbarn zu gewährleisten, dass der frisch verbundene Knoten gut bekannt wird und besser verbunden. Zusätzlich kann der frisch verbundene Knoten getaddr zu den Nachbarn senden, um sie zu Comeback eine Liste der IP-Adressen von anderen Peers zu fragen. Auf diese Weise kann ein Knoten Peers zu verbinden finden und seine Existenz im Netzwerk zu werben für andere Knoten zu finden. Abbildung 6-5 zeigt das Adresserkennungsprotokoll.

Ein Knoten voorwaarde auf wenige verschiedene Peers verbinden te um die vielfältigen Wege in die bitcoin Netzwerk aufzubauen. Pfade sind nicht zuverlässig-Knoten kommen und gehen-und so vereiste der Knoten gehen frischen Knoten zu erkennen spil es alte Verbindungen verliert andere Knoten SPIL gut spil unterstützen, wenn sie Bootstrap. Nur eine Verbindung Bootstrap benötigt, da der erste Knoten Einführungen in seinen Peer-Knoten vorschlagen kann, und diese Peers können weitere Einführungen vorschlagen. Es ist auch nicht notwendig, und verschwenderisch Ressourcen des Netzes, um mehr als eine Handvoll von Knoten zu verbinden. Nach Bootstrapping wird ein Knoten seiner jüngsten erfolgreichen Peer-Verbindungen Revue passieren lassen, so dass, wenn es neu gestartet wird es schnell Verbindungen mit seinem früheren Peer-Netzwerk wiederherstellen kann. Falls keine der früheren Kollegen seine Verbindungsanfrage reagieren, kann der Knoten die Samen Knoten verwenden, um wieder Bootstrap.

Auf einem Knoten des Bitcoin-Core-Client ausgeführt wird, können Sie die Peer-Verbindungen mit der Richtlinie getpeerinfo Liste:

Um die automatische Verwaltung von Peers außer Kraft setzen und eine Liste von IP-Adressen angeben, können die Benutzer die Möglichkeit bieten -connect =<, IPAddress>, und geben Sie eine oder mehrere IP-Adressen. Wenn diese Option verwendet wird, wird der Knoten nur auf die ausgewählten IP-Adressen verbinden, statt zu entdecken und die Peer-Verbindungen automatisch beibehalten wird.

Wenn es kein Verkehr auf eine Verbindung, Knoten wird in regelmäßigen Abständen eine Nachricht senden, um die Verbindung aufrecht zu erhalten. Wenn ein Knoten auf eine Verbindung für mehr als 90 Minuten nicht mitgeteilt hat, wird davon ausgegangen werden getrennt und ein neuer Peer gesucht werden. Somit stellt das Netzwerk dynamisch transienten Knoten und Netzwerkprobleme und kann organisch wachsen und SPIL ohne zentrale Steuerung erforderlich schrumpfen.

insgesamt Knots

Insgesamt Knoten sind Knoten, die insgesamt blockchain mit allen Transaktionen aufrechtzuerhalten. Genauer gesagt, sollten sie sehr wahrscheinlich „völligen blockchain Knoten“ bezeichnet werden. Te die frühen Jahre von Bitcoin waren alle Knoten völliger Knoten und gegenwärtig der Bitcoin-Core-Client ist ein Gesamt blockchain Knoten. Te in den letzten zwei Jahren jedoch frische Formen der bitcoin Kunden haben Bot eingeführt, die kein Gesamt blockchain halten, sondern SPIL leichte Kunden laufen. Wir These ter näher ter nächsten Abschnitt untersuchen.

Insgesamt blockchain Knoten halten ein erreichen und up-to-date Kopie des Bitcoin mit allen Transaktionen blockchain, die sie unabhängig bauen und überprüfen, mit dem sehr ersten Block beginnen (Genesis-Block) und auf den neuesten bekannten Block ter Aufbau des Netzwerk. Insgesamt blockchain Knoten unabhängig und autorisierende jede Transaktion ohne Rückgriff oder das Vertrauen auf anderen Knoten oder Informationsquelle prüfen. Die Gesamt blockchain Knoten verlässt sich auf die Netzwerk-Updates über neue Blöcke von Transaktionen zu erhalten, die sie überprüft dann, und enthält in seine lokale Kopie der blockchain.

eine völlige blockchain Knoten Laufen gibt Ihnen die zuivere bitcoin Praxis: eine unabhängige Überprüfung aller Transaktionen ohne die Notwendigkeit auf, oder Vertrauen angewiesen, alle anderen Systeme. Es ist leicht zu sagen, wenn Sie insgesamt Knoten laufen, weil es mehr als 20 Gigabyte persistenter Speicher (Speicherplatz) erfordert die völlige blockchain zu speichern. Wenn Sie eine lotsbestemming Platten benötigen und es dauert zwei bis drei Tage, um das Netzwerk zu synchronisieren, führen Sie eine völlige Knoten. Das ist der Preis der Oberfläche Unabhängigkeit und Freiheit von Zentralbehörde.

Es gibt ein paar alternativen Implementierungen der völligen blockchain bitcoin Kunden, Architekturen mit unterschiedlichen Programmiersprachen und Software integriert. Allerdings ist die häufigste Anwendung ist die Referenz-Client Bitcoin Core auch spil der Satoshi Client bekannt. Mehr als 90% der Knoten auf der Bitcoin-Netzwerk laufen verschiedene Versionen von Bitcoin-Core. Es wird ter der Versionsnachricht und dargestellt durch die spil wij getpeerinfo Anweisung gesendet spil „Satoshi“ te die Unterversion Zeichenfolge identifiziert beäugte früher zum Beispiel /Satoshi:0.8.6/.

Der Austausch von „Inventar“

Das allererste, was ein völliger Knoten tun, sobald es zu Gleichaltrigen verbindet, ist versucht, ein Finish blockchain zu konstruieren. Wenn es sich um eine brandneue Knoten ist und keine blockchain überhaupt, es kennt nur einen Block, der Genese Block, der statisch ter der Client-Software eingebettet ist. Beginnend mit Block # 0 (der Genesis-Block), werden die frischen Knoten müssen Hunderttausende von Blöcken herunterladen mit dem Netzwerk zu synchronisieren und der Gesamt blockchain wieder herzustellen.

Wobei das Verfahren die blockchain der Synchronisierung beginnt mit der Versionsnachricht, denn das enthält BestHeight ein Knoten des aktuellen blockchain Höhe (Anzahl von Blöcken). Ein Knoten wird die Versions Nachrichten von seinen Kollegen zu sehen, die wissen, wie viele Blöcke haben sie jeweils, und in der Lage sein, um zu vergleichen, wie viele Blöcke hat ter seine eigene blockchain. Spähte Knoten eine 605,420% %%% getblocks Nachrichtenaustausch, die den hash (Fingerabdruck) des oberen Blocks auf ihrem lokalen blockchain enthält. Einer der Peers in der Lage, die empfangene Hash-spil Zugehörigkeit zu einem Block zu identifizieren, die nicht an der Spitze ist, sondern gehört zu einem älteren Block, so herzuleiten, dass seine eigene lokale blockchain länger ist als seine Peers.

Der Peer, dass die längere blockchain hat mehr Blöcke als der andere Knoten und kann bestimmen, welche Blöcke die anderen Knoten benötigt te um „aufholen“. Es werden die ersten 500 Blöcke identifizieren ihre Hashes mit Hilfe eines inv (Inventar) Nachricht zu teilen und zu übertragen. Die Knoten fehlen These Blöcke werden sie dann abgerufen werden, indem eine Reihe von Nachrichten getdata Ausgabe des Gesamtblock gegevens anfordernden und die angeforderten Blöcke Identifizierung der Hash-Werte aus der Nachricht unter Verwendung inv.

Nehmen wir an, zum Beispiel, dass ein Knoten nur die Entstehungsgeschichte Block hat. Es wird dann eine inv Nachricht von seinem Kollegen mit dem Hashes der nächsten 500 Blöcke ter die Kette erhalten. Es wird beginnen Blöcke von allen seinen angeschlossenen Peers, die Verbreitung der Explosion anfordert und sicherzustellen, dass es keine Peer mit Anforderungen nicht überwältigen. Der Knoten verfolgt, wie viele Blöcke sind „ter transit“ vanaf Peer-Verbindung, blockiert was bedeutet, dass sie angefordert hat, aber nicht empfangen, prüfen, ob es nicht eine Grenze (MAX_BLOCKS_IN_TRANSIT_PER_PEER) nicht überschreitet. Auf diese Weise, wenn es eine loterijlot von Blöcken benötigt, wird es nur verlangen frische vorherige Anforderungen SPIL erfüllt sind, die Peers ermöglicht das Tempo der Updates zu steuern und das Netz nicht atemberaubend. Spil jeder Block empfangen wird, wird es in die blockchain hinzugefügt wird spil wij te Kapitel 7. Spil sehen die lokale blockchain wenig nach und nach aufgebaut werden mehr Blöcke angefordert und erhalten, und der Prozess wird fortgesetzt, bis der Knoten auf die aufholt Überschuss des Netzes.

Dieser Prozess der den lokalen blockchain mit den Peers zu vergleichen und alle fehlenden Blöcke Abrufen geschieht jedes Mal, wenn ein Knoten für einen beliebigen Zeitraum offline geht. Ob ein Knoten bietet offline für ein paar Minuten und ist nur ein paar Blöcke oder einen Monat fehlen und ein paar tausend Blöcke fehlt, beginnt es durch das Senden getblocks, bekommt eine inv Antwort, und startet die fehlende Blöcke herunterladen. Abbildung 6-6 zeigt das Inventar- und Blockausbreitungs Protokoll.

Vereinfachte Zahlungsüberprüfung (SPV) Knots

Nicht alle Knoten haben die Fähigkeit, die völlige blockchain zu speichern. Viele bitcoin Kunden sind so konzipiert, auf platz- und energiebeschränkte Geräte, wie spil Smartphones, Tablets oder Embedded-Systemen auszuführen. Für solche Vorrichtungen wird eine vereinfachte Zahlungsüberprüfung (SPV) Verfahren verwendet, um sie zu ermöglichen, ohne die Speicherung der völligen blockchain zu betreiben. These Arten von Kunden sind SPV Kunden oder leichte Kunden genannt. Spil bitcoin Annahme Stöße wird der SPV Knoten ist die häufigste Form von Bitcoin Knoten immer, vor allem für Geldbörsen Bitcoin.

SPV Knoten Download nur die Block-Header und nicht herunterladen die Transaktionen enthalten jeden Block te. Die sich ergebende Kette von Blöcken, ohne Transaktionen, ist 1000-mal kleiner als die Gesamt blockchain. SPV Knoten kann nicht ein Gesamtbild aller UTXOs konstruieren, die für Ausgaben zur Verfügung stehen, weil sie nicht wissen, über alle Transaktionen im Netzwerk. SPV Knoten überprüfen Transaktionen eine etwas andere Methode verwenden, die auf Peers beruht teilweise Blick auf relevante Teile der blockchain auf Anfrage.

Spil Analogie ist ein Gesamt Knoten wie ein Tourist eine fremde Stadt te, mit einem detaillierten folder jeder Straße bearbeitetes und jede Adresse. Im Vergleich dazu ist ein SPV Knoten wie ein Tourist eine fremde Stadt zu fragen zufällige Fremde für te Turn-by-Turn-Anweisungen, während nur eine Hauptstraße zu kennen. Wenn auch beide Touristen es durch den Besuch der Existenz einer Straße überprüfen kann, die Touristen ohne Ordner nicht weiß, was eine der Seitenstraßen hinlegt und nicht weiß, was andere Straßen existieren. Platziert te Pui von 23 Church Street, die Touristen ohne Ordner kann nicht wissen, ob es ein Dutzend andere „23 Church Street“ Adressen sind ter die Stadt und ob dies die richtige ist. Die beste Chance des mapless Touristen ist genug, um Menschen zu stellen und hoffen, dass einige von ihnen nicht, ihn zu steekmug versuchen.

Vereinfachte Zahlungsüberprüfung prüft Transaktionen mit Bezug auf ihre Tiefe te die anstelle ihrer Höhe blockchain. Während insgesamt blockchain Knoten eine vollständig verifizierter Kette Tausende von Blöcken und Transaktionen reichend die blockchain (zurück ter Zeit) den ganzen Weg zur Entstehung Block bauen wird, wird ein SPV Knoten die Kette aller Blöcke überprüfen (aber nicht alle Transaktionen) und verbinding diese Kette auf die Transaktion von rente.

Wenn zum Beispiel linksaf alle 300.000 Blöcke bis auf die Entstehungsgeschichte Block einen Transaktion ter Block 300.000, insgesamt Knoten untersuchen und baut insgesamt Datenbank UTXO, die Gültigkeit der Transaktion zur Gründung von Bestätigung, dass die UTXO unverbraucht bleibt. Ein SPV Knoten kann nicht überprüfen, ob die UTXO unverbraucht ist. Stattdessen wird das SPV Knoten eine listig zwischen der Transaktion und dem Block herzustellen, die es enthält, einen Merkle Pfad verwenden (siehe „Hash-Baum“). Dann Knoten der SPV wartet, bis er die sechs Blöcke 300,001 bis 300.006 auf dem Block gestapelt sieht die Transaktion enthält, und überprüft es durch seine Tiefe unter Blöcken 300.006 bis 300,001 etablieren. Die Tatsache, dass andere Knoten im Netzwerk akzeptiert Block 300000 und taten dann die notwendigen Arbeiten sechs weitere Blöcke auf der es zu produzieren ist ein Beweis, durch einen Bevollmächtigten, dass die Transaktion wasgoed keine Doppel verbringen.

Ein SPV Knoten kann nicht dazu gebracht werden, dass eine Transaktion te einen Block existiert, wenn die Transaktion nicht te Tatsache existiert. Die SPV-Knoten stellt die Existenz einer Transaktion te Block durch einen Pfad Merkle Nachweis Anfordern und durch den Nachweis der Arbeits ter der Kette von Blöcken zu validieren. Allerdings kann eine Transaktion Existenz „versteckt“ wird von einem SPV Knoten. Ein SPV Knoten kann sicherlich beweisen, dass eine Transaktion existiert, aber überprüfen kann nicht, dass eine Transaktion, wie spil eine Doppelausgabe des gleichen UTXO, existiert nicht, weil es nicht eine Aufzeichnung aller Transaktionen hat. Diese Sicherheitsanfälligkeit kann ter einen Denial-of-Service-Angriff oder für eine Doppelausgabe Angriff gegen SPV Knoten verwendet werden. Zur Verteidigung gegen diese, ein SPV Knoten muss eine Verbindung zufällig auf mehrere Knoten, um die Wahrscheinlichkeit zu erhöhen, dass sie ter voeling mit mindestens einem fairen Knoten ist. Dieses Bedürfnis nach dem Zufallsprinzip bedeutet zu verbinden, dass SPV Knoten sind auch anfällig Partitionierungs Angriffe oder Sybil Angriffe zu vernetzen, wo sie zu fälschen Knoten oder gefälschte Netzwerken verbunden sind und haben keinen Zugang zu einem fairen Knoten oder das realen Bitcoin-Netzwerk.

Für die meisten praktischen Zwecke gut angebundenen SPV Knoten sind sicher genug, die richtige Balance dazwischen Ressourcenbedarf, Praktikabilität und Sicherheit schlägt. Für absolute Sicherheit, aber Treffer läuft nichts einen völligen blockchain Knoten.

Ein völliger blockchain Knoten überprüft eine Transaktion durch die gesamte Kette von Tausenden von Blöcken darunter Überprüfung te, um sicherzustellen, daß die UTXO nicht ausgegeben wird, während ein SPV Knoten überprüft, wie tief der Block von einer Handvoll von Blöcken darüber begraben ist.

Um die Block-Header, SPV Knoten zu erhalten verwenden, um eine getHeaders Nachricht statt getblocks. Die Reaktion Peer wird eine einzelne Header-Nachricht bis zu zwei 000-Block-Headern. Das Verfahren ist ansonsten die gleiche spil, die von einem Gesamt Knoten verwendet, um insgesamt Blöcken abzurufen. SPV Knoten setzen auch eine filterzakje auf die Verbindung zu Kollegen, den Strom der Zukunft Blöcke und Geschäfte von den Peers gesendet filterzakje. Jegliche Transaktionen rente abgerufen eine getdata Anfrage mit. Der Peer-Nachricht erzeugt eine tx die Transaktionen enthält, Te-Antwort. Abbildung 6-7 zeigt die Synchronisierung von Block-Header.

Da SPV Knoten benötigen bestimmte Transaktionen te abzurufen, um sie selektiv zu überprüfen, sie auch ein Datenschutzrisiko verbunden sein. Im Gegensatz zu insgesamt blockchain Knoten, die alle Transaktionen innerhalb jedes Blocks zu sammeln, die Anfragen des SPV-Knoten für bestimmte gegevens können die Adressen te ihre Brieftasche versehentlich aus. Zum Beispiel könnte ein Dritter eine Netzwerk-Monitoring behält den Überblick über alle von einer Brieftasche auf einem SPV Knoten angeforderten Transaktionen und diejenigen Adressen zu verknüpfen verwendet bitcoin mit dem Benutzer dieser Mappe, ruinierte die Privatsphäre des Nutzers.

Kurz nach der Einführung von SPV / Leicht Knoten, fügten die Bitcoin-Entwickler eine Funktion namens Bloom Filter, um die Risiken für die Privatsphäre von SPV Knoten zu adressieren. Bloom Filter erlauben SPV Knoten eine Teilmenge der Transaktionen zu empfangen, ohne genau aussetzt, welche Adressen, die sie interessiert te sind, durch einen Filtermechanismus, der Wahrscheinlichkeiten anstatt unbewegliche Muster verwendet.

Bloom Filter

A bloom filterzakje ist eine probabilistische Suche filterzakje, eine Möglichkeit, um ein gewünschtes Muster zu beschreiben, ohne es genau zu angibt. Bloom Filter deuten auf eine effiziente Art und Weise ein Suchmuster zum Ausdruck zu bringen, während der Privatsphäre zu schützen. Sie werden von SPV Knoten verwendet, um ihre Kollegen für Transaktionen zu bitten, ein bestimmtes Muster übereinstimmt, ohne genau aussetzt, welche Adressen sie suchen.

Ter unsere bisherige Analogie, ein Tourist ohne Ordner wird nach dem Weg zu einer bestimmten Adresse zu fragen: „23 Kirche St.“ Wenn sie Fremden nach dem Weg zu dieser Straße fragt, sie macht aus Versehen hier Ziel. Eine Blüte filterzakje ist wie zu fragen: „Gibt es irgendwelche Straßen ter dieser Gegend, deren Name vervollständigt te R-C-H?“ Eine Frage, wie das macht etwas weniger über das gewünschte Ziel als die Frage nach „23 Kirche St.“ diesen Mechanismus verwenden, könnte ein Tourist die gewünschte Adresse ter detaillierter spil „endet ter U-R-C-H“ oder weniger detailliert spil „endet te H.“ angeben, Durch Variation der Genauigkeit der Suche, macht den Touristen mehr oder weniger Informationen, auf Kosten der immer mehr oder weniger konkrete Ergebnisse. Wenn sie ein weniger spezifisches Muster fragt, bekommt sie eine loterijlot mehr mögliche Adressen und eine bessere Privatsphäre, aber viele der Ergebnisse sind irrelevant. Wenn sie für ein ganz bestimmtes Muster fragen, bekommen sie weniger Ergebnisse aber verlieren Privatsphäre.

Bloom Filter dienen diese Funktion durch ein SPV Knoten ermöglicht ein Suchmuster für Transaktionen angeben, die in Richtung Präzision oder die Privatsphäre abgestimmt werden kann. Eine spezifischere Blüte filterzakje werden genaue Ergebnisse liefern, aber auf Kosten des Aussetzens, welche Adressen ter den Benutzer Brieftasche verwendet werden. Eine weniger spezifische Blüte filterzakje mehr gegevens über mehr Transaktionen, viele irrelevant für den Knoten erzeugen, wird aber den Knoten erlauben eine bessere Privatsphäre zu erhalten.

Ein Knoten wird eine SPV bloom filterzakje spil „leer“ und ter initialisieren, die die Blüte filterzakje Staat wird keine Muster entsprechen. Der SPV-Knoten wird dann eine Liste mit allen Adressen seine Brieftasche TE- und ein Suchmuster erzeugen, die Transaktion zum Ausgangsabgleich, der jede Adresse entspricht. Normalerweise ist das Suchmuster ein Pay-to-Public-Key-Hash-Skript, das der erwartete Sperr Skript, das ter Transaktion vorhanden sein wird die Zahlung an dem Public-Key-Hash (Adresse). Wenn der SPV Knoten wird das Gleichgewicht eines P2SH Adresse Tracking, wird das Suchmuster ein Pay-to-Skript-Hash-Skript, statt. Die SPV Knoten fügt dann jedes der Suchmuster der Blüte filterzakje, so dass die Blüte filterzakje das Suchmuster erkennen kann, wenn es vorhanden ter einer Transaktion. Schließlich wird die Blüte filterzakje an den Peer gesendet und der Peer verwendet es Transaktionen zur Übertragung an das SPV Knoten entsprechen.

Bloom-Filter werden spil einem variabler Größe Array von N Binärstellen (ein Bitfeld) und eine variable Anzahl von M-Hash-Funktionen implementiert. Die Hash-Funktionen sind entworfen, um immer eine Ausgabe zu erzeugen, die dazwischen 1 und N ist, mit dem Array von Binärziffern entsprechen. Die Hash-Funktionen sind deterministisch erzeugt, so dass jeder Knoten eine Blüte filterzakje Implementierung wird immer die gleichen Hash-Funktionen verwenden und die gleichen Ergebnisse für einen bestimmten Eingang bekommen. Durch die Wahl unterschiedlichen Länge (N) bloom Filter und eine unterschiedliche Anzahl (M) von Hash-Funktionen, die Blüte filterzakje abgestimmt werden, den Grad der Genauigkeit und damit unterschiedliche Privatsphäre.

Ter Abbildung 6-8, verwenden eine sehr wij petite Array von 16 onvriendelijk und einen Satz von drei Hash-Funktionen zu zeigen, wie bloom Filter arbeiten.

Die Blüte filterzakje wird initialisiert, so daß die Anordnung von snauwerig nur Nullen ist. Um ein Muster zu der Blüte filterzakje hinzuzufügen, wird das Muster durch jede Hash-Funktion gehasht te Umdrehung. Anwenden der ersten Hash-Funktion auf die Eingabeergebnisse ter einer Anzahl dazwischen 1 und N. Das entsprechende Bit te Array (indexiert von 1 bis N) gefunden wird, und auf 1 gesetzt, wodurch die Ausgabe der Hash-Funktion der Aufnahme. Dann wird die nächste Hash-Funktion verwendet, ein anderes Bit zu setzen, und so weiter. Wenn alle M Hashfunktionen angewendet haben Bot, wird das Suchmuster „aufgezeichnet“ te die Blüte filterzakje spil M vinnig die bot von 0 auf 1 umgeschaltet haben.

Figur 6-9 ist ein Beispiel des Hinzufügens eines Muster „A“ in der Ebene bloom filterzakje gezeigt te Bild 6-8.

Hinzufügen eines zweiten Muster ist SPIL elementare spil diesen Prozess zu wiederholen. Das Muster wird durch jede Hashfunktion ter wiederum gehasht, und das Ergebnis wird durch Setzen des onverdraagzaam bis 1 aufgezeichnet. Man beachte, dass ein spil bloom filterzakje mit mehr Muster gepackt wird, kann eine Hash-Funktionsergebnis mit einem Bit übereinstimmt, die bereits auf 1 gesetzt ist, ter welchem ​​Fall das Bit nicht eingeschaltet ist. Ter Wesentlichen Datensatz spil mehr Muster auf onaardig überlappen, beginnt die Blüte filterzakje gesättigt wird mit mehr onverdraagzaam verringert sich auf 1 und die Genauigkeit der filterzakje eingestellt. Aus diesem Grund ist die filterzakje ist eine probabilistische gegevens struktur es wird weniger genau spil mehr Muster hinzugefügt werden. Die Genauigkeit hängt von der Anzahl von Mustern in Abhängigkeit von der Größe der Bit-Array (N) und die Anzahl von Hash-Funktionen (M) hinzugefügt. Eine größere Bitfeldes und Hash-Funktionen können weitere Muster mit hohen Genauigkeit aufzeichnen. Eine kleinere Bit-Array oder weniger Hash-Funktionen werden weniger Muster aufzuzeichnen und zu geringerer Genauigkeit herzustellen.

Abbildung 6-10 ist ein Beispiel für das Hinzufügen eines zweites Muster „B“ in der Ebene bloom filterzakje.

Um zu testen, ob ein Musterteil eines bloom filterzakje ist, wird das Muster durch jede Hash-Funktion gehasht, und die resultierenden Bitmuster gegen die Bit-Array getestet. Wenn alle kattig durch die Hash-Funktionen indiziert eingestellt werden auf 1, dann wird das Muster höchstwahrscheinlich te der Blüte filterzakje aufgezeichnet. Da die vinnig von zahlreichen Mustern wegen der Überlappung eingestellt werden können, ist die Antwort nicht sicher, aber es ist eher probabilistisch. Te Klartext, ist eine Blüte filterzakje positives Spiel eines „Vielleicht, ja.“

Abbildung 6-11 ist ein Beispiel für die Prüfung der Existenz des Musters „X“ te der Ebene bloom filterzakje. Die entsprechende onverdraagzaam auf 1 gesetzt ist, so dass das Muster ist sehr wahrscheinlich ein Spiel.

Im Gegenteil, wenn ein Muster gegen die Blüte filterzakje getestet wird und eine beliebige der pinnig auf 0 gesetzt ist, beweist dies, dass das Muster nicht te der Blüte filterzakje aufgezeichnet wasgoed. Ein negatives Ergebnis ist keine Wahrscheinlichkeit, es eine Gewissheit ist. Te elementare Begriffe, ein negatives Spiel auf einer Blüte filterzakje ist ein „sicher nicht!“

Abbildung 6-12 ist ein Beispiel für die Prüfung der Existenz des Musters „Y“ te gewöhnlichen bloom filterzakje. Eines des entsprechenden snauwerig auf 0 gesetzt ist, so dass das Muster ist zweifellos kein Spiel.

Bitcoin Implementierung von bloom Filter wird ter bitcoin Verbesserungsvorschlag beschrieben 37 (BIP0037). Siehe Anhang B oder GitHub besuchen.

Bloom Filter und Inventar-Updates

Bloom-Filter werden verwendet, um die Transaktionen filterzakje (und Blöcke, welche diese enthalten), dass ein Knoten von seinem SPV peers empfängt. SPV Knoten eine filterzakje erstellen, die nur die gehaltenen Adressen ter der SPV Knoten Mappe übereinstimmt. Die SPV Knoten wird dann eine filterload Nachricht an den Peer senden, die Blüte filterzakje enthält, auf der Verbindung verwendet werden. Nachdem ein filterzakje hergestellt ist, testen die Peer wird dann jede Ausgänge gegen die bloom filterzakje der Transaktion. Nur Transaktionen, die die filterzakje übereinstimmen, werden an den Knoten gesendet.

Te Reaktion auf eine getdata Nachricht aus dem Knoten, Peers eine merkleblock Nachricht senden, die nur Block-Header für Blöcke enthalten passend zum filterzakje und Merkle Pfad (siehe „Hash-Baum“) für jede passende Transaktion. Der Peer sendet dann auch tx Nachrichten die Transaktionen abgestimmt durch die filterzakje enthält.

Der Knoten der bloom filterzakje Einstellung kann interaktiv Muster zum filterzakje hinzufügen, indem eine filteradd Nachricht sendet. Um die Blüte filterzakje zu löschen, kann der Knoten eine filterclear Nachricht senden. Da es nicht möglich ist, ein Muster aus einer Blüte filterzakje zu beseitigen, hat ein Knoten eine frische Blüte filterzakje löschen und erneut zu senden, wenn ein Muster ist nicht mehr erwünscht.

Transaktion Pools

Fast unterhält jeder Knoten auf dem Bitcoin-Netzwerk eine improvisierte Liste der unbestätigten Transaktionen des Speicherpool, MemPool oder Transaktions Pool genannt. Knoten verwenden Sie diesen Pool Spur von Transaktionen zu halten, die mit dem Netzwerk bekannt sind, sind jedoch noch nicht ter der blockchain enthalten. Zum Beispiel kann ein Knoten, der einen Benutzerbrieftasche hält die Transaktion Pool verwenden, um eingehende Zahlungen an den Brieftasche des Benutzers zu verfolgen, die Bot auf dem Netzwerk empfangen haben, aber noch nicht bestätigt.

Spil Transaktionen werden empfangen und überprüft, werden sie an den Transaktionspool hinzugefügt und an die benachbarten Knoten weitergeleitet über das Netzwerk zu verbreiten.

Einige Knoten-Implementierungen auch einen separaten Pool von verwaisten Transaktionen aufrechtzuerhalten. Wenn eine Transaktion Eingaben auf eine Transaktion beziehen, die noch nicht bekannt ist, wie spil einen fehlender Elternteil, wird die Waisen Transaktion vorübergehend te der Waise Pool gespeichert werden, bis die übergeordnete Transaktion eintrifft.

Wenn eine Transaktion mit dem Transaktionspool hinzugefügt wird, wird das Waise Pool für alle Waisen geprüft, dass diese Transaktion der Ausgänge (seine Kinder) verweisen. Jegliche passende Waisen werden dann validiert. Wenn gültig, werden sie aus dem Waise Pool eliminieren und zu der Transaktion Pool, die Kette abgeschlossen, die mit der übergeordneten Transaktion begann. Ter Licht der frisch zuge Transaktion, die nicht mehr ist eine Waise, wird der Prozess rekursiv für weitere Nachkommen der Suche wiederholt, bis keine weiteren Nachkommen gefunden werden. Durch diesen Prozess löst die Ankunft einer Elterntransaktion eine Kaskade Rekonstruktion einer ganzen Kette von miteinander zusammenhängenden Transaktionen durch eine erneute Vereinigung der Waisen mit ihren Eltern der ganzen Weg hinunter die Kette.

Sowohl die Transaktions Pool und Waisen Pool (wo implementiert) werden ter lokalen Speicher gespeichert und nicht auf persistenten Speicher gespeichert, sondern werden dynamisch aus den eingehenden Netzwerknachrichten bevölkert. Wenn ein Knoten beginnt, sind beiden Pools leer und wenig sind von wenig mit frischen Transaktionen bevölkerten auf dem Netzwerk empfangen.

Einige Implementierungen der Bitcoin-Client pflegen auch eine UTXO Datenbank oder UTXO Pool, der die Menge aller nicht ausgegebenen Ausgänge auf der blockchain ist. Wenn auch der Name „UTXO Pool“ die Transaktion Pool ähnlich klingt, stellt es einen anderen Satz von gegevens. Im Gegensatz zu den Transaktions- und Orphan-Pools wird die UTXO Pool nicht leer initialisiert, sondern enthält Millionen von Einträgen der nicht verwendeten Transaktions Ausgaben, darunter auch einige aus dem Jahr 2009. Der UTXO Pool kann ter lokalen Speicher oder spil eine indizierte Datenbank-Tabelle auf persistenten Speicher untergebracht werden .

Während die Transaktion und Waisen Pools ein einzelner Knotens lokale Perspektive darstellen und deutlich von Knoten variieren könnten zu verknoten je nachdem, wann der Knoten wasgoed in Angriff genommen oder neu gestartet wird, stellt der UTXO Pool das emergent overeenstemming des Netzes und wird deshalb wenig dazwischen Knoten variieren. Außerdem werden nur die Transaktion und Waisen Pools nicht bestätigten Transaktionen enthalten, während der UTXO Pool nur bestätigt Ausgänge enthält.

Voorzichtig Nachrichten

Waaks Meldungen sind eine selten genutzte Funktion, sind aber dennoch umgesetzt te die meisten Knoten. Omzichtig Nachrichten werden Bitcoin des „Notfall Broadcast-System,“ ein Mittel, mit dem der Kern bitcoin Entwickler einen Notfalltextnachricht an alle Bitcoin Knoten senden kann. Diese Funktion implementiert, um das Kernentwicklerteam benachrichtigen alle Bitcoin Benutzer für ein ernstes Problem te das Bitcoin-Netzwerk, wie spil einen kritischen Fehler zu ermöglichen, den Benutzer Handlung erfordert. Das Voorzichtig System hat nur verwendet bot ein paar Mal, vor allem te Anfang 2013, wenn eine kritische Datenbank Fehler ein Multiblock-Gabel auftreten ter der bitcoin blockchain verursacht.

Waakzaam Nachrichten werden von der bedachtzaam Nachricht weitergegeben. Die oplettend Nachricht enthält mehrere Felder, einschließlich:

Warnungen werden verschlüsselt mit einem öffentlichen Schlüssel signiert. Der entsprechende private Schlüssel wird durch ein paar ausgewählten Mitglieder des Kernentwicklungsteam statt. Die digitale Signatur stellt sicher, dass gefälschte Warnungen nicht auf das Netzwerk weitergegeben werden.

Jeder Knoten dieses attent Nachricht empfängt, wird sie prüfen, prüfen Ablauf und propagieren sie auf alle seine Kollegen, damit eine schnelle Ausbreitung im gesamten Netzwerk zu gewährleisten. Te Neben der omzichtig ausbreitet, können die Knoten eine Benutzeroberfläche Funktion implementieren, um die waakzaam dem Benutzer zu präsentieren.

Ter der Bitcoin Core-Client wird die omzichtig mit der Befehlszeilenoption -alertnotify, konfiguriert, die eine Anweisung auszuführen angibt, wenn ein attent empfangen wird. Die bedachtzaam Nachricht wird spil Parameter an die alertnotify Richtlinie übergeben. Am häufigsten wird die alertnotify Richtlinie festgelegten E-Mail-Nachricht an den Administrator des Knotens zu erzeugen, die oplettend Nachricht enthält. Die bedachtzaam auch spil eine Pop-up-Dialog ter die grafische Benutzerschnittstelle (bitcoin-Qt) angezeigt, wenn es ausgeführt wird.

Andere Implementierungen des Bitcoin-Protokoll könnte die Voorzichtig te verschiedene Arten behandeln. Viele Hardware-embedded Bitcoin-Mining-Systeme nicht implementiert oplettend Nachrichtenfunktion, weil sie keine Benutzeroberfläche. Es wird dringend empfohlen, dass Bergleute laufen solchen Bergbauanlagen, um Warnungen über einen Bergbau-Pool technicus abonnieren oder durch einen leichten Knoten nur für bedachtzaam Zwecke ausgeführt wird.

Ähnlicher Film: Speicher mindestens eine Bitcoin für das Jahr 2020


Leave a Reply

Your email address will not be published. Required fields are marked *

*