☰
Awesome Fabric 开发资源全景指南:Hyperledger Fabric 从架构、开发环境到 SDK 的完整学习路径
2026/10/1 18:12:52 网站建设 项目流程
  • 文档
  • 区块链

【免费下载链接】awesome-blockchain-cn

收集所有区块链(BlockChain)技术开发相关资料,包括Fabric和Ethereum开发资料

项目地址:https://gitcode.com/gh_mirrors/aw/awesome-blockchain-cn
点击查看免费下载

本文以 Hyperledger Fabric/README.md 这份 Awesome Fabric 开发资源导航为骨架,系统梳理它在架构、教程、API、SDK、示例五个维度收录的 Fabric 学习资料,并融合仓库内配套的 Chaincode v0.6 Dev Env Setup Guide.md 与 fabric-connector.js 两份一手资料,为读者提供一条从理解架构、搭建开发环境到动手编写 Chaincode、调用 SDK 的完整实战路径。读完本文,你将掌握 v0.6 / v1.0 两个时代的 Fabric 核心知识点地图,拿到一份可直接照做的基础环境搭建手册,并理解 Fabric v0.6 RESTful API 的 JSON-RPC 调用约定。

一、资源总览:这份导航清单覆盖了 Fabric 开发的哪些环节

Awesome Fabric 是区块链资料聚合仓库 awesome-blockchain-cn 中专门面向 Hyperledger Fabric 的导航文档,目录结构如下:

  • Architect(架构):按 v0.6 与 v1.0 两个版本收录架构解读与源码分析资料;
  • Tutorials(教程):同样按 v0.6 / v1.0 划分,覆盖开发环境搭建、网络启动、CA 配置、SDK 使用与案例项目;
  • API(接口与文档):官方文档入口及中文社区的技术专栏;
  • SDK(工具包):Java、Python、Node.js 等多语言 SDK 与可视化开发框架;
  • Examples(示例):可直接参考的落地项目。

清单在开头给出了一条重要的版本提示:原 hyperledger-archives 下的 Fabric 仓库已被归档弃用,后续开发应使用官方 hyperledger/fabric 仓库。这提醒所有读者:本文涉及的 v0.6 时代命令与配置属于历史版本内容,适合用于理解早期架构与开发流程,而最新开发请以 v1.0 及之后的官方文档为准。

除导航清单本身外,仓库目录下还直接附带了两份与清单主题强相关的配套资料,本文后续将重点展开:

文件与清单的对应关系
Chaincode v0.6 Dev Env Setup Guide.md对应 Tutorials 中 v0.6 开发环境搭建主题,是完整的可执行手册
fabric-connector.js对应 SDK / RESTful API 主题,是 Node.js 封装的调用约定参考

二、架构篇:从 v0.6 源码分析到 v1.0 核心机制

清单将架构资料按版本切分,反映了 Fabric 两次重要的技术演进:v0.6 是早期的单体架构雏形,v1.0 则引入了模块化架构与更完善的权限模型。

v0.6:Fabric 代码分析(未完成的 GitBook)

v0.6 阶段收录的是一份基于 GitBook 的 Fabric 代码分析文档,且清单中明确标注其状态为"未完成"。这类源码走读资料通常按代码包拆解 peer、membersrvc(CA 服务)等核心组件的实现,适合想从源码层面理解早期 Fabric 的读者作为辅助材料,不必当作完整教程依赖。

v1.0:架构概览与核心机制

从清单收录的专题文章标题可以看出,v1.0 架构学习的关键词集中在以下几个方向:

  • Fabric 1.0 架构概览:对整体架构的全局解读,是进入 v1.0 世界的第一站;
  • 多通道与下一代账本设计:v1.0 引入的多通道(multi-channel)机制,使不同通道内的账本与交易相互隔离,是联盟链权限隔离的基础;
  • Fabric 1.0 账本设计:讲解 v1.0 账本的数据组织、区块结构与状态存储方式;
  • Fabric 1.0 Endorse 背书策略:背书(Endorsement)是 v1.0 共识流程的核心环节,背书策略定义了交易需要哪些组织的签名背书;
  • Fabric 示意图与 Gossip 源码分析:配合图示理解节点间数据分发(Gossip 协议)的实现;
  • Fabric-CA 1.0 Alpha 小结:Fabric 证书颁发机构(CA)在 v1.0 中的设计与用法总结。

需要说明的是,以上均为清单中收录资料所覆盖的主题方向,具体细节应以对应资料的完整内容与官方最新文档为准;v1.0 的权威说明请查阅 Fabric 官方文档。

三、教程篇:v0.6 与 v1.0 两条实战路线

Tutorials 是整份清单信息量最大的部分,两条版本线各有侧重:v0.6 侧重环境搭建与 Chaincode 入门,v1.0 侧重新版本部署与开发工具。

v0.6 教程线:从环境到 Chaincode

v0.6 教程线包含以下主题:

  • Fabric Basics:使用官方 Docker Toolbox 搭建 Fabric 开发环境的基础教程;
  • Learn Chaincode:基础 Chaincode 示例的讲解与运行;
  • Marbles Project Tutorial(Part One / Part Two):IBM 官方示例项目 Marbles 的分步教程,是学习 Chaincode 业务建模的经典案例;
  • v0.6 Fabric Dev Env Setup:官方提供的三种 Chaincode 开发环境搭建方式;
  • v0.6 Start A Fabric Network:启动一个 Fabric 网络的官方指引;
  • v0.6 Fabric CA Setup:Fabric CA 的安装与配置;
  • v0.6 Fabric NodeJS SDK Guide:Node.js SDK 的使用指南。

其中"开发环境搭建"这一主题,仓库内恰好有一份对应的一手实操手册,即 Chaincode v0.6 Dev Env Setup Guide.md,下面将其完整展开,作为本节的实战核心。

1. 基础软件安装(Prerequisites)

开发环境需要四类基础软件:

Git:参照官方文档安装即可。

Docker:原手册给出的安装命令为:

curl -sSL https://get.daocloud.io/docker | sh reboot

注意其中reboot在原文档中紧跟在管道命令之后,实际含义是安装完成后需要重启系统使 Docker 生效,请按你的发行版实际情况处理(部分系统需手动将当前用户加入 docker 用户组)。

RocksDB:Fabric v0.6 使用 RocksDB 作为状态数据库。手册推荐安装v4.1 或 v4.6.1版本,在 rocksdb 源码目录下执行:

make install-shared ldconfig

Golang:参照官方文档安装,并注意设置环境变量:

  • GOROOT:指向/usr/local/go
  • GOPATH:Go 的工作目录

可以通过建立软链接让go命令全局可用:

sudo ln -s /usr/local/go/bin/go /usr/bin/go
2. Fabric 安装(Install)

安装依赖hyperledger/fabric-baseimage:X86_64-0.0.11镜像,并按以下步骤拉取源码、整理 vendor 依赖并编译:

mkdir -p fabric/src/github.com/hyperledger git clone https://github.com/hyperledger/fabric.git cd ~/fabric/src cp -a ./github.com/hyperledger/fabric/vendor/* ./ cd github.com/hyperledger/fabric make membersrvc make peer

两点说明:原文档中cd ~/farbric/src疑为~/fabric/src的笔误,这里已按目录创建逻辑修正;vendor目录中的第三方依赖需要拷贝到 GOPATH 对应的 src 根下,这是 Go 早期依赖管理方式的产物。make membersrvc编译 CA 服务,make peer编译 peer 节点。

3. 快速启动(Quick Setup)
  • 执行membersrvc命令启动 CA 节点,它会读取默认配置文件membersrvc.yaml;
  • 以开发模式启动 peer:peer node start --peer-chaincodedev;
  • 如需启用安全与隐私功能,不需要改动 core.yaml 并重新编译,直接通过环境变量注入即可:
CORE_SECURITY_ENABLED=true CORE_SECURITY_PRIVACY=true peer node start --peer-chaincodedev

--peer-chaincodedev是 v0.6 开发模式的核心开关,它让 Chaincode 直接运行在 peer 进程内(而非独立容器),从而大幅缩短调试循环。

4. 运行 Chaincode(Running)

手册给出了三种发布 Chaincode 的方式,前两种适用于开发调试,第三种面向外部客户端集成。

方式一:本地编译发布(开发推荐)

在 chaincode 目录下执行go build完成编译,然后运行:

CORE_CHAINCODE_ID_NAME=mycc CORE_PEER_ADDRESS=0.0.0.0:7051 ./chaincode_example

该方式运行在 dev 模式下,Chaincode 不会启动单独的 Docker 容器,而是直接跑在 peer 容器内;CORE_CHAINCODE_ID_NAME指定链码 ID 名,CORE_PEER_ADDRESS指定 peer 的注册地址。

方式二:通过 CLI 发布

首先获得授权:

peer network login <username>

发布代码(初始化链上资产:账户 a=100,账户 b=200):

peer chaincode deploy -n mycc -c '{"Args": ["init", "a", "100", "b", "200"]}'

启用安全与隐私功能时,需追加环境变量并指定用户-u jim:

CORE_SECURITY_ENABLED=true CORE_SECURITY_PRIVACY=true peer chaincode deploy -u jim -n mycc -c '{"Args": ["init", "a", "100", "b", "200"]}'

调用代码(执行转账:a 转给 b 10):

peer chaincode invoke -l golang -n mycc -c '{"Args": ["invoke", "a", "b", "10"]}'

说明:原文档中invoke的-c参数示例存在引号笔误(写为'{Args": ...),上文已按标准 JSON 格式修正为'{"Args": ...}',实际执行请以 JSON 规范为准。

方式三:通过 RESTful API 发布

首先获得授权,向 registrar 接口注册用户:

POST localhost:7050/registrar { "enrollId": "jim", "enrollSecret": "6avZQLwcUe9b" }

发布代码:

POST <host:port>/chaincode { "jsonrpc": "2.0", "method": "deploy", "params": { "type": 1, "chaincodeID": { "name": "mycc" }, "ctorMsg": { "args": ["init", "a", "100", "b", "200"] }, "secureContext": "jim" }, "id": 1 }

调用代码:

POST <host:port>/chaincode { "jsonrpc": "2.0", "method": "invoke", "params": { "type": 1, "chaincodeID": { "name": "mycc" }, "ctorMsg": { "args": ["invoke", "a", "b", "10"] }, "secureContext": "jim" }, "id": 3 }

手册特别提示:可以在membersrvc.yaml文件的eca.users章节找到可以被 CA 认可的用户名及密码——上面的jim / 6avZQLwcUe9b即来自该默认配置,实际部署时应替换为自己的注册信息。

手册末尾还附有若干参考链接(Fabric 开发模式环境搭建、RocksDB 安装问题、gcc 版本升级、Makefile 编译警告、Chaincode 开发环境配置等),可作为排错时的补充阅读。

v1.0 教程线:部署、镜像与开发工具

v1.0 教程围绕新版本的部署方式展开,清单标注了一些关键适用前提:

  • Hyperledger Fabric V1.0 开发者快速入门:基于 baseos 0.2.2 镜像的快速上手;
  • 搭建运行 Fabric V1.0-alpha 版本:针对 1.0 版本的开发环境搭建指引;
  • Fabric v1.0-alpha 开发镜像编译:使用 Fabric 源码自行编译 v1.0-alpha 的 Docker 镜像;
  • Fabric-CA 1.0 Alpha 小结:v1.0 的 CA 组件小结;
  • Hyperledger Composer 使用入门:官方可视化 Fabric 应用开发框架的入门教程;
  • hyperledger fabric 本地开发环境 mac 部署:面向 macOS 的本地开发环境部署经验。

这些教程大多针对 v1.0-alpha 等早期阶段,读者在实操时应留意与当前正式版命令(如peer子命令体系、configtxgen、cryptogen等)的差异。

四、API 篇:官方文档与中文社区专栏

API 章节收录了三类来源:

  • Fabric 官方文档:清单标注为"Fabric 官方最新文档",是接口与命令的权威来源,任何版本差异都应以官方文档为准;
  • 中文社区专栏:包括以 Fabric 开发环境搭建与 Chaincode 入门见长的"浮白"、IBM Fabric 核心开发者 yeasy 的专栏,以及分别专注 v0.6/v1.0 与 v0.6 源码分析的"菜鸟的博客"和 jiang_xinxing 的博客。

这一章节的价值在于:官方文档负责"标准答案",中文专栏负责"踩坑经验",两者配合可以显著降低英文文档的阅读与理解成本。

五、SDK 篇:多语言 SDK 与 RESTful API 封装实践

SDK 章节覆盖了 Fabric 生态中主要的编程语言接入方式:

  • Hyperledger Fabric API:官方接口集合入口;
  • Fabric Java SDK:面向 Java 的官方 SDK;
  • Fabric Python SDK:面向 Python 的官方 SDK;
  • Fabric Nodejs SDK:面向 Node.js 的官方 SDK;
  • IBM Nodejs SDK 与 fabric boilerplate:IBM 维护的 Node.js SDK 与项目脚手架;
  • Composer:官方可视化 Fabric 应用开发框架,可基于模型快速生成业务网络;
  • Hyperledger hackathon:黑客松项目合集;
  • Fabric with graphql:将 Hyperledger Fabric 与 GraphQL 结合的样板工程。

深入:仓库内的 Node.js 封装参考 fabric-connector.js

针对 SDK / RESTful API 主题,仓库附带的 fabric-connector.js 提供了一份 Node.js 侧封装 RESTful 接口的参考实现。从源码看,它整体受 IBM-Blockchain 的 ibm-blockchain-js 启发(文件头注释即注明出处)。

构造与配置参数(对应源码 第 5-14 行):

参数含义默认值 / 说明
host服务主机地址必填,缺失时直接抛出no host error!
protocol协议默认http
path_prefix路径前缀默认/
port服务端口可选
versionAPI 版本号固定为1

URL 拼装逻辑(第 15-21 行):buildURL按protocol://host[:port]/path/的规则拼接请求地址,端口存在时附加端口号,末尾统一补/。

接口调用约定:封装对象以api.chaincode组织deploy、query、invoke三个方法,每个方法都以注释形式内嵌了完整的 JSON-RPC 2.0 请求示例,与上一节 RESTful API 的命令行版本一一对应:

  • deploy:method为deploy,type为 1,chaincodeID.path指向github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02,ctorMsg.args为["init", "a", "1000", "b", "2000"],携带secureContext;
  • query:chaincodeID.name使用 deploy 返回的链码哈希(示例为52b0d803...一长串十六进制),args为["query", "a"],id递增为 5——这说明deploy 成功后会返回链码的 name 哈希,后续 query / invoke 必须携带该哈希作为chaincodeID.name;
  • invoke:同样携带链码哈希,args为["invoke", "a", "b", "100"],id为 3。

需要说明的是,从源码结构看,该文件更像一份未完成的封装草稿:对象字面量内部使用了chaincode = {而非chaincode: {的合法写法,且方法体引用的rest.post并未定义,直接运行会报错。因此它的正确用法是作为"理解 RESTful 调用约定的参考注释",而非可直接使用的生产模块——真正可用的是清单收录的官方 Node.js SDK。

六、示例篇:从 Explorer 到 Marbles 的落地参考

示例章节收录了三个具有代表性的项目:

  • Fabric Explorer:官方区块链浏览器,用于可视化查看 Fabric 网络的区块、交易与链码状态,是运维与演示场景的标配;
  • cp-web:IBM-Blockchain 的前端示例项目;
  • marbles:IBM 官方示例,配合前文 Marbles 教程 Part One / Part Two 使用,通过"弹珠交易"的业务场景完整演示 Chaincode 的编写、部署与调用流程。

对于刚完成环境搭建的读者,推荐以 marbles 作为第一个上手的业务案例:教程将 Chaincode 开发拆解为两阶段,先跑通基础读写,再扩展更复杂的业务逻辑。

七、总结:一条推荐的 Fabric 学习路径

综合清单内容与仓库配套资料,可以沉淀出一条递进式的学习路径:

  1. 理解版本脉络:先确认 v0.6 与 v1.0 的差异(本清单即按此划分),明确历史版本资料用于"理解原理"、最新开发以官方文档为准;
  2. 学习架构:从 v1.0 架构概览入手,依次消化多通道、账本设计、背书策略、Gossip 与 Fabric-CA 等专题;
  3. 搭建环境:按 Chaincode v0.6 Dev Env Setup Guide.md 完成 Git / Docker / RocksDB / Golang 的安装,再通过make membersrvc与make peer编译出可用的 Fabric v0.6 环境;
  4. 编写并运行 Chaincode:先走"本地编译发布"(CORE_CHAINCODE_ID_NAME+CORE_PEER_ADDRESS)熟悉 dev 模式,再分别用 CLI 与 RESTful API(JSON-RPC 2.0)完成 deploy / invoke;
  5. 接入 SDK:根据语言选型使用 Java / Python / Node.js 官方 SDK,参考 fabric-connector.js 理解 RESTful 接口的请求结构;
  6. 参考示例落地:用 marbles 巩固 Chaincode 开发,用 Fabric Explorer 验证网络运行状态。

最后回到版本与版权提醒:本资源清单按 CC0 协议发布,版权由原作者 Chaozh 放弃;清单中 v0.6 相关内容属于历史版本,命令、镜像与配置文件均已随版本演进,实操时请结合当前使用的 Fabric 版本核对,并以 Fabric 官方最新文档为准。

  • 文档
  • 区块链

【免费下载链接】awesome-blockchain-cn

收集所有区块链(BlockChain)技术开发相关资料,包括Fabric和Ethereum开发资料

项目地址:https://gitcode.com/gh_mirrors/aw/awesome-blockchain-cn
点击查看免费下载
上一篇:使用 nanobot 构建微信(WeChat/Weixin)AI Agent:二维码登录、配对授权与 HTTP 长轮询全解析
下一篇:Node.js v23.7.0(Current)发布详解:test_runner 快照 API 全面升级、TypeScript 支持强化与 SQLite 能力扩展

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询