当前位置:首页 > 知识 >

快速学会Fabric区块链Node.js链码开发

本文主要介绍了如何使用node.js开发Hyperledger Fabric联盟区块链中的链码。Fabric链码是一个标准的运行在Docker容器中的操作系统进程,可以用任何语言开发。目前官方提供了三种开发语言的Fabric链码开发工具包:Go、Java和Node.js。其中,Fabric官方提供了两种开发node.js链码的途径:fabric-shim和fabric-contract-api。

使用fabric-shim开发Fabric链码时,需要先安装fabric-shim,然后定义一个实现Init(stub)和Invoke(stub)两个方法的类,其中参数stub提供了访问链上账本的方法。例如,以下代码实现了一个最简化的node.js链码:

const shim = require("fabric-shim"); class EzChaincode { async Init(stub) { return shim.success(Buffer.from("init done!")); } async Invoke(stub) { let key = "acc0"; let oldValue = await stub.getState(key); let newValue = oldValue + 100; await stub.putState(key, Buffer.from(newValue)); return shim.success(Buffer.from("update done!")); } };

一旦定义好链码,就可以使用shim.start方法启动链码实例了。

使用fabric-contract-api开发Fabric链码时,需要先安装fabric-contract-api,然后继承开发包提供的Contract类,构造函数中传入链码的名称,然后定义对应的方法,例如以下代码:

const { Contract } = require("fabric-contract-api"); class EzContract extends Contract { constructor() { super("EzContract"); } async update(ctx, newValue) { await ctx.stub.putState("acc0", Buffer.from(newValue)); return Buffer.from("update done!"); } async remove(ctx) { // ... } }; module.exports.contracts = ["EzContract"];

与fabric-shim不同,fabric-contract-api需要将链码导出contracts数组,然后需要使用fabric-chaincode-node程序启动链码实例。

以上就是使用node.js开发Fabric链码的简要步骤和代码示例。本文由汇智网原创,转载请注明来源。

猜你喜欢

微信二维码

微信