Gibt es stochastisch abhängige Proof-of-Work-Algorithmen?

Bei Bitcoin ist die Wahrscheinlichkeit, einen Block auf dem X-ten Hash zu entdecken, gleich 1 wie auf dem Y-ten Hash. Damit ist die Entdeckungswahrscheinlichkeit stochastisch unabhängig .

Gibt es Proof-of-Work-Algorithmen, die stochastisch abhängig sind ? Bergleute, die einen verwenden, haben vielleicht keine Ahnung, wie nahe sie einer Entdeckung sind, aber sie würden wissen, dass sie "näher kommen".


Lesen Sie weiter, wenn Sie eine schnelle und schmutzige Beschreibung wünschen, warum ich denke, dass ein solcher Algorithmus interessant sein könnte:

Eine Folge der stochastischen Unabhängigkeit von Bitcoin ist, dass, wenn ein Miner einen Block entdeckt, keiner der anderen konkurrierenden Miner „näher dran“ ist, denselben Block wiederzuentdecken (mit einem anderen, aber gültigen Hash, der auch die Schwierigkeit erfüllt). Es ist natürlich nur natürlich, dass Bitcoin keinen Anreiz/Belohnung für die Wiederentdeckung von Blöcken bietet, da dieser Arbeitsnachweis besser für den Versuch ausgegeben wird, den neuesten Block zu entdecken. Leider hat ein Angreifer mit genügend Hashing-Power und Zeit gute Chancen, die Konkurrenz mehrmals hintereinander zu schlagen; Aus diesem Grund heißt es, dass Sie zur Sicherheit auf 6 Bestätigungen warten müssen, was einer Wartezeit von einer Stunde für die Transaktion entspricht. Wir könnten sagen, dass in Bitcoin Bestätigungen seriell sind .

Im Gegensatz dazu könnte ein stochastisch abhängiger Arbeitsnachweis eine effiziente Implementierung von parallel ermöglichenBestätigungen; Dadurch wird die Transaktionswartezeit stark reduziert, da erwartet werden kann, dass Wiederentdeckungen kurz nach der ersten Entdeckung eines Blocks folgen. Nehmen Sie an, eine Kryptowährung verwendet solche Beweise, um nicht nur die erste Entdeckung eines Blocks zu belohnen, sondern auch das erste X seiner Wiederentdeckungen. Der Zahlungsempfänger muss dann nur noch überprüfen, ob die Transaktion in allen Entdeckungen des Blocks (oder zumindest in einem ausreichend hohen Prozentsatz davon) aufgeführt ist. Die Menge an Hash-Leistung, die ein Angreifer für Wiederentdeckungen benötigt, sollte im Idealfall dieselbe sein wie bei der ursprünglichen Entdeckung (linear ansteigend). Diese Wiederentdeckungs-Hashes könnten auf die gleiche Weise wie Transaktionen aufgezeichnet werden, indem sie gegen eine Gebühr/Belohnung in einen untergeordneten Block aufgenommen werden.

1 Tatsächlich erhöht sich die Wahrscheinlichkeit ganz leicht, wenn noch keine Blöcke entdeckt wurden und nur ein festes Minimum an Bits geändert wird, beispielsweise wenn nur das Nonce-Feld erhöht wird; aber der Unterschied ist so gering, dass er keine Rolle spielt, angesichts der astronomischen Anzahl möglicher Hashes, die der aktuellen Schwierigkeit gerecht werden.

Ich glaube nicht, dass Ihre Fußnote richtig ist, weil Sie nicht garantiert sind, dass Sie jemals eine Lösung finden werden. Fühlen Sie sich frei, mir das Gegenteil zu erklären und zu beweisen.

Antworten (2)

Gibt es Proof-of-Work-Algorithmen, die stochastisch abhängig sind?

Ja. Eine andere Idee ähnlich der, die Nick beschrieben hat:

Fügen Sie am Ende jeder Transaktion zusätzliche 8 Bytes hinzu, wenn Sie den Merkle-Baum erstellen, in einem Feld namens nEffort. Das nBitsFeld in der Kopfzeile beschreibt den Gesamtarbeitsaufwand, der (im Durchschnitt) am Block durchgeführt werden muss. Teilen Sie diese Arbeit durch die Anzahl der Transaktionen im Block auf, und dann können Sie jede Transaktion einzeln abbauen, indem Sie sie ändern, nEffortbis das Blatt des Merkle-Baums auf einen ausreichend niedrigen Wert gehasht ist. Beachten Sie, dass dies keine Transaktions-IDs ersetzt, es wäre im Wesentlichen nur ein zusätzliches Feld jedes Blattelements des Merkle-Baums.

Um die Arbeit zu überprüfen, stellen Sie sicher, dass jedes Blatt des Merkle-Baums den Parameter „difficulty/Number_of_transactions“ erfüllt.

Die Nachteile davon:

  • Ein Block-Header kann nicht verifiziert werden, ohne alle Transaktionsdaten zu haben, was für SPV-Knoten offensichtlich sehr einschränkend ist, da die Sicherheit ihrer Transaktionen darauf basiert, wie viele Blöcke ihn enthalten.
  • Dies könnte auch doppelte Ausgaben erleichtern. Schürfen Sie einfach eine Transaktion, bei der Sie sich selbst Münzen geben, und geben Sie sie frei, nachdem Sie Münzen an jemand anderen gesendet haben.
  • Es würde den Anreiz verringern, Ihrem Block neue Transaktionen hinzuzufügen, da jede neue Transaktion bedeuten würde, dass alle zuvor abgebauten Transaktionen für weniger Arbeit zählen.

Es ist wahrscheinlich keine gute Idee, aber es ist eine andere Möglichkeit, einen stochastisch abhängigen Arbeitsnachweis zu erbringen.

Dann würde der Block den Proof of Work nicht erfüllen. Genau wie bei Bitcoin könnte ich einen Block weiterleiten und eine Transaktion ersetzen, aber es würde von allen abgelehnt werden ... Ich denke, das Problem, von dem Sie sprechen, ist das Ersetzen. Bei der von mir vorgeschlagenen Methode könnte ich eine Transaktion in einem Block durch eine andere abgebaute Transaktion ersetzen, und sie würde trotzdem validieren. Daher keine praktikable PoW-Methode.
Du hast nichts gesehen! Ich dachte an einen besseren Angriff: Wenn ich Ihren Block im Netzwerk sehe, könnte ich dann nicht die Coinbase Ihres Blocks durch meine eigene Coinbase ersetzen, vorausgesetzt, es wäre genug Arbeit damit verbunden?
@NickODell Haha, das ist besser. Ich dachte an eine Lösung und dann an eine Möglichkeit, meine Lösung zu brechen, also werde ich jetzt einfach aufhören, offensichtlich würde das niemals funktionieren. :P

Bergleute, die einen verwenden, haben vielleicht keine Ahnung, wie nah sie einer Entdeckung sind, aber sie würden wissen, dass sie "näher kommen".

Ja, das ist möglich.

Anstatt einen Blockkopf mit Schwierigkeit A zu fordern, könnten Sie 16 Blockköpfe mit Schwierigkeit A/16 fordern. Dies würde es ermöglichen, herauszufinden, wie weit Sie in dem Prozess fortgeschritten sind.

Im Gegensatz dazu könnte ein stochastisch abhängiger Arbeitsnachweis eine effiziente Implementierung paralleler Bestätigungen ermöglichen; Dadurch wird die Transaktionswartezeit stark reduziert, da erwartet werden kann, dass Wiederentdeckungen kurz nach der ersten Entdeckung eines Blocks folgen. Nehmen Sie an, eine Kryptowährung verwendet solche Beweise, um nicht nur die erste Entdeckung eines Blocks zu belohnen, sondern auch das erste X seiner Wiederentdeckungen.

Das ist auch möglich. Sie könnten dies tun, indem Sie jeden Block in Bitcoin 1 oder mehr Eltern haben. Sie benötigen eine Art Wegregel, um zu entscheiden, welche Transaktionen in einem Zusammenführungsblock beibehalten werden sollen (da einige unweigerlich in Konflikt geraten würden).

Nachteile der beiden vorherigen Änderungen:

  • Normalerweise schließt ein Miner Transaktionen ein, sobald er davon erfährt. Das Einbeziehen einer Transaktion bedeutet nicht, dass Sie Fortschritt verlieren. Aber wenn Sie näher kamen, würden Sie das nicht aufgeben wollen.
  • Nur die X stärksten Miner und Mining-Pools würden im Geschäft bleiben. Alle anderen können sich auch nicht um das Mining kümmern.
  • Vollständige Knoten würden X-mal mehr Bandbreite benötigen, um Blöcke zu verifizieren. Sobald die Blöcke verifiziert wurden, würde es auch zusätzlichen Speicherplatz beanspruchen. Wenn die Blöcke sehr unterschiedlich wären, könnte es X-mal mehr Speicherplatz beanspruchen. Wenn die Blöcke identisch wären, wären es nur zusätzliche ~350 Bytes pro Block (Coinbase und Blockheader).
Meinen Sie im letzten Punkt nicht SPV-Knoten? Außerdem wären es nicht genau X-Mal, da einige der Header-Daten wiederverwendet werden können.
Dies könnte funktionieren, wenn das abgebaute TX-Set Nur-Anhängen war. Und ich stimme @MeniRosenfeld zu, es scheint, als wäre es nur das X-fache des Speichers für SPV-Knoten, aber geringfügig mehr Speicher für vollständige Knoten. Ein interessanter Aspekt dieses Vorschlags ist, dass Pools einen Anreiz erhalten würden, herauszufinden, wie weit andere Pools sind. dh wenn ein anderer Pool 13/16 Header gelöst hat, aber Ihr Pool (gleiche Hashing-Power) Pech hatte und nur 2/16 gelöst hat, dann würde der andere Pool viel wahrscheinlicher gewinnen, also wäre es wahrscheinlich nicht rentabel für Ihren Pool weiter zu schürfen, bis der andere Pool den Block löst.