使用HFC SDK for Node.js 开发 Hyperledger Fabric 客户端应用系统

使用HFC SDK for Node.js 开发 Hyperledger Fabric 客户端应用系统

作者:陳兆麟 Email:chenlin2@ms9.hinet.net

开发区块链 (for Hyperledger Fabric) 应用系统时,首先要在 local 环境测试 chaincode (智能合约),测试无误后再将 chaincode 嵌入至客户端程序;客户端程序 (for Node.js) 使用Hyperledger Fabric Client (HFC) SDK所提供的 APIs与blockchain network 交谈。包含 HFC SDK的Node.js 客户端程序可完成下列功能:(1). user可注册与登录并使用应用系统所建立的blockchain network。(2). 客户端程序的HFC SDK将启动包含 (deploy, invoke and query) 功能的 chaincode (for go or java) 将 user 所提出之交易 submit 至已建立的 blockchain network。(3). 在 blockchain network 之外储存系统执行时所需的私钥及凭证。以下范例使用包含HFC SDK APIs 的Node.js App 与 Bluemix 之 blockchain service 所建构的 blockchain network 交谈。

开发环境: Win7 (64 bit, RAM >=8G) , vagrant , blockchain, Hyperledger, golang

1. win7 安装 cygwin

(https://cygwin.com/install.html)

将安装之执行文件目录 (C:\cygwin64\bin) 设定在控制台系统 path 变量

win7 安装 virtualbox (VirtualBox-5.1.6-110634-Win.exe)

(https://www.virtualbox.org/)

win7 安装 git (https://git-scm.com/downloads)

### 使用 Hyperledger Fabric 构建食品追溯系统的教程 #### 1. 初始化环境并安装依赖项 为了启动项目,需先设置好本地开发环境。假设已经具备 Linux 或类 Unix 系统,则可以通过如下指令来获取必要的资源: ```bash cd fabric/scripts sudo ./bootstrap.sh ``` 这条命令将会下载官方提供的示例代码和镜像文件[^1]。 #### 2. 设计网络架构与成员资格管理 Hyperledger Fabric 支持一个交易网络,在此网络里所有参与者都有已知身份。这使得能够精确控制谁可以看到哪些信息,非常适合应用于食品安全领域中的供应链追踪应用。公钥基础设施负责创建加密证书,这些证书关联至各个参与方及其应用程序,从而实现细粒度的数据访问权限设定[^3]。 #### 3. 定义链码逻辑 对于食品追溯系统而言,核心在于设计合适的智能合约(即链码),用来记录产品生命周期内的重要事件,比如生产日期、运输批次编号等敏感资料。由于涉及商业秘密保护需求,实际的私有数据仅限于特定授权节点间共享;与此同时,其余非敏感元数据则会被广播出去供所有人查阅验证[^5]。 #### 4. 开发客户端接口 考虑到不同类型的用户群体可能有不同的接入方式偏好——无论是Web端还是移动端——都需要有一个易于使用的界面让各方能方便地查询商品历史轨迹。这里推荐采用 `fabric-gateway` 来简化前端集成工作量,因为它提供了较为直观易懂的操作方法,降低了初次使用者的学习曲线[^4]。 #### 5. 测试与优化性能表现 完成上述步骤之后便进入到测试环节,确保各项功能正常运作的同时也要关注整体效率问题。特别是当面对大规模并发请求时,应考虑引入负载均衡机制或是调整共识算法参数等方式提高吞吐率降低延迟时间。 ```python from hfc.fabric import Client as client_fabric_py import asyncio async def query_chaincode(): cli = client_fabric_py(net_profile="connection-profile.yaml") # 获取通道实例 channel_name = 'mychannel' await cli.channel_join(request={'peers': ['peer0.org1.example.com'], 'name': channel_name}) # 查询链码 response = await cli.chaincode_query( requestor=cli._users['Admin'], peers=['peer0.org1.example.com'], fcn='query', args=['a'] ) print(response) if __name__ == '__main__': loop = asyncio.get_event_loop() loop.run_until_complete(query_chaincode()) ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值