前言
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
关键字。
- 获取发行版代码
bash12345678910111213## 下载源码 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
文件,添加:
bash1234## 配置须为绝对路径,将 yourname 改为自己的用户名 GOROOT=/home/yourname/env/go GOBIN=/home/yourname/env/gobin export PATH=$PATH:$GOROOT/bin:$GOBIN
然后执行 source ~/.bashrc
激活修改内容。
- 修改
go
环境变量配置,命令行执行:
bash1234## 配置须为绝对路径,将 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
,随后将目录添加进项目管理器。
bash12345mkdir ~/workspace cd ~/workspace git clone https://github.com/tendermint/tendermint.git cd tendermint code .
2.5 指定版本编译
代码学习一般从一个稳定版本开始,目前的最新稳定版是 v0.34.24
,故以此版本为基础进行编译和阅读。
bash12345## 以2.4进入的路径为基础继续 cd ~/workspace/tendermint git checkout v0.34.24 make build make install
2.6 单机启动
bash123## 初始化配置,默认路径为 ~/.tendermint tendermint init tendermint node --proxy_app=kvstore