Wie wählen Peers aus, welchem ​​Peer sie vertrauen?

  1. Ich verstehe die Funktionsweise der Blockchain also so, dass jeder neue Block den Hash des vorherigen Blocks verwendet, was bedeutet, dass, wenn meins block[100].hash != someone_elses_block[100].hash, bedeutet, dass entweder ich gegen eine Regel verstoßen habe oder die andere Person es getan hat; Wie findet mein Client in diesem Fall einen vertrauenswürdigen Peer? Und WO bekommt mein Kunde die neueste RICHTIGE Blockchain? Gibt es dafür einen zentralen Server? Wenn ja, woher hat der Server das? Weil der Miner die längste Kette haben wird, aber was ist, wenn er sich nicht wirklich an die Regeln hält? Dann was?

  2. Nehmen wir an, ich habe meinen Client für 100 Tage angehalten, während dieser 100 Tage gab es 500 neue Transaktionen, was bedeutet, dass mein Client veraltet wäre, wenn ich meinen letzten Block mit jemand anderem vergleichen würde, daher muss er die zusätzlichen Blöcke herunterladen, Wo findet es diese Blöcke und wie bestimmt es, mit welchen Peers es synchronisiert und denen es vertraut?

  3. Eine Frage zur Nonce, wenn wir sagen, es gab keine Nonce; Wenn Client A eine Kette hat, die den Regeln folgt, und Client B Transaktionen verifiziert hat, ohne tatsächlich alle ordnungsgemäßen Überprüfungen durchzuführen, bedeutet das, dass Client A bei Block[100].hash != Client B bei Block[100] ist, also Client B nicht Befolgen Sie die Regeln, also stellt sich die Frage, was der wirkliche Bedarf für die Nonce ist. Denn meiner Meinung nach scheint es nur dazu da zu sein, es den Leuten schwerer zu machen, richtig? Oder fügt es eine Art Sicherheit hinzu? Und wenn ja, wird es die gleiche Sicherheit haben, wenn, sagen wir, die Nonce immer eine Zahl zwischen 0 und 15 wäre? Oder müsste es angepasst werden, wenn der Bergbau schneller wird?

Vielen Dank!

Es sei darauf hingewiesen, dass nicht alle Blockchains Nonces haben.

Antworten (1)

entweder habe ich eine Regel gebrochen, oder die andere Person hat es getan; Wie findet mein Client in diesem Fall einen vertrauenswürdigen Peer?

Ihr Client vertraut keinem Peer. Es validiert die Blockchain vollständig. Im Falle mehrerer widersprüchlicher Blöcke bei einer bestimmten Blockhöhe entscheidet sich Ihr Knoten für den ersten Block, von dem er hört. Es behält und validiert jedoch weiterhin alle anderen Blöcke, die es für diese Blockhöhe erhalten hat. Erst nachdem mehr Blöcke abgebaut wurden, wählt es tatsächlich aus, welcher dieser widersprüchlichen Blöcke Teil seiner Hauptkette wird. Es wählt basierend darauf aus, welcher Zweig die kumulativste Arbeit hat.

Es gibt kein Vertrauen in diesen Prozess; Es verwendet zuerst gehörte zuerst und passt sich dann an, wenn spätere Blöcke zu einem anderen Zweig gehören. Aufgrund dieser Reorganisationen wird empfohlen, auf mehrere Bestätigungen zu warten, da Reorgs in einem Block nicht ungewöhnlich sind.

Außerdem ist die Blockchain mit der kumulativsten Arbeit (normalerweise als die längste Blockchain bezeichnet) nicht die einzige Bestimmung dafür, welche Blockchain verwendet werden soll. Auch die Blockchain muss valide sein, sie darf nicht nur die meiste Arbeit haben.

2: Nehmen wir an, ich habe meinen Client für 100 Tage angehalten, während dieser 100 Tage gab es 500 neue Transaktionen, was bedeutet, dass mein Client veraltet wäre, wenn ich meinen letzten Block mit jemand anderem vergleichen würde, daher muss er das Extra herunterladen Blöcke, wo findet es diese Blöcke und wie bestimmt es, mit welchen Peers es synchronisiert und denen es vertraut?

Ihr Knoten führt jedes Mal, wenn er online geht, den normalen Peer-Erkennungsprozess durch. Ihr Knoten wählt dann zufällig einen der Peers aus, mit denen er verbunden ist, um der "Sync-Knoten" zu sein. Es synchronisiert eigentlich nicht viel von diesem Knoten, nur die Blockheader. Es lädt die Blockheader von diesem Knoten herunter und validiert sie. Dann lädt es die Blöcke für diese Header von den anderen Knoten herunter, mit denen es verbunden ist.

Sobald die Header-Kette eines Knotens synchronisiert wurde, fordert er die Header anderer Knoten auf, eine Vorstellung davon zu bekommen, was ihre beste Header-Kette ist, um festzustellen, ob der Sync-Knoten unehrlich war.

Auch hier gibt es kein Vertrauen in diesen Prozess, da alle Blöcke und Header noch vollständig validiert sind. Da beim Download mehrere Knoten geprüft werden, ist es unwahrscheinlich, dass Ihr Knoten die falsche Blockchain hat, da nicht nur ein Knoten vorgibt, welche Kette Sie herunterladen.

Die Frage ist also, was ist der wirkliche Bedarf für die Nonce?

Die Nonce ist völlig unabhängig von der Gültigkeit, außer der Tatsache, dass sie Teil des Block-Headers ist, der gehasht wird. Der einzige Zweck der Nonce ist es, beim Mining etwas zu ändern. Es bietet keine Sicherheitsmerkmale und ist auch nicht mit den Konsensregeln verbunden (abgesehen davon, dass es existieren muss, es könnte null sein). Bergleute könnten sehr gut nichts an der Nonce tun und etwas anderes ändern, um einen anderen Hash zu erhalten. Es existiert nur als Bequemlichkeit.

Unter der Annahme, dass das Netzwerk als Ganzes nicht kaputt ist, kann dies nur fehlschlagen, wenn jeder einzelne Knoten, mit dem Sie sich verbinden, bösartig ist und keiner von ihnen bereit ist, Ihnen die tatsächlich längste gültige Kette zu offenbaren. Dies wird als Sybil-Angriff bezeichnet und es gibt verschiedene Abwehrmaßnahmen dagegen. Bei PoW-Systemen möchte jeder, der Blöcke in der längsten Kette abgebaut hat, sie zu so vielen Menschen wie möglich bringen, um sicherzustellen, dass sie in der längsten Kette bleiben, damit sie ihre Belohnung behalten können. Es ist sehr schwer für einen Dritten, zwei Personen, die Informationen austauschen wollen, davon abzuhalten.
Plus: Um zu beginnen, begann die Validierung mit einem bekannten guten Zustand, die Blockchain-Software hat häufig (immer?) den Genesis-Block (Block 0) der Blockchain eingebaut (oder zumindest seinen Hash). Hier ist es zum Beispiel in Bitcoin Core .