mirror of
https://github.com/tendermint/tendermint.git
synced 2026-08-27 19:37:08 +00:00
add Erlang implementation to readme [ci skip] [circleci skip]
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
[](https://circleci.com/gh/tendermint/abci)
|
[](https://circleci.com/gh/tendermint/abci)
|
||||||
|
|
||||||
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).
|
and the state machine (the application).
|
||||||
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
|
||||||
@@ -14,14 +14,15 @@ and the more detailed [application developer's guide](https://tendermint.com/doc
|
|||||||
Previously, the ABCI was referred to as TMSP.
|
Previously, the ABCI was referred to as TMSP.
|
||||||
|
|
||||||
Other implementations:
|
Other implementations:
|
||||||
* [cpp-tmsp](https://github.com/mdyring/cpp-tmsp) by Martin Dyring-Andersen
|
* C++ [cpp-tmsp](https://github.com/mdyring/cpp-tmsp) by Martin Dyring-Andersen
|
||||||
* [js-abci](https://github.com/tendermint/js-abci)
|
* JavaScript [js-abci](https://github.com/tendermint/js-abci)
|
||||||
* [jABCI](https://github.com/jTendermint/jabci) for Java
|
* Java [jABCI](https://github.com/jTendermint/jabci)
|
||||||
|
* Erlang [abci_server](https://github.com/KrzysiekJ/abci_server) by Krzysztof Jurewicz
|
||||||
|
|
||||||
# Specification
|
# Specification
|
||||||
|
|
||||||
The [primary specification](https://github.com/tendermint/abci/blob/master/types/types.proto) is made using Protocol Buffers.
|
The [primary specification](https://github.com/tendermint/abci/blob/master/types/types.proto) is made using Protocol Buffers.
|
||||||
To build it, run
|
To build it, run
|
||||||
|
|
||||||
```
|
```
|
||||||
make protoc
|
make protoc
|
||||||
@@ -154,7 +155,7 @@ We provide three implementations of the ABCI in Go:
|
|||||||
|
|
||||||
## Socket
|
## Socket
|
||||||
|
|
||||||
ABCI is best implemented as a streaming protocol.
|
ABCI is best implemented as a streaming protocol.
|
||||||
The socket implementation 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.
|
||||||
@@ -164,7 +165,7 @@ For example, if the Protobuf3 encoded ABCI message is `0xDEADBEEF` (4 bytes), th
|
|||||||
## GRPC
|
## GRPC
|
||||||
|
|
||||||
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 socket protocol.
|
the ordered, asynchronous socket protocol.
|
||||||
|
|
||||||
Note the length-prefixing used in the socket implementation does not apply for GRPC.
|
Note the length-prefixing used in the socket implementation does not apply for GRPC.
|
||||||
|
|||||||
Reference in New Issue
Block a user