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:
Marko 2019-07-08 19:54:24 +02:00 committed by Anton Kaliaev
parent 1d5fcc2281
commit f2ada0a604
21 changed files with 80 additions and 125 deletions

View File

@ -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"]

View File

@ -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

View File

@ -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).

View File

@ -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):

View File

@ -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.

View File

@ -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

View File

@ -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).

View File

@ -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

View File

@ -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

View File

@ -78,9 +78,9 @@ cd $GOPATH/src/github.com/tendermint/tendermint
rm -rf ./build/node* 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:
@ -129,7 +129,7 @@ To use your own abci applications with 4-node setup edit the [docker-compose.yam
``` ```
Override the [command](https://github.com/tendermint/tendermint/blob/master/networks/local/localnode/Dockerfile#L12) in each node to connect to it's abci. Override the [command](https://github.com/tendermint/tendermint/blob/master/networks/local/localnode/Dockerfile#L12) in each node to connect to it's abci.
``` ```
node0: node0:

View File

@ -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.

View File

@ -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:

View File

@ -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`
@ -85,7 +85,7 @@ Example:
cmn.KVPair{Key: []byte("amount"), Value: []byte("...")}, cmn.KVPair{Key: []byte("amount"), Value: []byte("...")},
cmn.KVPair{Key: []byte("reason"), Value: []byte("...")}, cmn.KVPair{Key: []byte("reason"), Value: []byte("...")},
}, },
}, },
// ... // ...
}, },
} }
@ -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.

View File

@ -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).

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 well replay the private validator contains the `LastSignBytes` and then well 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.

View File

@ -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).

View File

@ -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

View File

@ -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).