Ich habe gelesen, dass die Blockchain eine Reihe von Transaktionen ist, die aufzeichnen, wie eine Person einer anderen Bitcoin gibt. Bitte korrigieren Sie mich, wenn diese Annahme falsch ist, da sie die Grundlage für meine Frage ist. Wird es also mit der Zeit nicht immer länger dauern, herauszufinden, ob Sie Bitcoin von jemandem annehmen können, weil Sie jede Transaktion in der Geschichte der Blockchain durchgehen müssen, um zu bestätigen, dass die Person, die Ihnen Bitcoin gibt, tatsächlich Bitcoin hat dass Bitcoin überhaupt?
Bei einer naiven Implementierung ja, aber in der Praxis nein, ist das kein Problem.
Das liegt daran, dass jeder Entwickler, der weiß, was er tut, schlau genug ist, eine Datenbank zu erstellen, die zumindest jede Transaktion (oder ihre Position auf der Festplatte) und ihren Überprüfungsstatus aufzeichnet. Wenn Sie also eine neue Transaktion erhalten, müssen Sie nicht durch den Verlauf zurückgehen, sondern nur auf die vorherige Transaktion zurückblicken, auf die verwiesen wird. Im Rahmen der Validierung einer Transaktion prüfen Sie, ob die vorherige Transaktion gültig war. Wenn also eine Transaktion in Ihrer Datenbank als gültig gekennzeichnet ist, können Sie sicher sein, dass die vorangegangenen Transaktionen auch gültig sind. Daher besteht keine Notwendigkeit, den Verlauf tatsächlich zu durchsuchen und diese Transaktionen erneut zu validieren.
Da es letztendlich nur auf eine einfache Datenbanksuche hinausläuft, wird es nicht schwieriger, neue Transaktionen zu validieren.
Die Berechnungszeit wird sehr langsam degenerieren, je länger die Zeit vergeht, da die verwendeten Mechanismen sehr effizient sind. Stellen Sie sich einen vereinfachten Zahlungsverifizierungsknoten (SPV) vor, der an eingehenden Zahlungen an eine Adresse in seiner Brieftasche interessiert ist. Der SPV-Knoten wird einen Bloom-Filter für seine Verbindungen zu Peers einrichten, um die empfangenen Transaktionen auf diejenigen zu beschränken, die Adressen von Interesse enthalten. Wenn ein Peer eine Transaktion sieht, die dem Bloom-Filter entspricht, sendet er den Block mithilfe einer Merkleblock-Nachricht. Die Merkleblock-Nachricht enthält den Block-Header sowie einen Merkle-Pfad, der die interessierende Transaktion mit der Merkle-Root im Block verknüpft. Der SPV-Knoten kann diesen Merkle-Pfad verwenden, um die Transaktion im Block zu verbinden und zu überprüfen, ob die Transaktion im Block enthalten ist. Der SPV-Knoten verwendet auch den Block-Header, um den Block mit dem Rest der Blockchain zu verknüpfen. Die Kombination dieser beiden Verbindungen, zwischen Transaktion und Block und zwischen Block und Blockchain, beweist, dass die Transaktion in der Blockchain aufgezeichnet wird. Alles in allem wird der SPV-Knoten weniger als ein Kilobyte an Daten für den Block-Header und den Merkle-Pfad erhalten haben, was sehr effizient ist und die Berechnungszeit sehr langsam degeneriert, wenn mehr Blöcke hinzugefügt werden.
frеdsbend
David