Я новичок в ткани Hyperledger. Мой вопрос: кто-нибудь знает самый простой способ использовать библиотеку внешних узлов в функциях процессора транзакций?
Каталог для моего проекта похож на следующую древовидную структуру:
myfabricproject /
расстояние /
функция /
Библиотека /
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 в функциях процессора транзакций
1032 * т.е. *
var forge = require('node-forge');
Я также нашел этот вопрос в stackoverflow Включите файл внешней библиотеки в Hyperledger Composer , но он не дает полного решения.
Заранее спасибо за ваше время