3. 大规模灵活共识机制使用文档

开源代码地址:https://git.chainweaver.org.cn/stcsm/flextender

3.1. 概述

本使用文档旨在帮助用户快速了解并使用“大规模灵活共识机制”相关能力,包括环境配置,代码编译,节点启动,合约部署等。

3.2. 环境依赖

3.2.1. 硬件要求

配置 最低配置 推荐配置
内存 8GB 16GB
核心 4 核 8 核

3.2.2. 软件依赖

名称 版本 描述 是否必须
docker 24+ 运行go合约的容器
7z / 代码解压缩的依赖
jq / 解析、过滤、提取 JSON 数据

3.3. 运行环境安装

在每个节点上依次执行以下命令,完成基础运行环境的安装。

sudo apt-get update

# 安装 jq
sudo apt-get install -y jq

# 安装 7zip
sudo apt-get install -y p7zip-full p7zip-rar

# 安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 启动 Docker 服务
sudo service docker start

3.4. 节点IP与noise网络初始化配置

进入目录

cd /home/ubuntu/flex-newscripts/chainmaker-go/scripts/multi

按照下列格式将共识节点和relayer节点的IP填入nodes.json和relayers.json

img.png

进入目录

cd /home/ubuntu/lib/getkey

运行

go run noise.go 1 

来获取noise网络配置

img.png

3.5. 启动长安链节点

进入目录

cd /home/ubuntu/flex-newscripts/chainmaker-go/scripts

准备配置文件并编译 ChainMaker,然后将其部署到实例上,运行区块链网络。依次执行:

sudo ./remote_cgroup.sh
./remote_deploy_largescale.sh -p
./remote_deploy_largescale.sh -d
./remote_deploy_largescale.sh -a start
./deploy_relayer.sh

img.png

随后开启coordinator 用于启动共识层

cd  /home/ubuntu/co
go run main.go

img.png

3.6. 部署token合约并测试

1.部署合约

ssh -i /home/ubuntu/.ssh/aws ubuntu@127.0.0.1 \
  "cd /home/ubuntu/deploy-2025-10-29/chainmaker-v2.3.6-wx-org1.chainmaker.org/bin/cmc && \
  ./cmc client contract user create \
    --contract-name=Token1 \
    --version=1.0 \
    --sync-result=true \
    --timeout=60 \
    --sdk-conf-path=./sdk_config_remote.yml \
    --byte-code-path=./Token.7z \
    --runtime-type=DOCKER_GO \
    --admin-crt-file-paths=../../config/wx-org1.chainmaker.org/certs/user/admin1/admin1.sign.crt \
    --admin-key-file-paths=../../config/wx-org1.chainmaker.org/certs/user/admin1/admin1.sign.key \
    --params='{\"name\":\"token1\", \"symbol\":\"token1\", \"decimals\":\"8\"}'" \
  2>&1 | tee deploy.log

(将IP替换为第一个节点的IP ,将2025-10-29替换为当前日期)

img.png

2.获取合约admin地址

ssh -i /home/ubuntu/.ssh/aws ubuntu@127.0.0.1 \
  "cd /home/ubuntu/deploy-2025-10-29/chainmaker-v2.3.6-wx-org1.chainmaker.org/bin/cmc && \
  ./cmc client contract user get \
    --contract-name=Token1 \
    --method=Admin \
    --sdk-conf-path=./sdk_config_remote.yml \
    --params='{}'" \
  2>&1 | tee admin.log

img.png

调用base64解码工具进行解码,如下图所示

img.png

3.给admin地址mint token

ssh -i /home/ubuntu/.ssh/aws ubuntu@127.0.0.1 \
  "cd /home/ubuntu/deploy-2025-10-29/chainmaker-v2.3.6-wx-org1.chainmaker.org/bin/cmc && \
  ./cmc client contract user invoke \
    --contract-name=Token1 \
    --method=Mint \
    --sync-result=true \
    --sdk-conf-path=./sdk_config_remote.yml \
    --params='{\"account\":\"2e4003afd7b929c12fb59a7d365a48067f46556f\", \"amount\":\"1000000000000\"}'" \
  2>&1 | tee mint.log

img.png

4.调用transfer交易

ssh -i /home/ubuntu/.ssh/aws ubuntu@127.0.0.1 \
  "cd /home/ubuntu/deploy-2025-10-29/chainmaker-v2.3.6-wx-org1.chainmaker.org/bin/cmc && \
  ./cmc client contract user invoke \
    --contract-name=Token1 \
    --method=Transfer \
    --sync-result=false \
    --sdk-conf-path=./sdk_config_remote.yml \
    --params='{\"to\":\"0a7369a1a6d1b0663b1c126a44c5accf53cf58e6\", \"amount\":\"1\"}'" \
  2>&1 | tee transfer.log

img.png

3.7. 部署存证合约并测试

  1. 将存证合约文件scp到测试机器(第一台)

ssh -i /home/ubuntu/.ssh/aws ubuntu@127.0.0.1 "mkdir -p /home/ubuntu/contract" && \
scp -i /home/ubuntu/.ssh/aws \
/home/ubuntu/lib/chainmaker-go/tools/cmc/testdata/claim-wasm-demo/rust-fact-2.0.0.wasm \
ubuntu@127.0.0.1:/home/ubuntu/contract/
  1. 部署存证合约

 ssh -i /home/ubuntu/.ssh/aws ubuntu@127.0.0.1 \
"cd ~/deploy-2025-12-23/chainmaker-v2.3.6-wx-org.chainmaker.org/bin/cmc && \
 ./cmc client contract user create \
  --contract-name=fact \
  --runtime-type=WASMER \
  --byte-code-path=/home/ubuntu/contract/rust-fact-2.0.0.wasm \
  --version=1.0 \
  --sdk-conf-path=/home/ubuntu/deploy-2025-12-23/chainmaker-v2.3.6-wx-org.chainmaker.org/bin/cmc/sdk_config_remote.yml \
  --admin-key-file-paths=/home/ubuntu/deploy-2025-12-23/chainmaker-v2.3.6-wx-org.chainmaker.org/config/wx-org1.chainmaker.org/certs/user/admin1/admin1.sign.key \
  --admin-crt-file-paths=/home/ubuntu/deploy-2025-12-23/chainmaker-v2.3.6-wx-org.chainmaker.org/config/wx-org1.chainmaker.org/certs/user/admin1/admin1.sign.crt \
  --sync-result=true \
  --params='{}'"

3.调用存证合约

ssh -i /home/ubuntu/.ssh/aws ubuntu@127.0.0.1 \
"cd ~/deploy-2025-12-23/chainmaker-v2.3.6-wx-org.chainmaker.org/bin/cmc && \
 ./cmc client contract user invoke \
  --contract-name=fact \
  --method=save \
  --sdk-conf-path=/home/ubuntu/deploy-2025-12-23/chainmaker-v2.3.6-wx-org.chainmaker.org/bin/cmc/sdk_config_remote.yml \
  --params='{\"file_name\":\"name007\",\"file_hash\":\"ab3456df5799b87c77e7f88\",\"time\":\"48\"}' \
  --sync-result=false"

3.8. 测试系统合约

1.初始化账户余额

ssh -i /home/ubuntu/.ssh/aws ubuntu@127.0.0.1 \
"cd ~/deploy-2026-01-06/chainmaker-v2.3.6-wx-org1.chainmaker.org/bin/cmc && \
 ./cmc client contract user invoke \
  --contract-name=T \
  --method=INITK \
  --sdk-conf-path=./sdk_config_remote.yml \
  --params='{\"count\":\"100\"}' \
  --sync-result=true"

2.调用Transfer进行转账

ssh -i /home/ubuntu/.ssh/aws ubuntu@127.0.0.1 \
"cd ~/deploy-2026-01-06/chainmaker-v2.3.6-wx-org1.chainmaker.org/bin/cmc && \
 ./cmc client contract user invoke \
  --contract-name=T \
  --method=TRANSFER \
  --sdk-conf-path=./sdk_config_remote.yml \
  --params='{\"from\":\"from1\",\"to\":\"to1\",\"amount\":\"1\"}' \
   --sync-result=true"

3.查询账户余额

ssh -i /home/ubuntu/.ssh/aws ubuntu@127.0.0.1 \
"cd ~/deploy-2026-01-06/chainmaker-v2.3.6-wx-org1.chainmaker.org/bin/cmc && \
 ./cmc client contract user invoke \
  --contract-name=T \
  --method=BALANCE \
  --sdk-conf-path=./sdk_config_remote.yml \
  --params='{\"addr\":\"from1\"}' \
  --sync-result=true"