关于嫩薄荷块创建间隔的困惑

时间:2018-10-13 08:18:35

标签: tendermint

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

我阅读文档和代码。

所以我猜想,如果嫩薄荷在一个回合中成功制造出方块,
timeout_propose + timeout_prevote + timeout_precommit = 5s,然后等待timeout_commit 5s ...
因此区块提交发生在5s〜10s之内,因此下一个区块共识在10s之后开始。

如果嫩薄荷在两轮中成功制造出方块,
(timeout_propose + timeout_prevote + timeout_precommit)+(timeout_propose + timeout_propose_delta + timeout_prevote + timeout_prevot_delta + timeout_precommit + timeout_precommit_delta)= 5s + 6.5s = 11.5s并等待timeout_commit 5s ...
因此区块提交发生在11.5s〜16.5s,因此下一个区块共识在16.5s之后开始。 我猜这是因为薄荷糖每轮都增加了超时时间。

我的猜测对吗?如果不是,那么配置文件中的超时到底是什么意思?

1 个答案:

答案 0 :(得分:4)

感谢您的提问。

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

中有许多有关超时的信息

您还可以在规范中找到更详细的技术说明:https://arxiv.org/abs/1807.04938

请注意,在成功的回合中,无论timeout_commit是什么,我们绝对等待的唯一超时。

这是超时的简短摘要:

  • timeout_propose =在阻止nil之前我们要等待一个提案块多长时间
  • timeout_propose_delta =每轮回合增加timeout_propose
  • timeout_prevote =我们收到+2/3的“任何”预选票(即,不是一个块或没有nil)后,要等待多长时间
  • timeout_prevote_delta =每一轮timeout_prevote会增加多少
  • timeout_precommit =收到+2/3的“任何内容”预提交(即,不是单个块或为零)后,我们要等待多长时间
  • timeout_precommit_delta =每轮回合的timeout_precommit增加多少
  • timeout_commit =在提交一个块之后,在开始新的高度之前,我们要等待多长时间(这使我们有机会接受更多的预提交,即使我们已经有+2/3)