Путаница по поводу интервала создания блока мяты - PullRequest
0 голосов
/ 13 октября 2018

У Tendermint, кажется, нет описания времени создания блока ...
Они создают файл конфигурации по умолчанию как

timeout_propose = 3000
timeout_propose_delta = 500
timeout_prevote = 1000
timeout_prevote_delta = 500
timeout_precommit = 1000
timeout_precommit_delta = 500
timeout_commit = 5000

Я читаю документы и код.

Так что, по моему мнению, если tendermint удастся создать блок за один раунд,
timeout_propose + timeout_prevote + timeout_precommit = 5s и подождите timeout_commit в течение 5 с ...
, так что фиксация блока происходит через 5 с ~ 10 стаким образом, следующий консенсус блока начинается через 10 секунд.

И если tendermint удается создать блок в два раунда,
(timeout_propose + timeout_prevote + timeout_precommit) + (timeout_propose + timeout_propose_delta + timeout_prevote + timeout_prevot_delta + timeout_prevot_delta + timeout_precommit + timeout_precom = 0wait timeout_commit в течение 5 с ...
, так что фиксация блока происходит через 11,5 с ~ 16,5 с, поэтому следующий консенсус блока начинается после 16,5 с.Я полагаю, что эта нежная мята добавляет время ожидания дельты для каждого раунда.

Правильно ли мое предположение?Если нет, что именно означают тайм-ауты в файле конфигурации?

1 Ответ

0 голосов
/ 18 октября 2018

Спасибо за вопрос.

В https://tendermint.com/docs/tendermint-core/running-in-production.html

содержится различная информация о тайм-аутах. Более подробное техническое объяснение можно найти в спецификации: https://arxiv.org/abs/1807.04938

Обратите внимание, что в успешном раунде единственное время ожидания, которое мы абсолютно ждем, независимо от того, что является timeout_commit.

Вот краткая сводка времени ожидания:

  • timeout_propose = howдолго мы ждем блок предложения, прежде чем присвоить nil
  • timeout_propose_delta = насколько увеличивается timeout_propose с каждым раундом
  • timeout_prevote = как долго мы ждем после получения +2/3 превалирует над «что угодно» (т.е..не один блок или ноль)
  • timeout_prevote_delta = насколько увеличивается timeout_prevote с каждым раундом
  • timeout_precommit = сколько времени мы ждем после получения +2/3 предварительных подтверждений для «чего угодно» (т.е.ни одного блока или ноля)
  • timeout_precommit_delta = насколько увеличивается timeout_precommit с каждым раундом
  • timeout_commit =сколько времени мы ждем после фиксации блока, прежде чем начинать с новой высоты (это дает нам возможность получить еще несколько предварительных коммитов, даже если у нас уже есть +2/3)
...