1. 安装配置go语言

Harmony代码对go语言的版本要求很严格,要求版本必须是go1.12,刚开始的时候在这里踩了不少坑。

下载go语言:

wget https://studygolang.com/dl/golang/go1.12.7.linux-amd64.tar.gz

解压:

tar -zxvf go1.12.7.linux-amd64.tar.gz

建议拷贝解压后的go到 /usr/local 目录下边:

sudo cp -r go /usr/local

创建GOPATH目录,在目录下创建src、pkg、bin三个子目录:

src目录为放置源代码以及第三方包的目录,
pkg为编译生成的一些静态链接库所存放的目录,
bin则为go install编译生成的二进制文件所存放的位置。

然后设置相应的环境变量:

sudo vi /etc/profile

在末尾添加下面语句:

export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export GOPATH=/home/ghy/gopath (根据自己的目录而定)
export GOPROXY=https://goproxy.io
export PATH=$PATH:$GOBIN:$GOPATH/bin

保存并退出。
使环境变量生效:

source /etc/profile

其中,GOPROXY 可以解决 linux系统下 golang.org/x/… 系列包无法下载的问题。macos系统可以不用设置,但是linux系统上这个环境变量必须设置,如果不设置的话无法自动下载引用的的包。

查看环境变量是否生效:

go env

一旦设置成功就可以用go get命令从网上直接下载项目了,项目会被自动下载到gopath/src目录下

2.安装gmp

安装gmp之前要先安装m4 (不然会出错),m4可以通过命名自动安装:

sudo apt-get install m4

然后再libgmp官网下载最新的gmp包,官网是https://gmplib.org/ :
下载后解压缩:

tar -jxvf gmp-6.1.2.tar.bz2

之后按如下操作:

cd gmp-6.1.2
./configure --enable-cxx
make
make check
sudo make install

3. 安装openssl

按照如下代码安装即可:

sudo apt-get install openssl 
sudo apt-get install libssl-dev

安装后测试是否安装成功:

openssl version -a

如果出现openssl相关版本信息,则意味着安装成功。

4. 配置harmony环境并进行本地测试

首先,设置一系列变量:

export CGO_CFLAGS="-I$GOPATH/src/github.com/harmony-one/bls/include -I$GOPATH/src/github.com/harmony-one/mcl/include -I/usr/local/opt/openssl/include"

export CGO_LDFLAGS="-L$GOPATH/src/github.com/harmony-one/bls/lib -L/usr/local/opt/openssl/lib"

export LD_LIBRARY_PATH=$GOPATH/src/github.com/harmony-one/bls/lib:$GOPATH/src/github.com/harmony-one/mcl/lib:/usr/local/opt/openssl/lib

export LIBRARY_PATH=$LD_LIBRARY_PATH

export DYLD_FALLBACK_LIBRARY_PATH=$LD_LIBRARY_PATH

在之前创建的src项目文件夹下创建一个github.com的目录,并在github.com目录下创建harmony-one子目录:

mkdir -p /home/ghy/gopath/src/github.com/harmony-one  (根据你自己的目录更改)

进入到harmony-one项目目录下:

cd /home/ghy/gopath/src/github.com/harmony-one

从github上克隆mcl项目源码:

git clone https://github.com/harmony-one/mcl.git 
或  git clone git@github.com:harmony-one/mcl.git

注:从github上克隆项目的方式有两种,分别是通过ssh和http两种方式。使用下面的ssh方式克隆项目前必须要对ssh私钥进行配置,配置方法这里不做赘述,可以参考其他的文章。

下面对mcl项目进行编译:

cd mcl && make -j4 && cd ..

下面是从github上克隆bls项目源码:

git clone https://github.com/harmony-one/bls.git

同样地,对bls项目进行编译:

cd bls && make BLS_SWAP_G=1 -j4 && cd ..

接下来从github上克隆harmony项目源并进入项目目录:

git clone https://github.com/harmony-one/harmony.git
cd harmony

在本地编译运行项目前,必须配置下面这个环境变量:

export GO111MODULE=on

本地运行代码前,先构建所有可执行文件:

./scripts/go_executable_build.sh

最后执行本地测试:

./test/debug.sh

debug.sh脚本调用test/deploy.sh脚本,根据配置文件创建Harmony区块链devnet的本地环境。 配置文件配置节点数及其IP/端口。该脚本默认配置两个分片,并且在每个分片中运行7个节点。

通过下面代码可以查看系统运行过程中钱包列表和钱包中余额变化:

source scripts/setup_bls_build_flags.sh
./bin/wallet list
./bin/wallet -p local balances
Logo

更多推荐