以太坊搭建私有链和部署智能合约

以太坊搭建私有链和部署智能合约


1. 实验环境

VMWare虚拟机 + CentOs 7 + Golang

2. 以太坊安装

2.1 安装相关组件

为了避免后续安装过程出错,这里提前安装一些需要用到的组件和依赖。如果不确定之前有没有安装过这些组件也没关系,检测到安装就不会重复安装。-y表示安装过程中弹出的问题一律回答yes。

yum update -y && yum install git wget bzip2 vim gcc-c++ ntp epel-release nodejs cmake -y
  • 相关组件的作用
组件 作用
git 版本管理工具,用于后面从github克隆geth
wget Linux命令行的下载工具,用于后面下载cmake
bzip2 无损压缩软件
vim 编辑工具,用于后面编辑一些环境配置文件
gcc-c++ c/c++编译工具,用于后面geth的编译
ntp 网络时钟同步组件
nodejs 用于前端js开发的包管理软件
epel 网络第三方的linux安装包源

2.2 安装及配置Golang环境

  • 我的虚拟机之前已经装过Golang环境,因此这里不再重现和赘述。
  • 贴一篇我当时配golang环境时写的博客:golang开发环境配置

2.3 克隆并编译geth

  • 从github上clone下来go-ethereum(简称geth)
git clone https://github.com/ethereum/go-ethereum.git
  • 进入geth根目录并编译
cd go-ethereum && make all
  • 配置环境变量
# 打开环境配置文件
vim ~/.profile

# 新增path
export PATH=$PATH:$GOPATH/bin:$HOME/go-ethereum/build/bin

# 让更改生效
source ~/.profile
  • 验证是否配置成功
    在终端输入geth -h有一堆帮助信息出来即可

2.4 安装及配置cmake环境

智能合约编译需要cmake,之前yum install cmake的版本只有2.8不够,这里需要去官网下载其独立安装包。这里我用的是最新版本3.12.3。

  • 下载到用户根目录$HOME
cd && wget https://cmake.org/files/v3.12/cmake-3.12.3.tar.gz
  • 解压
tar -xzvf cmake-3.12.3.tar.gz
  • 进入cmake根目录并编译安装
cd cmake-3.12.3
./bootstrap && make && make install
  • 配置环境变量
# 打开环境配置文件
vim ~/.profile

# 新增path
export PATH=$PATH:$GOPATH/bin:$HOME/go-ethereum/build/bin:$HOME/cmake/bin

# 让更改生效
source ~/.profile
  • 验证是否配置成功
    在终端输入cmake -h或cmake -version有一堆帮助信息出来或者有版本信息出来均可

2.5 防火墙

因为之前在配置golang私有云桌面的时候把防火墙关闭了,我在这里就不需要考虑。

  • 你可以选择关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 也可以只添加防火墙规则,允许某几个geth使用一些默认端口。
firewall-cmd --zone=public --add-port=8087/tcp --permanent
firewall-cmd --zone=public --add-port=30303/tcp --permanent
  • mark一下:启用防火墙的命令
systemctl enable firewalld
systemctl start firewalld

2.6 时钟同步

因为区块链需要同步网络时间,所以需要启用网络时间同步

systemctl enable ntpd
systemctl start ntpd

3. 私有链创世区块搭建

  • 编写创世区块的配置文件genesis.json。里面可以设置一些挖矿难度,默认的挖矿账户和最大手续费等。
{
     
    "nonce": "0x0000000000000042",  
    "timestamp": "0x00",  
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",  
    "extraData": "0x00",  
    "gasLimit": "0x80000000",  
    "difficulty": "0x400",  
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",  
    "coinbase": "0x2D356ee3F5b8718d8690AFCD31Fe2CB5E602677e",  
    "alloc": {
   },  
    "config": {
     
        "chainId": 15,  
        "homesteadBlock": 0,  
        "eip155Block": 0,  
        "eip158Block": 0  
    }  
}  
  • 初始化创世区块节点信息
geth --datadir node0 init genesis.json
  • 得到如下信息,说明初始化成功
    在这里插入图片描述
  • 执行geth的控制台,将输出重定向到geth.log中
geth --datadir node0 console 2>> geth.log
  • 一些基本的操作
    • 新建账户、查看账户及账户余额
      在这里插入图片描述
    • 查看挖矿的账户、当前区块数等
  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值