1. 内部结构
1.1 Tendermint Core
包含区块链需要大部分功能实现,主要有:
- 共识算法:拜占庭POS算法。
- P2P:采用gossip算法,默认端口是46656。
- RPC:区块链对外接口,默认端口是46657。支持三种访问方式:URI over HTTP、JSONRPC over HTTP、JSONRPC over websockets。详细的RPC接口定义列表可以参考https://tendermint.github.io/slate
- 其它:交易缓存池、消息队列等。
1.2 ABCI Application
开发者的区块链应用,开发语言不受限制,可以使用任何语言进行开发,但是必须实现为一个ABCI Server。
- 是一个Socket Server,需支持TSP或GRPC两种方式之一。
- 能够处理ABCI Message。所有的ABCI消息类型都是通过protobuf来定义的,具体的消息格式可参考https://github.com/tendermint/abci/blob/master/types/types.proto
- 实现区块链应用接口(ABCI)。ABCI是Tendermint中定义的一套Application与Tendermint Core之间交互的协议。