Альтернатива включению внешних пакетов node.js в функции процессора транзакций Hyperledger Fabric - PullRequest
0 голосов
/ 30 августа 2018

Я новичок в ткани 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 , но он не дает полного решения.

Заранее спасибо за ваше время

...