0

我正在使用 Hyperledger Fabric 开发应用程序,其中用 nodeJS 编写的应用程序调用也用 nodeJS 编写的链代码函数。这个链码函数应该调用一个 Python 脚本,做一些事情并将结果写入链码函数。该链码函数应该将 Python 脚本返回的结果存储在账本上,并将成功存储状态返回给调用应用程序。我尝试通过以下方式使用nodeJS给出的子进程模块来做到这一点 -

async mergeModel(ctx, modelNumber1, modelNumber2) {
    console.info('============= START : Merge Model ===========');
    const modelAsBytes1 = await ctx.stub.getState(modelNumber1); // get the model from chaincode state
    const modelAsBytes2 = await ctx.stub.getState(modelNumber2); // get the model from chaincode state

    if (!modelAsBytes1 || modelAsBytes1.length === 0) {
        throw new Error(`${modelNumber1} does not exist`);
    }
    if (!modelAsBytes2 || modelAsBytes2.length === 0) {
        throw new Error(`${modelNumber2} does not exist`);
    }
    const spawn = require('child_process').spawn;
    const pythonProcess = spawn('python',['mergeModel.py', modelAsBytes1, modelAsBytes2]);
    pythonProcess.stdout.on('data', (data) => {
        console.log(data);
    });
}

python 脚本 mergeModel.py 存储在与链代码相同的目录中。但是,这并没有按预期调用 python 脚本。有什么我想念的吗。谢谢。

4

1 回答 1

1
> This chain code function should call a Python script, do something and
  written the results to the chaincode function.

这是非常不好的做法,请不要做这样的事情,因为它可能会影响交易执行。尝试在 Nodejs AppServer 中执行你的 python 脚本,一旦你得到结果,然后调用链代码

于 2019-10-14T11:13:14.413 回答