Wie wird in Nxt über den nächsten Fälscher entschieden?

Ich habe sowohl das Nxt-Whitepaper als auch viele andere Ressourcen im Wiki gelesen, aber ich kann immer noch nicht verstehen, wie genau der Schmiedeprozess funktioniert. Soweit ich weiß, gibt es eine Reihe von Online-Benutzern, deren Konto "entsperrt" ist (damit sie den nächsten Block unterzeichnen können, wenn sie gewinnen). Ich verstehe nicht, wie der Gewinner (oder der nächste Fälscher) ermittelt wird. Ist es zufällig oder basiert es darauf, wie viele nxt Coins man hat?

Stellen wir uns zum Beispiel vor, dass drei Benutzer mit "entsperrten" Konten online sind: Alice (hat 40 nxt), Bob (hat 55 nxt) und Fred (hat 13 nxt). Das Wiki sagt:

Ihre Wahrscheinlichkeit, einen Block zu schmieden, hängt von Ihrem Anteil an der Gesamtzahl der Coins ab, die im Netzwerk aktiv sind.

Wenn das stimmt, würde Bob (der mehr Münzen als Alice und Fred hat) nicht jedes Mal die Blockgeneration gewinnen? Aber wie ist es dann möglich, dass auch Konten mit wenig Coins beim Fälschen noch gewinnen können? Hat es etwas damit zu tun, dass der siegreiche Fälscher 1440 Blöcke warten muss, bevor er wieder fälschen kann? Ist es das, was den weniger reichen Benutzern manchmal eine "Chance" gibt, zu gewinnen?

Außerdem, wenn Bob jedes Mal gewinnt, könnte er nicht einfach die letzten 10 Blöcke oder so zurückgehen und sie durch andere Blöcke ersetzen?

Antworten (1)

Welches Konto berechtigt ist, den nächsten Block zu schmieden, hängt von mehreren Dingen ab.

Der letzte der Blockchain hinzugefügte Block enthält eine 32-Byte-"Generationssignatur" (eigentlich ein Hash). Diese Signatur wird mit dem öffentlichen Schlüssel jedes Kontos verkettet, das versucht, den nächsten Block zu fälschen, und dann sha256-gehasht, um eine Signatur der neuen Generation zu erzeugen, die in den nächsten Block aufgenommen wird, wobei der Block gerade gefälscht wird. Die 8 höchstwertigen Bytes der neuen Signatur werden in umgekehrter Reihenfolge (Little Endian) zu einer 64-Bit-Ganzzahl kombiniert, um den "Trefferwert" jedes Kontos zu bestimmen.

Diese Trefferwerte sind praktisch zufällig und können nicht bekannt sein, bevor der neueste Block zur Blockchain hinzugefügt wird, aber danach sind sie im gesamten Netzwerk bekannt. Jedes Konto, das einen neu gefälschten Block aus dem Netzwerk erhält, kann überprüfen, ob das generierende (fälschende) Konto zum Fälschen berechtigt ist, da es die Generierungssignatur des letzten Blocks und den öffentlichen Schlüssel des Fälschers kennt, die beide im neuen Block enthalten sind. und kann so den Trefferwert für jedes Konto berechnen.

Da der Trefferwert praktisch zufällig ist, hat jedes Konto mit einem effektiven Kontostand ungleich Null die Chance zu fälschen. Ein niedriger Trefferwert ist wünschenswert, denn dann kann auch ein Konto mit geringem Guthaben einen Treffer erzielen. Die Formel für einen Treffer lautet

Treffer < BaseTarget * EffectiveBalance * TimeSinceLastBlock

Das BaseTarget wird mit jedem neuen Block dynamisch angepasst, so dass etwa einmal pro Minute irgendwo im Netzwerk ein Treffer auftritt. Auch wenn der Trefferwert zufällig sehr hoch ist, wird es irgendwann zu einem Treffer kommen, da es aufgrund des Terms TimeSinceLastBlock (in Sekunden) einfacher wird, mit jeder verstreichenden Sekunde einen Treffer zu erzielen.

Aber woher kommt "Ihre Wahrscheinlichkeit, einen Block zu fälschen, hängt von Ihrem Anteil an der Gesamtzahl der im Netzwerk aktiven Coins ab." komm in das Spiel?
Eine Hauptfrage, die ich habe: Wenn Bob den aktuellen Block gewinnt, ist er berechtigt, den nächsten Block zu schmieden, oder muss er 1440 Blöcke warten, bevor er wieder schmieden kann?
Ein höheres Guthaben ist wie der Kauf von mehr Losen in einer Lotterie. Das Gewinnlos wird zufällig gezogen, aber wenn Sie mehrere Lose kaufen, vervielfachen Sie Ihre Gewinnchancen. Ihre Gewinnwahrscheinlichkeit ist die Anzahl der von Ihnen gekauften Lose geteilt durch die Gesamtzahl der Lose, die an alle an der Lotterie teilnehmenden Personen verkauft wurden. Die Wahrscheinlichkeit, den Forging-Wettbewerb zu gewinnen, ist Ihr NXT-Guthaben dividiert durch das Gesamtguthaben des NXT-Forging im gesamten Netzwerk. Dies geschieht durch den Begriff EffectiveBalance in der Trefferbeziehung.
Richtig, aber da die Lotterie zwischen den Benutzern stattfindet, die gerade fälschen (aktive Benutzer), wäre es nicht einfach für einen Benutzer mit 90% aller Tickets, daran teilzunehmen und mit ziemlicher Sicherheit die Runde zu gewinnen? und würde er auch die nächste Runde gewinnen (vorausgesetzt, er hat jetzt noch mehr Tickets)?
Bob ist berechtigt, den nächsten Block zu gewinnen, basierend auf seinem EffectiveBalance, das sich von Block zu Block ändern kann. Ausgegebenes NXT reduziert sein Guthaben sofort, aber erhaltenes NXT steht nicht zum Schmieden für 1440 Blöcke zur Verfügung. Diese Verzögerung bei der Gutschrift von Einzahlungen soll verhindern, dass Guthaben von einem Konto auf ein anderes mit einem niedrigen Trefferwert verschoben werden, in der Hoffnung, die Kontrolle über die Blockchain zu übernehmen. Die Blockchain kann nach 1440 Blöcken nicht reorganisiert werden.
Ja, wenn ein Konto mehr als 50 % der aktiven NXT-Fälschung erwirbt, könnte er möglicherweise die Blockchain übernehmen. Es wurde darauf geachtet, alle NXT gleich zu verteilen, als es zum ersten Mal erstellt wurde, und die Verteilung sowie die Forging-Aktivität seitdem zu überwachen. Die Verteilung hat sich im Laufe der Zeit verbessert und das Netzwerk noch sicherer gemacht.
Hier können Sie die Forging-Aktivität inklusive Verbreitung in Echtzeit beobachten: nxtportal.org/monitor . Beachten Sie auch die geografische Verteilung hier: nxtportal.org/globe
Das heißt, sobald ein Benutzer einen Block gewinnt, kann er keinen weiteren Block für die nächsten 1440 Blöcke gewinnen? Aber wenn das der Fall ist, wie würde ein 50%-Ticketinhaber jeden einzelnen Block gewinnen, wenn er zwischen seinen Gewinnen 1440 Blöcke warten muss? Dies wird nirgendwo im Wiki sehr klar erklärt, wo ich es versucht habe.
Ich habe oben geschrieben: "Bob ist berechtigt, den nächsten Block zu gewinnen ..." Ich habe Ihre Frage beantwortet: "Wenn Bob den aktuellen Block gewinnt ...". Um es ganz klar zu sagen: Wenn Bob einen Block schmiedet, kann er theoretisch den nächsten Block schmieden und den nächsten danach. Um dies tatsächlich zu tun, muss er entweder ein sehr großes Guthaben haben, viel Glück haben oder beides.
Ok, ich stelle eine neue Frage (und akzeptiere Sie für diese)