github.com/aakash4dev/cometbft@v0.38.2/spec/abci/README.md (about)

     1  ---
     2  order: 1
     3  parent:
     4    title: ABCI++
     5    order: 3
     6  ---
     7  
     8  # ABCI++
     9  
    10  ## Introduction
    11  
    12  ABCI++ is a major evolution of ABCI (**A**pplication **B**lock**c**hain **I**nterface).
    13  Like its predecessor, ABCI++ is the interface between CometBFT (a state-machine
    14  replication engine) and the actual state machine being replicated (i.e., the Application).
    15  The API consists of a set of _methods_, each with a corresponding `Request` and `Response`
    16  message type.
    17  
    18  The methods are always initiated by CometBFT. The Application implements its logic
    19  for handling all ABCI++ methods.
    20  Thus, CometBFT always sends the `Request*` messages and receives the `Response*` messages
    21  in return.
    22  
    23  All ABCI++ messages and methods are defined in [protocol buffers](https://github.com/aakash4dev/cometbft/blob/main/proto/tendermint/abci/types.proto).
    24  This allows CometBFT to run with applications written in many programming languages.
    25  
    26  This specification is split as follows:
    27  
    28  - [Overview and basic concepts](./abci++_basic_concepts.md) - interface's overview and concepts
    29    needed to understand other parts of this specification.
    30  - [Methods](./abci++_methods.md) - complete details on all ABCI++ methods
    31    and message types.
    32  - [Requirements for the Application](./abci++_app_requirements.md) - formal requirements
    33    on the Application's logic to ensure CometBFT properties such as liveness. These requirements define what
    34    CometBFT expects from the Application; second part on managing ABCI application state and related topics.
    35  - [CometBFT's expected behavior](./abci++_comet_expected_behavior.md) - specification of
    36    how the different ABCI++ methods may be called by CometBFT. This explains what the Application
    37    is to expect from CometBFT.
    38  - [Example scenarios](./abci++_example_scenarios.md) - specific scenarios showing why the Application needs to account
    39  for any CometBFT's behaviour prescribed by the specification.
    40  - [Client and Server](./abci++_client_server.md) - for those looking to implement their
    41    own ABCI application servers.