Browse Source

Update spec/abci++/abci++_app_requirements_002_draft.md spec/abci++/abci++_basic_concepts_002_draft.md

Co-authored-by: William Banfield <4561443+williambanfield@users.noreply.github.com>
pull/7804/head
Sergio Mena 3 years ago
parent
commit
7bbbba9acf
2 changed files with 4 additions and 4 deletions
  1. +2
    -2
      spec/abci++/abci++_app_requirements_002_draft.md
  2. +2
    -2
      spec/abci++/abci++_basic_concepts_002_draft.md

+ 2
- 2
spec/abci++/abci++_app_requirements_002_draft.md View File

@ -67,8 +67,8 @@ of `ProcessProposal`. As a general rule `ProcessProposal` _should_ always accept
According to the Tendermint algorithm, a correct process can broadcast at most one precommit message in round $r$, height $h$. According to the Tendermint algorithm, a correct process can broadcast at most one precommit message in round $r$, height $h$.
Since, as stated in the [Description](#description) section, `ResponseExtendVote` is only called when Tendermint Since, as stated in the [Description](#description) section, `ResponseExtendVote` is only called when Tendermint
is about to broadcast a non-`nil` precommit message, a correct process can only produce one vote extension in round $r$, height $h$. is about to broadcast a non-`nil` precommit message, a correct process can only produce one vote extension in round $r$, height $h$.
Let $e^r_p$ the vote extension that the Application of a correct process $p$ returns via `ResponseExtendVote` in round $r$, height $h$.
Let $w^r_p$ the proposed block that $p$'s Tendermint passes to the Application via `RequestExtendVote` in round $r$, height $h$.
Let $e^r_p$ be the vote extension that the Application of a correct process $p$ returns via `ResponseExtendVote` in round $r$, height $h$.
Let $w^r_p$ be the proposed block that $p$'s Tendermint passes to the Application via `RequestExtendVote` in round $r$, height $h$.
* Requirement 6 [`ExtendVote`, `VerifyVoteExtension`, coherence]: For any two correct processes $p$ and $q$, if $q$ receives $e^r_p$ * Requirement 6 [`ExtendVote`, `VerifyVoteExtension`, coherence]: For any two correct processes $p$ and $q$, if $q$ receives $e^r_p$
from $p$ in height $h$, $q$'s Application returns Accept in `ResponseVerifyVoteExtension`. from $p$ in height $h$, $q$'s Application returns Accept in `ResponseVerifyVoteExtension`.


+ 2
- 2
spec/abci++/abci++_basic_concepts_002_draft.md View File

@ -215,7 +215,7 @@ The Application may also choose not to include any vote extension.
When another process receives a precommit message with and vote extension, it calls When another process receives a precommit message with and vote extension, it calls
method `VerifyVoteExtension` so that the application can validate the data received. method `VerifyVoteExtension` so that the application can validate the data received.
If the validation fails, the precommit message will be deemed invalid and ignored If the validation fails, the precommit message will be deemed invalid and ignored
by Tendermint. This has strong implications on Tendermint's liveness.
by Tendermint. This has negative impact on Tendermint's liveness, i.e., if repeatedly vote extensions by correct validators cannot be verified by correct validators, Tendermint may not be able to finalize a block even if sufficiently many (+2/3) of the validators send precommit votes for that block. Thus, `VerifyVoteExtension` should only be used with special care.
As a general rule, an Application that detects an invalid vote extension SHOULD As a general rule, an Application that detects an invalid vote extension SHOULD
accept it in `ResponseVerifyVoteExtension` and ignore it in its own logic. accept it in `ResponseVerifyVoteExtension` and ignore it in its own logic.
@ -261,7 +261,7 @@ Sources of non-determinism in applications may include:
* Library version changes * Library version changes
* Race conditions * Race conditions
* Floating point numbers * Floating point numbers
* JSON serialization
* JSON or protobuf serialization
* Iterating through hash-tables/maps/dictionaries * Iterating through hash-tables/maps/dictionaries
* External Sources * External Sources
* Filesystem * Filesystem


Loading…
Cancel
Save