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之后开始。
我猜这个薄荷糖每轮都会增加delta超时时间。
我的猜测对吗?如果不是,那么配置文件中的超时到底是什么意思?
最佳答案
谢谢你的提问。
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了)
关于tendermint - 关于嫩薄荷块创建间隔的困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52790981/