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?
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.
Luca Matteis
Luca Matteis
mystcoin
Luca Matteis
mystcoin
mystcoin
mystcoin
Luca Matteis
mystcoin
Luca Matteis
Luca Matteis