千家信息网

HyperLedger如何实现链码开发实例FabCar

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"HyperLedger如何实现链码开发实例FabCar",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"HyperLedger如何实
千家信息网最后更新 2026年11月01日HyperLedger如何实现链码开发实例FabCar

这篇文章主要为大家展示了"HyperLedger如何实现链码开发实例FabCar",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"HyperLedger如何实现链码开发实例FabCar"这篇文章吧。

应用程序与链码开发 -FabCar

编写第一个应用程序

通过几个实例程序,了解 Fabric 应用的工作原理。
SDK 来调用智能合约(关于二者的详细信息在 SDK 应用程序和智能合约处理两个章节)

三步骤

  1. 建立开发环境。**使用first-network搭建基本的网络(两个组织和一个排序节点;两组之间有一个 mychannel)

  2. 了解智能合约示例 Fabcar.**查看智能合约如何运行,以及应用程序如何使用它们来查询和更新分类账

  3. 开发使用 Fabcar 的示例应用程序。**应用程序使用智能合约查询和更新账面上的汽车资产。利用应用程序创建事务 - 查询汽车、创建新汽车。

完成本教程应该学习到:应用程序如何与智能合约交互,Fabric 网络中对等实体上托管和复制分类账的交互过程。


docker rm -f (docker ps -aq)
docker rmi -f (docker images | grep fabcar | awk '{print 3}')
使用上述命令终止先前运行的所有 fabric 容器。

cd xxx/fabric-samples/FabCar/ && ./startFabric.sh javascript
上述命令将自动初始化 first-network, 与此同时部署 JavaScript 版本的 chaincode 到两个对等节点上。
cd ./javascript && npm install
node enrollAdmin.js
创建一个管理员用户(称为管理员实际上为证书颁发机构 CA 的注册商)
node registerUsre.js
通过管理员凭据来注册新用户(可使用该用户来查询和更新分类账)user1
node query.js
查询账面信息

解析 Fabcar 的 javascript 应用程序

const { FileSystemWallet, Gateway} = require('fabric-network')从 fabric-network 模块引入 FileSystemWallet 和 Gateway 两个关键类。
cosnt gateway = new Gateway()
await gateway.connect(ccp,{wallet,identity:'user1'})
使应用程序连接到网络(用 user1 的身份). 其中的 ccp 表示的是网关将访问的网络。 ccp 通过如下代码配置:

const ccpPath = path.resolve(__dirname,'..','..','first-network','connection.json')const ccpJSON = fs.readFileSync(ccpPath,'utf8')const ccp = JSON.parse(ccpJSON)
  • (关于网络配置文件的结构和定义网络的方式可以查看连接配置文件) - 接到网络后我们需要连接特定的 channel , 以期获得特定世界状态的权限
    const network = await gateway.getNetwork('mychannel')
    接入 channel 之后需要连接特定的 chaincode , 以期通过智能合约与世界状态交互。
    const contact = network.getContract('fabcar')

Fabcar 中定义了许多的事务 (transaction)

  1. 使用const result = await contact.evaluateTransaction('queryAllCars')来查询世界状态。
    上述操作是最简单的智能合约交互,它选取一个在连接配置文件中定义的节点发送请求,节点执行评估命令 ->智能合约查询节点账本副本所记载的所有汽车信息 ->返回结果给应用

  2. 使用contract.submitTransaction('createCar','CAR12','Honda','Accord','Black','Tom')来创建一辆新车的信息。 submitTransaction() 表示提交交易,它比 evaluateTransaction 复杂很多,它的工作原理如下:首先将 submitTransaction 天发送给每一个对等实体 ->每一个对等实体执行命令,返回结果给 SDK->SDK 收集所有回复合成一个交易发给 Order 节点 ->Order 收集并造块广播 ->每个事务都得到验证和提交之后允许它将控制权返回到应用程序 (submitTransaction 包括了一个侦听器).

  3. 使用await contract.submitTransaction('changeCarOwner','CAR12','Dave')命令改变汽车车主

解析 Fabcar 的 javascript 智能合约

cd xxx/fabric-samples/chaincode/fabcar/javascript/lib/fabcar.js
了解如何使用 Contract 类来定义智能合约
class FabCar extends Contract{}

在此结构中将定义如下事务: initLedger , queryCar , queryAllCars , createCar 和 changeCarWoner .
async queryCar(ctx, carnumber){...}
async queryAllCars(ctx) {...}

分析 querAllCars 这个交易

async queryAllCars(ctx){    const startKey = 'CAR0'    const endKey = 'CAR999'    cosnt iterator = await ctx.stub.getStateByRange(starKey,endKey)    ...}

这段代码遍历访问每辆车,并将结果打包成 JSON 返回到应用程序当中。 getStateByRange() 是事务的 API , 关于 API 可以访问 javascript 智能合约 API

以上是"HyperLedger如何实现链码开发实例FabCar"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

应用 程序 合约 应用程序 智能 网络 查询 开发 节点 事务 命令 汽车 实例 两个 信息 对等 配置 开发实例 世界 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 山东特亿宝互联网科技有限公司 互联网科技的发展 唐信互联网科技 银优互联网科技有限公司 善班互联网科技有限公司 沃里互联网科技 万达互联网科技 科技互联网创业计划书 联恩商钥互联网科技有限公司 深圳国际航运科技和互联网 福州新华互联网科技学校 知乎 承德科技产业互联网发展 重庆威客帮互联网科技 速维有品互联网信息科技(苏州)有限公司 滨湖区互联网智能科技产品有哪些 广州燕处互联网科技有限公司 互联网科技机房 马化腾互联网科技教学 互联网大会出现的黑科技 华服互联网科技靠谱吗 互联网科技素材视频竖屏 科技赋能互联网健康 农村开互联网科技讲堂 昊天互联网科技有限公司 互联网与医疗科技 天津腾达互联网科技有限公司 深圳互联网科技的发展 皮皮虾互联网科技有限公司 浙南科技城互联网大厦招聘
0