
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。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-85575-1.html
实在不行