您现在的位置是:首页 >学无止境 >命令行和cmc工具搭建长安链多节点集群和部署智能合约网站首页学无止境
命令行和cmc工具搭建长安链多节点集群和部署智能合约
这里写目录标题
配置环境
git
下载地址:https://git-scm.com/downloads
安装步骤,请参看:https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
golang
版本为1.16-1.19
首先查看go版本
go version
如果版本等级不够,需要升级go版本
下载地址:https://golang.google.cn/dl/
这是我下载的版本
找到之前go版本存放路径,可以使用命令 whereis go 会显示go存放路径
[root@ibt59 ~]# whereis go
go: /usr/bin/go
备份旧版本并解压新版本
# 将旧版本备份
cd /usr/bin
mv go go.1.13.3
# 将新版本go压缩包解开当前目录
tar zxf go1.19.8.linux-amd64.tar.gz
# 目录下会释放出go目录
ls -l go
[root@ibt59 bin]# ls -l go
总用量 52
drwxr-xr-x 2 root root 4096 3月 30 05:18 api
drwxr-xr-x 2 root root 29 3月 30 05:19 bin
-rw-r--r-- 1 root root 52 3月 30 05:15 codereview.cfg
-rw-r--r-- 1 root root 1339 3月 30 05:15 CONTRIBUTING.md
drwxr-xr-x 2 root root 85 3月 30 05:18 doc
drwxr-xr-x 3 root root 18 3月 30 05:18 lib
-rw-r--r-- 1 root root 1479 3月 30 05:15 LICENSE
drwxr-xr-x 11 root root 152 3月 30 05:18 misc
-rw-r--r-- 1 root root 1303 3月 30 05:15 PATENTS
drwxr-xr-x 6 root root 76 3月 30 05:20 pkg
-rw-r--r-- 1 root root 1455 3月 30 05:15 README.md
-rw-r--r-- 1 root root 419 3月 30 05:15 SECURITY.md
drwxr-xr-x 48 root root 4096 3月 30 05:18 src
drwxr-xr-x 26 root root 12288 3月 30 05:18 test
-rw-r--r-- 1 root root 8 3月 30 05:15 VERSION
检查go版本
[root@ibt59 bin]# ./go version
go version go1.19.8 linux/amd64
配置环境
打开/etc/profile文件,采用编辑模式,设置goroot地址和path地址
export GOROOT=/usr/bin/go
export PATH=$PATH:$GOROOT/bin
[root@ibt59 bin]# vim /etc/profile
[root@ibt59 bin]# source /etc/profile
[root@ibt59 bin]# go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/root/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/root/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/bin/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/bin/go/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.19.8"
GCCGO="gccgo"
GOAMD64="v1"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build1188625679=/tmp/go-build -gno-record-gcc-switches"
[root@ibt59 bin]# cd
[root@ibt59 ~]# go version
go version go1.19.8 linux/amd64
gcc
检查 gcc 版本
gcc --version
显示结果若 < 7.3,则执行下面步骤升级
升级 gcc
sudo yum install centos-release-scl
sudo yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash
注意:第三条指令scl enable devtoolset-7
bash 只是在当前会话中升级了gcc,如果想每次登录gcc自动升级,可以把scl enable devtoolset-7 bash 放在 ~/.bash_profile 文件中。
[root@ibt59 ~]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright © 2015 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。
[root@ibt59 ~]# sudo yum install centos-release-scl
已加载插件:fastestmirror, langpacks, priorities
Determining fastest mirrors
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.6 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/2): epel/x86_64/updateinfo | 1.0 MB 00:00:02
(2/2): epel/x86_64/primary_db | 7.0 MB 00:00:12
正在解决依赖关系
--> 正在检查事务
---> 软件包 centos-release-scl.noarch.0.2-3.el7.centos 将被 安装
--> 正在处理依赖关系 centos-release-scl-rh,它被软件包 centos-release-scl-2-3.el7.centos.noarch 需要
--> 正在检查事务
---> 软件包 centos-release-scl-rh.noarch.0.2-3.el7.centos 将被 安装
--> 解决依赖关系完成
依赖关系解决
==============================================================================================================================================================================
Package 架构 版本 源 大小
==============================================================================================================================================================================
正在安装:
centos-release-scl noarch 2-3.el7.centos extras 12 k
为依赖而安装:
centos-release-scl-rh noarch 2-3.el7.centos extras 12 k
事务概要
==============================================================================================================================================================================
安装 1 软件包 (+1 依赖软件包)
总下载量:24 k
安装大小:39 k
Is this ok [y/d/N]: y
Downloading packages:
(1/2): centos-release-scl-rh-2-3.el7.centos.noarch.rpm | 12 kB 00:00:00
(2/2): centos-release-scl-2-3.el7.centos.noarch.rpm | 12 kB 00:00:00
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计 88 kB/s | 24 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : centos-release-scl-rh-2-3.el7.centos.noarch 1/2
正在安装 : centos-release-scl-2-3.el7.centos.noarch 2/2
验证中 : centos-release-scl-2-3.el7.centos.noarch 1/2
验证中 : centos-release-scl-rh-2-3.el7.centos.noarch 2/2
已安装:
centos-release-scl.noarch 0:2-3.el7.centos
作为依赖被安装:
centos-release-scl-rh.noarch 0:2-3.el7.centos
完毕!
[root@ibt59 ~]# sudo yum install devtoolset-7-gcc*
已加载插件:fastestmirror, langpacks, priorities
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* centos-sclo-rh: mirrors.bfsu.edu.cn
* centos-sclo-sclo: mirrors.bfsu.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
centos-sclo-rh | 3.0 kB 00:00:00
centos-sclo-sclo | 3.0 kB 00:00:00
(1/2): centos-sclo-sclo/x86_64/primary_db | 300 kB 00:00:00
(2/2): centos-sclo-rh/x86_64/primary_db | 3.4 MB 00:00:00
正在解决依赖关系
--> 正在检查事务
---> 软件包 devtoolset-7-gcc.x86_64.0.7.3.1-5.16.el7 将被 安装
--> 正在处理依赖关系 devtoolset-7-binutils >= 2.22.52.0.1,它被软件包 devtoolset-7-gcc-7.3.1-5.16.el7.x86_64 需要
--> 正在处理依赖关系 devtoolset-7-runtime,它被软件包 devtoolset-7-gcc-7.3.1-5.16.el7.x86_64 需要
---> 软件包 devtoolset-7-gcc-c++.x86_64.0.7.3.1-5.16.el7 将被 安装
--> 正在处理依赖关系 devtoolset-7-libstdc++-devel = 7.3.1-5.16.el7,它被软件包 devtoolset-7-gcc-c++-7.3.1-5.16.el7.x86_64 需要
---> 软件包 devtoolset-7-gcc-gdb-plugin.x86_64.0.7.3.1-5.16.el7 将被 安装
---> 软件包 devtoolset-7-gcc-gfortran.x86_64.0.7.3.1-5.16.el7 将被 安装
--> 正在处理依赖关系 devtoolset-7-libquadmath-devel = 7.3.1-5.16.el7,它被软件包 devtoolset-7-gcc-gfortran-7.3.1-5.16.el7.x86_64 需要
--> 正在处理依赖关系 libgfortran4 >= 7.1.1-2,它被软件包 devtoolset-7-gcc-gfortran-7.3.1-5.16.el7.x86_64 需要
---> 软件包 devtoolset-7-gcc-plugin-devel.x86_64.0.7.3.1-5.16.el7 将被 安装
--> 正在处理依赖关系 libmpc-devel >= 0.8.1,它被软件包 devtoolset-7-gcc-plugin-devel-7.3.1-5.16.el7.x86_64 需要
--> 正在处理依赖关系 mpfr-devel >= 2.2.1,它被软件包 devtoolset-7-gcc-plugin-devel-7.3.1-5.16.el7.x86_64 需要
--> 正在检查事务
---> 软件包 devtoolset-7-binutils.x86_64.0.2.28-11.el7 将被 安装
---> 软件包 devtoolset-7-libquadmath-devel.x86_64.0.7.3.1-5.16.el7 将被 安装
---> 软件包 devtoolset-7-libstdc++-devel.x86_64.0.7.3.1-5.16.el7 将被 安装
---> 软件包 devtoolset-7-runtime.x86_64.0.7.1-4.el7 将被 安装
---> 软件包 libgfortran4.x86_64.0.8.3.1-2.1.1.el7 将被 安装
---> 软件包 libmpc-devel.x86_64.0.1.0.1-3.el7 将被 安装
---> 软件包 mpfr-devel.x86_64.0.3.1.1-4.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
==============================================================================================================================================================================
Package 架构 版本 源 大小
==============================================================================================================================================================================
正在安装:
devtoolset-7-gcc x86_64 7.3.1-5.16.el7 centos-sclo-rh 29 M
devtoolset-7-gcc-c++ x86_64 7.3.1-5.16.el7 centos-sclo-rh 11 M
devtoolset-7-gcc-gdb-plugin x86_64 7.3.1-5.16.el7 centos-sclo-rh 124 k
devtoolset-7-gcc-gfortran x86_64 7.3.1-5.16.el7 centos-sclo-rh 11 M
devtoolset-7-gcc-plugin-devel x86_64 7.3.1-5.16.el7 centos-sclo-rh 1.3 M
为依赖而安装:
devtoolset-7-binutils x86_64 2.28-11.el7 centos-sclo-rh 5.3 M
devtoolset-7-libquadmath-devel x86_64 7.3.1-5.16.el7 centos-sclo-rh 154 k
devtoolset-7-libstdc++-devel x86_64 7.3.1-5.16.el7 centos-sclo-rh 2.5 M
devtoolset-7-runtime x86_64 7.1-4.el7 centos-sclo-rh 20 k
libgfortran4 x86_64 8.3.1-2.1.1.el7 base 686 k
libmpc-devel x86_64 1.0.1-3.el7 base 32 k
mpfr-devel x86_64 3.1.1-4.el7 base 68 k
事务概要
==============================================================================================================================================================================
安装 5 软件包 (+7 依赖软件包)
总下载量:62 M
安装大小:175 M
Is this ok [y/d/N]: y
Downloading packages:
警告:/var/cache/yum/x86_64/7/centos-sclo-rh/packages/devtoolset-7-binutils-2.28-11.el7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID f2ee9d55: NOKEY
devtoolset-7-binutils-2.28-11.el7.x86_64.rpm 的公钥尚未安装
(1/12): devtoolset-7-binutils-2.28-11.el7.x86_64.rpm | 5.3 MB 00:00:00
(2/12): devtoolset-7-gcc-c++-7.3.1-5.16.el7.x86_64.rpm | 11 MB 00:00:00
(3/12): devtoolset-7-gcc-7.3.1-5.16.el7.x86_64.rpm | 29 MB 00:00:00
(4/12): devtoolset-7-gcc-gdb-plugin-7.3.1-5.16.el7.x86_64.rpm | 124 kB 00:00:00
(5/12): devtoolset-7-gcc-plugin-devel-7.3.1-5.16.el7.x86_64.rpm | 1.3 MB 00:00:00
(6/12): devtoolset-7-libquadmath-devel-7.3.1-5.16.el7.x86_64.rpm | 154 kB 00:00:00
(7/12): devtoolset-7-libstdc++-devel-7.3.1-5.16.el7.x86_64.rpm | 2.5 MB 00:00:00
(8/12): devtoolset-7-gcc-gfortran-7.3.1-5.16.el7.x86_64.rpm | 11 MB 00:00:00
(9/12): devtoolset-7-runtime-7.1-4.el7.x86_64.rpm | 20 kB 00:00:00
(10/12): libmpc-devel-1.0.1-3.el7.x86_64.rpm | 32 kB 00:00:00
(11/12): mpfr-devel-3.1.1-4.el7.x86_64.rpm | 68 kB 00:00:00
(12/12): libgfortran4-8.3.1-2.1.1.el7.x86_64.rpm | 686 kB 00:00:01
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计 25 MB/s | 62 MB 00:00:02
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo 检索密钥
导入 GPG key 0xF2EE9D55:
用户ID : "CentOS SoftwareCollections SIG (https://wiki.centos.org/SpecialInterestGroup/SCLo) <security@centos.org>"
指纹 : c4db d535 b1fb ba14 f8ba 64a8 4eb8 4e71 f2ee 9d55
软件包 : centos-release-scl-rh-2-3.el7.centos.noarch (@extras)
来自 : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
是否继续?[y/N]:y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : devtoolset-7-runtime-7.1-4.el7.x86_64 1/12
正在安装 : mpfr-devel-3.1.1-4.el7.x86_64 2/12
正在安装 : libmpc-devel-1.0.1-3.el7.x86_64 3/12
正在安装 : devtoolset-7-binutils-2.28-11.el7.x86_64 4/12
正在安装 : devtoolset-7-libstdc++-devel-7.3.1-5.16.el7.x86_64 5/12
正在安装 : libgfortran4-8.3.1-2.1.1.el7.x86_64 6/12
正在安装 : devtoolset-7-gcc-7.3.1-5.16.el7.x86_64 7/12
正在安装 : devtoolset-7-libquadmath-devel-7.3.1-5.16.el7.x86_64 8/12
正在安装 : devtoolset-7-gcc-gfortran-7.3.1-5.16.el7.x86_64 9/12
正在安装 : devtoolset-7-gcc-plugin-devel-7.3.1-5.16.el7.x86_64 10/12
正在安装 : devtoolset-7-gcc-gdb-plugin-7.3.1-5.16.el7.x86_64 11/12
正在安装 : devtoolset-7-gcc-c++-7.3.1-5.16.el7.x86_64 12/12
验证中 : libmpc-devel-1.0.1-3.el7.x86_64 1/12
验证中 : devtoolset-7-gcc-gfortran-7.3.1-5.16.el7.x86_64 2/12
验证中 : devtoolset-7-gcc-plugin-devel-7.3.1-5.16.el7.x86_64 3/12
验证中 : devtoolset-7-gcc-gdb-plugin-7.3.1-5.16.el7.x86_64 4/12
验证中 : devtoolset-7-libquadmath-devel-7.3.1-5.16.el7.x86_64 5/12
验证中 : devtoolset-7-gcc-7.3.1-5.16.el7.x86_64 6/12
验证中 : libgfortran4-8.3.1-2.1.1.el7.x86_64 7/12
验证中 : devtoolset-7-binutils-2.28-11.el7.x86_64 8/12
验证中 : devtoolset-7-libstdc++-devel-7.3.1-5.16.el7.x86_64 9/12
验证中 : devtoolset-7-gcc-c++-7.3.1-5.16.el7.x86_64 10/12
验证中 : mpfr-devel-3.1.1-4.el7.x86_64 11/12
验证中 : devtoolset-7-runtime-7.1-4.el7.x86_64 12/12
已安装:
devtoolset-7-gcc.x86_64 0:7.3.1-5.16.el7 devtoolset-7-gcc-c++.x86_64 0:7.3.1-5.16.el7 devtoolset-7-gcc-gdb-plugin.x86_64 0:7.3.1-5.16.el7
devtoolset-7-gcc-gfortran.x86_64 0:7.3.1-5.16.el7 devtoolset-7-gcc-plugin-devel.x86_64 0:7.3.1-5.16.el7
作为依赖被安装:
devtoolset-7-binutils.x86_64 0:2.28-11.el7 devtoolset-7-libquadmath-devel.x86_64 0:7.3.1-5.16.el7 devtoolset-7-libstdc++-devel.x86_64 0:7.3.1-5.16.el7
devtoolset-7-runtime.x86_64 0:7.1-4.el7 libgfortran4.x86_64 0:8.3.1-2.1.1.el7 libmpc-devel.x86_64 0:1.0.1-3.el7
mpfr-devel.x86_64 0:3.1.1-4.el7
完毕!
[root@ibt59 ~]# scl enable devtoolset-7 bash
[root@ibt59 ~]# gcc --version
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
环境搭建
使用脚本搭建
源码下载
从长安链官网下载源码:https://git.chainmaker.org.cn/chainmaker/chainmaker-go
当前为私有仓库,需要先进行账号注册
下载chainmaker-go源码到本地
$ git clone -b v2.3.1 --depth=1 https://git.chainmaker.org.cn/chainmaker/chainmaker-go.git
下载证书生成工具源码到本地
$ git clone -b v2.3.0 --depth=1 https://git.chainmaker.org.cn/chainmaker/chainmaker-cryptogen.git
源码编译
编译证书生成工具
$ cd chainmaker-cryptogen
$ make
[root@ibt59 ~]# cd
[root@ibt59 ~]# ls
anaconda-ks.cfg go1.19.8.linux-amd64.tar.gz initial-setup-ks.cfg mysql80-community-release-el7-5.noarch.rpm tqxtsd8 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@ibt59 ~]# mkdir lj
[root@ibt59 ~]# ls
anaconda-ks.cfg go1.19.8.linux-amd64.tar.gz initial-setup-ks.cfg lj mysql80-community-release-el7-5.noarch.rpm tqxtsd8 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@ibt59 ~]# cd lj
[root@ibt59 lj]# mkdir chainmaker
[root@ibt59 lj]# cd chainmaker
[root@ibt59 chainmaker]# git clone -b v2.3.1 --depth=1 https://git.chainmaker.org.cn/chainmaker/chainmaker-go.git
正克隆到 'chainmaker-go'...
Username for 'https://git.chainmaker.org.cn': YITAHUTU79
Password for 'https://YITAHUTU79@git.chainmaker.org.cn':
fatal: Authentication failed for 'https://git.chainmaker.org.cn/chainmaker/chainmaker-go.git/'
[root@ibt59 chainmaker]# git clone -b v2.3.1 --depth=1 https://git.chainmaker.org.cn/chainmaker/chainmaker-go.git
正克隆到 'chainmaker-go'...
Username for 'https://git.chainmaker.org.cn': yitahutu79
Password for 'https://yitahutu79@git.chainmaker.org.cn':
fatal: Authentication failed for 'https://git.chainmaker.org.cn/chainmaker/chainmaker-go.git/'
[root@ibt59 chainmaker]# git clone -b v2.3.1 --depth=1 https://git.chainmaker.org.cn/chainmaker/chainmaker-go.git
正克隆到 'chainmaker-go'...
Username for 'https://git.chainmaker.org.cn': Jie LI^Hi^H^H^H^H^C
[root@ibt59 chainmaker]# git clone -b v2.3.1 --depth=1 https://git.chainmaker.org.cn/chainmaker/chainmaker-go.git
正克隆到 'chainmaker-go'...
Username for 'https://git.chainmaker.org.cn': Jie Li
Password for 'https://Jie Li@git.chainmaker.org.cn':
fatal: Authentication failed for 'https://git.chainmaker.org.cn/chainmaker/chainmaker-go.git/'
[root@ibt59 chainmaker]# git clone -b v2.3.1 --depth=1 https://git.chainmaker.org.cn/chainmaker/chainmaker-go.git
正克隆到 'chainmaker-go'...
Username for 'https://git.chainmaker.org.cn': yitahutu79
Password for 'https://yitahutu79@git.chainmaker.org.cn':
remote: Enumerating objects: 1622, done.
remote: Counting objects: 100% (1622/1622), done.
remote: Compressing objects: 100% (1242/1242), done.
remote: Total 1622 (delta 379), reused 1106 (delta 219), pack-reused 0
接收对象中: 100% (1622/1622), 19.36 MiB | 2.01 MiB/s, done.
处理 delta 中: 100% (379/379), done.
Note: checking out 'cbff51b74fdbc75b4b54cd6c0804ff40e31dbfd5'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
[root@ibt59 chainmaker]# git clone -b v2.3.0 --depth=1 https://git.chainmaker.org.cn/chainmaker/chainmaker-cryptogen.git
正克隆到 'chainmaker-cryptogen'...
remote: Enumerating objects: 37, done.
remote: Counting objects: 100% (37/37), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 37 (delta 9), reused 32 (delta 7), pack-reused 0
Unpacking objects: 100% (37/37), done.
[root@ibt59 chainmaker]# ls
chainmaker-cryptogen chainmaker-go
[root@ibt59 chainmaker]# cd chainmaker-cryptogen
[root@ibt59 chainmaker-cryptogen]# make
go: chainmaker.org/chainmaker/common/v2@v2.3.0: Get "https://proxy.golang.org/chainmaker.org/chainmaker/common/v2/@v/v2.3.0.mod": dial tcp [2404:6800:4012:4::2011]:443: i/o timeout
go: downloading chainmaker.org/chainmaker/common/v2 v2.3.0
go: downloading github.com/pkg/errors v0.9.1
go: downloading github.com/spf13/viper v1.7.1
go: downloading github.com/spf13/cobra v1.1.1
go: downloading github.com/mr-tron/base58 v1.2.0
go: chainmaker.org/chainmaker/common/v2@v2.3.0: Get "https://proxy.golang.org/chainmaker.org/chainmaker/common/v2/@v/v2.3.0.mod": dial tcp [2404:6800:4012:4::2011]:443: i/o timeout
make: *** [chainmaker-cryptogen] 错误 1
[root@ibt59 chainmaker-cryptogen]#
[root@ibt59 chainmaker-cryptogen]#
[root@ibt59 chainmaker-cryptogen]#
[root@ibt59 chainmaker-cryptogen]#
[root@ibt59 chainmaker-cryptogen]#
[root@ibt59 chainmaker-cryptogen]#
[root@ibt59 chainmaker-cryptogen]#
[root@ibt59 chainmaker-cryptogen]# make
go: chainmaker.org/chainmaker/common/v2@v2.3.0: Get "https://proxy.golang.org/chainmaker.org/chainmaker/common/v2/@v/v2.3.0.mod": dial tcp [2404:6800:4012:4::2011]:443: i/o timeout
go: downloading chainmaker.org/chainmaker/common/v2 v2.3.0
go: downloading github.com/spf13/cobra v1.1.1
go: downloading github.com/pkg/errors v0.9.1
go: downloading github.com/spf13/viper v1.7.1
go: downloading github.com/mr-tron/base58 v1.2.0
go: chainmaker.org/chainmaker/common/v2@v2.3.0: Get "https://proxy.golang.org/chainmaker.org/chainmaker/common/v2/@v/v2.3.0.mod": dial tcp [2404:6800:4012:4::2011]:443: i/o timeout
make: *** [chainmaker-cryptogen] 错误 1
[root@ibt59 chainmaker-cryptogen]# go env -w GOPROXY=https://goproxy.cn
[root@ibt59 chainmaker-cryptogen]# make
go: downloading github.com/spf13/cobra v1.1.1
go: downloading chainmaker.org/chainmaker/common/v2 v2.3.0
go: downloading github.com/pkg/errors v0.9.1
go: downloading github.com/spf13/viper v1.7.1
go: downloading github.com/mr-tron/base58 v1.2.0
go: downloading github.com/inconshreveable/mousetrap v1.0.0
go: downloading github.com/spf13/pflag v1.0.5
go: downloading github.com/fsnotify/fsnotify v1.4.9
go: downloading github.com/hashicorp/hcl v1.0.0
go: downloading github.com/magiconair/properties v1.8.1
go: downloading github.com/mitchellh/mapstructure v1.1.2
go: downloading github.com/pelletier/go-toml v1.2.0
go: downloading github.com/spf13/afero v1.5.1
go: downloading github.com/spf13/cast v1.3.0
go: downloading github.com/spf13/jwalterweatherman v1.0.0
go: downloading github.com/subosito/gotenv v1.2.0
go: downloading gopkg.in/ini.v1 v1.51.0
go: downloading gopkg.in/yaml.v2 v2.4.0
go: downloading github.com/stretchr/testify v1.7.0
go: downloading github.com/miekg/pkcs11 v1.0.3
go: downloading github.com/tjfoc/gmsm v1.4.1
go: downloading golang.org/x/crypto v0.0.0-20210817164053-32db794688a5
go: downloading github.com/btcsuite/btcd v0.21.0-beta
go: downloading github.com/multiformats/go-multiaddr v0.3.1
go: downloading github.com/google/uuid v1.1.2
go: downloading golang.org/x/sys v0.0.0-20220222200937-f2425489ef4c
go: downloading github.com/BurntSushi/toml v0.3.1
go: downloading github.com/davecgh/go-spew v1.1.1
go: downloading golang.org/x/text v0.3.6
go: downloading github.com/smartystreets/goconvey v1.6.4
go: downloading gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b
go: downloading github.com/pmezard/go-difflib v1.0.0
go: downloading gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
go: downloading github.com/gogo/protobuf v1.3.2
go: downloading github.com/libp2p/go-libp2p-core v0.6.1
go: downloading github.com/libp2p/go-openssl v0.0.7
go: downloading github.com/minio/sha256-simd v0.1.1
go: downloading github.com/multiformats/go-multihash v0.0.14
go: downloading github.com/hashicorp/golang-lru v0.5.4
go: downloading github.com/ipfs/go-cid v0.0.7
go: downloading github.com/multiformats/go-varint v0.0.6
go: downloading github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e
go: downloading github.com/jtolds/gls v4.20.0+incompatible
go: downloading github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d
go: downloading github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572
go: downloading github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1
go: downloading github.com/spaolacci/murmur3 v1.1.0
go: downloading github.com/kr/text v0.1.0
go: downloading github.com/multiformats/go-multibase v0.0.3
go: downloading github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1
go: downloading github.com/multiformats/go-base36 v0.1.0
go: downloading github.com/multiformats/go-base32 v0.0.3
chainmaker-cryptogen/
chainmaker-cryptogen/bin/
chainmaker-cryptogen/bin/chainmaker-cryptogen
chainmaker-cryptogen/config/
chainmaker-cryptogen/config/crypto_config_template.yml
配置文件生成
将编译好的chainmaker-cryptogen,软连接到chainmaker-go/tools目录
#进入工具目录
$ cd chainmaker-go/tools
#软连接chainmaker-cryptogen到tools目录下
$ ln -s ../../chainmaker-cryptogen/ .
[root@ibt59 chainmaker-cryptogen]# ls
bin config LICENSE Makefile NOTICE README.md release src
[root@ibt59 chainmaker-cryptogen]# cd ..
[root@ibt59 chainmaker]# ls
chainmaker-cryptogen chainmaker-go
[root@ibt59 chainmaker]# cd chainmaker-go/tools
[root@ibt59 tools]# ls
cmc scanner simple-leveldb
[root@ibt59 tools]# ln -s ../../chainmaker-cryptogen/ .
[root@ibt59 tools]# ls
chainmaker-cryptogen cmc scanner simple-leveldb
PermissionedWithCert
原始的身份模式,即证书模式
进入chainmaker-go/scripts目录,执行prepare.sh脚本生成单链4节点集群配置,存于路径chainmaker-go/build中
prepare.sh脚本支持生成solo模式节点证书和配置,以及4/7/10/13/16节点的证书和配置
# 进入脚本目录
$ cd ../scripts
# 查看脚本帮助
$ ./prepare.sh -h
Usage:
prepare.sh node_cnt(1/4/7/10/13/16) chain_cnt(1-4) p2p_port(default:11301) rpc_port(default:12301)
eg1: prepare.sh 4 1
eg2: prepare.sh 4 1 11301 12301
# 生成单链4节点集群的证书和配置
$ ./prepare.sh 4 1
begin check params...
begin generate certs, cnt: 4
input consensus type (0-SOLO,1-TBFT(default),3-HOTSTUFF,4-RAFT,5-DPOS):
input log level (DEBUG|INFO(default)|WARN|ERROR):
enable docker vm (YES|NO(default))
begin generate node1 config...
begin generate node2 config...
begin generate node3 config...
begin generate node4 config...
# 查看生成好的节点证书和配置
$ tree -L 3 ../build/
../build/
├── config
│ ├── node1
│ │ ├── certs
│ │ ├── chainconfig
│ │ ├── chainmaker.yml
│ │ └── log.yml
│ ├── node2
│ │ ├── certs
│ │ ├── chainconfig
│ │ ├── chainmaker.yml
│ │ └── log.yml
│ ├── node3
│ │ ├── certs
│ │ ├── chainconfig
│ │ ├── chainmaker.yml
│ │ └── log.yml
│ └── node4
│ ├── certs
│ ├── chainconfig
│ ├── chainmaker.yml
│ └── log.yml
├── crypto-config
│ ├── wx-org1.chainmaker.org
│ │ ├── ca
│ │ ├── node
│ │ └── user
│ ├── wx-org2.chainmaker.org
│ │ ├── ca
│ │ ├── node
│ │ └── user
│ ├── wx-org3.chainmaker.org
│ │ ├── ca
│ │ ├── node
│ │ └── user
│ └── wx-org4.chainmaker.org
│ ├── ca
│ ├── node
│ └── user
└── crypto_config.yml
关于自动生成的端口说明:
通过prepare.sh脚本生成的配置,默认是在单台服务器上部署,故自动生成的端口号,是从一个起始端口号开始依次递增,可以通过命令行参数修改起始端口号。
主要有2个端口,p2p端口(用于节点互联)和rpc端口(用于客户端与节点通信),p2p起始端口为11301,rpc起始端口为12301。
如果生成4个节点的配置,p2p端口分别为:11301、11302、11303、11304,rpc端口分别为:12301、12302、12303、12304
[root@ibt59 tools]# cd ..
[root@ibt59 chainmaker-go]# ls
config config-pk config-sql DOCKER go.mod go.sum LICENSE main Makefile module monitor NOTICE README.md scripts test tools
[root@ibt59 chainmaker-go]# cd scripts
[root@ibt59 scripts]# ls
bin cluster_quick_start.sh docker prepare_pk.sh prepare.sh service ut_cover.sh
build_release.sh cluster_quick_stop.sh gomod_update.sh prepare_pwk.sh range_cluster_quick_start.sh test
[root@ibt59 scripts]# ./prepare.sh -h
Usage:
prepare.sh node_cnt(1/4/7/10/13/16) chain_cnt(1-4)
p2p_port(default:11301) rpc_port(default:12301)
vm_go_runtime_port(default:32351) vm_go_engine_port(default:22351)
-c consense-type: 1-TBFT,3-MAXBFT,4-RAFT
-l log-level: DEBUG,INFO,WARN,ERROR
-v docker-vm-enable: true,false
--vtp vm go transport protocol: tcp,uds
--vlog vm go log level: DEBUG,INFO,WARN,ERROR
-h show help
eg1: prepare.sh 4 1
eg2: prepare.sh 4 1 11301 12301
eg2: prepare.sh 4 1 11301 12301 32351 22351
eg2: prepare.sh 4 1 11301 12301 32351 22351 -c 1 -l INFO -v true --vtp=tcp --vlog=INFO
eg2: prepare.sh 4 1 11301 12301 32351 22351 -c 1 -l INFO -v false --vtp=tcp --vlog=INFO
[root@ibt59 scripts]# ./prepare.sh 4 1
begin check params...
param P2P_PORT 11301
param RPC_PORT 12301
param VM_GO_RUNTIME_PORT 32351
param VM_GO_ENGINE_PORT 22351
input consensus type (1-TBFT(default),3-MAXBFT,4-RAFT):
param CONSENSUS_TYPE 1
input log level (DEBUG|INFO(default)|WARN|ERROR):
param LOG_LEVEL INFO
enable vm go (YES|NO(default))
param ENABLE_VM_GO false
config node total 4
begin generate node1 config...
begin node1 chain1 cert config...
begin node1 trust config...
begin generate node2 config...
begin node2 chain1 cert config...
begin node2 trust config...
begin generate node3 config...
begin node3 chain1 cert config...
begin node3 trust config...
begin generate node4 config...
begin node4 chain1 cert config...
begin node4 trust config...
[root@ibt59 scripts]# tree -L 3 ../build/
bash: tree: 未找到命令...
[root@ibt59 scripts]# yum install tree
已加载插件:fastestmirror, langpacks, priorities
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* centos-sclo-rh: mirrors.bfsu.edu.cn
* centos-sclo-sclo: mirrors.bfsu.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 tree.x86_64.0.1.6.0-10.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
==============================================================================================================================================================================
Package 架构 版本 源 大小
==============================================================================================================================================================================
正在安装:
tree x86_64 1.6.0-10.el7 base 46 k
事务概要
==============================================================================================================================================================================
安装 1 软件包
总下载量:46 k
安装大小:87 k
Is this ok [y/d/N]: y
Downloading packages:
tree-1.6.0-10.el7.x86_64.rpm | 46 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : tree-1.6.0-10.el7.x86_64 1/1
验证中 : tree-1.6.0-10.el7.x86_64 1/1
已安装:
tree.x86_64 0:1.6.0-10.el7
完毕!
[root@ibt59 scripts]# tree -L 3 ../build/
../build/
├── config
│ ├── node1
│ │ ├── certs
│ │ ├── chainconfig
│ │ ├── chainmaker.yml
│ │ └── log.yml
│ ├── node2
│ │ ├── certs
│ │ ├── chainconfig
│ │ ├── chainmaker.yml
│ │ └── log.yml
│ ├── node3
│ │ ├── certs
│ │ ├── chainconfig
│ │ ├── chainmaker.yml
│ │ └── log.yml
│ └── node4
│ ├── certs
│ ├── chainconfig
│ ├── chainmaker.yml
│ └── log.yml
├── crypto-config
│ ├── wx-org1.chainmaker.org
│ │ ├── ca
│ │ ├── node
│ │ └── user
│ ├── wx-org2.chainmaker.org
│ │ ├── ca
│ │ ├── node
│ │ └── user
│ ├── wx-org3.chainmaker.org
│ │ ├── ca
│ │ ├── node
│ │ └── user
│ └── wx-org4.chainmaker.org
│ ├── ca
│ ├── node
│ └── user
├── crypto_config.yml
└── pkcs11_keys.yml
30 directories, 10 files
编译及安装包制作
生成证书(prepare.sh脚本)后执行build_release.sh脚本,将编译chainmaker-go模块,并打包生成安装,存于路径chainmaker-go/build/release中
$ ./build_release.sh
$ tree ../build/release/
../build/release/
├── chainmaker-v2.0.0-wx-org1.chainmaker.org-20210406194833-x86_64.tar.gz
├── chainmaker-v2.0.0-wx-org2.chainmaker.org-20210406194833-x86_64.tar.gz
├── chainmaker-v2.0.0-wx-org3.chainmaker.org-20210406194833-x86_64.tar.gz
├── chainmaker-v2.0.0-wx-org4.chainmaker.org-20210406194833-x86_64.tar.gz
└── crypto-config-20210406194833.tar.gz
启动节点集群
执行cluster_quick_start.sh脚本,会解压各个安装包,调用bin目录中的start.sh脚本,启动chainmaker节点
$ ./cluster_quick_start.sh normal
启动成功后,将*.tar.gz备份,以免下次启动再次解压缩时文件被覆盖
$ mkdir -p ../build/bak
$ mv ../build/release/*.tar.gz ../build/bak
若需要关闭集群,使用脚本:
$ ./cluster_quick_stop.sh
查看节点启动使用正常
查看进程是否存在
$ ps -ef|grep chainmaker | grep -v grep
25261 2146 4 19:55 pts/20 00:00:01 ./chainmaker start -c ../config/wx-org1.chainmaker.org/chainmaker.yml
25286 2146 4 19:55 pts/20 00:00:01 ./chainmaker start -c ../config/wx-org2.chainmaker.org/chainmaker.yml
25309 2146 4 19:55 pts/20 00:00:01 ./chainmaker start -c ../config/wx-org3.chainmaker.org/chainmaker.yml
25335 2146 4 19:55 pts/20 00:00:01 ./chainmaker start -c ../config/wx-org4.chainmaker.org/chainmaker.yml
查看端口是否监听
$ netstat -lptn | grep 1230
tcp6 0 0 :::12301 :::* LISTEN 25261/./chainmaker
tcp6 0 0 :::12302 :::* LISTEN 25286/./chainmaker
tcp6 0 0 :::12303 :::* LISTEN 25309/./chainmaker
tcp6 0 0 :::12304 :::* LISTEN 25335/./chainmaker
检查节点是否有ERROR日志
$ cat ../build/release/*/bin/panic.log
$ cat ../build/release/*/log/system.log
$ cat ../build/release/*/log/system.log |grep "ERROR|put block|all necessary"
//若看到all necessary peers connected则表示节点已经准备就绪。
使用CMC命令行工具部署、调用合约
为了验证所搭建的链功能是否正常,可以通过cmc命令行工具来进行验证。
编译&配置
cmc工具的编译&运行方式如下:
创建工作目录 $WORKDIR 比如 ~/chainmaker 启动测试链 在工作目录下 使用脚本搭建
# 编译cmc
$ cd $WORKDIR/chainmaker-go/tools/cmc
$ go build
# 配置测试数据
$ cp -rf ../../build/crypto-config ../../tools/cmc/testdata/ # 使用chainmaker-cryptogen生成的测试链的证书
# 查看help
$ cd ../../chainmaker-go/tools/cmc
$ ./cmc --help
[root@ibt59 scripts]# cd ..
[root@ibt59 chainmaker-go]# cd tools
[root@ibt59 tools]# ls
chainmaker-cryptogen cmc scanner simple-leveldb
[root@ibt59 tools]# cd cmc
[root@ibt59 cmc]# ls
address bulletproofs client gas key main.go parallel pubkey README.md testdata types version
archive cert console hibe loop-transfer.sh paillier payload query tee txpool util
[root@ibt59 cmc]# go build
[root@ibt59 cmc]# cp -rf ../../build/crypto-config ../../tools/cmc/testdata/
[root@ibt59 cmc]# cd ../../chainmaker-go/tools/cmc
bash: cd: ../../chainmaker-go/tools/cmc: 没有那个文件或目录
[root@ibt59 cmc]# ./cmc --help
Command line interface for interacting with ChainMaker daemon.
For detailed logs, please see ./sdk.log
Usage:
cmc [command]
Available Commands:
address address parse command
archive archive blockchain data
bulletproofs ChainMaker bulletproofs command
cert ChainMaker cert command
client client command
console Open a console to interact with ChainMaker daemon
gas gas management
help Help about any command
hibe ChainMaker hibe command
key ChainMaker key command
paillier ChainMaker paillier command
parallel Parallel
payload Payload command
pubkey pk management command.
query query on-chain blockchain data
tee trust execute environment command.
txpool txpool command
version Show ChainMaker Client version
Flags:
-h, --help help for cmc
Use "cmc [command] --help" for more information about a command.
部署示例合约
创建wasm合约
$ ./cmc client contract user create
--contract-name=fact
--runtime-type=WASMER
--byte-code-path=./testdata/claim-wasm-demo/rust-fact-2.0.0.wasm
--version=1.0
--sdk-conf-path=./testdata/sdk_config.yml
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt
--sync-result=true
--params="{}"
[root@ibt59 cmc]# ./cmc client contract user create
> --contract-name=fact
> --runtime-type=WASMER
> --byte-code-path=./testdata/claim-wasm-demo/rust-fact-2.0.0.wasm
> --version=1.0
> --sdk-conf-path=./testdata/sdk_config.yml
> --admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key
> --admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt
> --sync-result=true
> --params="{}"
{
"contract_result": {
"gas_used": 1376,
"result": {
"address": "c867f29fbc90b619206c7aef0ba4a2efb30ab9f6",
"creator": {
"member_id": "client1.sign.wx-org1.chainmaker.org",
"member_info": "3SJj2iW53n1cpQVL5O/RcjzSFOYMWQ0dsmUnyKiY4Jw=",
"member_type": 1,
"org_id": "wx-org1.chainmaker.org",
"role": "CLIENT",
"uid": "995de669319d572b58fedf0c218cd632bcb431a2363a5f24ae909976fc50e201"
},
"name": "fact",
"runtime_type": 2,
"version": "1.0"
}
},
"tx_block_height": 2,
"tx_id": "1756fe3a3c90f4deca4ca0186fd0fd36b5bdcf3fc0f447269dc0c23158755aa8",
"tx_timestamp": 1681811036
}
调用wasm合约
$ ./cmc client contract user invoke
--contract-name=fact
--method=save
--sdk-conf-path=./testdata/sdk_config.yml
--params="{"file_name":"name007","file_hash":"ab3456df5799b87c77e7f88","time":"6543234"}"
--sync-result=true
[root@ibt59 cmc]# ./cmc client contract user invoke
> --contract-name=fact
> --method=save
> --sdk-conf-path=./testdata/sdk_config.yml
> --params="{"file_name":"name007","file_hash":"ab3456df5799b87c77e7f88","time":"6543234"}"
> --sync-result=true
{
"contract_result": {
"contract_event": [
{
"contract_name": "fact",
"contract_version": "1.0",
"event_data": [
"ab3456df5799b87c77e7f88",
"name007",
"6543234"
],
"topic": "topic_vx",
"tx_id": "1756fe3e20b0ea74ca9e07f70dcebe3afed6aa85b17742e5b3998457d41a018b"
}
],
"gas_used": 238411
},
"tx_block_height": 3,
"tx_id": "1756fe3e20b0ea74ca9e07f70dcebe3afed6aa85b17742e5b3998457d41a018b",
"tx_timestamp": 1681811053
}
查询合约
$ ./cmc client contract user get
--contract-name=fact
--method=find_by_file_hash
--sdk-conf-path=./testdata/sdk_config.yml
--params="{"file_hash":"ab3456df5799b87c77e7f88"}"
[root@ibt59 cmc]# ./cmc client contract user get
> --contract-name=fact
> --method=find_by_file_hash
> --sdk-conf-path=./testdata/sdk_config.yml
> --params="{"file_hash":"ab3456df5799b87c77e7f88"}"
{
"contract_result": {
"gas_used": 368985,
"result": "eyJmaWxlX2hhc2giOiJhYjM0NTZkZjU3OTliODdjNzdlN2Y4OCIsImZpbGVfbmFtZSI6Im5hbWUwMDciLCJ0aW1lIjo2NTQzMjM0fQ=="
},
"message": "SUCCESS",
"tx_id": "1756fe493b198313cac64d0191af283ff5cf2cbe09f946be9cc8a5ae1bb65abb"
}
长安链部署目录说明
此目录为使用: chainmaker-go/scripts/cluster_quick_start.sh启动后的的目录结构说明。
taifu@chainmaker:chainmaker-go/build$ tree
.
├── backup # 下次重新prepare.sh时,此次的备份。
├── config # 使用 prepare.sh 生成的节点配置信息
│ ├── node1 # 节点1-4
│ ├── node2
│ ├── node3
│ └── node4
├── crypto-config # 使用 prepare.sh 生成的组织证书信息
│ ├── wx-org1.chainmaker.org # 组织名称1-4
│ │ ├── ca # 该组织的根证书 ca
│ │ ├── node # 由该组织的根证书签发的节点证书 common/consensus
│ │ └── user # 由该组织的根证书签发的用户证书 admin/client/light
│ ├── wx-org2.chainmaker.org
│ │ ├── ca
│ │ ├── node
│ │ └── user
│ ├── wx-org3.chainmaker.org
│ │ ├── ca
│ │ ├── node
│ │ └── user
│ └── wx-org4.chainmaker.org
│ ├── ca
│ ├── node
│ └── user
├── crypto_config.yml # 使用 prepare.sh 生成以上证书的配置文件(扩展组织、证书可使用到)
├── pkcs11_keys.yml # 使用 prepare.sh 生成的硬件加密机相关配置
└── release # 使用 build_release.sh 生成的打包好的部署文件夹
├── crypto-config-20220720141039.tar.gz # 证书集 即上面的crypto-config文件夹的压缩包
├── chainmaker-v2.3.0-wx-org2.chainmaker.org # 使用 cluster_quick_start.sh 启动链后,解压缩后的部署文件
│ ├── bin # 操作管理脚本目录
│ ├── config # 配置文件目录
│ ├── data # 数据目录
│ ├── lib # 依赖目录
│ └── log # 日志目录
├── chainmaker-v2.3.0-wx-org2.chainmaker.org-20220720141039-x86_64.tar.gz # 使用 build_release.sh 生成的打包好的部署文件
├── chainmaker-v2.3.0-wx-org3.chainmaker.org
│ ├── bin
│ ├── config
│ ├── data
│ ├── lib
│ └── log
├── chainmaker-v2.3.0-wx-org3.chainmaker.org-20220720141039-x86_64.tar.gz
├── chainmaker-v2.3.0-wx-org4.chainmaker.org
│ ├── bin
│ ├── config
│ ├── data
│ ├── lib
│ └── log
│── chainmaker-v2.3.0-wx-org4.chainmaker.org-20220720141039-x86_64.tar.gz
|
|
| # 以下为部署节点文件详情
├── chainmaker-v2.3.0-wx-org1.chainmaker.org # 解压缩后的部署文件
│ ├── bin # 操作管理脚本目录
│ │ ├── chainmaker # 二进制文件
│ │ ├── chainmaker.service # 基于 linux 系统的 systemd 自拉起服务
│ │ ├── docker-vm-standalone-start.sh # 独立启动 docker 虚拟机引擎脚本
│ │ ├── docker-vm-standalone-stop.sh # 独立停止 docker 虚拟机引擎脚本
│ │ ├── init.sh # 基于 linux 系统的 systemd 自拉起服务部署脚本
│ │ ├── panic.log # 异常日志输出及控制台输出日志文件
│ │ ├── restart.sh # 重启节点脚本
│ │ ├── run.sh # 基于 linux 系统的 systemd 自拉起服务管理脚本
│ │ ├── start.sh # 启动节点脚本
│ │ └── stop.sh # 停止节点脚本
│ ├── config # 配置文件目录
│ │ └── wx-org1.chainmaker.org
│ │ ├── certs # 证书
│ │ │ ├── ca
│ │ │ │ ├── wx-org1.chainmaker.org
│ │ │ │ │ └── ca.crt
│ │ │ ├── node
│ │ │ │ |── common1 # 同步节点证书(通过chainmaker.yml配置为节点证书,表示只可同步)
│ │ │ │ └── consensus1 # 共识节点证书(通过chainmaker.yml配置为节点证书不代表就可以参与共识,共识管理是在链配置bc.yml中)
│ │ │ │ ├── consensus1.nodeid # xxx.sign.crt生成的节点id
│ │ │ │ ├── consensus1.sign.crt # 签名证书
│ │ │ │ ├── consensus1.sign.key # 签名key
│ │ │ │ ├── consensus1.tls.crt # tls连接证书
│ │ │ │ └── consensus1.tls.key # tls连接key
│ │ │ └── user # 用户证书
│ │ │ ├── admin1 # 管理员
│ │ │ │ ├── admin1.sign.crt
│ │ │ │ ├── admin1.sign.key
│ │ │ │ ├── admin1.tls.crt
│ │ │ │ └── admin1.tls.key
│ │ │ ├── client1 # 普通客户端
│ │ │ │ ├── client1.addr
│ │ │ │ ├── client1.sign.crt
│ │ │ │ ├── client1.sign.key
│ │ │ │ ├── client1.tls.crt
│ │ │ │ └── client1.tls.key
│ │ │ └── light1 # 轻节点,只可同步当前组织的数据(区块、交易)
│ │ │ ├── light1.sign.crt
│ │ │ ├── light1.sign.key
│ │ │ ├── light1.tls.crt
│ │ │ └── light1.tls.key
│ │ ├── chainconfig # 链配置
│ │ │ │── bc1.yml # 第一条链配置
│ │ │ └── bc2.yml # 第二条链配置
│ │ ├── chainmaker.yml # 节点配置
│ │ └── log.yml # 日志配置
│ ├── data # 数据目录
│ │ └── wx-org1.chainmaker.org
│ │ ├── block # 区块数据/索引(必须)
│ │ │ └── chain1
│ │ │ └── store_block
│ │ │ ├── 000001.log
│ │ │ ├── CURRENT
│ │ │ ├── LOCK
│ │ │ ├── LOG
│ │ │ └── MANIFEST-000000
│ │ ├── history # 历史数据
│ │ │ └── chain1
│ │ │ └── store_history
│ │ │ ├── 000001.log
│ │ │ ├── CURRENT
│ │ │ ├── LOCK
│ │ │ ├── LOG
│ │ │ └── MANIFEST-000000
│ │ ├── ledgerData1 # 中间数据(必须)
│ │ │ └── chain1 # 链ID
│ │ │ ├── bfdb # 区块实际存储数据(文件存储方式)
│ │ │ │ └── 00000000000000000001.fdb.END
│ │ │ ├── localdb # 中间状态数据
│ │ │ │ ├── 000001.log
│ │ │ │ ├── CURRENT
│ │ │ │ ├── LOCK
│ │ │ │ ├── LOG
│ │ │ │ └── MANIFEST-000000
│ │ │ └── wal_QmSQeH1SV65YkafQG6y7uqabF4Xwzn5VoXniFBXrzy4Eqn # 异常恢复临时数据
│ │ │ └── 00001_1.wal
│ │ ├── result # 结果集数据
│ │ │ └── chain1
│ │ │ └── store_result
│ │ │ ├── 000001.log
│ │ │ ├── CURRENT
│ │ │ ├── LOCK
│ │ │ ├── LOG
│ │ │ └── MANIFEST-000000
│ │ └── state # 状态数据(必须)
│ │ └── chain1
│ │ └── store_state
│ │ ├── 000001.log
│ │ ├── CURRENT
│ │ ├── LOCK
│ │ ├── LOG
│ │ └── MANIFEST-000000
│ ├── lib # 依赖目录
│ │ ├── libwasmer.so # wasmer(rust)运行引擎
│ │ └── wxdec # wxvm(c++)运行引擎
│ └── log # 日志目录
│ ├── system.log # 当前1小时的日志
│ └── system.log.2022072014 # 历史日志
└── chainmaker-v2.3.0-wx-org1.chainmaker.org-20220720141039-x86_64.tar.gz # 使用 build_release.sh 生成的打包好的部署文件
参考资料
长安链官方文档:https://docs.chainmaker.org.cn/quickstart/%E9%80%9A%E8%BF%87%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%BD%93%E9%AA%8C%E9%93%BE.html