mirror of
https://github.com/tendermint/tendermint.git
synced 2026-01-10 23:10:59 +00:00
The current text gives margin to committing changes to the app state during EndBlock, but it should only happen during Commit. Also, PrepareProposal is not allowed to modify transactions, but only the transaction set.
order, parent
| order | parent | ||||
|---|---|---|---|---|---|
| 1 |
|
ABCI++
Introduction
ABCI++ is a major evolution of ABCI (Application Blockchain Interface).
Like its predecessor, ABCI++ is the interface between Tendermint (a state-machine
replication engine) and the actual state machine being replicated (i.e., the Application).
The API consists of a set of methods, each with a corresponding Request and Response
message type.
The methods are always initiated by Tendermint. The Application implements its logic
for handling all ABCI++ methods.
Thus, Tendermint always sends the Request* messages and receives the Response* messages
in return.
All ABCI++ messages and methods are defined in protocol buffers. This allows Tendermint to run with applications written in many programming languages.
This specification is split as follows:
- Overview and basic concepts - interface's overview and concepts needed to understand other parts of this specification.
- Methods - complete details on all ABCI++ methods and message types.
- Requirements for the Application - formal requirements on the Application's logic to ensure Tendermint properties such as liveness. These requirements define what Tendermint expects from the Application; second part on managing ABCI application state and related topics.
- Tendermint's expected behavior - specification of how the different ABCI++ methods may be called by Tendermint. This explains what the Application is to expect from Tendermint.
- Client and Server - for those looking to implement their own ABCI application servers