Три состояния приложения Tendermint - PullRequest
0 голосов
/ 27 января 2019

В настоящее время я работаю на небольшой торговой платформе, использующей Tendermint, но пока не уверен, как следует использовать состояния приложения Tendermint. В документах Tendermint под https://tendermint.com/docs/app-dev/abci-spec.html#message-types написано:

Обратите внимание, что сообщения могут отправляться одновременно по всем соединениям - поэтому типичное приложение будет поддерживать отдельное состояние для каждого соединения. Они могут упоминаться как состояние DeliverTx, состояние CheckTx и состояние Commit соответственно.

Я расскажу вам, как следует использовать эти три состояния, и, надеюсь, вы скажете мне, правильно ли это.

  • Состояние DeliverTx : После каждого действительного сообщения запроса DeliverTx, полученного приложением ABCI, это состояние обновляется. В случае недействительной транзакции (включенной византийским посредником) состояние DeliverTx сбрасывается в состояние CommitTx , которое ранее было установлено при получении последнего сообщения CommitTx.
  • Состояние CommitTx : Когда приложение ABCI получает сообщение CommitTx, состояние CommitTx устанавливается как самое последнее Состояние DeliverTx .
  • Состояние CheckTx : Может использоваться для защиты от DoS (путем сохранения количества транзакций, поступивших через сообщение запроса CheckTx за последние несколько секунд, как Состояние CheckTx и всякий раз, когда число транзакций в секунду становится слишком много, ответ CheckTx запрещает транзакциям попадать в mempool).
  • Кроме того, всякий раз, когда приложение запрашивается (через конечную точку RPC abci_query), приложение отвечает на запрос, основываясь на состоянии CommitTx

Мое представление о трех состояниях, возможно, уже подразумевает, что я не уверен, что происходит, когда приложение получает запрос DeliverTx, но доставленная транзакция недействительна (этот случай вообще происходит?). Каким образом весь процесс предложения, предвосхищения и предварительной передачи связан с этими типами сообщений (CheckTx, DeliverTx, Commit)?

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Как уже упоминалось, https://tendermint.com/docs/spec/abci/apps.html#state должен ответить на это.

Есть также хорошее объяснение на https://github.com/6thc/tendermint-cas-demo

0 голосов
/ 29 января 2019

После дальнейшего поиска в документации я нашел следующую страницу, которая очень хорошо объясняет это.

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

...