Hat jemand eine Formel für dynamische Blockdauern?

Ich möchte das umsetzen, hat also jemand eine Formel für dynamische Blockdauern statt einer festen Vorgabe von 10 Minuten?

Im Wesentlichen müssten Sie die Schwierigkeit in jedem Block ändern oder die Schwierigkeit in Bezug auf die vergangene Zeit definieren. AFAIR Der Kimoto Gravity Well kann beides: Wie reguliert der Kimoto Gravity Well die Schwierigkeit?
@Murch Kimoto Gravity nutze ich ja schon, aber es verändert die Schwierigkeit aber nicht die Blockdauer?
Tut mir leid, es ist ein Jahr her, dass ich von KGW gelesen habe. Wenn ich mich richtig erinnere, gab es einige Altcoins, die Blöcke mit abnehmender Schwierigkeit akzeptierten, je mehr Zeit vergangen war, ich dachte, es war KGW, das das tat, aber leider scheine ich mich falsch zu erinnern. Jetzt, wo ich darüber nachdenke, könnte dies mit einigen einzigartigen Angriffsvektoren einhergehen, um das Kettenblatt zu ersetzen, indem ein Block mit höherem Schwierigkeitsgrad abgebaut wird, der auf eine frühere Zeit zurückgeht.
Wie soll sich die Sperrdauer ändern? Das ist der schwierige Teil. Danach ist die Formel im Wesentlichen dieselbe, einer der Eingabeparameter (die Zielblockzeit) ändert sich nur.
@ StephenM347 Ich möchte bei Bedarf ein schnelleres Intervall und ein langsameres, wenn das Netzwerk nicht ausgelastet ist. Ein guter Indikator könnte die Anzahl der Transaktionen in den letzten X Blöcken sein, denke ich? Aber vielleicht gibt es bessere Maßnahmen? Aber zum Beispiel: Wenn die letzten 100 Blöcke zu mehr als 50 % des zulässigen Maximums gefüllt sind, erhöhen Sie die Geschwindigkeit. Wenn sie zu weniger als 50 % gefüllt sind, verringern Sie die Geschwindigkeit. was denkst du? Was eine Herausforderung sein wird, ist, dass ich auch gerne eine schwebende maximale Blockgröße habe, daher wäre das vorherige Beispiel sehr komplex zu implementieren, da die maximale Blockgröße in der Zwischenzeit auch wachsen könnte :)
@Muis, seien Sie vorsichtig mit solchen Lösungen, es klingt leicht manipulierbar, und die eingeführten Probleme könnten schlimmer sein als die, die es zu lösen versucht.
@StephenM347 Ich weiß, es ist nur für ein persönliches Experiment, keine Noobs werden geschädigt :)
Es scheint, als wollten Sie wirklich eine Formel, um die Blockdauer statisch und die Blockschwierigkeit dynamisch zu halten.
@NickODell Nein? Angenommen, Sie haben eine Kette, die 10 Jahre lang fast keine Transaktionen erhält, aber für 1 Monat mit hohem Datenverkehr bereit sein muss. Wenn Sie die Blockdauer kürzer machen, um vorbereitet zu sein, haben Sie 10 Jahre leere Blöcke zum Lagern. Wenn die Dauer dynamisch wäre, könnten Sie Blöcke haben, die sich über 1 Monat erstrecken (nur 120 für 10 Jahre), und dann bei Bedarf auf 1 Minute wechseln.

Antworten (2)

Die Blockdauer wird nur durch die Schwierigkeit (wenn auch indirekt) und die Netzwerk-Hashrate gesteuert. Sie sollten also die Schwierigkeit erhöhen, wenn in den letzten X Blöcken nur sehr wenige Transaktionen vorhanden sind, und umgekehrt die Schwierigkeit verringern, wenn die Blöcke zu voll werden, aber auch verringern Schwierigkeit, wenn es eine niedrige Hashrate gibt, und die Schwierigkeit erhöhen, wenn es eine hohe Hashrate gibt.

Gleichzeitig müssten Sie Anreize für das Mining schaffen, also möchten Sie vielleicht eine Belohnung relativ zur Zielzeit haben, anstatt konstant pro Block, da die Miner sonst das Netzwerk spammen könnten, um den Umsatz zu steigern.

Ein Entwurf

Nehmen wir an, wir zielen darauf ab, uns von der Betrachtung der letzten 100 Blöcke auf Blöcke einzustellen, die zu 50 % voll sind.

findNewBlockTime():
  newTimeTarget = (avBlockInterval100)*(0.5/averageFullness); //shorter interval with many transactions, longer with less

setReward():
  newReward = newTimeTarget*totalIntervalReward/rewardInterval; //rewardInterval could be four years like Bitcoin, or some other interval, with four years totalIntervalReward would be 11.5M coins for first interval

calculateDifficulty():
  newDifficulty = sumDiffLast100/last100BlocksTime*newTimeTarget;

Vielleicht interessiert es Sie, was ich hier zu diesem Thema geschrieben habe . Sie können eine Protokolländerung vornehmen, bei der Miner die „Gewicht“ ihres Blocks auswählen können und ihre Entscheidung dann verwendet werden kann, um die globalen Frequenzparameter festzulegen.