1. 安装go 1.9
1.1 下载
https://golang.org/doc/install?download=go1.9.4.linux-amd64.tar.gz
1.2 解压缩到目录 /home/bri/usr/go-1.9
tar -C /home/bri/usr/go-1.9 -xzf go1.9.4.linux-amd64.tar.gz
1.3 修改/etc/profile增加环境变量
---------------------
#for go
#gopath is woring directory
export GOPATH=/home/bri/workspace/go
#goroot is go install directory
export GOROOT=/home/bri/usr/go-1.9/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
---------------------
1.4 在liteide编译一个helloworld.go以验证安装无误
1.5 go version 检查版本为1.9
2.tendermint源码分析
2.1 获取源码
git clone -b v0.15.0 https://github.com/tendermint/tendermint.git
2.2 tendermint官网
https://www.tendermint.com/
2.3 tendermint文档
https://tendermint.readthedocs.io/en/master/
3. tendermint文档要点
3.1 tendermint分量部分:共识引擎; 应用接口。共识引擎,又叫tendermint core。应用接口,又叫 ABCI,Application BlockChain Interface。tendermint的共识引擎可以单独部署,非go语言开发的应用也可以使用。
3.2 bft最多运行1/3的节点坏掉,这个坏掉是指任意的攻击诈骗行为。
3.3 早期,tendermint是内建的共识引擎,是pos的。现在,tendermint已经变成了通用的区块链共识引擎,支持各种应用,可拔插式的。
3.4 cosmos是一个基于tendermint的加密数字货币。https://cosmos.network/
3.5 ABCI,让多种语言可以写BFT共识应用。它的实现是TSP(tendermint socket protocal)
3.6 tendermint把共识引擎和p2p网络这两个东东解耦出来了,比特币是整体设计。解耦更好。
3.7 如果开发一个类似比特币的东东,ABCI和app分别解决不同的问题。ABCI需要解决的是:在节点间共享区块和交易事务; 用区块链建立不可变的事务次序。app需要解决的问题是:维护UTXO数据库; 验证交易事务的加密签名; 防范双花; 让客户端可以查询UTXO数据库。
3.8 ABCI有三种消息类型:DeliverTx; CheckTx; Commit。
3.8.1 DeliverTx 区块链上的每一个交易事务都是有DeliverTx消息发送的,app需要验证从DeliverTx收到的每个事务的当前状态,协议,加密验证等等。交易事务被验证后,app更新状态,把交易事务存入数据库,比如UTXO。
3.8.2 CheckTx 跟DeliverTx相似,但仅用于验证交易事务。
3.8.3 Commit 计算一个加密的提交给当前app的状态,这个提交将放在下一个区块的头部。
3.9 一个app可以创建多个ABCI socket连接,每个连接处理一类消息。这个一个流程https://tendermint.readthedocs.io/en/master/_images/abci.png
3. tendermint 二进制 安装
3.1 下载Linux 64的版本 https://github.com/tendermint/tendermint/releases 解压缩到~/usr/tendermint
3.2 运行
初始化 tendermint init
运行 tendermint node --proxy_app=dummy
3.3 tender
1.1 下载
https://golang.org/doc/install?download=go1.9.4.linux-amd64.tar.gz
1.2 解压缩到目录 /home/bri/usr/go-1.9
tar -C /home/bri/usr/go-1.9 -xzf go1.9.4.linux-amd64.tar.gz
1.3 修改/etc/profile增加环境变量
---------------------
#for go
#gopath is woring directory
export GOPATH=/home/bri/workspace/go
#goroot is go install directory
export GOROOT=/home/bri/usr/go-1.9/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
---------------------
1.4 在liteide编译一个helloworld.go以验证安装无误
1.5 go version 检查版本为1.9
2.tendermint源码分析
2.1 获取源码
git clone -b v0.15.0 https://github.com/tendermint/tendermint.git
2.2 tendermint官网
https://www.tendermint.com/
2.3 tendermint文档
https://tendermint.readthedocs.io/en/master/
3. tendermint文档要点
3.1 tendermint分量部分:共识引擎; 应用接口。共识引擎,又叫tendermint core。应用接口,又叫 ABCI,Application BlockChain Interface。tendermint的共识引擎可以单独部署,非go语言开发的应用也可以使用。
3.2 bft最多运行1/3的节点坏掉,这个坏掉是指任意的攻击诈骗行为。
3.3 早期,tendermint是内建的共识引擎,是pos的。现在,tendermint已经变成了通用的区块链共识引擎,支持各种应用,可拔插式的。
3.4 cosmos是一个基于tendermint的加密数字货币。https://cosmos.network/
3.5 ABCI,让多种语言可以写BFT共识应用。它的实现是TSP(tendermint socket protocal)
3.6 tendermint把共识引擎和p2p网络这两个东东解耦出来了,比特币是整体设计。解耦更好。
3.7 如果开发一个类似比特币的东东,ABCI和app分别解决不同的问题。ABCI需要解决的是:在节点间共享区块和交易事务; 用区块链建立不可变的事务次序。app需要解决的问题是:维护UTXO数据库; 验证交易事务的加密签名; 防范双花; 让客户端可以查询UTXO数据库。
3.8 ABCI有三种消息类型:DeliverTx; CheckTx; Commit。
3.8.1 DeliverTx 区块链上的每一个交易事务都是有DeliverTx消息发送的,app需要验证从DeliverTx收到的每个事务的当前状态,协议,加密验证等等。交易事务被验证后,app更新状态,把交易事务存入数据库,比如UTXO。
3.8.2 CheckTx 跟DeliverTx相似,但仅用于验证交易事务。
3.8.3 Commit 计算一个加密的提交给当前app的状态,这个提交将放在下一个区块的头部。
3.9 一个app可以创建多个ABCI socket连接,每个连接处理一类消息。这个一个流程https://tendermint.readthedocs.io/en/master/_images/abci.png
3. tendermint 二进制 安装
3.1 下载Linux 64的版本 https://github.com/tendermint/tendermint/releases 解压缩到~/usr/tendermint
3.2 运行
初始化 tendermint init
运行 tendermint node --proxy_app=dummy
3.3 tender