Quiero implementar esto, entonces, ¿alguien tiene una fórmula para la duración de los bloques dinámicos en lugar de un objetivo fijo de 10 minutos?
La duración del bloque solo está controlada por la dificultad (aunque indirectamente) y el hashrate de la red, por lo que le conviene aumentar la dificultad cuando hay muy pocas transacciones en los últimos X bloques, y viceversa, disminuir la dificultad cuando los bloques están demasiado llenos, pero también disminuir dificultad cuando hay un hashrate bajo, y aumenta la dificultad cuando hay un hashrate alto.
Al mismo tiempo, necesitaría incentivar la minería, por lo que es posible que desee tener una recompensa relativa al tiempo objetivo, en lugar de una constante por bloque, ya que, de lo contrario, los mineros podrían enviar spam a la red para aumentar los ingresos.
Digamos que nuestro objetivo es ajustarnos al mirar los últimos 100 bloques para bloques que están llenos al 50%.
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;
Quizás te interese lo que escribí sobre el tema aquí . Puede realizar un cambio de protocolo donde los mineros pueden elegir el "peso" de su bloque, y su decisión se puede usar para establecer los parámetros de frecuencia global.
muro
Maestro
muro
codificador morse
Maestro
codificador morse
Maestro
Nick ODell
Maestro