首页 > 其他分享 >命令行和cmc工具搭建长安链多节点集群和部署智能合约

命令行和cmc工具搭建长安链多节点集群和部署智能合约

时间:2023-04-22 19:40:27浏览次数:42  
标签:链多 x86 cmc el7 go org chainmaker root 节点



这里写目录标题

  • 配置环境
  • git
  • golang
  • gcc
  • 环境搭建
  • 源码下载
  • 源码编译
  • 配置文件生成
  • PermissionedWithCert
  • 编译及安装包制作
  • 启动节点集群
  • 查看节点启动使用正常
  • 使用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/

这是我下载的版本

命令行和cmc工具搭建长安链多节点集群和部署智能合约_linux


找到之前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) <[email protected]>"
 指纹       : 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://[email protected]': 
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://[email protected]': 
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 [email protected]': 
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://[email protected]': 
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/[email protected]: 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/[email protected]: 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/[email protected]: 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/[email protected]: 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


标签:链多,x86,cmc,el7,go,org,chainmaker,root,节点
From: https://blog.51cto.com/u_15923796/6215459

相关文章

  • mysql8主从节点搭建
    设置主从前先创建作为同步数据的用户,可直接在Navicat中创建并对需同步的库授权。注意创建用户的密码插件plugin要保持一致,MySQL8.0设为mysql_native_password,此项可在Navicat直接设置。以192.168.1.1从和192.168.1.2主1、在主节点修改配置文件/etc/my.cnf添加 server......
  • 动力节点⑤章 vuex——vue视频笔记
    5Vuex5.1vuex概述vuex是实现数据集中式状态管理的插件。数据由vuex统一管理。其它组件都去使用vuex中的数据。只要有其中一个组件去修改了这个共享的数据,其它组件会同步更新。一定要注意:全局事件总线和vuex插件的区别:全局事件总线关注点:组件和组件之间数据如何传递,一个绑定$......
  • js递归查询id所对应的节点,查询该节点的父节点,查询该节点的所有子节点
    在工作项目中经常遇到树形结构的数据,而往往我们需要用递归来实现,下面就给大家列举常用的递归操作。   lettreeList=[{id:'1',name:'父一',children:[{id:'1-1',......
  • k8s将pod指定到某个节点
    1、查看节点标签kubectlgetnodes--show-labels2、给节点打标签kubectllabelnode10.64.39.219node=bmdkubectllabelnode10.64.39.186node=bmd3、指定程序的运行pod[root@apiserverk8s]#catselec.ymlapiVersion:extensions/v1beta1kind:Deployment......
  • 单机单节点Flink的部署
    一、Flink的下载和安装1、Flink的下载官方下载网址:https://archive.apache.org/dist/flink/这里选择1.15.2这个版本 2、把Flink上传到主机上把下载好的文件上传到/opt/software上3、解压Flink安装包把Flink解压到/opt/module中,要提前创建module文件夹tar-zxvfflink-......
  • leetcode-876链表的中间节点
    找链表的中间节点思路心得当不知道while的终止条件时,可以先写while(true),然后在循环体中写终止条件,这样写的好处是可以暂时不考虑终止条件,使思路更清晰;坏处是这样有时候会使循环体的内容很混乱要注意分类!本题中把情况分为节点个数是奇数和偶数去分析,最终找到统一的......
  • JavaScript的节点操作
    目录节点概述节点层级添删等节点操作使用节点操作的示例节点概述一般来说,节点至少拥有nodeType,nodeName,nodeValue这三个基本属性1.元素节点的nodeType为12.属性节点的nodeType为23.文本节点的nodeType为3(包括换行,文字,空格)节点层级1.父节点:node.parentNode(1)paren......
  • Linux设备节点创建方式的演变历史
    引子  遵从"Everythingisafile"的思想,在Linux下想要操作设备的话,是需要通过一类叫做设备节点(devicenode)的特殊文件。设备节点通常位于/dev这个目录下,但是位于其它目录也是可以的。只要翻开一本介绍Linux驱动的书,或者在网上搜索相关的文章,很大概率上会教你在写好驱动代码后......
  • CF 580C- Kefa and Park, 1500 / 树的遍历 / 根节点到叶节点的路径上某性质的点不能
    CF580C-KefaandPark这个1500的题这么水?这还不如1200、1300的思维题我开始没考虑周全,这题给出的连边没有讲都是从父节点连向子节点,所有要建双边。#include<iostream>#include<cstring>usingnamespacestd;constintN=1e5+10,M=N*2;typedeflonglon......
  • 每个节点上的cadvisor采集数据后通过aggregate api将转换交给 metric-server
    metric-server主要用来通过aggregateapi向其它组件(kube-scheduler、HorizontalPodAutoscaler、Kubernetes集群客户端等)提供集群中的pod和node的cpu和memory的监控指标,弹性伸缩中的podautoscaler就是通过调用这个接口来查看pod的当前资源使用量来进行pod的扩缩容的。需要注意的是......