使用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链码的简要步骤和代码示例。本文由汇智网原创,转载请注明来源。