mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-29 12:41:44 +00:00
@ -11,26 +11,26 @@ Manual Deployments
|
|||||||
|
|
||||||
It's relatively easy to setup a Tendermint cluster manually. The only
|
It's relatively easy to setup a Tendermint cluster manually. The only
|
||||||
requirements for a particular Tendermint node are a private key for the
|
requirements for a particular Tendermint node are a private key for the
|
||||||
validator, stored as ``priv_validator.json``, and a list of the public
|
validator, stored as ``priv_validator.json``, a node key, stored as
|
||||||
keys of all validators, stored as ``genesis.json``. These files should
|
``node_key.json`` and a list of the public keys of all validators, stored as
|
||||||
be stored in ``~/.tendermint/config``, or wherever the ``$TMHOME`` variable
|
``genesis.json``. These files should be stored in ``~/.tendermint/config``, or
|
||||||
might be set to.
|
wherever the ``$TMHOME`` variable might be set to.
|
||||||
|
|
||||||
Here are the steps to setting up a testnet manually:
|
Here are the steps to setting up a testnet manually:
|
||||||
|
|
||||||
1) Provision nodes on your cloud provider of choice
|
1) Provision nodes on your cloud provider of choice
|
||||||
2) Install Tendermint and the application of interest on all nodes
|
2) Install Tendermint and the application of interest on all nodes
|
||||||
3) Generate a private key for each validator using
|
3) Generate a private key and a node key for each validator using
|
||||||
``tendermint gen_validator``
|
``tendermint init``
|
||||||
4) Compile a list of public keys for each validator into a
|
4) Compile a list of public keys for each validator into a
|
||||||
``genesis.json`` file.
|
``genesis.json`` file and replace the existing file with it.
|
||||||
5) Run ``tendermint node --p2p.persistent_peers=< peer addresses >`` on each node,
|
5) Run ``tendermint node --p2p.persistent_peers=< peer addresses >`` on each node,
|
||||||
where ``< peer addresses >`` is a comma separated list of the IP:PORT
|
where ``< peer addresses >`` is a comma separated list of the IP:PORT
|
||||||
combination for each node. The default port for Tendermint is
|
combination for each node. The default port for Tendermint is
|
||||||
``46656``. Thus, if the IP addresses of your nodes were
|
``46656``. Thus, if the IP addresses of your nodes were
|
||||||
``192.168.0.1, 192.168.0.2, 192.168.0.3, 192.168.0.4``, the command
|
``192.168.0.1, 192.168.0.2, 192.168.0.3, 192.168.0.4``, the command
|
||||||
would look like:
|
would look like:
|
||||||
``tendermint node --p2p.persistent_peers=192.168.0.1:46656,192.168.0.2:46656,192.168.0.3:46656,192.168.0.4:46656``.
|
``tendermint node --p2p.persistent_peers=96663a3dd0d7b9d17d4c8211b191af259621c693@192.168.0.1:46656, 429fcf25974313b95673f58d77eacdd434402665@192.168.0.2:46656, 0491d373a8e0fcf1023aaf18c51d6a1d0d4f31bd@192.168.0.3:46656, f9baeaa15fedf5e1ef7448dd60f46c01f1a9e9c4@192.168.0.4:46656``.
|
||||||
|
|
||||||
After a few seconds, all the nodes should connect to each other and start
|
After a few seconds, all the nodes should connect to each other and start
|
||||||
making blocks! For more information, see the Tendermint Networks section
|
making blocks! For more information, see the Tendermint Networks section
|
||||||
|
@ -2,8 +2,9 @@
|
|||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
This is a quick start guide. If you have a vague idea about how Tendermint works
|
This is a quick start guide. If you have a vague idea about how Tendermint
|
||||||
and want to get started right away, continue. Otherwise, [review the documentation](http://tendermint.readthedocs.io/en/master/)
|
works and want to get started right away, continue. Otherwise, [review the
|
||||||
|
documentation](http://tendermint.readthedocs.io/en/master/).
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
@ -42,7 +43,7 @@ Confirm installation:
|
|||||||
|
|
||||||
```
|
```
|
||||||
$ tendermint version
|
$ tendermint version
|
||||||
0.15.0-381fe19
|
0.18.0-XXXXXXX
|
||||||
```
|
```
|
||||||
|
|
||||||
## Initialization
|
## Initialization
|
||||||
@ -117,7 +118,9 @@ where the value is returned in hex.
|
|||||||
|
|
||||||
## Cluster of Nodes
|
## Cluster of Nodes
|
||||||
|
|
||||||
First create four Ubuntu cloud machines. The following was tested on Digital Ocean Ubuntu 16.04 x64 (3GB/1CPU, 20GB SSD). We'll refer to their respective IP addresses below as IP1, IP2, IP3, IP4.
|
First create four Ubuntu cloud machines. The following was tested on Digital
|
||||||
|
Ocean Ubuntu 16.04 x64 (3GB/1CPU, 20GB SSD). We'll refer to their respective IP
|
||||||
|
addresses below as IP1, IP2, IP3, IP4.
|
||||||
|
|
||||||
Then, `ssh` into each machine, and execute [this script](https://git.io/vNLfY):
|
Then, `ssh` into each machine, and execute [this script](https://git.io/vNLfY):
|
||||||
|
|
||||||
@ -131,12 +134,16 @@ This will install `go` and other dependencies, get the Tendermint source code, t
|
|||||||
Next, `cd` into `docs/examples`. Each command below should be run from each node, in sequence:
|
Next, `cd` into `docs/examples`. Each command below should be run from each node, in sequence:
|
||||||
|
|
||||||
```
|
```
|
||||||
tendermint node --home ./node1 --proxy_app=kvstore --p2p.seeds IP1:46656,IP2:46656,IP3:46656,IP4:46656
|
tendermint node --home ./node1 --proxy_app=kvstore --p2p.persistent_peers="3a558bd6f8c97453aa6c2372bb800e8b6ed8e6db@IP1:46656,ccf30d873fddda10a495f42687c8f33472a6569f@IP2:46656,9a4c3de5d6788a76c6ee3cd9ff41e3b45b4cfd14@IP3:46656,58e6f2ab297b3ceae107ba4c8c2898da5c009ff4@IP4:46656"
|
||||||
tendermint node --home ./node2 --proxy_app=kvstore --p2p.seeds IP1:46656,IP2:46656,IP3:46656,IP4:46656
|
tendermint node --home ./node2 --proxy_app=kvstore --p2p.persistent_peers="3a558bd6f8c97453aa6c2372bb800e8b6ed8e6db@IP1:46656,ccf30d873fddda10a495f42687c8f33472a6569f@IP2:46656,9a4c3de5d6788a76c6ee3cd9ff41e3b45b4cfd14@IP3:46656,58e6f2ab297b3ceae107ba4c8c2898da5c009ff4@IP4:46656"
|
||||||
tendermint node --home ./node3 --proxy_app=kvstore --p2p.seeds IP1:46656,IP2:46656,IP3:46656,IP4:46656
|
tendermint node --home ./node3 --proxy_app=kvstore --p2p.persistent_peers="3a558bd6f8c97453aa6c2372bb800e8b6ed8e6db@IP1:46656,ccf30d873fddda10a495f42687c8f33472a6569f@IP2:46656,9a4c3de5d6788a76c6ee3cd9ff41e3b45b4cfd14@IP3:46656,58e6f2ab297b3ceae107ba4c8c2898da5c009ff4@IP4:46656"
|
||||||
tendermint node --home ./node4 --proxy_app=kvstore --p2p.seeds IP1:46656,IP2:46656,IP3:46656,IP4:46656
|
tendermint node --home ./node4 --proxy_app=kvstore --p2p.persistent_peers="3a558bd6f8c97453aa6c2372bb800e8b6ed8e6db@IP1:46656,ccf30d873fddda10a495f42687c8f33472a6569f@IP2:46656,9a4c3de5d6788a76c6ee3cd9ff41e3b45b4cfd14@IP3:46656,58e6f2ab297b3ceae107ba4c8c2898da5c009ff4@IP4:46656"
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that after the third node is started, blocks will start to stream in because >2/3 of validators (defined in the `genesis.json`) have come online. Seeds can also be specified in the `config.toml`. See [this PR](https://github.com/tendermint/tendermint/pull/792) for more information about configuration options.
|
Note that after the third node is started, blocks will start to stream in
|
||||||
|
because >2/3 of validators (defined in the `genesis.json`) have come online.
|
||||||
|
Seeds can also be specified in the `config.toml`. See [this
|
||||||
|
PR](https://github.com/tendermint/tendermint/pull/792) for more information
|
||||||
|
about configuration options.
|
||||||
|
|
||||||
Transactions can then be sent as covered in the single, local node example above.
|
Transactions can then be sent as covered in the single, local node example above.
|
||||||
|
@ -26,7 +26,7 @@ go get $REPO
|
|||||||
cd $GOPATH/src/$REPO
|
cd $GOPATH/src/$REPO
|
||||||
|
|
||||||
## build
|
## build
|
||||||
git checkout v0.17.0
|
git checkout v0.18.0
|
||||||
make get_tools
|
make get_tools
|
||||||
make get_vendor_deps
|
make get_vendor_deps
|
||||||
make install
|
make install
|
||||||
|
6
docs/examples/node1/node_key.json
Normal file
6
docs/examples/node1/node_key.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"priv_key" : {
|
||||||
|
"data" : "DA9BAABEA7211A6D93D9A1986B4279EAB3021FAA1653D459D53E6AB4D1CFB4C69BF7D52E48CF00AC5779AA0A6D3C368955D5636A677F72370B8ED19989714CFC",
|
||||||
|
"type" : "ed25519"
|
||||||
|
}
|
||||||
|
}
|
6
docs/examples/node2/node_key.json
Normal file
6
docs/examples/node2/node_key.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"priv_key" : {
|
||||||
|
"data" : "F7BCABA165DFC0DDD50AE563EFB285BAA236EA805D35612504238A36EFA105958756442B1D9F942D7ABD259F2D59671657B6378E9C7194342A7AAA47A66D1E95",
|
||||||
|
"type" : "ed25519"
|
||||||
|
}
|
||||||
|
}
|
6
docs/examples/node3/node_key.json
Normal file
6
docs/examples/node3/node_key.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"priv_key" : {
|
||||||
|
"data" : "95136FCC97E4446B3141EDF9841078107ECE755E99925D79CCBF91085492680B3CA1034D9917DF1DED4E4AB2D9BC225919F6CB2176F210D2368697CC339DF4E7",
|
||||||
|
"type" : "ed25519"
|
||||||
|
}
|
||||||
|
}
|
6
docs/examples/node4/node_key.json
Normal file
6
docs/examples/node4/node_key.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"priv_key" : {
|
||||||
|
"data" : "8895D6C9A1B46AB83A8E2BAE2121B8C3E245B9E9126EBD797FEAC5058285F2F64FDE2E8182C88AD5185A49D837C581465D57BD478C41865A66D7D9742D8AEF57",
|
||||||
|
"type" : "ed25519"
|
||||||
|
}
|
||||||
|
}
|
@ -334,14 +334,14 @@ For instance,
|
|||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
tendermint node --p2p.seeds "1.2.3.4:46656,5.6.7.8:46656"
|
tendermint node --p2p.seeds "f9baeaa15fedf5e1ef7448dd60f46c01f1a9e9c4@1.2.3.4:46656,0491d373a8e0fcf1023aaf18c51d6a1d0d4f31bd@5.6.7.8:46656"
|
||||||
|
|
||||||
Alternatively, you can use the ``/dial_seeds`` endpoint of the RPC to
|
Alternatively, you can use the ``/dial_seeds`` endpoint of the RPC to
|
||||||
specify seeds for a running node to connect to:
|
specify seeds for a running node to connect to:
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
curl 'localhost:46657/dial_seeds?seeds=\["1.2.3.4:46656","5.6.7.8:46656"\]'
|
curl 'localhost:46657/dial_seeds?seeds=\["f9baeaa15fedf5e1ef7448dd60f46c01f1a9e9c4@1.2.3.4:46656","0491d373a8e0fcf1023aaf18c51d6a1d0d4f31bd@5.6.7.8:46656"\]'
|
||||||
|
|
||||||
Note, if the peer-exchange protocol (PEX) is enabled (default), you should not
|
Note, if the peer-exchange protocol (PEX) is enabled (default), you should not
|
||||||
normally need seeds after the first start. Peers will be gossipping about known
|
normally need seeds after the first start. Peers will be gossipping about known
|
||||||
@ -355,8 +355,8 @@ core instance.
|
|||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
tendermint node --p2p.persistent_peers "10.11.12.13:46656,10.11.12.14:46656"
|
tendermint node --p2p.persistent_peers "429fcf25974313b95673f58d77eacdd434402665@10.11.12.13:46656,96663a3dd0d7b9d17d4c8211b191af259621c693@10.11.12.14:46656"
|
||||||
curl 'localhost:46657/dial_peers?persistent=true&peers=\["1.2.3.4:46656","5.6.7.8:46656"\]'
|
curl 'localhost:46657/dial_peers?persistent=true&peers=\["429fcf25974313b95673f58d77eacdd434402665@10.11.12.13:46656","96663a3dd0d7b9d17d4c8211b191af259621c693@10.11.12.14:46656"\]'
|
||||||
|
|
||||||
Adding a Non-Validator
|
Adding a Non-Validator
|
||||||
~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Reference in New Issue
Block a user