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.