mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-25 06:42:16 +00:00
docs: quick link fixes throughout docs and repo (#3776)
* Quick link fixes throughout docs and repo - used markdown link tester to find broken links Signed-off-by: Marko Baricevic <marbar3778@yahoo.com> * minor change remove slash * pr comments * minor fix * remove docker.develop * remove master tag
This commit is contained in:
parent
1d5fcc2281
commit
f2ada0a604
@ -1,34 +0,0 @@
|
|||||||
FROM alpine:3.7
|
|
||||||
|
|
||||||
ENV DATA_ROOT /tendermint
|
|
||||||
ENV TMHOME $DATA_ROOT
|
|
||||||
|
|
||||||
RUN addgroup tmuser && \
|
|
||||||
adduser -S -G tmuser tmuser
|
|
||||||
|
|
||||||
RUN mkdir -p $DATA_ROOT && \
|
|
||||||
chown -R tmuser:tmuser $DATA_ROOT
|
|
||||||
|
|
||||||
RUN apk add --no-cache bash curl jq
|
|
||||||
|
|
||||||
ENV GOPATH /go
|
|
||||||
ENV PATH "$PATH:/go/bin"
|
|
||||||
RUN mkdir -p /go/src/github.com/tendermint/tendermint && \
|
|
||||||
apk add --no-cache go build-base git && \
|
|
||||||
cd /go/src/github.com/tendermint/tendermint && \
|
|
||||||
git clone https://github.com/tendermint/tendermint . && \
|
|
||||||
git checkout develop && \
|
|
||||||
make get_tools && \
|
|
||||||
make install && \
|
|
||||||
cd - && \
|
|
||||||
rm -rf /go/src/github.com/tendermint/tendermint && \
|
|
||||||
apk del go build-base git
|
|
||||||
|
|
||||||
VOLUME $DATA_ROOT
|
|
||||||
|
|
||||||
EXPOSE 26656
|
|
||||||
EXPOSE 26657
|
|
||||||
|
|
||||||
ENTRYPOINT ["tendermint"]
|
|
||||||
|
|
||||||
CMD ["node", "--moniker=`hostname`", "--proxy_app=kvstore"]
|
|
@ -12,28 +12,25 @@
|
|||||||
- `0.9.1`, `0.9`, [(Dockerfile)](https://github.com/tendermint/tendermint/blob/809e0e8c5933604ba8b2d096803ada7c5ec4dfd3/DOCKER/Dockerfile)
|
- `0.9.1`, `0.9`, [(Dockerfile)](https://github.com/tendermint/tendermint/blob/809e0e8c5933604ba8b2d096803ada7c5ec4dfd3/DOCKER/Dockerfile)
|
||||||
- `0.9.0` [(Dockerfile)](https://github.com/tendermint/tendermint/blob/d474baeeea6c22b289e7402449572f7c89ee21da/DOCKER/Dockerfile)
|
- `0.9.0` [(Dockerfile)](https://github.com/tendermint/tendermint/blob/d474baeeea6c22b289e7402449572f7c89ee21da/DOCKER/Dockerfile)
|
||||||
- `0.8.0`, `0.8` [(Dockerfile)](https://github.com/tendermint/tendermint/blob/bf64dd21fdb193e54d8addaaaa2ecf7ac371de8c/DOCKER/Dockerfile)
|
- `0.8.0`, `0.8` [(Dockerfile)](https://github.com/tendermint/tendermint/blob/bf64dd21fdb193e54d8addaaaa2ecf7ac371de8c/DOCKER/Dockerfile)
|
||||||
- `develop` [(Dockerfile)](https://github.com/tendermint/tendermint/blob/master/DOCKER/Dockerfile.develop)
|
|
||||||
|
|
||||||
`develop` tag points to the [develop](https://github.com/tendermint/tendermint/tree/develop) branch.
|
|
||||||
|
|
||||||
## Quick reference
|
## Quick reference
|
||||||
|
|
||||||
* **Where to get help:**
|
- **Where to get help:**
|
||||||
https://cosmos.network/community
|
[cosmos.network/ecosystem](https://cosmos.network/ecosystem)
|
||||||
|
|
||||||
* **Where to file issues:**
|
- **Where to file issues:**
|
||||||
https://github.com/tendermint/tendermint/issues
|
[Tendermint Issues](https://github.com/tendermint/tendermint/issues)
|
||||||
|
|
||||||
* **Supported Docker versions:**
|
- **Supported Docker versions:**
|
||||||
[the latest release](https://github.com/moby/moby/releases) (down to 1.6 on a best-effort basis)
|
[the latest release](https://github.com/moby/moby/releases) (down to 1.6 on a best-effort basis)
|
||||||
|
|
||||||
## Tendermint
|
## Tendermint
|
||||||
|
|
||||||
Tendermint Core is Byzantine Fault Tolerant (BFT) middleware that takes a state transition machine, written in any programming language, and securely replicates it on many machines.
|
Tendermint Core is Byzantine Fault Tolerant (BFT) middleware that takes a state transition machine, written in any programming language, and securely replicates it on many machines.
|
||||||
|
|
||||||
For more background, see the [introduction](https://tendermint.readthedocs.io/en/master/introduction.html).
|
For more background, see the [the docs](https://tendermint.com/docs/introduction/#quick-start).
|
||||||
|
|
||||||
To get started developing applications, see the [application developers guide](https://tendermint.readthedocs.io/en/master/getting-started.html).
|
To get started developing applications, see the [application developers guide](https://tendermint.com/docs/introduction/quick-start.html).
|
||||||
|
|
||||||
## How to use this image
|
## How to use this image
|
||||||
|
|
||||||
@ -48,7 +45,7 @@ docker run -it --rm -v "/tmp:/tendermint" tendermint/tendermint node --proxy_app
|
|||||||
|
|
||||||
## Local cluster
|
## Local cluster
|
||||||
|
|
||||||
To run a 4-node network, see the `Makefile` in the root of [the repo](https://github.com/tendermint/tendermint/master/Makefile) and run:
|
To run a 4-node network, see the `Makefile` in the root of [the repo](https://github.com/tendermint/tendermint/blob/master/Makefile) and run:
|
||||||
|
|
||||||
```
|
```
|
||||||
make build-linux
|
make build-linux
|
||||||
@ -60,7 +57,7 @@ Note that this will build and use a different image than the ones provided here.
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
- Tendermint's license is [Apache 2.0](https://github.com/tendermint/tendermint/master/LICENSE).
|
- Tendermint's license is [Apache 2.0](https://github.com/tendermint/tendermint/blob/master/LICENSE).
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
@ -6,14 +6,12 @@ The documentation for Tendermint Core is hosted at:
|
|||||||
- https://tendermint-staging.interblock.io/docs/
|
- https://tendermint-staging.interblock.io/docs/
|
||||||
|
|
||||||
built from the files in this (`/docs`) directory for
|
built from the files in this (`/docs`) directory for
|
||||||
[master](https://github.com/tendermint/tendermint/tree/master/docs)
|
[master](https://github.com/tendermint/tendermint/tree/master/docs) respectively.
|
||||||
and [develop](https://github.com/tendermint/tendermint/tree/develop/docs),
|
|
||||||
respectively.
|
|
||||||
|
|
||||||
## How It Works
|
## How It Works
|
||||||
|
|
||||||
There is a CircleCI job listening for changes in the `/docs` directory, on both
|
There is a CircleCI job listening for changes in the `/docs` directory, on both
|
||||||
the `master` and `develop` branches. Any updates to files in this directory
|
the `master` branch. Any updates to files in this directory
|
||||||
on those branches will automatically trigger a website deployment. Under the hood,
|
on those branches will automatically trigger a website deployment. Under the hood,
|
||||||
the private website repository has a `make build-docs` target consumed by a CircleCI job in that repo.
|
the private website repository has a `make build-docs` target consumed by a CircleCI job in that repo.
|
||||||
|
|
||||||
@ -35,7 +33,7 @@ of the sidebar.
|
|||||||
**NOTE:** Strongly consider the existing links - both within this directory
|
**NOTE:** Strongly consider the existing links - both within this directory
|
||||||
and to the website docs - when moving or deleting files.
|
and to the website docs - when moving or deleting files.
|
||||||
|
|
||||||
Links to directories *MUST* end in a `/`.
|
Links to directories _MUST_ end in a `/`.
|
||||||
|
|
||||||
Relative links should be used nearly everywhere, having discovered and weighed the following:
|
Relative links should be used nearly everywhere, having discovered and weighed the following:
|
||||||
|
|
||||||
@ -101,4 +99,4 @@ We are using [Algolia](https://www.algolia.com) to power full-text search. This
|
|||||||
## Consistency
|
## Consistency
|
||||||
|
|
||||||
Because the build processes are identical (as is the information contained herein), this file should be kept in sync as
|
Because the build processes are identical (as is the information contained herein), this file should be kept in sync as
|
||||||
much as possible with its [counterpart in the Cosmos SDK repo](https://github.com/cosmos/cosmos-sdk/blob/develop/docs/DOCS_README.md).
|
much as possible with its [counterpart in the Cosmos SDK repo](https://github.com/cosmos/cosmos-sdk/blob/master/docs/DOCS_README.md).
|
||||||
|
@ -62,7 +62,7 @@ as `abci-cli` above. The kvstore just stores transactions in a merkle
|
|||||||
tree.
|
tree.
|
||||||
|
|
||||||
Its code can be found
|
Its code can be found
|
||||||
[here](https://github.com/tendermint/tendermint/blob/develop/abci/cmd/abci-cli/abci-cli.go)
|
[here](https://github.com/tendermint/tendermint/blob/master/abci/cmd/abci-cli/abci-cli.go)
|
||||||
and looks like:
|
and looks like:
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -137,7 +137,7 @@ response.
|
|||||||
|
|
||||||
The server may be generic for a particular language, and we provide a
|
The server may be generic for a particular language, and we provide a
|
||||||
[reference implementation in
|
[reference implementation in
|
||||||
Golang](https://github.com/tendermint/tendermint/tree/develop/abci/server). See the
|
Golang](https://github.com/tendermint/tendermint/tree/master/abci/server). See the
|
||||||
[list of other ABCI implementations](./ecosystem.md) for servers in
|
[list of other ABCI implementations](./ecosystem.md) for servers in
|
||||||
other languages.
|
other languages.
|
||||||
|
|
||||||
@ -324,7 +324,7 @@ But the ultimate flexibility comes from being able to write the
|
|||||||
application easily in any language.
|
application easily in any language.
|
||||||
|
|
||||||
We have implemented the counter in a number of languages [see the
|
We have implemented the counter in a number of languages [see the
|
||||||
example directory](https://github.com/tendermint/tendermint/tree/develop/abci/example).
|
example directory](https://github.com/tendermint/tendermint/tree/master/abci/example).
|
||||||
|
|
||||||
To run the Node.js version, fist download & install [the Javascript ABCI server](https://github.com/tendermint/js-abci):
|
To run the Node.js version, fist download & install [the Javascript ABCI server](https://github.com/tendermint/js-abci):
|
||||||
|
|
||||||
|
@ -48,9 +48,9 @@ open ABCI connection with the application, which hosts an ABCI server.
|
|||||||
Shown are the request and response types sent on each connection.
|
Shown are the request and response types sent on each connection.
|
||||||
|
|
||||||
Most of the examples below are from [kvstore
|
Most of the examples below are from [kvstore
|
||||||
application](https://github.com/tendermint/tendermint/blob/develop/abci/example/kvstore/kvstore.go),
|
application](https://github.com/tendermint/tendermint/blob/master/abci/example/kvstore/kvstore.go),
|
||||||
which is a part of the abci repo. [persistent_kvstore
|
which is a part of the abci repo. [persistent_kvstore
|
||||||
application](https://github.com/tendermint/tendermint/blob/develop/abci/example/kvstore/persistent_kvstore.go)
|
application](https://github.com/tendermint/tendermint/blob/master/abci/example/kvstore/persistent_kvstore.go)
|
||||||
is used to show `BeginBlock`, `EndBlock` and `InitChain` example
|
is used to show `BeginBlock`, `EndBlock` and `InitChain` example
|
||||||
implementations.
|
implementations.
|
||||||
|
|
||||||
|
@ -2,10 +2,7 @@
|
|||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
016-08-2018: Follow up from review:
|
016-08-2018: Follow up from review: - Revert changes to commit round - Remind about justification for removing pubkey - Update pros/cons
|
||||||
- Revert changes to commit round
|
|
||||||
- Remind about justification for removing pubkey
|
|
||||||
- Update pros/cons
|
|
||||||
05-08-2018: Initial draft
|
05-08-2018: Initial draft
|
||||||
|
|
||||||
## Context
|
## Context
|
||||||
@ -35,11 +32,11 @@ message ValidatorUpdate {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
As noted in ADR-009[https://github.com/tendermint/tendermint/blob/develop/docs/architecture/adr-009-ABCI-design.md],
|
As noted in ADR-009[https://github.com/tendermint/tendermint/blob/master/docs/architecture/adr-009-ABCI-design.md],
|
||||||
the `Validator` does not contain a pubkey because quantum public keys are
|
the `Validator` does not contain a pubkey because quantum public keys are
|
||||||
quite large and it would be wasteful to send them all over ABCI with every block.
|
quite large and it would be wasteful to send them all over ABCI with every block.
|
||||||
Thus, applications that want to take advantage of the information in BeginBlock
|
Thus, applications that want to take advantage of the information in BeginBlock
|
||||||
are *required* to store pubkeys in state (or use much less efficient lazy means
|
are _required_ to store pubkeys in state (or use much less efficient lazy means
|
||||||
of verifying BeginBlock data).
|
of verifying BeginBlock data).
|
||||||
|
|
||||||
### RequestBeginBlock
|
### RequestBeginBlock
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
# Install Tendermint
|
# Install Tendermint
|
||||||
|
|
||||||
The fastest and easiest way to install the `tendermint` binary
|
The fastest and easiest way to install the `tendermint` binary
|
||||||
is to run [this script](https://github.com/tendermint/tendermint/blob/develop/scripts/install/install_tendermint_ubuntu.sh) on
|
is to run [this script](https://github.com/tendermint/tendermint/blob/master/scripts/install/install_tendermint_ubuntu.sh) on
|
||||||
a fresh Ubuntu instance,
|
a fresh Ubuntu instance,
|
||||||
or [this script](https://github.com/tendermint/tendermint/blob/develop/scripts/install/install_tendermint_bsd.sh)
|
or [this script](https://github.com/tendermint/tendermint/blob/master/scripts/install/install_tendermint_bsd.sh)
|
||||||
on a fresh FreeBSD instance. Read the comments / instructions carefully (i.e., reset your terminal after running the script,
|
on a fresh FreeBSD instance. Read the comments / instructions carefully (i.e., reset your terminal after running the script,
|
||||||
make sure you are okay with the network connections being made).
|
make sure you are okay with the network connections being made).
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ consensus engine, and provides a particular application state.
|
|||||||
## ABCI Overview
|
## ABCI Overview
|
||||||
|
|
||||||
The [Application BlockChain Interface
|
The [Application BlockChain Interface
|
||||||
(ABCI)](https://github.com/tendermint/tendermint/tree/develop/abci)
|
(ABCI)](https://github.com/tendermint/tendermint/tree/master/abci)
|
||||||
allows for Byzantine Fault Tolerant replication of applications
|
allows for Byzantine Fault Tolerant replication of applications
|
||||||
written in any programming language.
|
written in any programming language.
|
||||||
|
|
||||||
@ -190,7 +190,7 @@ core to the application. The application replies with corresponding
|
|||||||
response messages.
|
response messages.
|
||||||
|
|
||||||
The messages are specified here: [ABCI Message
|
The messages are specified here: [ABCI Message
|
||||||
Types](https://github.com/tendermint/tendermint/blob/develop/abci/README.md#message-types).
|
Types](https://github.com/tendermint/tendermint/blob/master/abci/README.md#message-types).
|
||||||
|
|
||||||
The **DeliverTx** message is the work horse of the application. Each
|
The **DeliverTx** message is the work horse of the application. Each
|
||||||
transaction in the blockchain is delivered with this message. The
|
transaction in the blockchain is delivered with this message. The
|
||||||
|
@ -116,7 +116,7 @@ consensus engine, and provides a particular application state.
|
|||||||
## ABCI Overview
|
## ABCI Overview
|
||||||
|
|
||||||
The [Application BlockChain Interface
|
The [Application BlockChain Interface
|
||||||
(ABCI)](https://github.com/tendermint/tendermint/tree/develop/abci)
|
(ABCI)](https://github.com/tendermint/tendermint/tree/master/abci)
|
||||||
allows for Byzantine Fault Tolerant replication of applications
|
allows for Byzantine Fault Tolerant replication of applications
|
||||||
written in any programming language.
|
written in any programming language.
|
||||||
|
|
||||||
@ -184,7 +184,7 @@ core to the application. The application replies with corresponding
|
|||||||
response messages.
|
response messages.
|
||||||
|
|
||||||
The messages are specified here: [ABCI Message
|
The messages are specified here: [ABCI Message
|
||||||
Types](https://github.com/tendermint/tendermint/blob/develop/abci/README.md#message-types).
|
Types](https://github.com/tendermint/tendermint/blob/master/abci/README.md#message-types).
|
||||||
|
|
||||||
The **DeliverTx** message is the work horse of the application. Each
|
The **DeliverTx** message is the work horse of the application. Each
|
||||||
transaction in the blockchain is delivered with this message. The
|
transaction in the blockchain is delivered with this message. The
|
||||||
|
@ -80,7 +80,7 @@ rm -rf ./build/node*
|
|||||||
|
|
||||||
## Configuring abci containers
|
## Configuring abci containers
|
||||||
|
|
||||||
To use your own abci applications with 4-node setup edit the [docker-compose.yaml](https://github.com/tendermint/tendermint/blob/develop/docker-compose.yml) file and add image to your abci application.
|
To use your own abci applications with 4-node setup edit the [docker-compose.yaml](https://github.com/tendermint/tendermint/blob/master/docker-compose.yml) file and add image to your abci application.
|
||||||
|
|
||||||
```
|
```
|
||||||
abci0:
|
abci0:
|
||||||
|
@ -8,7 +8,7 @@ testnets on those servers.
|
|||||||
## Install
|
## Install
|
||||||
|
|
||||||
NOTE: see the [integration bash
|
NOTE: see the [integration bash
|
||||||
script](https://github.com/tendermint/tendermint/blob/develop/networks/remote/integration.sh)
|
script](https://github.com/tendermint/tendermint/blob/master/networks/remote/integration.sh)
|
||||||
that can be run on a fresh DO droplet and will automatically spin up a 4
|
that can be run on a fresh DO droplet and will automatically spin up a 4
|
||||||
node testnet. The script more or less does everything described below.
|
node testnet. The script more or less does everything described below.
|
||||||
|
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
ABCI is the interface between Tendermint (a state-machine replication engine)
|
ABCI is the interface between Tendermint (a state-machine replication engine)
|
||||||
and your application (the actual state machine). It consists of a set of
|
and your application (the actual state machine). It consists of a set of
|
||||||
*methods*, where each method has a corresponding `Request` and `Response`
|
_methods_, where each method has a corresponding `Request` and `Response`
|
||||||
message type. Tendermint calls the ABCI methods on the ABCI application by sending the `Request*`
|
message type. Tendermint calls the ABCI methods on the ABCI application by sending the `Request*`
|
||||||
messages and receiving the `Response*` messages in return.
|
messages and receiving the `Response*` messages in return.
|
||||||
|
|
||||||
All message types are defined in a [protobuf file](https://github.com/tendermint/tendermint/blob/develop/abci/types/types.proto).
|
All message types are defined in a [protobuf file](https://github.com/tendermint/tendermint/blob/master/abci/types/types.proto).
|
||||||
This allows Tendermint to run applications written in any programming language.
|
This allows Tendermint to run applications written in any programming language.
|
||||||
|
|
||||||
This specification is split as follows:
|
This specification is split as follows:
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
The ABCI message types are defined in a [protobuf
|
The ABCI message types are defined in a [protobuf
|
||||||
file](https://github.com/tendermint/tendermint/blob/develop/abci/types/types.proto).
|
file](https://github.com/tendermint/tendermint/blob/master/abci/types/types.proto).
|
||||||
|
|
||||||
ABCI methods are split across 3 separate ABCI *connections*:
|
ABCI methods are split across 3 separate ABCI _connections_:
|
||||||
|
|
||||||
- `Consensus Connection`: `InitChain, BeginBlock, DeliverTx, EndBlock, Commit`
|
- `Consensus Connection`: `InitChain, BeginBlock, DeliverTx, EndBlock, Commit`
|
||||||
- `Mempool Connection`: `CheckTx`
|
- `Mempool Connection`: `CheckTx`
|
||||||
@ -115,19 +115,19 @@ non-determinism must be fixed and the nodes restarted.
|
|||||||
Sources of non-determinism in applications may include:
|
Sources of non-determinism in applications may include:
|
||||||
|
|
||||||
- Hardware failures
|
- Hardware failures
|
||||||
- Cosmic rays, overheating, etc.
|
- Cosmic rays, overheating, etc.
|
||||||
- Node-dependent state
|
- Node-dependent state
|
||||||
- Random numbers
|
- Random numbers
|
||||||
- Time
|
- Time
|
||||||
- Underspecification
|
- Underspecification
|
||||||
- Library version changes
|
- Library version changes
|
||||||
- Race conditions
|
- Race conditions
|
||||||
- Floating point numbers
|
- Floating point numbers
|
||||||
- JSON serialization
|
- JSON serialization
|
||||||
- Iterating through hash-tables/maps/dictionaries
|
- Iterating through hash-tables/maps/dictionaries
|
||||||
- External Sources
|
- External Sources
|
||||||
- Filesystem
|
- Filesystem
|
||||||
- Network calls (eg. some external REST API service)
|
- Network calls (eg. some external REST API service)
|
||||||
|
|
||||||
See [#56](https://github.com/tendermint/abci/issues/56) for original discussion.
|
See [#56](https://github.com/tendermint/abci/issues/56) for original discussion.
|
||||||
|
|
||||||
@ -240,9 +240,9 @@ Commit are included in the header of the next block.
|
|||||||
- `Path (string)`: Path of request, like an HTTP GET path. Can be
|
- `Path (string)`: Path of request, like an HTTP GET path. Can be
|
||||||
used with or in liue of Data.
|
used with or in liue of Data.
|
||||||
- Apps MUST interpret '/store' as a query by key on the
|
- Apps MUST interpret '/store' as a query by key on the
|
||||||
underlying store. The key SHOULD be specified in the Data field.
|
underlying store. The key SHOULD be specified in the Data field.
|
||||||
- Apps SHOULD allow queries over specific types like
|
- Apps SHOULD allow queries over specific types like
|
||||||
'/accounts/...' or '/votes/...'
|
'/accounts/...' or '/votes/...'
|
||||||
- `Height (int64)`: The block height for which you want the query
|
- `Height (int64)`: The block height for which you want the query
|
||||||
(default=0 returns data for the latest committed block). Note
|
(default=0 returns data for the latest committed block). Note
|
||||||
that this is the height of the block containing the
|
that this is the height of the block containing the
|
||||||
@ -269,7 +269,7 @@ Commit are included in the header of the next block.
|
|||||||
- Query for data from the application at current or past height.
|
- Query for data from the application at current or past height.
|
||||||
- Optionally return Merkle proof.
|
- Optionally return Merkle proof.
|
||||||
- Merkle proof includes self-describing `type` field to support many types
|
- Merkle proof includes self-describing `type` field to support many types
|
||||||
of Merkle trees and encoding formats.
|
of Merkle trees and encoding formats.
|
||||||
|
|
||||||
### BeginBlock
|
### BeginBlock
|
||||||
|
|
||||||
@ -486,7 +486,7 @@ Commit are included in the header of the next block.
|
|||||||
- `Votes ([]VoteInfo)`: List of validators addresses in the last validator set
|
- `Votes ([]VoteInfo)`: List of validators addresses in the last validator set
|
||||||
with their voting power and whether or not they signed a vote.
|
with their voting power and whether or not they signed a vote.
|
||||||
|
|
||||||
### ConsensusParams
|
### ConsensusParams
|
||||||
|
|
||||||
- **Fields**:
|
- **Fields**:
|
||||||
- `Block (BlockParams)`: Parameters limiting the size of a block and time between consecutive blocks.
|
- `Block (BlockParams)`: Parameters limiting the size of a block and time between consecutive blocks.
|
||||||
@ -500,17 +500,17 @@ Commit are included in the header of the next block.
|
|||||||
- `MaxBytes (int64)`: Max size of a block, in bytes.
|
- `MaxBytes (int64)`: Max size of a block, in bytes.
|
||||||
- `MaxGas (int64)`: Max sum of `GasWanted` in a proposed block.
|
- `MaxGas (int64)`: Max sum of `GasWanted` in a proposed block.
|
||||||
- NOTE: blocks that violate this may be committed if there are Byzantine proposers.
|
- NOTE: blocks that violate this may be committed if there are Byzantine proposers.
|
||||||
It's the application's responsibility to handle this when processing a
|
It's the application's responsibility to handle this when processing a
|
||||||
block!
|
block!
|
||||||
|
|
||||||
### EvidenceParams
|
### EvidenceParams
|
||||||
|
|
||||||
- **Fields**:
|
- **Fields**:
|
||||||
- `MaxAge (int64)`: Max age of evidence, in blocks. Evidence older than this
|
- `MaxAge (int64)`: Max age of evidence, in blocks. Evidence older than this
|
||||||
is considered stale and ignored.
|
is considered stale and ignored.
|
||||||
- This should correspond with an app's "unbonding period" or other
|
- This should correspond with an app's "unbonding period" or other
|
||||||
similar mechanism for handling Nothing-At-Stake attacks.
|
similar mechanism for handling Nothing-At-Stake attacks.
|
||||||
- NOTE: this should change to time (instead of blocks)!
|
- NOTE: this should change to time (instead of blocks)!
|
||||||
|
|
||||||
### ValidatorParams
|
### ValidatorParams
|
||||||
|
|
||||||
@ -532,4 +532,3 @@ Commit are included in the header of the next block.
|
|||||||
- `Type (string)`: Type of Merkle proof and how it's encoded.
|
- `Type (string)`: Type of Merkle proof and how it's encoded.
|
||||||
- `Key ([]byte)`: Key in the Merkle tree that this proof is for.
|
- `Key ([]byte)`: Key in the Merkle tree that this proof is for.
|
||||||
- `Data ([]byte)`: Encoded Merkle proof for the key.
|
- `Data ([]byte)`: Encoded Merkle proof for the key.
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ Applications](./apps.md).
|
|||||||
## Message Protocol
|
## Message Protocol
|
||||||
|
|
||||||
The message protocol consists of pairs of requests and responses defined in the
|
The message protocol consists of pairs of requests and responses defined in the
|
||||||
[protobuf file](https://github.com/tendermint/tendermint/blob/develop/abci/types/types.proto).
|
[protobuf file](https://github.com/tendermint/tendermint/blob/master/abci/types/types.proto).
|
||||||
|
|
||||||
Some messages have no fields, while others may include byte-arrays, strings, integers,
|
Some messages have no fields, while others may include byte-arrays, strings, integers,
|
||||||
or custom protobuf types.
|
or custom protobuf types.
|
||||||
@ -33,9 +33,9 @@ The latter two can be tested using the `abci-cli` by setting the `--abci` flag
|
|||||||
appropriately (ie. to `socket` or `grpc`).
|
appropriately (ie. to `socket` or `grpc`).
|
||||||
|
|
||||||
See examples, in various stages of maintenance, in
|
See examples, in various stages of maintenance, in
|
||||||
[Go](https://github.com/tendermint/tendermint/tree/develop/abci/server),
|
[Go](https://github.com/tendermint/tendermint/tree/master/abci/server),
|
||||||
[JavaScript](https://github.com/tendermint/js-abci),
|
[JavaScript](https://github.com/tendermint/js-abci),
|
||||||
[Python](https://github.com/tendermint/tendermint/tree/develop/abci/example/python3/abci),
|
[Python](https://github.com/tendermint/tendermint/tree/master/abci/example/python3/abci),
|
||||||
[C++](https://github.com/mdyring/cpp-tmsp), and
|
[C++](https://github.com/mdyring/cpp-tmsp), and
|
||||||
[Java](https://github.com/jTendermint/jabci).
|
[Java](https://github.com/jTendermint/jabci).
|
||||||
|
|
||||||
@ -44,14 +44,13 @@ See examples, in various stages of maintenance, in
|
|||||||
The simplest implementation uses function calls within Golang.
|
The simplest implementation uses function calls within Golang.
|
||||||
This means ABCI applications written in Golang can be compiled with TendermintCore and run as a single binary.
|
This means ABCI applications written in Golang can be compiled with TendermintCore and run as a single binary.
|
||||||
|
|
||||||
|
|
||||||
### GRPC
|
### GRPC
|
||||||
|
|
||||||
If GRPC is available in your language, this is the easiest approach,
|
If GRPC is available in your language, this is the easiest approach,
|
||||||
though it will have significant performance overhead.
|
though it will have significant performance overhead.
|
||||||
|
|
||||||
To get started with GRPC, copy in the [protobuf
|
To get started with GRPC, copy in the [protobuf
|
||||||
file](https://github.com/tendermint/tendermint/blob/develop/abci/types/types.proto)
|
file](https://github.com/tendermint/tendermint/blob/master/abci/types/types.proto)
|
||||||
and compile it using the GRPC plugin for your language. For instance,
|
and compile it using the GRPC plugin for your language. For instance,
|
||||||
for golang, the command is `protoc --go_out=plugins=grpc:. types.proto`.
|
for golang, the command is `protoc --go_out=plugins=grpc:. types.proto`.
|
||||||
See the [grpc documentation for more details](http://www.grpc.io/docs/).
|
See the [grpc documentation for more details](http://www.grpc.io/docs/).
|
||||||
@ -107,4 +106,4 @@ received or a block is committed.
|
|||||||
|
|
||||||
It is unlikely that you will need to implement a client. For details of
|
It is unlikely that you will need to implement a client. For details of
|
||||||
our client, see
|
our client, see
|
||||||
[here](https://github.com/tendermint/tendermint/tree/develop/abci/client).
|
[here](https://github.com/tendermint/tendermint/tree/master/abci/client).
|
||||||
|
@ -59,20 +59,20 @@ familiar with amino encoding.
|
|||||||
You can simply use below table and concatenate Prefix || Length (of raw bytes) || raw bytes
|
You can simply use below table and concatenate Prefix || Length (of raw bytes) || raw bytes
|
||||||
( while || stands for byte concatenation here).
|
( while || stands for byte concatenation here).
|
||||||
|
|
||||||
| Type | Name | Prefix | Length | Notes |
|
| Type | Name | Prefix | Length | Notes |
|
||||||
| ------------------ | ----------------------------- | ---------- | -------- | ----- |
|
| ----------------------- | ---------------------------------- | ---------- | -------- | ----- |
|
||||||
| PubKeyEd25519 | tendermint/PubKeyEd25519 | 0x1624DE64 | 0x20 | |
|
| PubKeyEd25519 | tendermint/PubKeyEd25519 | 0x1624DE64 | 0x20 | |
|
||||||
| PubKeySecp256k1 | tendermint/PubKeySecp256k1 | 0xEB5AE987 | 0x21 | |
|
| PubKeySecp256k1 | tendermint/PubKeySecp256k1 | 0xEB5AE987 | 0x21 | |
|
||||||
| PrivKeyEd25519 | tendermint/PrivKeyEd25519 | 0xA3288910 | 0x40 | |
|
| PrivKeyEd25519 | tendermint/PrivKeyEd25519 | 0xA3288910 | 0x40 | |
|
||||||
| PrivKeySecp256k1 | tendermint/PrivKeySecp256k1 | 0xE1B0F79B | 0x20 | |
|
| PrivKeySecp256k1 | tendermint/PrivKeySecp256k1 | 0xE1B0F79B | 0x20 | |
|
||||||
| PubKeyMultisigThreshold | tendermint/PubKeyMultisigThreshold | 0x22C1F7E2 | variable | |
|
| PubKeyMultisigThreshold | tendermint/PubKeyMultisigThreshold | 0x22C1F7E2 | variable | |
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
|
|
||||||
For example, the 33-byte (or 0x21-byte in hex) Secp256k1 pubkey
|
For example, the 33-byte (or 0x21-byte in hex) Secp256k1 pubkey
|
||||||
`020BD40F225A57ED383B440CF073BC5539D0341F5767D2BF2D78406D00475A2EE9`
|
`020BD40F225A57ED383B440CF073BC5539D0341F5767D2BF2D78406D00475A2EE9`
|
||||||
would be encoded as
|
would be encoded as
|
||||||
`EB5AE98721020BD40F225A57ED383B440CF073BC5539D0341F5767D2BF2D78406D00475A2EE9`
|
`EB5AE98721020BD40F225A57ED383B440CF073BC5539D0341F5767D2BF2D78406D00475A2EE9`
|
||||||
|
|
||||||
### Key Types
|
### Key Types
|
||||||
|
|
||||||
@ -170,11 +170,11 @@ We use the RFC 6962 specification of a merkle tree, with sha256 as the hash func
|
|||||||
Merkle trees are used throughout Tendermint to compute a cryptographic digest of a data structure.
|
Merkle trees are used throughout Tendermint to compute a cryptographic digest of a data structure.
|
||||||
The differences between RFC 6962 and the simplest form a merkle tree are that:
|
The differences between RFC 6962 and the simplest form a merkle tree are that:
|
||||||
|
|
||||||
1) leaf nodes and inner nodes have different hashes.
|
1. leaf nodes and inner nodes have different hashes.
|
||||||
This is for "second pre-image resistance", to prevent the proof to an inner node being valid as the proof of a leaf.
|
This is for "second pre-image resistance", to prevent the proof to an inner node being valid as the proof of a leaf.
|
||||||
The leaf nodes are `SHA256(0x00 || leaf_data)`, and inner nodes are `SHA256(0x01 || left_hash || right_hash)`.
|
The leaf nodes are `SHA256(0x00 || leaf_data)`, and inner nodes are `SHA256(0x01 || left_hash || right_hash)`.
|
||||||
|
|
||||||
2) When the number of items isn't a power of two, the left half of the tree is as big as it could be.
|
2. When the number of items isn't a power of two, the left half of the tree is as big as it could be.
|
||||||
(The largest power of two less than the number of items) This allows new leaves to be added with less
|
(The largest power of two less than the number of items) This allows new leaves to be added with less
|
||||||
recomputation. For example:
|
recomputation. For example:
|
||||||
|
|
||||||
@ -290,7 +290,7 @@ func computeHashFromAunts(index, total int, leafHash []byte, innerHashes [][]byt
|
|||||||
|
|
||||||
### IAVL+ Tree
|
### IAVL+ Tree
|
||||||
|
|
||||||
Because Tendermint only uses a Simple Merkle Tree, application developers are expect to use their own Merkle tree in their applications. For example, the IAVL+ Tree - an immutable self-balancing binary tree for persisting application state is used by the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk/blob/develop/docs/sdk/core/multistore.md)
|
Because Tendermint only uses a Simple Merkle Tree, application developers are expect to use their own Merkle tree in their applications. For example, the IAVL+ Tree - an immutable self-balancing binary tree for persisting application state is used by the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk/blob/master/docs/clients/lite/specification.md)
|
||||||
|
|
||||||
## JSON
|
## JSON
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ A proposal is signed and published by the designated proposer at each
|
|||||||
round. The proposer is chosen by a deterministic and non-choking round
|
round. The proposer is chosen by a deterministic and non-choking round
|
||||||
robin selection algorithm that selects proposers in proportion to their
|
robin selection algorithm that selects proposers in proportion to their
|
||||||
voting power (see
|
voting power (see
|
||||||
[implementation](https://github.com/tendermint/tendermint/blob/develop/types/validator_set.go)).
|
[implementation](https://github.com/tendermint/tendermint/blob/master/types/validator_set.go)).
|
||||||
|
|
||||||
A proposal at `(H,R)` is composed of a block and an optional latest
|
A proposal at `(H,R)` is composed of a block and an optional latest
|
||||||
`PoLC-Round < R` which is included iff the proposer knows of one. This
|
`PoLC-Round < R` which is included iff the proposer knows of one. This
|
||||||
|
@ -7,7 +7,7 @@ See [this issue](https://github.com/tendermint/tendermint/issues/1503)
|
|||||||
Mempool maintains a cache of the last 10000 transactions to prevent
|
Mempool maintains a cache of the last 10000 transactions to prevent
|
||||||
replaying old transactions (plus transactions coming from other
|
replaying old transactions (plus transactions coming from other
|
||||||
validators, who are continually exchanging transactions). Read [Replay
|
validators, who are continually exchanging transactions). Read [Replay
|
||||||
Protection](../../../../app-development.md#replay-protection)
|
Protection](../../../app-dev/app-development.md#replay-protection)
|
||||||
for details.
|
for details.
|
||||||
|
|
||||||
Sending incorrectly encoded data or data exceeding `maxMsgSize` will result
|
Sending incorrectly encoded data or data exceeding `maxMsgSize` will result
|
||||||
|
@ -28,5 +28,5 @@ WAL. Then it will go to precommit, and that time it will work because the
|
|||||||
private validator contains the `LastSignBytes` and then we’ll replay the
|
private validator contains the `LastSignBytes` and then we’ll replay the
|
||||||
precommit from the WAL.
|
precommit from the WAL.
|
||||||
|
|
||||||
Make sure to read about [WAL corruption](../../../tendermint-core/running-in-production.md#wal-corruption)
|
Make sure to read about [WAL corruption](../../tendermint-core/running-in-production.md#wal-corruption)
|
||||||
and recovery strategies.
|
and recovery strategies.
|
||||||
|
@ -315,8 +315,7 @@ namespace = "tendermint"
|
|||||||
|
|
||||||
If `create_empty_blocks` is set to `true` in your config, blocks will be
|
If `create_empty_blocks` is set to `true` in your config, blocks will be
|
||||||
created ~ every second (with default consensus parameters). You can regulate
|
created ~ every second (with default consensus parameters). You can regulate
|
||||||
the delay between blocks by changing the `timeout_commit`. E.g. `timeout_commit
|
the delay between blocks by changing the `timeout_commit`. E.g. `timeout_commit = "10s"` should result in ~ 10 second blocks.
|
||||||
= "10s"` should result in ~ 10 second blocks.
|
|
||||||
|
|
||||||
**create_empty_blocks = false**
|
**create_empty_blocks = false**
|
||||||
|
|
||||||
@ -342,7 +341,7 @@ Tendermint will only create blocks if there are transactions, or after waiting
|
|||||||
## Consensus timeouts explained
|
## Consensus timeouts explained
|
||||||
|
|
||||||
There's a variety of information about timeouts in [Running in
|
There's a variety of information about timeouts in [Running in
|
||||||
production](./running-in-production.html)
|
production](./running-in-production.md)
|
||||||
|
|
||||||
You can also find more detailed technical explanation in the spec: [The latest
|
You can also find more detailed technical explanation in the spec: [The latest
|
||||||
gossip on BFT consensus](https://arxiv.org/abs/1807.04938).
|
gossip on BFT consensus](https://arxiv.org/abs/1807.04938).
|
||||||
|
@ -115,7 +115,7 @@ little overview what they do.
|
|||||||
- `abci-client` As mentioned in [Application Development Guide](../app-dev/app-development.md), Tendermint acts as an ABCI
|
- `abci-client` As mentioned in [Application Development Guide](../app-dev/app-development.md), Tendermint acts as an ABCI
|
||||||
client with respect to the application and maintains 3 connections:
|
client with respect to the application and maintains 3 connections:
|
||||||
mempool, consensus and query. The code used by Tendermint Core can
|
mempool, consensus and query. The code used by Tendermint Core can
|
||||||
be found [here](https://github.com/tendermint/tendermint/tree/develop/abci/client).
|
be found [here](https://github.com/tendermint/tendermint/tree/master/abci/client).
|
||||||
- `blockchain` Provides storage, pool (a group of peers), and reactor
|
- `blockchain` Provides storage, pool (a group of peers), and reactor
|
||||||
for both storing and exchanging blocks between peers.
|
for both storing and exchanging blocks between peers.
|
||||||
- `consensus` The heart of Tendermint core, which is the
|
- `consensus` The heart of Tendermint core, which is the
|
||||||
|
@ -4,4 +4,4 @@ The RPC documentation is hosted here:
|
|||||||
|
|
||||||
- [https://tendermint.com/rpc/](https://tendermint.com/rpc/)
|
- [https://tendermint.com/rpc/](https://tendermint.com/rpc/)
|
||||||
|
|
||||||
To update the documentation, edit the relevant `godoc` comments in the [rpc/core directory](https://github.com/tendermint/tendermint/tree/develop/rpc/core).
|
To update the documentation, edit the relevant `godoc` comments in the [rpc/core directory](https://github.com/tendermint/tendermint/tree/master/rpc/core).
|
||||||
|
Loading…
x
Reference in New Issue
Block a user