作者:jianxuanbing
本文为作者原创,转载请注明出处:https://www.cnblogs.com/jianxuanbing/p/10071238.html
一、前言
最近,需要接触区块链项目的主链开发,在EOS、BTC、ethereum、超级账本这几种区块链技术当中,相互对比后,最终还是以go-ethereum为解决方案。
以ethereum为基准去找解决方案,最终找到了2个符合自己要求的方案,分别如下:美图、gttc。本来是想用gttc的这个解决方案的,但是它是基于go-ethereum最新源码来进行二次开发的,相对不稳定,因此还是用美图的解决方案了,毕竟这公司大一点,没那么多坑。
二、源码
为了方便测试,我们需要将节点最大验证器数修改一下,这样便于我们进行简单测试
修改consensus/dpos/dpos.go文件的maxValidator
// 新值 maxValidatorSize = 21 // 旧值 maxValidatorSize = 3三、构建
# 进入源码根目录 docker build . -t meitugeth注意:构建过程中会用到
build\env.sh文件,会提示无权限,因此你需要给该文件赋予执行权限。
sudo chmod 777 build\env.sh四、部署
1. 创建节点数据目录
最好事先创建好相应的目录,否则运行后,动态创建目录,会有权限的问题,当然也可以通过命令进行设置目录的权限。
mkdir ~/data mkdir ~/data/meitu mkdir ~/data/meitu/node1 mkdir ~/data/meitu/node2 mkdir ~/data/meitu/node32. 编写docker-compose.yml文件
version: '3' services: meitu_node_1: image: meitugeth container_name: meitu_node_1 build: context: . command: --ipcpath "/root/.ethereum/geth.ipc" --port 30303 ports: - 15450:8545 - 15460:8546 - 10303:30303 - 10303:
