-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[docs] improve organization of ABCI docs & fix links #2749
Merged
Merged
Changes from 6 commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
0a0fbd3
dedup with spec/abci/client-server
zramsay 0de4984
Merge pull request #12 from zramsay/zach/abci-improvements
zramsay cc54d1f
fixup abci/readme
zramsay a87d044
Merge pull request #13 from zramsay/abci/readme
zramsay 91d924b
link to getting started in abci/README
zramsay af2a7c0
https
zramsay 3177087
spec/abci: some deduplication
zramsay 596a5e7
docs: remove extraneous comment
zramsay File filter
Filter by extension
Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
# ABCI Implementations | ||
|
||
We provide three implementations of the ABCI in written in Go: | ||
|
||
- In-process (Golang) | ||
- ABCI-socket | ||
- GRPC | ||
|
||
Note the GRPC version is maintained primarily to simplify onboarding and prototyping and is not receiving the same | ||
attention to security and performance as the others | ||
|
||
## In Process | ||
|
||
The simplest implementation just uses function calls within Go. | ||
This means ABCI applications written in Golang can be compiled with TendermintCore and run as a single binary. | ||
|
||
## Socket (TSP) | ||
|
||
ABCI is best implemented as a streaming protocol. | ||
The socket implementation provides for asynchronous, ordered message passing over unix or tcp. | ||
Messages are serialized using Protobuf3 and length-prefixed with a [signed Varint](https://developers.google.com/protocol-buffers/docs/encoding?csw=1#signed-integers) | ||
|
||
For example, if the Protobuf3 encoded ABCI message is `0xDEADBEEF` (4 bytes), the length-prefixed message is `0x08DEADBEEF`, since `0x08` is the signed varint | ||
encoding of `4`. If the Protobuf3 encoded ABCI message is 65535 bytes long, the length-prefixed message would be like `0xFEFF07...`. | ||
|
||
Note the benefit of using this `varint` encoding over the old version (where integers were encoded as `<len of len><big endian len>` is that | ||
it is the standard way to encode integers in Protobuf. It is also generally shorter. | ||
|
||
## GRPC | ||
|
||
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 | ||
the ordered, asynchronous socket protocol. The implementation has also not received as much testing or review. | ||
|
||
Note the length-prefixing used in the socket implementation does not apply for GRPC. |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is great but seems its still largely a duplicate of https://github.com/tendermint/tendermint/blob/develop/docs/spec/abci/client-server.md
Can we just make sure that file contains anything from here it might be missing?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed