前言
Tendermint 学习随笔
一、概述
Tendermint Core 是 Byzantine Fault Tolerant(BFT)中间件,它采用状态转换机(以任何编程语言编写),并在许多机器上安全地复制它。
Tendermint Core 是一个区块链应用平台;它为以任何编程语言编写的区块链应用程序提供了相当于 Web 服务器,数据库和支持库的功能。就像服务 Web 应用程序的 Web 服务器一样,Tendermint 服务于区块链应用程序。
二、环境配置
作为简单的代码学习之用,在 Windows 上进行开发自然更符合常规使用习惯,然而编译不支持 Windows 环境,所以使用 wsl remote 作为开发方案。整体环境如下:
操作系统: Windows 10/11
虚拟机: Windows Subsystem for Linux(ubuntu)
开发环境: Visual Studio Code
golang 版本: go1.19.2 linux/amd64
2.1 虚拟机安装
安装过程参考官方文档安装 WSL | Microsoft Learn。
代理配置可参考博客电脑重装纪实。
命令行美化可参考博客Windows终端美化。
2.2 Visual Studio Code 安装
Windows 环境下推荐使用winget
作为包管理工具进行安装,同样参考博客电脑重装纪实。
安装完成后推荐使用以下插件:
- Blockman
代码区块高亮
- Go
golang 官方插件
- Project Manager
项目管理插件
- WSL
wsl 支持插件,可以在 wsl 中任意使用
code
命令打开 vscode。
2.3 golang 安装
在 Ubuntu22.02 中,通过 apt 方式安装的 golang 版本为 1.13,缺少部分语言特性,无法编译 master 分支的源码。
具体原因为开发分支中在go.mod
文件中使用了 1.16 版本以后才提供的retract
关键字。
-
获取发行版代码
1
2
3
4
5
6
7
8
9
10
11
12
13## 下载源码
mkdir ~/download
cd ~/download
wget https://golang.google.cn/dl/go1.19.2.linux-amd64.tar.gz
### 若无法访问外网,可使用以下链接替代
wget https://gomirrors.org/dl/go/go1.19.2.linux-amd64.tar.gz
tar -zxvf ./go1.19.2.linux-amd64.tar.gz
## 配置路径
mkdir ~/env
mkdir ~/env/gobin
mkdir ~/env/gopath
mv ./go ~/env/ -
配置环境变量
修改
.bashrc
文件,添加:1
2
3
4## 配置须为绝对路径,将yourname改为自己的用户名
GOROOT=/home/yourname/env/go
GOBIN=/home/yourname/env/gobin
export PATH=$PATH:$GOROOT/bin:$GOBIN然后执行
source ~/.bashrc
激活修改内容。 -
修改 go 环境变量配置,命令行执行:
1
2
3
4## 配置须为绝对路径,将yourname改为自己的用户名
go env -w GOBIN=/home/yourname/env/gobin
go env -w GOPATH=/home/yourname/env/gopath
go env -w GOPROXY=https://goproxy.cn,direct
2.4 集成 vscode
在获取到 tendermint 源码后,直接在源码根目录执行code .
即可调出 vscode,随后将目录添加进项目管理器。
1 | mkdir ~/workspace |
2.5 指定版本编译
代码学习一般从一个稳定版本开始,目前的最新稳定版是v0.34.24
,故以此版本为基础进行编译和阅读.
1 | ## 以2.4进入的路径为基础继续 |
2.6 单机启动
1 | ## 初始化配置,默认路径为 ~/.tendermint |