TSP -> Socket
This commit is contained in:
parent
366479c7ad
commit
f94ae5eeed
13
README.md
13
README.md
|
@ -4,8 +4,7 @@
|
||||||
|
|
||||||
Blockchains are a system for multi-master state machine replication.
|
Blockchains are a system for multi-master state machine replication.
|
||||||
**ABCI** is an interface that defines the boundary between the replication engine (the blockchain),
|
**ABCI** is an interface that defines the boundary between the replication engine (the blockchain),
|
||||||
and the state machine (the application). It is most commonly implemented in the form of the Tendermint Socket Protocol (TSP),
|
and the state machine (the application).
|
||||||
also known as Teaspoon.
|
|
||||||
By using a socket protocol, we enable a consensus engine running in one process
|
By using a socket protocol, we enable a consensus engine running in one process
|
||||||
to manage an application state running in another.
|
to manage an application state running in another.
|
||||||
|
|
||||||
|
@ -162,12 +161,12 @@ The ABCI is a client/server interface where the replication engine (blockchain)
|
||||||
and the state machine (application) forms the server.
|
and the state machine (application) forms the server.
|
||||||
As blocks are committed in the blockchain, they are forwarded to the application.
|
As blocks are committed in the blockchain, they are forwarded to the application.
|
||||||
|
|
||||||
This repository provides two implementations of an ABCI client & server: TSP (Tendermint Socket Protocol) and via GRPC.
|
This repository provides two implementations of an ABCI client & server: via socket and via GRPC.
|
||||||
|
|
||||||
## TSP
|
## Socket
|
||||||
|
|
||||||
ABCI is best implemented as a streaming protocol.
|
ABCI is best implemented as a streaming protocol.
|
||||||
The TSP provides for asynchronous, ordered message passing over unix or tcp.
|
The socket implementation provides for asynchronous, ordered message passing over unix or tcp.
|
||||||
Messages are serialized using Protobuf3 and length-prefixed.
|
Messages are serialized using Protobuf3 and length-prefixed.
|
||||||
Protobuf3 doesn't have an official length-prefix standard, so we use our own. The first byte represents the length of the big-endian encoded length.
|
Protobuf3 doesn't have an official length-prefix standard, so we use our own. The first byte represents the length of the big-endian encoded length.
|
||||||
|
|
||||||
|
@ -177,9 +176,9 @@ For example, if the Protobuf3 encoded ABCI message is `0xDEADBEEF` (4 bytes), th
|
||||||
|
|
||||||
GRPC is an rpc framework native to Protocol Buffers with support in many languages.
|
GRPC is an rpc framework native to Protocol Buffers with support in many languages.
|
||||||
Implementing the ABCI using GRPC can allow for faster prototyping, but is expected to be much slower than
|
Implementing the ABCI using GRPC can allow for faster prototyping, but is expected to be much slower than
|
||||||
the ordered, asynchronous TSP.
|
the ordered, asynchronous socket protocol.
|
||||||
|
|
||||||
Note the length-prefixing used in TSP does not apply for GRPC.
|
Note the length-prefixing used in the socket implementation does not apply for GRPC.
|
||||||
|
|
||||||
# Tools and Apps
|
# Tools and Apps
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue