Я хочу реализовать это, так что есть ли у кого-нибудь формула для динамической длительности блока вместо фиксированной цели в 10 минут?
Продолжительность блока контролируется только сложностью (хотя и косвенно) и хешрейтом сети, поэтому вам нужно увеличить сложность, когда в последних X блоках очень мало транзакций, и наоборот, уменьшить сложность, когда блоки переполнятся, но также уменьшить сложность при низком хэшрейте и увеличение сложности при высоком хешрейте.
В то же время вам нужно будет стимулировать майнинг, поэтому вы можете захотеть получить вознаграждение, зависящее от целевого времени, а не постоянное за блок, поскольку в противном случае майнеры могли бы спамить сеть, чтобы увеличить доход.
Допустим, мы стремимся перейти от просмотра последних 100 блоков к блокам, заполненным на 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;
Возможно, вас заинтересует то, что я написал на эту тему здесь . Вы можете внести изменения в протокол, где майнерам предоставляется выбор «веса» их блока, а затем их решение может быть использовано для установки глобальных параметров частоты.
Марч
Маэстро
Марч
морсекодер
Маэстро
морсекодер
Маэстро
Ник Оделл
Маэстро