关于tendermint块创建间隔的困惑

Thu*_*ini 2 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
Run Code Online (Sandbox Code Playgroud)

我阅读文档和代码。

所以在我的猜测中,如果tendermint在一轮中成功创建块,
timeout_propose + timeout_prevote + timeout_precommit = 5s 并等待 timeout_commit 5s...
所以块提交发生在 5s~10s 从而下一个块共识在 10s 后开始。

如果tendermint成功在两个回合,创造块
(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和5秒的等待timeout_commit ......
所以块提交发生在 11.5s~16.5s,因此下一个区块共识在 16.5s 之后开始。我猜tendermint为每一轮添加增量超时。

我的猜测对吗?如果没有,配置文件中的超时究竟是什么意思?

Eth*_*han 5

感谢提问。

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 对“任何事情”的投票后我们等待的时间(即,不是单个块或零)
  • timeout_prevote_delta = 每轮 timeout_prevote 增加多少
  • timeout_precommit = 在收到 +2/3 对“任何事情”的预提交后我们等待多长时间(即不是单个块或零)
  • timeout_precommit_delta = 每轮 timeout_precommit 增加多少
  • timeout_commit = 提交块后等待多长时间,然后开始新的高度(这让我们有机会收到更多的预提交,即使我们已经有 +2/3)