通过命令行体验长安链

news2024/11/27 0:17:40

通过命令行体验长安链

  • 1 、概述
  • 2、环境依赖
    • 2.1、硬件依赖
    • 2.2、软件依赖
    • 2.3、git安装
    • 2.4、golang安装
    • 2.5、gcc
  • 3、环境搭建
    • 3.1、源码下载
    • 3.2、 源码编译
    • 3.3、编译及安装包制作
    • 3.4、启动节点集群
    • 3.5、查看节点启动使用正常

官方文档
https://docs.chainmaker.org.cn/v2.3.1/html/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#

本文是按照官方文档操作,做一个演示记录

1 、概述

通过本文你可以通过命令行和cmc工具搭建长安链多节点集群和部署智能合约,完成长安链的初步体验。

通过源码搭建长安链并且上链查数据需要以下步骤,本文将一一演示

  • 下载长安链及证书管理工具源码

  • 编译源码

  • 生成节点证书

  • 编译及安装包制作

  • 启动节点集群

  • 查看节点状态

  • 使用CMC工具安装、调用、查询一个合约

2、环境依赖

2.1、硬件依赖

这个大家参考就行了,如果配置不够,也就是卡点,问题不大,加油~

配置最低配置推荐配置
CPU1.5GHz2.4GHz
内存8GB16GB
核心4核8核
带宽2Mb10Mb

2.2、软件依赖

当前文档在centos7操作下完成,以下为本次演示所需的依赖 软件列表如下:

名称版本描述是否必须
git/源码管理
golang1.16-1.19编译环境(需修改国内代理)
gcc7.3+编译环境依赖
glibc2.18智能合约执行环境依赖
tmux/默认快速启动命令依赖
wasmer运行时库 libwasmer_runtime_c_api.so/https://git.chainmaker.org.cn/chainmaker/vm-wasmer/-/tree/master/wasmer-go/packaged/lib 目录下,找到对应链分支的库,将该库路径添加至系统PATH环境变量下启动脚本默认包含,单独启动需加上如下配置:
cd deployPath/lib
cp xxx/main/libwasmer_runtime_c_api.so libwasmer.so
export LD_LIBRARY_PATH=deployPath/lib:$LD_LIBRARY_PATH

2.3、git安装

# 使用yum命令安装
yum install -y git

# 验证查看版本号
git --version

在这里插入图片描述

2.4、golang安装

推荐:版本为1.16-1.19

教程请移步: Linux 下安装 Golang

2.5、gcc

  • 检查 gcc 版本

    gcc --version
    

    在这里插入图片描述

  • 显示结果若 < 7.3,则执行下面步骤升级

    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 文件中。

    vim ~/.bash_profile
    

    在这里插入图片描述

  • 如果没安装,执行命令安装即可

    yum install -y gcc
    

3、环境搭建

下面将介绍使用脚本搭建搭建环境。

适用于Linux、MacOS

3.1、源码下载

从长安链官网下载源码:https://git.chainmaker.org.cn/chainmaker/chainmaker-go

当前为私有仓库,需要先进行账号注册

我这里源码统一放在: /data目录下

下载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

在这里插入图片描述

3.2、 源码编译

  • 编译证书生成工具

    $ cd chainmaker-cryptogen
    $ make
    

    结果会生成 bin 和 release 目录
    在这里插入图片描述

  • 配置文件生成
    将编译好的chainmaker-cryptogen,软连接到chainmaker-go/tools目录

    # 进入工具目录
    $ cd chainmaker-go/tools
    
    # 软连接chainmaker-cryptogen到tools目录下
    $ ln -s ../../chainmaker-cryptogen/ .
    

    在这里插入图片描述
    2.1版本之后,ChainMaker支持多种身份模式,由于不同身份模式下,配置文件的目录结构和内容差异较大,在此我们选择身份模式PermissionedWithCert(详情见身份权限管理)作为示例。

  • 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

    如果是在多机部署,希望生成固定的端口号,请参考:【多机部署】

3.3、编译及安装包制作

生成证书(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

3.4、启动节点集群

  • 执行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

3.5、查看节点启动使用正常

  • 查看进程是否存在

    $ ps -ef|grep chainmaker | grep -v grep
    

    在这里插入图片描述

  • 查看端口是否监听

    $ netstat -lptn | grep 1230
    

    在这里插入图片描述

  • 检查节点是否有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则表示节点已经准备就绪。
    

    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/533709.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亿信BI专有名词讲解

数据库连接池主题域/主题集/主题表维/ 维表报表模板组件容器布局计算参数分析区浮动门户EasyOlap领导驾驶舱(Dashboard) 1.数据库连接池 连接池就是存储资源和数据的地方。BI一定会有一个缺省连接池&#xff0c;BI服务器的系统表都是在缺省连接池下面&#xff0c;初次部署BI服…

30.SSM框架整合

目录 一、SSM框架整合。 &#xff08;1&#xff09;核心笔记。 &#xff08;1.1&#xff09;Spring、SpringMVC、MyBatis三者的配置。 &#xff08;1.2&#xff09;请求字符集格式与响应字符集格式。 &#xff08;2&#xff09;原始方式整合。 &#xff08;2.1&#xff…

路径规划算法:基于郊狼算法的路径规划算法- 附代码

路径规划算法&#xff1a;基于郊狼优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于郊狼优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法郊狼…

带你实现初阶扫雷小游戏—【C语言】

目录 1. 扫雷游戏实现的思路 注意点1 注意点2 2. 函数实现扫雷功能 2.1 初始化棋盘 2.2 显示棋盘 2.3 设置雷 2.4 排查雷 2.5 返回附近雷的个数 3.源码 3.1 game.h 3.2 game.c 3.3 test.c 1. 扫雷游戏实现的思路 注意点1 我们这里拿9*9的棋盘&#xff08;其中…

Java的基操,基操(二)

&#x1f525;常量(Constant)&#x1f525;基本数据类型(primitive data type)&#x1f525;整型&#x1f525;浮点型(Floating Point Number)&#x1f525;字符型&#x1f525;布尔型(boolean)&#x1f525;运算符(operator)&#x1f525;逻辑运算符&#x1f525;数据类型的转…

【C++初阶】:动态管理

动态管理 一.new和delete&#xff08;一般使用&#xff09;二.operator new与operator delete函数&#xff08;底层&#xff09;三.new和delete的实现原理四.定位new&#xff08;placement-new&#xff09;五.malloc和new的区别 前置知识&#xff08;堆区&#xff09;&#xff…

什么样的项目适合UI自动化测试?

我们在考虑做自动化测试之前&#xff0c;一定要先分析一下&#xff0c;这个项目到底适不适合做自动化测试&#xff0c;避免在不太适合自动化测试的项目中痛苦挣扎&#xff0c;既浪费了大量的人力和时间&#xff0c;又收效甚微。下面简单列举一下评估一下项目是否适合做自动化的…

【JavaEE初阶】网络编程

文章目录 网络编程基础网络资源网络编程网络编程中的基本概念发送端和接收端请求和响应客户端和服务端常见的客户端服务端模型 Socket套接字了解UDP和TCPUDP数据报套接字编程DatagramSocket APIDatagramPacket APIInetSocketAddress APIUDP版本的客户端服务器程序 TCP流套接字编…

try catch finally 里面有return的执行顺序

目录 实例结论 实例 1.try和catch中有return时&#xff0c;finally里面的语句会被执行吗 我们可以来分别看看 (1)执行try中的return时 public class Solution {public static int show() {try {return 1;}finally{System.out.println("finally模块被执行");}}publi…

第7章链接:如何动态连接共享库、从应用程序中加载和链接共享库

文章目录 7.10 动态链接共享库静态库的缺点何为共享库共享库的"共享"的含义动态链接过程 7.11 从应用程序中加载和链接共享库运行时动态加载和连接共享库的接口 dlopen函数 dlsym函数 dlclose函数 dlerror动态加载和链接共享库的应用程序示例 7.10 动态链接共享库 静…

强化学习路线规划之深度强化学习代码

虽然说很多代码都有问题&#xff0c;但是不管它们&#xff0c;我不是为了去debug&#xff0c;紧盯住自己的目标&#xff0c;目标是整理出一条通常的强化学习之路&#xff0c;让自己以及看到这些博客的大家在学习的时候能够少走一些弯路。所以从q-learning和Sarsa开始&#xff0…

buuctf9

目录 web [ZJCTF 2019]NiZhuanSiWei misc [BJDCTF2020]认真你就输了 刷新过的图片 crypto 篱笆墙的影子 RSA web [ZJCTF 2019]NiZhuanSiWei 1.启动环境 <?php $text $_GET["text"]; $file $_GET["file"]; $password $_GET["password…

UE4与MATLAB联合仿真环境配置中遇到的问题及解决办法

UE4与MATLAB联合仿真环境配置中遇到的问题及解决办法 目录 UE4与MATLAB联合仿真环境配置中遇到的问题及解决办法前言问题及解决办法1. The following modules are missing or built with a different engine version: MathWorksAerospace MathWorksSimulation MathWorksUAV Eng…

IMX6Ull内核移植详细过程讲解

文章目录 一、安装相应依赖包二、下载相应的内核版本库&#xff08;1&#xff09;讲解官网内核分支&#xff08;2&#xff09;下载内核版本库&#xff08;3&#xff09;内核目录文件讲解 三、开始内核移植过程&#xff08;1&#xff09;步骤一、修改默认架构和默认交叉编译器&a…

modbus协议与nodejs modbus-serial实现

nodejs可通过modbus-serial库来实现modbus协议 npm install modbus-srial 安装完后在examples目录下有例子说明如何使用&#xff0c;本文主要讲述作为客户端的使用方式。 polling_RTU是使用485串口来实现modbus通信&#xff0c; polling_TCP和 polling_UDP则使用TCP/UDP来实现…

HBuilderX使用

HBuilderX使用&#xff08;Vue前后端分离&#xff09; 概述&#xff1a;DCloud开发者后台 DAccount Service 1、官网下载开发工具&#xff1a;HBuilderX-高效极客技巧 注意&#xff1a;安装目录路径中不能出现中文特殊字符&#xff0c;否则会造成项目无法编译。比如C:/Progr…

learn_C_deep_10 深刻认识C语言重点操作符

目录 注释符号 其他注释方法 注释建议 接续符和转义符 在续行符\之前或者之后带上空格&#xff0c;行不行&#xff1f; \n&#xff1a;换行符与\r&#xff1a;回车符之间的区别 两个小程序(旋转光标、倒计时) 单引号和双引号 ​编辑abcd这样写有问题吗? 特殊情况 为…

ThinkPHP6表单上传的数据获取的四种方式【请求对象调用,静态调用,助手函数调用,原生的get|post】

ThinkPHP6表单上传的数据获取 首先一个form表单中的Input控件需要存在对应的name值&#xff0c;然后method为post|get,action为要提交到的控制器的哪个方法 例如(本文的前端视图代码均为下面的html)&#xff1a; <form method"post" action"/index.php/lo…

Hard Patches Mining for Masked Image Modeling

摘要 蒙面图像建模&#xff08;MIM&#xff09;因其在学习可伸缩视觉表示方面的潜力而引起了广泛的研究关注。在典型的方法中&#xff0c;模型通常侧重于预测掩码补丁的特定内容&#xff0c;并且它们的性能与预定义的掩码策略高度相关。直观地说&#xff0c;这个过程可以被看作…

应用架构总结

架构目标 高可用性 整体系统可用性最低99.9%&#xff0c;目标99.99%。全年故障时间整个系统不超过500分钟&#xff0c;单个系统故障不超过50分钟。 高可扩展性 系统架构简单清晰&#xff0c;应用系统间耦合低&#xff0c;容易水平扩展&#xff0c;业务功能增改方便快捷。 低成…