Angenommen, Bitcoin-Knoten hatten überhaupt keine Zielschwierigkeiten und akzeptierten stattdessen nur alle 10 Minuten den Block mit dem größten PoW. Würde dies funktionieren, wenn man die erhöhte Bandbreite ignoriert (da die Knoten mehrere Blockkandidaten senden würden)? Oder besteht eine technische Notwendigkeit für eine einstellbare Zielschwierigkeit?
Bearbeiten: Zur Verdeutlichung meinte ich, dass jeder Block akzeptiert wird, aber nur die Kette mit der größten angesammelten Arbeit als kanonisch gilt. Das heißt, wenn es vor Tagen einen schwachen Block gab und Sie einen Block mit einer höheren Punktzahl abbauen, wird dieser schwache Block nicht ungültig. Sie müssen jeden Block darüber ersetzen, wenn Sie die Geschichte so weit umschreiben möchten. Das heißt, es ist dasselbe wie Bitcoin, ohne eine Zielschwierigkeit. Die Knoten akzeptieren einfach alle Blöcke und berechnen den besten Block, indem sie die angesammelte Arbeit jedes Kandidatentipps summieren.
Es ist nicht trivial, a) in einem verteilten System die Zeit zu vereinbaren, insbesondere wie viel Zeit zwischen zwei Ereignissen vergangen ist, b) festzustellen, wann genau ein Blockkandidat gefunden wurde. Wenn ein Knoten die Kettenspitze einholt, nachdem er offline war, hat er außerdem keinerlei Möglichkeit festzustellen, ob ein Block tatsächlich innerhalb des zugewiesenen Zeitrahmens gefunden wurde.
Anstatt also, dass jemand einen Block findet und ihn ankündigt, müssen wir jetzt viel mehr Daten herumschicken und dann eine Art Konsensalgorithmus ausführen, um zu vereinbaren, ob/welche Kandidaten rechtzeitig eingereicht wurden.
Aber leider sehe ich immer noch nicht ein, wie eine Zielschwierigkeit für einen Konsens erforderlich ist.
Ohne weiteres wird es subjektiv, wenn der nächste Block gefunden wurde, weil das Kriterium nicht mehr binär ist. Wenn irgendeine Schwierigkeit akzeptabel ist, würden wir jeden Moment Milliarden von Blöcken finden. Nehmen wir an, all diese Blockankündigungen kaskadieren durch das Netzwerk. Jeder Knoten erhält jetzt mehrere Ankündigungen und führt eine unnötige Blockvalidierung durch, selbst wenn er nur den besten Block weiterleitet, den er bisher in der angegebenen Höhe gesehen hat. Woher wissen Miner, wann sie auf die nächste Höhe wechseln sollten? Woher wissen sie, dass sie den besten Block in der Höhe bereits gesehen haben? Reorgs würden die ganze Zeit passieren. Wenn die Miner ständig den vorherigen Block ihrer Blockvorlagen wechseln, um auf den neuesten Stand zu aktualisieren, werden sie fast ausschließlich Blockkandidaten abbauen, die nicht mit der endgültig besten Kette kompatibel sind. Der größte Teil des Arbeitsnachweises wäre völlig verschwendet und würde überhaupt nicht zur Sicherheit des Netzwerks beitragen. Darüber hinaus würde die Bandbreitenlast im Netzwerk drastisch zunehmen, um alle Blöcke zu klatschen.
Besonders Miner mit größeren Anteilen an der Hash-Power haben jetzt alle möglichen zusätzlichen Winkel, um den vorherigen Block anzugreifen, anstatt sich vorwärts zu bewegen, z. B. egoistisches Mining und Finney-Angriffe werden einfacher. Die Beseitigung der Schwierigkeit würde den Fortschritt der Blockchain behindern und selbst mehrfache Bestätigungen unzuverlässig machen.
genesis_time + 10 mins * block_count
. Die Knoten senden einfach wie gewohnt Blöcke und wählen die Kette mit der größten Arbeit aus.Der Kernpunkt des Bitcoin-Designs besteht darin, ein System zu schaffen, das eine zuverlässige Transaktionsaufzeichnung ohne zentrale Koordination oder Arbiter bereitstellt . Stattdessen ist Bitcoin ein verteiltes System, bei dem ein Konsens mithilfe eines „Konsensalgorithmus“ erreicht wird, der von jedem Knoten im Netzwerk wiederholt ausgewertet werden kann.
Da Bitcoin heute in Betrieb ist, ist das Ziel einer „Blockperiode“ klar definiert und von allen Knoten vereinbart. Ein Knoten kann verifizieren, ob ein bestimmter Block eine gültige Lösung ist, indem er nur das Wissen aus der Kette (dh die Zielschwierigkeit) verwendet, ohne sich auf eine Uhr zu verlassen.
In dem von Ihnen vorgeschlagenen System können Sie nicht entscheiden, ob Sie "den besten Block der 10-Minuten-Zeitspanne" gesehen haben, indem Sie nur auf den Block schauen. Das bedeutet, dass Sie nicht wissen, ob dieser Block ein gültiger Block ist, ohne alle anderen Kandidaten zu kennen. Die Folge ist, dass ein Block, den Sie für gültig hielten, ungültig werden könnte, wenn ein Block mit einem niedrigeren Hash erscheint. Das kann nach dem derzeitigen Schema nicht passieren und hat dramatische Folgen. Heutzutage kann ein als gültig angesehener Block sicher abgebaut werden, da die Arbeit, die erforderlich ist, um den gültigen Block zu überholen, voraussichtlich ungefähr der gleiche ist wie die Fortsetzung auf diesem Block. In Ihrem Schema braucht es nur die Arbeit, einen besseren Block zu finden, um die zuvor akzeptierte Lösung ungültig zu machen , und Sie zerstören die Arbeit, die auf diesem jetzt ungültigen Block basiert.
Wenn Sie also mit dem Mining eines Blocks beginnen, müssen Sie sicher sein, dass Sie eine gültige Lösung kennen und dass diese Lösung gültig bleibt . Der übliche Ansatz für die Herausforderung wäre ein zentraler Schiedsrichter, der Kandidaten sammelt und entscheidet, welcher Block ausgewählt wird, und diese Entscheidung endgültig festlegt. Wie ich bereits in der Einleitung gesagt habe, erfüllt alles, was sich auf einen zentralen vertrauenswürdigen Dienst verlässt, nicht das primäre Ziel von Bitcoin.
Zwei potenzielle Probleme mit dieser Idee, etwas verwandt.
Mining-Anreize werden während des 10-Minuten-Zeitraums schwanken, abhängig von der Schwierigkeit des aktuellen Blocks „Kandidat“. Wenn es höher als erwartet ist, werden die Bergleute dazu angeregt, den Bergbau bis zum Beginn der nächsten Periode einzustellen. Im Extremfall kann es sein, dass alle Miner das Mining für den Rest des Zeitraums einstellen, weil die Wahrscheinlichkeit des Minings des kanonischen Blocks diesen für alle Miner unrentabel macht.
Zu Beginn jeder 10-Minuten-Periode würde das Relaisnetzwerk mit Block-"Kandidaten" überflutet. Da der aktuelle beste Block für den neuen Zeitraum wahrscheinlich einen Hash mit relativ geringem Schwierigkeitsgrad hat, werden viele neue beste Blöcke in schneller Folge generiert, und dies könnte Relaisknoten überlasten. Dies könnte sich sowohl auf die Netzwerkbandbreite (Empfangsblöcke) als auch auf die CPU (Validierung von Blöcken bei ihrer Ankunft) auswirken.
Das bestehende Bitcoin-Mining-Schwierigkeitsschema leidet nicht unter diesen Problemen, da die erwartete Rate der neuen Blockgenerierung konstant ist.
Die Schwierigkeit wurde von Satoshi entwickelt, um das Netzwerk auszugleichen und einen gleichberechtigten Zugang zu neuen Peers zu gewährleisten, wodurch böswillige Dritte daran gehindert werden, das Netzwerk zu kontrollieren, Transaktionen zu filtern und die generierten Coins zu einfach zu erhalten.
Der PoW ist ein mathematischer Beweis dafür, dass jemand Ressourcen ausgegeben hat, um die generierten Münzen zu erhalten. Wenn es kein PoW gäbe, würde eine organisierte Einheit mit vielen Ressourcen, z. B. ein Botnet oder ein ISP, das Netzwerk mit Transaktionen zuspammen, die für sie interessant sind.
Insbesondere bei größeren Transaktionen (1) müssen wir besonders sicher sein, dass Alice (böswillige Spenderin) keine Transaktion an Bob ausstellt, der Waren verkauft, und dann das Netzwerk mit Transaktionen an den Händler Charlie oder an sich selbst zuspammt, um Bob zu betrügen .
Bedenken Sie, dass Bitcoin völlig dezentralisiert ist und verteilte Systeme unter dem Konzept der Zeit leiden, das nicht absolut ist. Wenn Sie Fragen dazu haben, sollten Sie auf SW Engineering posten. Ich sage nur: "Ohne eine Zertifizierungsstelle können Sie eine Nachricht für immer aufbewahren". Und Bitcoin lehnt Zertifizierungsstellen ab, die von der Regierung gehackt/bestochen/gezwungen werden können usw.
Satoshi musste ein System entwerfen, damit sequentielle Transaktionen nicht (so einfach) umgeschrieben werden konnten (2).
Angenommen, die Bitcoin-Knoten akzeptieren gerade alle 10 Minuten den Block mit dem größten PoW.
Das eigentliche Problem ist: Betrachten Sie es nicht aus der Perspektive des gesamten Systems. Betrachten Sie es aus der Perspektive meines Bitcoin-qt-Clients, der gerade von void bootet.
Wie kann mein Kunde sicher sein, dass niemand Blöcke behält ? Wie kann sich mein Client anhand der Eingaben anderer böswilliger Peers über die Netzwerkgröße sicher sein?
Satoshi erwartete, dass das Netzwerk wachsen würde und damit auch die Rechenleistung. Mit mehr Mining-Knoten würde eine größere Anzahl von Blöcken die Schwierigkeitsschwelle in weniger als 10 Minuten erreichen.
Aus der Perspektive eines einsamen Knotens, dem eigentlichen Konzept von Peer-to-Peer-Netzwerken, besteht das Ziel nicht darin, den Block mit der größten Schwierigkeit zu identifizieren, was schwierig wäre, wenn Peers versuchen, Informationen zu verbergen, sondern am längsten zu suchen Kette
Das Prinzip der längsten Kette hindert Alice nicht daran, eine Transaktion vollständig umzuschreiben. Das macht es so teuer, dass es sich zumindest beim Lebensmitteleinkauf lohnt, sich an die Regeln zu halten statt zu schummeln.
Und das ist genau der Grund, warum Peers 3 oder mehr Bestätigungen benötigen, um eine Transaktion als endgültig zu betrachten .
(1) Bitcoin wurde entwickelt, um sowohl Lebensmittel als auch Immobilien zu kaufen. Natürlich ist es kein Verlust, wenn man doppelt im Supermarkt ausgibt
(2) Das Umschreiben einer Transaktion im Rahmen einer Blockchain bedeutet, dass, wenn die Transaktion bei Block stattgefunden hat , jeder Block von bis durch 1 bis 1100
ersetzt wird100
current
100
current
MaiaVictor
Caius Jard
MaiaVictor
1 / block_hash
, was eine Schätzung dafür ist, wie viele Nonces versucht wurden, um diesen Block zu erstellen. Dann ist die Summe aller Block-Hashes bis zur Wurzel die Punktzahl dieser spezifischen Kette. Knoten erhalten nur Blöcke und wählen die Kette mit der größten Punktzahl aus.Caius Jard
MaiaVictor
Caius Jard
MaiaVictor
Michael Kärcher
MaiaVictor
Murch