123 lines
3.3 KiB
Markdown
123 lines
3.3 KiB
Markdown
[**Website**](http://tendermint.com) **|**
|
|
[**Blog**](http://tendermint.com/posts/) **|**
|
|
[**Forum**] (http://forum.tendermint.com) **|**
|
|
[**IRC**] (http://webchat.freenode.net/?randomnick=1&channels=%23tendermint)
|
|
|
|
Tendermint in Golang
|
|
|
|
Tendermint is a completely decentralized byzantine consensus protocol suitable for use in cryptocurrencies.
|
|
|
|
This project is a reference implementation of the protocol.
|
|
|
|
## Submodules
|
|
|
|
* **[consensus](https://github.com/tendermint/tendermint/blob/master/consensus):** core consensus algorithm
|
|
* **[state](https://github.com/tendermint/tendermint/blob/master/state):** application state; mutated by transactions
|
|
* **[blocks](https://github.com/tendermint/tendermint/blob/master/blocks):** structures of the blockchain
|
|
* **[mempool](https://github.com/tendermint/tendermint/blob/master/mempool):** gossip of new transactions
|
|
* **[merkle](https://github.com/tendermint/tendermint/blob/master/merkle):** merkle hash trees
|
|
* **[p2p](https://github.com/tendermint/tendermint/blob/master/p2p):** extensible P2P networking
|
|
|
|
## Requirements
|
|
|
|
[Go](http://golang.org) 1.2 or newer.
|
|
|
|
OpenSSL header files. `sudo apt-get install libssl-dev` on Debian/Ubuntu
|
|
|
|
//TODO OpenSSL header files for other platforms
|
|
|
|
|
|
###Setting up Golang
|
|
|
|
[Install Go for your platform](https://golang.org/doc/install)
|
|
|
|
Set up environment variables. Go requires certain environment variables to compile code. Set these in your terminal, .profile or .zshrc as appropiate.
|
|
|
|
```
|
|
export GOROOT=$HOME/go
|
|
export PATH=$PATH:$GOROOT/bin
|
|
export GOPATH=$HOME/gopkg
|
|
```
|
|
|
|
## Build
|
|
|
|
[![Build Status](https://drone.io/github.com/tendermint/tendermint/status.png)](https://drone.io/github.com/tendermint/tendermint/latest)
|
|
|
|
```
|
|
make get_deps
|
|
make
|
|
```
|
|
|
|
## Run
|
|
|
|
`./tendermint daemon --help`
|
|
|
|
|
|
|
|
### Editing your config.json
|
|
|
|
The file will be create in ~/.tendermint/config.json
|
|
|
|
There is not official or testnet SeedNode yet. Will updated with an official list of seed nodes.
|
|
|
|
//TODO Explanation of other config.json fields
|
|
|
|
```
|
|
{
|
|
"Network": "tendermint_testnet0",
|
|
"LAddr": "0.0.0.0:0",
|
|
"SeedNode": "",
|
|
"DB": {
|
|
"Backend": "leveldb",
|
|
"Dir": "/home/zaki/.tendermint/data"
|
|
},
|
|
"Alert": {
|
|
"MinInterval": 0,
|
|
"TwilioSid": "",
|
|
"TwilioToken": "",
|
|
"TwilioFrom": "",
|
|
"TwilioTo": "",
|
|
"EmailRecipients": null
|
|
},
|
|
"SMTP": {
|
|
"User": "",
|
|
"Password": "",
|
|
"Host": "",
|
|
"Port": 0
|
|
},
|
|
"RPC": {
|
|
"HTTPLAddr": "0.0.0.0:0"
|
|
}
|
|
}
|
|
|
|
```
|
|
|
|
You will also to need to have a genesis.json in ~/.tendermint/. This must be the common genesis.json as the network you are joining from the Seed Node
|
|
|
|
```
|
|
{
|
|
"Accounts": [
|
|
{
|
|
"Address": "6070ff17c39b2b0a64ca2bc431328037fa0f4760",
|
|
"Amount": 200000000
|
|
}
|
|
],
|
|
"Validators": [
|
|
{
|
|
"PubKey": "01206bd490c212e701a2136eeea04f06fa4f287ee47e2b7a9b5d62edd84cd6ad9753",
|
|
"Amount": 100000000,
|
|
"UnbondTo": [
|
|
{
|
|
"Address": "6070ff17c39b2b0a64ca2bc431328037fa0f4760",
|
|
"Amount": 100000000
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## Resources
|
|
|
|
IRC Channel: #tendermint on freenode
|