我是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上发现了这个问题,但它没有提供完整的解决方案。
提前感谢您的时间