将外部node.js软件包包含到Hyperledger Fabric事务处理器功能中的一种替代方法

时间:2018-08-30 07:20:40

标签: hyperledger-fabric hyperledger hyperledger-composer

我是Hyperledger面料的新手。我的问题是,有人知道在事务处理器功能中使用外部节点库的最简单方法吗?

我的项目的目录类似于以下树结构:

  

myfabricproject /

     
    

dist /

         

功能/

         

lib /

         
      

logic.js

    
         

模型/

         

node_modules /

         

package.json

  

我的目标虽然当时还很简单,但是它包含了一个名为node-forge的外部程序包,以帮助我在事务处理器功能之一中进行一些公钥/私钥验证。我将以下代码放入我的logic.js文件中:

'use strict';

var forge = require('node-forge');

/**
 * Create value transactions
 * @param {org.example.value.Transfer} transferTransaction
 * @transaction
 */
async function transferTransaction(tx) {
    // Get the asset registry for the asset.
    const assetRegistry = await getAssetRegistry('org.example.value.Wallet');

    const fromWallet = await assetRegistry.get(tx.pubKeyFrom);
    const toWallet = await assetRegistry.get(tx.pubKeyTo);

    // Validate the message
    const ED25519 = forge.pki.ed25519;

    let publicKey = Buffer(tx.pubKeyFrom, "base64");

    let signature = Buffer(tx.signature, "base64");

    var verified = ED25519.verify({
        message: tx.message,
        encoding: 'utf-8',
        signature: signature,
        publicKey: publicKey
    });

    if (!verified) {
        let msg = "Invalid signature!";
        throw new Error(msg);
    }

...

但是,经过长时间的调试和Google搜索,我很确定您不能在事务处理器函数中使用require语句

var forge = require('node-forge');

我还在stackoverflow Include external library file in Hyperledger Composer上发现了这个问题,但它没有提供完整的解决方案。

提前感谢您的时间

0 个答案:

没有答案