【问题标题】:The three Tendermint application states三个 Tendermint 应用程序状态
【发布时间】:2019-06-20 13:31:36
【问题描述】:

我目前正在一个使用 Tendermint 的小型交易平台工作,但我还不确定应该如何使用 Tendermint 应用程序状态。在https://tendermint.com/docs/app-dev/abci-spec.html#message-types 下的 Tendermint 文档中,它说:

请注意,消息可能会在所有连接上同时发送 - 一个典型的应用程序将因此为每个连接维护一个不同的状态。它们可以分别称为 DeliverTx 状态、CheckTx 状态和 Commit 状态。

我会告诉你我应该如何使用这三种状态的理解,希望你能告诉我这是否正确。

  • DeliverTx 状态:在 ABCI 应用程序收到每个有效的 DeliverTx 请求消息后,此状态会更新。如果交易无效(由拜占庭提议者包含),DeliverTx 状态 将重置为先前在收到最后一个 CommitTx 消息时设置的 CommitTx 状态
  • CommitTx 状态:当 ABCI 应用程序收到 CommitTx 消息时,CommitTx 状态 被设置为最新的DeliverTx 状态
  • CheckTx 状态:可能用于 DoS 保护(通过将最近几秒内通过 CheckTx 请求消息到达的事务数存储为 CheckTx 状态,并且每当事务数每秒太高,CheckTx 响应拒绝交易进入内存池)。
  • 此外,无论何时(通过 abci_query RPC 端点)查询应用程序,应用程序都会根据其 CommitTx 状态回答查询

我对这三种状态的看法可能已经暗示我不确定当应用程序接收到 DeliverTx 请求但交付的事务无效时会发生什么(这种情况甚至会发生吗?)。提议、预投票和预提交的整个过程实际上与这些消息类型(CheckTx、DeliverTx、Commit)有什么关系?

【问题讨论】:

    标签: tendermint


    【解决方案1】:

    在文档中进一步搜索后,我发现以下页面解释得非常好。

    https://tendermint.com/docs/spec/abci/apps.html#state

    【讨论】:

      【解决方案2】:

      如前所述,https://tendermint.com/docs/spec/abci/apps.html#state 应该回答这个问题。

      https://github.com/6thc/tendermint-cas-demo也有很好的解释

      【讨论】:

        猜你喜欢
        • 2021-03-16
        • 1970-01-01
        • 1970-01-01
        • 2021-11-08
        • 2015-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多