Tendermint 快速入门

概述

本文是快速入门指南。如果您对Tendermint了解尚不清晰,但想立即运行起来,请继续阅读。

安装

快速安装

在全新的Ubuntu 16.04电脑上安装Tendermint,请使用脚本

警告:不要在本地电脑运行此脚本。

  1. curl -L https://git.io/fFfOR | bash
  2. source ~/.profile

本脚本同样有助于下文的集群部署。

手动安装

手动安装方式,请参阅安装Tendermint

初始化

运行

  1. tendermint init

将为单个本地节点创建所需要的文件。

这些文件可以在$HOME/.tendermint中找到:

  1. $ ls $HOME/.tendermint
  2. config data
  3. $ ls $HOME/.tendermint/config/
  4. config.toml genesis.json node_key.json priv_validator.json

对于单个本地节点,配置已完成。 对于如何配置集群,后文会进一步介绍。

本地节点

使用一个进程内应用程序并启动Tendermint:

  1. tendermint node --proxy_app=kvstore

然后区块数据开始滚动显示:

  1. I[01-06|01:45:15.592] Executed block module=state height=1 validTxs=0 invalidTxs=0
  2. I[01-06|01:45:15.624] Committed state module=state height=1 txs=0 appHash=

用以下命令查看运行状态:

  1. curl -s localhost:26657/status

发送交易

运行kvstore应用后,我们可以发送交易

  1. curl -s 'localhost:26657/broadcast_tx_commit?tx="abcd"'

并发现交易已通过

  1. curl -s 'localhost:26657/abci_query?data="abcd"'

我们也可以发送由k-v组成的交易:

  1. curl -s 'localhost:26657/broadcast_tx_commit?tx="name=satoshi"'

然后查询键

  1. curl -s 'localhost:26657/abci_query?data="name"'

获得以十六进制编码的值。

节点集群

首先创建四个Ubuntu云主机。本测试在Digital Ocean Ubuntu 16.04 x64 (3GB/1CPU, 20GB SSD)上完成。下文中分别将地址记为IP1, IP2, IP3, IP4。

然后,使用ssh进入每台主机并执行脚本

  1. curl -L https://git.io/fFfOR | bash
  2. source ~/.profile

本脚本将首先安装go和其他依赖文件,然后获取Tendermint源码,最终编译“Tendermint”二进制文件。

接下来,使用tendermint testnet命令创建四个配置文件目录(位于/mytestnet),并将每个文件夹复制到对应的主机上,以便每台计算机都有$HOME/mytestnet/node[0-3]文件夹。

在启动网络之前,还需要获取节点标识符(仅IP地址不够,且IP会发生变动)。我们称之为ID1,ID2,ID3,ID4。

  1. tendermint show_node_id --home ./mytestnet/node0
  2. tendermint show_node_id --home ./mytestnet/node1
  3. tendermint show_node_id --home ./mytestnet/node2
  4. tendermint show_node_id --home ./mytestnet/node3

最后,在每一个节点上运行:

  1. tendermint node --home ./mytestnet/node0 --proxy_app=kvstore --p2p.persistent_peers="ID1@IP1:26656,ID2@IP2:26656,ID3@IP3:26656,ID4@IP4:26656"
  2. tendermint node --home ./mytestnet/node1 --proxy_app=kvstore --p2p.persistent_peers="ID1@IP1:26656,ID2@IP2:26656,ID3@IP3:26656,ID4@IP4:26656"
  3. tendermint node --home ./mytestnet/node2 --proxy_app=kvstore --p2p.persistent_peers="ID1@IP1:26656,ID2@IP2:26656,ID3@IP3:26656,ID4@IP4:26656"
  4. tendermint node --home ./mytestnet/node3 --proxy_app=kvstore --p2p.persistent_peers="ID1@IP1:26656,ID2@IP2:26656,ID3@IP3:26656,ID4@IP4:26656"

注意,在第三个节点启动后,由于超过2/3验证节点(在genesis.json中定义)已运行,区块信息开始滚动刷新。 持久化节点可以在config.toml中指定,有关配置选项的详细信息,请参见此处

相关交易操作可参见前文本地节点示例所述。