Ubuntu Server 快速部署长安链:基于 Go 的智能合约实现商品溯源

简介

本文将带你快速上手 长安链(ChainMaker)管理平台 的部署与使用。从环境准备、证书生成、链创建,到合约编译、部署与调用,全流程演示如何搭建一条可运行的区块链网络,并基于智能合约实现一个 商品溯源应用。

在实战过程中,你将学会:

  • 使用 Docker 一键启动管理后台并登录平台;
  • 快速生成证书并配置多节点区块链;
  • 部署并运行链上合约,实现商品全生命周期的追踪;
  • 在平台界面上直观管理和查询商品的生产、运输、上架、销售等状态。

通过本文,你不仅能掌握长安链的基础部署方法,还能了解区块链在 商品溯源场景 下的具体落地方式,适合作为入门实践教程或后续开发的参考。

智能合约语言

长安链为了适应不同的开发场景和开发者群体,采用了多语言智能合约虚拟机的设计,目前支持:

语言推荐度特点与适用场景
Go⭐️⭐️⭐️⭐️⭐️ (首选)适用于长安链等国内联盟链。 性能优异,与底层技术栈统一,官方支持完善,工程化程度高。是企业级应用、政务、供应链金融等合规场景的首选。
Solidity⭐️⭐️⭐️⭐️⭐️ (公链必备)适用于以太坊及所有EVM兼容公链。 是DeFi、NFT、GameFi等加密货币领域的“世界语”。生态极其庞大,但代码安全性要求极高,直接关系资产安全。
Rust⭐️⭐️⭐️⭐️ (次选/前沿)适用于长安链、Solana、Polkadot等。 以内存安全和极致性能著称,学习曲线陡峭。是追求高性能和高安全性的复杂合约、以及新一代公链的绝佳选择。
C++⭐️⭐️⭐️ (特定场景)适用于长安链、EOS等。 性能强大,但更为底层,易用性和安全性上不如Go和Rust。通常用于有历史C++代码需要移植或特定性能调优需求的场景。
TinyGo⭐️⭐️⭐️ (特殊场景)Go 的轻量级版本,用于 WASM(WebAssembly)虚拟机。合约编译体积更小,启动更快,适合资源受限或需要与 Web 生态交互的场景。

智能合约

智能合约(Smart Contract) 是运行在区块链上的一段程序代码,它能够在满足预设条件时,自动执行相关的业务逻辑,确保执行结果公开透明、不可篡改。与传统系统中的“后台逻辑”不同,智能合约一旦部署到链上,就不能随意修改或删除,从而大大提升了可信度。

在本次商品溯源应用中,智能合约的主要作用是:

  • 记录商品信息: 如商品 ID、名称、生产厂家等;
  • 管理状态流转: 包括生产、运输、上架、销售等环节;
  • 保障数据可信: 所有状态变化和操作都写入链上,不可伪造;
  • 支持溯源查询: 任何人都可以根据商品 ID 查询完整的流通过程。

通过这些功能,智能合约让区块链不仅仅是一个“存数据的账本”,而是一个能自动执行业务规则的 去中心化应用平台。

上链管理

上链管理 是指将业务数据通过智能合约写入区块链的过程。与传统数据库不同,区块链中的数据一旦写入就无法篡改,并且所有操作都会被完整记录和追溯。

在本次商品溯源应用中,上链管理的主要流程包括:

  • 生产商品: 记录商品的基本信息和初始状态;
  • 运输商品: 更新商品的物流状态,确保运输路径可追踪;
  • 上架商品: 标记商品进入销售环节;
  • 销售商品: 记录最终销售信息,形成完整的闭环;
  • 溯源查询: 任何用户都可以根据商品 ID 查看完整的生命周期轨迹。

通过上链管理,整个商品流转过程透明、可验证,极大提升了 可信度 和 监管能力,为供应链管理和消费者权益保护提供了坚实保障。

开发环境准备

长安链官网

官方源码仓库

注: 需要先注册 长安链账号 才能下载源代码。

官方文档

官方 Docker 镜像仓库

在这里插入图片描述

注: hub-dev.cnbn.org.cn 是长安链团队自建的镜像源,也可以直接访问该地址,通过左上角搜索的方式,获取目前支持的镜像列表。

  • 修改docker的配置文件:/etc/docker/daemon.json
{
  "registry-mirrors": [
	"https://hub-dev.cnbn.org.cn",
    "https://mirror.ccs.tencentyun.com",
    "https://qpaqqzrt.mirror.aliyuncs.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com"
  ]
}

部署管理平台

git clone -b v2.4.0 --depth=1 https://git.chainmaker.org.cn/chainmaker/management-backend.git
cd management-backend
docker compose up -d

在这里插入图片描述

登录管理平台

注: 账号/密码(admin/a123456

在这里插入图片描述

快速生成证书

在这里插入图片描述

新建区块链

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

链配置文件

在这里插入图片描述

注: 将下载的 trace.zip 文件复制到 Ubuntu Server 服务器上。

  • Ubuntu Server 安装 zip 与 7z 工具
sudo apt install -y zip unzip
sudo apt install -y p7zip-full
  • 从共享文件夹复制 trace.zip 到用户目录
cp trace.zip ~/

在这里插入图片描述

  • 解压 trace.zip 文件得到 release 目录
sudo unzip trace.zip
cd release

在这里插入图片描述

  • 执行 start.sh 启动长安链
./start.sh
  • 4 个节点都启动成功

在这里插入图片描述

订阅长安链

在这里插入图片描述

  • 订阅成功

在这里插入图片描述

项目编译打包(商品溯源示例)

注: go 版本 go1.17+,本人使用的是 go1.25.0 当前最新版本

git clone --depth=1 https://git.chainmaker.org.cn/contracts/contracts-go.git
cd contracts-go/trace
go mod tidy
./build.sh trace

在这里插入图片描述

注: 智能合约部署在 Linux 环境上的,必须使用 Linux进行编译打包;本人使用 Mac 环境编译打包使用自己写的交叉编译脚本 mac_build.sh

  • mac_build.sh
#!/bin/bash

# 使用方法: ./build.sh contractName
contractName=$1
if [[ ! -n $contractName ]]; then
    echo "contractName is empty. use as: ./build.sh contractName"
    exit 1
fi

# 设置交叉编译目标为 Linux
export GOOS=linux
export GOARCH=amd64   # 如果目标是 ARM64 可改为 arm64
export CGO_ENABLED=0   # 禁用 cgo,保证可移植性

# 编译合约
echo "编译合约 $contractName 到 Linux..."
go build -ldflags="-s -w" -o "$contractName"

# 压缩成 7z
echo "压缩 $contractName..."
7z a "$contractName.7z" "$contractName"

# 删除原始可执行文件
rm -f "$contractName"

echo "编译并压缩完成: $contractName.7z"

在这里插入图片描述

部署合约

在这里插入图片描述
在这里插入图片描述

编辑合约

  • 新增合约调用方法
方法操作参数
newGoods调用goodsId,name,factory
transferGoods调用goodsId,from,to
uploadGoods调用goodsId,uploader
sellGoods调用goodsId,seller
goodsStatus查询goodsId
traceGoods查询goodsId

在这里插入图片描述

上链管理

生产商品

创建一件商品,并存储到商品库里,同时修改商品状态,以及记录溯源信息

在这里插入图片描述

  • 手动刷新页面

在这里插入图片描述

运输商品

修改商品运输状态,记录溯源信息

在这里插入图片描述
在这里插入图片描述

上架商品

修改商品上架状态,记录溯源信息

在这里插入图片描述

销售商品

修改商品销售状态,记录溯源信息

在这里插入图片描述

获取商品溯源信息

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逢生博客

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值