node . js中怎么实现一个织物链码

  介绍

这篇文章将为大家详细讲解有关node . js中怎么实现一个织物链码,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

使用fabric-shim开发面料链码

fabric-shim是较底层的链码开发包,它封装了与节点通信的grpc协议。安装方法如下:

 ~/fabric-shim-chaincode-demo美元,npm  install  fabric-shim 

fabric-shim要求链码开发者定义一个实现两个预定义方法的类。

<李>

Init(存根):初始化链码时节点将调用该方法

<李>

调用(存根):节点将应用对链码的调用转化为对该方法的调用

参数<代码>存根>

例如,下面的代码实现了一个最小化的node . js链码,每次调用链码都会更新acc0的状态(例如:可以使用这个状态代表账户余额):

 const  shim =,要求(& # 39;fabric-shim& # 39;);
  
  class  EzChaincode  {
  ,,,async  Init(存根),{,,,,,,
  ,,,,,,,return  shim.success (Buffer.from (& # 39; init 完成了! & # 39;));//返回成功对象
  ,,,}
  
  ,,,async 调用(存根),{
  ,,,,,,,let  key =, & # 39; acc0& # 39;;
  ,,,,,,,let  oldValue =, await  stub.getState(关键);,//读取账本中acc0的状态
  
  ,,,,,,,let  newValue =, oldValue  +, 100,,
  ,,,,,,,await  stub.putState(钥匙,,Buffer.from (newValue)),,//更新acc0的状态
  
  ,,,,,,,return  shim.success (Buffer.from (& # 39; update 完成了! & # 39;));//返回成功对象
  ,,,}
  };

一旦定义好链码,就可以使用<代码> shim.start() 方法启动链码实例了。例如:

 const  shim =,要求(& # 39;fabric-shim& # 39;);
  class  EzChainCode  {…}
  shim.start (new  EzChaincode ()); 

这就是一个完整的织物链码了!将上面代码保存为demo.js,可以直接用node . js启动:

 ~/fabric-shim-chaincode-demo美元,node 演示。js 

使用fabric-contract-api开发面料链码

fabric-shim是一种相对底层的织物grpc协议封装,它直接把链码接口暴露给开发者,虽然简单直白,但如果要实现相对复杂一点的链码,开发者需要自己在调用实现中进行方法路由。

fabric-contract-api则是更高层级的封装,开发者直接继承开发包提供的合同类,就不用费心合约方法路由的问题了.fabric-contrac-api开发方法如下:

 ~/fabric-contract-api-demo美元,npm  install  fabric-contract-api 

使用fabric-contract-api的链码示例代码如下,除了构造函数之外的每个方法都自动称为链码的方法,可供外部应用调用:

//demo.js
  {const  Contract },=,要求(& # 39;fabric-contract-api& # 39;);
  
  class  EzContract  extends 合同
  
  ,,,构造函数(){
  ,,,,,,,超级(& # 39;EzContract& # 39;),,
  ,,,}
  
  ,,,async 更新(ctx, newValue), {
  ,,,,,,,await  ctx.stub.putState (& # 39; acc0& # 39;,, Buffer.from (newValue));
  ,,,,,,,return  Buffer.from (& # 39; update 完成了! & # 39;);
  ,,,}
  
  ,,,async 删除(ctx), {
  ,,,,,,//.....
  ,,,}
  
  };
  module.exports.contracts =, (& # 39; EzContract& # 39;]; 

与fabric-shim不同,fabric-contract-api只需要链码导出合同数组,因此不能直接使用node . js启动链码,而需要使用fabric-chaincode-node程序,例如:

 ~/fabric-contract-api-demo美元,fabric-chaincode-node 演示。js 

关于node . js中怎么实现一个织物链码就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

node . js中怎么实现一个织物链码