Würde Bitcoin noch ohne Zielschwierigkeit funktionieren?

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.

Ich habe 3 tolle Antworten, danke! Aber leider sehe ich immer noch nicht ein, wie eine Zielschwierigkeit für einen Konsens erforderlich ist. Sie implizieren aus irgendeinem Grund, dass wir ohne eine Zielschwierigkeit einen zentralen Koordinator für einen Konsens brauchen würden. Aber das scheint nicht zu stimmen: Solange Nodes Blöcke sammeln und die Kette mit der meisten angesammelten Arbeit berechnen, werden sie einen Konsens bezüglich der kanonischen Kette erreichen. Ja, wir müssen davon ausgehen, dass wir die Daten von nicht böswilligen Peers erhalten können, aber Bitcoin geht auch davon aus!
Was ist ein „größter PoW“? Der Arbeitsaufwand für einen Block zum Hashen ist so ziemlich der gleiche wie für jeden anderen Block. Wie können Sie also behaupten, dass die dafür geleistete Arbeit größer ist?
Durch den Wert des Blockhashs. Sie können eine Blockpunktzahl als zuweisen 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.
Wie viele Nonces wurden versucht, um diesen Block zu erstellen - whut?
Es ist ein einfacher Satz. Welchen Teil hast du Schwierigkeiten zu verstehen?
Der Teil, in dem Sie behauptet haben, dass ein Block-Hash-Wert in irgendeiner Weise mit der Anzahl der Nonces zusammenhängt, die versucht wurden, um einen Hash zu realisieren, der kleiner als die Schwierigkeit ist. Ein Miner könnte Glück haben und einen Block packen, der auf Anhieb niedriger als die Schwierigkeit ist, oder er könnte Pech haben und eine Milliarde Blockvariationen durchkauen, bevor er dasselbe erreicht
Gute Frage! Stellt sich heraus, es ist statistisch verwandt. Natürlich können Sie nicht feststellen, wie viele Nonces tatsächlich versucht wurden, um einen bestimmten Block zu produzieren, da, wie Sie bemerkt haben, ein glücklicher Miner beim ersten Versuch einen sehr niedrigen Hash erhalten konnte. Aber abschätzen ist möglich - Stichwort beachten. Wenn beispielsweise die ersten 4 Bits eines Hashs 0 sind, können Sie davon ausgehen, dass mindestens 16 Hashes benötigt wurden, um ihn zu erzeugen. Natürlich mag das für einen bestimmten Block nicht der Fall sein, aber im Durchschnitt gilt diese Statistik. Macht Sinn?
Das aktuelle Bitcoin fügt keine (geschätzte) angesammelte Arbeit hinzu, um eine Kette auszuwählen, sondern zählt nur die Kettenlänge. Es funktioniert als einfacher Ersatz für angesammelte Arbeit, da fast jeder Block in der Nähe der Zielschwierigkeit liegt. In Ihrem Schema muss die tatsächliche Arbeitsschätzung implementiert werden, aber auf den ersten Blick könnte es auch funktionieren.
Oh, das wusste ich nicht, aber es macht Sinn, dass BTC die Arbeit nicht so zusammenfassen muss, wie ich sie beschreibe.
@MichaelKarcher: Bitcoin sucht nach der Kettenspitze mit der meisten Arbeit: github.com/bitcoin/bitcoin/blob/… . Die ursprüngliche Version hatte den Fehler, dass nur die Länge verglichen wurde, aber dies hätte weitreichende Reorg-Angriffe mit niedrigem Schwierigkeitsgrad ermöglicht und wurde vor vielen Jahren behoben.

Antworten (4)

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.

Warum reicht nicht nur PoW für diesen Konsens? Solange Knoten eine ungefähr synchronisierte Uhr haben, könnte die Zeit, zu der ein Block abgebaut wurde, von berechnet werden 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.
Nehmen wir an, ich bin ein Miner und ich sehe, dass das PoW in den letzten zehn Minuten ziemlich niedrig war, also schürfe ich ein bisschen weiter und verfälsche den Zeitstempel meiner Blockkandidaten. Wenn ich einen Block mit einem höheren PoW finde, kündige ich ihn dem Netzwerk an. Wie unterscheiden Sie, ob mein Blockkandidat rechtzeitig gefunden wurde oder nicht?
Wenn jeder Knoten für sich entscheidet, haben Sie jetzt eine großartige Möglichkeit, das Netzwerk aufzuteilen. Wenn die Nodes gemeinsam entscheiden, braucht man einen Konsensalgorithmus.
und wenn Sie es so anordnen, dass jeder Knoten für sich selbst entscheidet, aber alle auf die gleiche Weise entscheiden, ist das ein Konsensalgorithmus
Wie schlagen Sie vor, den „besten Block innerhalb einer Zeitspanne von zehn Minuten“ ohne Zeitstempel durchzusetzen?
@Murch es gibt keinen Zeitstempel. Aber ja, Sie könnten alte Blöcke "re-minen", wenn Sie wollten. Aber Sie müssten immer noch alle neueren Blöcke mit mehr angesammelter Arbeit bereitstellen, damit sie akzeptiert werden. Das erneute Schürfen von ausreichend alten Blöcken wäre nicht machbar, also erreichen die Knoten letztendlich einen Konsens bezüglich der kanonischen Kette, genau wie bei Bitcoin, oder? Was ich sagen will ist: Ich sehe immer noch nicht ein, warum eine Zielschwierigkeit dafür erforderlich ist, anstatt nur Blöcke zu sammeln und die größte Kette zu berechnen.
@MaiaVictor: Wenn ich einen soliden Angriff auf SHA-256 hätte, würde ich es vorziehen, ihn anzukündigen, indem ich Ransomware-Transaktionen auf diese Weise zurücksetze.
Wenn Sie keine Schwierigkeiten haben, wie bestimmen Sie das durchgeführte PoW? Nur durch den niedrigsten Hash?
Wenn ja, nein, es geht nicht darum, die beste Kette wie Bitcoin zu finden. Beispielsweise kann ein böswilliger Miner versuchen, in jedem Block, den er abbaut, Geld an sich selbst zu senden. Wenn sie einen extrem niedrigen Hash finden, halten sie diesen Block geheim und führen eine widersprüchliche Transaktion durch, die dasselbe Geld an eine Börse sendet. Sie lassen ihre Einzahlung ein paar Bestätigungen erhalten und tauschen sie dann gegen eine alternative Währung. Dann veröffentlicht der Angreifer seinen Block mit einem extrem niedrigen Hash, um die vorherige beste Kette zu ersetzen.
Während vergrabene Blöcke noch schwer zu ersetzen sind, wird die Kettenspitze völlig unzuverlässig.
@Murch ja, niedrigster Hash. Genau das meine ich. Der Chaintip von Bitcoin ist auch nicht 100% zuverlässig, Sie benötigen ~6 confs für maximale Sicherheit. Bei einem solchen Vorschlag sollte die Endgültigkeitszeit als ziemlich groß angesehen werden (z. B. 24 h). Mein Punkt ist: Es würde als Konsensalgorithmus funktionieren, es wäre nur weniger effizient für die Endgültigkeit als Bitcoin, aber wohl einfacher zu implementieren und sicherer gegen diese verschiedenen Angriffe im Zusammenhang mit Zielschwierigkeiten . Ist das sinnvoll?
Ich verstehe nicht, wie Sie zu dieser Einschätzung kommen. Ich denke, es wäre viel weniger sicher, da der größte Teil der Hashrate jetzt eher für unnötigen Wettbewerb als für Fortschritte verschwendet wird, es würde viel mehr Bestätigungen erfordern, um sicher zu handeln, es würde zu einer Kunst werden, zu beurteilen, ob der derzeit beste Block immer noch konkurrieren sollte oder sich als vorbester Block niederlassen, wäre es viel ineffizienter in Bezug auf Bandbreite und Rechenleistung für die teilnehmenden Knoten. Mir ist nicht klar, inwiefern der vorgeschlagene Ansatz überhaupt besser ist.
Ich verstehe, das sind jetzt interessante Punkte, die man im Hinterkopf behalten sollte. Ich bin mir nicht sicher, ob das, was Sie sagen, wirklich zutrifft, dh ob der größte Teil der Rechenleistung verschwendet würde und ob es wirklich schwierig ist, zu definieren, auf welchem ​​Block abgebaut werden soll. Aber das sind vernünftige Punkte, die es zu beachten gilt. Danke für die Inputs.
@MaiaVictor: Rätsel mich auf: Wenn du ein kleiner Miner im Netzwerk wärst und mit Schwierigkeiten einen Block von 1/100 der aktuellen Hashrate gefunden hättest. Würden Sie a) es senden und versuchen, darauf abzubauen, oder b) versuchen, einen besseren Block auf derselben Höhe abzubauen? Wenn Sie als anderer Miner einen Block mit 1/100 der aktuellen Hashrate erhalten, würden Sie a) dazu wechseln, diesen als vorherigen Block zu verwenden, b) versuchen, bessere Blöcke abzubauen?
Was wäre, wenn Sie fünf Blöcke mit 1/100 des Schwierigkeitsgrades erhalten, die innerhalb einer Minute aufeinander aufbauen? Würden Sie darauf aufbauen oder weiterhin versuchen, einen einzelnen Block mit 1/10 der Schwierigkeit alle zu ersetzen?
Ich denke, Sie werden in den letzten 10 Minuten immer auf dem besten Block abbauen, versuchen, immer kleinere Hashes zu erhalten, und den besten Block senden, den Sie haben (auch wenn es nicht Ihrer ist). Solange Miner dies weiterhin tun, werden sich Blöcke mit geringem Schwierigkeitsgrad einfach nicht ausbreiten, und gute Blöcke werden jeden erreichen. Nach der 10-Minuten-Marke begannen die Miner mit dem Mining auf dem besten Block, den sie für die letzten 10 Minuten hatten, was fast immer der richtige sein wird. Wenn nicht, wird bald genug der Richtige eintreffen, und sie haben nicht so viel Mühe verschwendet.
Natürlich können Sie versuchen, ältere Blöcke erneut zu minen, aber das macht es viel unwahrscheinlicher, dass sich Ihre Blöcke ausbreiten, sodass Sie einen Anreiz haben, immer über Ihrem besten Block zu minen, dh Ihrem Tipp mit dem am meisten angesammelten PoW.
„Ich denke, Sie werden in den letzten 10 Minuten immer auf dem besten Block abbauen“ ⇒ Es ist nicht klar, warum Sie glauben, dass Bergleute sich auf dieses spezielle Verhalten einigen würden. Triviales Gegenbeispiel: Ein Miner findet einen extrem niedrigen Hash. Das Vernünftigste wäre, sofort mit dem Mining zu beginnen, es vielleicht sogar eine Weile geheim zu halten, um andere Miner dazu zu bringen, ihre Mining-Power zu verschwenden.

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.

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. -- Wie so? Der beste Block ist der mit dem höchsten PoW. Auch bei Bitcoin kann man nicht sagen, ob man in einer 10-Minuten-Zeitspanne den richtigen Block gesehen hat, ohne alle Blöcke zu kennen: Zwei Blöcke könnten gleichzeitig geschürft worden sein. Der Streit wird nach weiteren Blöcken gelöst. Der exakt gleiche Vorgang findet in meinem System statt, indem ich zunächst einfach die Kette mit dem größten PoW auswähle. Es ist kein zentraler Koordinator beteiligt.
Mir ging es darum, die Frage zu beantworten: „Können Sie entscheiden, ob ein Block eine gültige Lösung sein kann ?“. In dem vorgeschlagenen System kann jeder Block eine gültige Lösung sein. Im aktuellen System können nur Blöcke, die das Ziel treffen, eine gültige Lösung sein. Da es äußerst selten ist, Blöcke zu finden, die das Ziel treffen, wird normalerweise nur ein Block berechnet, der eine bestimmte Tiefe löst, und kann leicht identifiziert werden (indem er das Ziel trifft). In dem vorgeschlagenen System können Sie nicht einfach feststellen, ob ein Block, der Ihnen angezeigt wird, höchstwahrscheinlich der allgemein akzeptierte Block in dieser Tiefe ist.
Ah, fair genug, aber warum ist das wichtig oder wünschenswert? Meinst du, um Flut/Spam zu verhindern? Es ist fair, dass Sie nicht wissen können, ob ein Block gültig ist, aber für alle praktischen Zwecke können Sie sehr gute Vermutungen anstellen. Wenn Sie beispielsweise einen Block mit einem hohen PoW-Score erhalten haben, können Sie wahrscheinlich jeden Block mit <50 % seines PoW-Scores ignorieren.
Ich habe meine Antwort so bearbeitet, dass sie sich auf das Problem „Einen alten Block schlagen macht eine ganze Kette von Blöcken ungültig“ konzentriert, das eigentlich der Kern hinter der Frage „Ist dieser Block gültig“ ist.
Ich schätze Ihre Antwort, es entwickelt sich großartig, aber ich habe immer noch ein paar Bedenken. 1. "Heute kann ein als gültig geltender Block sicher geschürft werden" - sicher in welchem ​​Sinne? Bei Bitcoin kann es auch vorkommen, dass Sie auf einem Block schürfen, der ungültig wird, wenn dieser Block ein Onkel wird. 2. „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.“ Das ergibt für mich keinen Sinn. Stattdessen würden Sie einfach den obersten Block abbauen und hoffen, dass er nicht ungültig wird, in Ihren Worten. Macht Sinn?
Der Hauptunterschied besteht darin, dass derzeit eine Kette verwaist wird, wenn jemand eine längere Kette präsentiert, was viel Arbeit als die verwaiste Kette erfordert. Ihr Schema erlaubt es, nur einen Block anzugreifen, das schwächste Glied, um abhängig davon die gesamte Kette zu zerstören, da ein zuvor gültiger Block ("niedrigster Hash") jetzt offensichtlich nicht mehr gültig ist ("es ist nur der zweitniedrigste Hash, Entschuldigung"), und Sie müssen die Kette nach diesem Block nicht schlagen.
Mein Schlüsselpunkt ist also: „Verwaiste gültige Gabeln der Kette sind in Ordnung, Blöcke, die sich plötzlich als ungültig herausstellen, brechen das Schema.“ - Die Gültigkeit eines Blocks muss also eine Eigenschaft sein, die sich nicht dynamisch ändern kann
Ja, das ist ein Punkt, aber beachten Sie, dass Sie die längste Kette durch die Summe der Arbeit jedes Blocks auswählen, also wird es nicht funktionieren, einfach einen Block mit kleiner Punktzahl zum Ersetzen auszuwählen, da Sie auch jeden Block oben ersetzen müssen davon. Das heißt, ein gültiger Block wird nicht ungültig, wenn ein Block mit gleicher Höhe, aber höherer Punktzahl auftaucht. Jeder Block ist gültig, Sie wählen einfach die längste Kette als kanonische Zeitachse aus, indem Sie die einzelnen Punktzahlen summieren.
Das sagt deine Frage nicht aus. Es besagt, dass alle zehn Minuten der Block mit dem niedrigsten Hash akzeptiert wird (und alle anderen Blöcke offensichtlich abgelehnt werden müssen). Es gewinnt also nicht „die teuerste Kette“, sondern die Kette mit dem teureren Block am Splitpunkt gewinnt.
Ah, so hast du es interpretiert? Das habe ich nicht gemeint. Ich kann das Problem jetzt sehen, und in der Tat ist meine Frage schlecht formuliert. Ich meinte, dass jeder Block akzeptiert wird, aber die Kette mit der größten angesammelten Arbeit ist die kanonische.
Fürs Protokoll, ich habe die größte Menge an Arbeit angenommen, aber das gleiche Problem gilt immer noch für die letzten paar Blöcke an der Kettenspitze: Ein einzelner Block mit einem sehr niedrigen Hash könnte versehentlich oder absichtlich einen oder mehrere Blöcke von der Kettenspitze reorganisieren.
@Murch Ich sehe das jedoch nicht als Problem. Wenn der Block mit einem sehr niedrigen Hash die Kettenspitze ersetzen kann, wird erwartet, dass dieser Block und seine Nachkommen immer noch mehr Arbeit in Anspruch genommen haben als die aktuelle Kettenspitze, was der Bitcoin-Idee entspricht: Die Mehrheit der Hashing-Power ist Rechts. Ein weiches Problem bei dem vorgeschlagenen Schema ist, dass Reorganisationen häufiger stattfinden, bis ein Konsens für einen bestimmten Block gefunden wird, sodass weniger Arbeit in die letzte Kette fließt, da mehr Arbeit für das Lösen von Ketten aufgewendet wird.
(und es scheint, dass mein letzter Kommentar mit Ihrer Antwort übereinstimmt. Es hängt davon ab, wie Sie es betrachten, ob "keine Schwierigkeit" nur ein schlechteres, aber praktikables Schema mit vielen Neuregelungen und höheren Risiken für hinterhältige Angriffe ist oder diese Risiken dieses Schema ausmachen inakzeptabel. Ich stimme Ihnen zu, dass Reorganisationen nach fast jedem Block und die Erhöhung der Bandbreite keine wünschenswerten Eigenschaften sind.)
Ja, es ist kein absolutes No-Go, aber es würde Bitcoin weniger sicher machen, weil ein Mehrheitsangriff (der immer auf seiner eigenen Kette aufbaut) einen viel kleineren Teil der gesamten Hashrate erfordern würde, um voranzukommen, weil so viel Hashing verschwendet wird auf die Förderung veralteter Tipps. Es wäre auch eine schreckliche Erfahrung aus der Sicht der Benutzer, die auf Bestätigungen ihrer Transaktionen warten.

Zwei potenzielle Probleme mit dieser Idee, etwas verwandt.

  1. 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.

  2. 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.

Gute Argumente. Schätzen Sie auch diese Antwort, da sie versteht, was ich vorgeschlagen habe.

Rekapitulieren

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 .

Antworten (oder versuchen)

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 wird100current100current

Wie kann mein Kunde sicher sein, dass niemand Blöcke behält? -- Auch bei Bitcoin kann man sich dessen nicht sicher sein. Es könnte sehr wohl eine Gabelung mit mehr Arbeit geben (eine "längste Kette"), die Sie nicht kennen. Bitcoin-Knoten gehen einfach davon aus, dass sie genug kollaborierende Kollegen getroffen haben, um diese Daten zu erhalten. Mein vorgeschlagenes System tut dasselbe. Der einzige Unterschied besteht darin, dass der Knoten anstelle einer Zielschwierigkeit einfach den Block mit der größten Arbeit auswählt. Für den PoV eines einsamen Knotens sammelt er einfach Blöcke und berechnet die längste Kette der Blöcke, die er sieht. Es braucht keine zentrale Partei in irgendeiner Form, um einen Konsens zu erzielen.