Tendermint 的三种应用状态
The three Tendermint application states
我目前在一个使用 Tendermint 的小型交易平台上工作,但我还不确定应该如何使用 Tendermint 应用程序状态。在 https://tendermint.com/docs/app-dev/abci-spec.html#message-types 下的 Tendermint 文档中,它说:
Note that messages may be sent concurrently across all connections - a typical application will thus maintain a distinct state for each connection. They may be referred to as the DeliverTx state, the CheckTx state, and the Commit state respectively.
我会告诉你我对这三种状态应该如何使用的理解,希望你能告诉我这是否正确。
- DeliverTx 状态:在 ABCI 应用程序收到每个有效的 DeliverTx 请求消息后,此状态会更新。如果交易无效(由拜占庭提议者包含),DeliverTx 状态 将重置为 CommitTx 状态,该状态先前已在接收到最后一条 CommitTx 消息。
- CommitTx 状态:当 ABCI 应用程序收到 CommitTx 消息时,CommitTx 状态 设置为最新的 DeliverTx 状态.
- CheckTx state:可能用于 DoS 保护(通过将最后几秒内通过 CheckTx 请求消息到达的交易数量存储为 CheckTx 状态 每当每秒的交易数量过高时,CheckTx 响应就会拒绝交易进入内存池。
- 此外,每当查询应用程序(通过 abci_query RPC 端点)时,应用程序都会根据其 CommitTx 状态
回答查询
我对这三种状态的看法可能已经暗示我不确定当应用程序收到 DeliverTx 请求但交付的交易无效时会发生什么(这种情况甚至会发生吗?)。提议、预投票和预提交的整个过程实际上如何与这些消息类型(CheckTx、DeliverTx、Commit)相关?
在文档中进一步搜索后,我发现以下页面解释得非常好。
如前所述,https://tendermint.com/docs/spec/abci/apps.html#state 应该回答这个问题。
也有很好的解释
我目前在一个使用 Tendermint 的小型交易平台上工作,但我还不确定应该如何使用 Tendermint 应用程序状态。在 https://tendermint.com/docs/app-dev/abci-spec.html#message-types 下的 Tendermint 文档中,它说:
Note that messages may be sent concurrently across all connections - a typical application will thus maintain a distinct state for each connection. They may be referred to as the DeliverTx state, the CheckTx state, and the Commit state respectively.
我会告诉你我对这三种状态应该如何使用的理解,希望你能告诉我这是否正确。
- DeliverTx 状态:在 ABCI 应用程序收到每个有效的 DeliverTx 请求消息后,此状态会更新。如果交易无效(由拜占庭提议者包含),DeliverTx 状态 将重置为 CommitTx 状态,该状态先前已在接收到最后一条 CommitTx 消息。
- CommitTx 状态:当 ABCI 应用程序收到 CommitTx 消息时,CommitTx 状态 设置为最新的 DeliverTx 状态.
- CheckTx state:可能用于 DoS 保护(通过将最后几秒内通过 CheckTx 请求消息到达的交易数量存储为 CheckTx 状态 每当每秒的交易数量过高时,CheckTx 响应就会拒绝交易进入内存池。
- 此外,每当查询应用程序(通过 abci_query RPC 端点)时,应用程序都会根据其 CommitTx 状态 回答查询
我对这三种状态的看法可能已经暗示我不确定当应用程序收到 DeliverTx 请求但交付的交易无效时会发生什么(这种情况甚至会发生吗?)。提议、预投票和预提交的整个过程实际上如何与这些消息类型(CheckTx、DeliverTx、Commit)相关?
在文档中进一步搜索后,我发现以下页面解释得非常好。
如前所述,https://tendermint.com/docs/spec/abci/apps.html#state 应该回答这个问题。
也有很好的解释