Hyperledger Composer中的多个事务

时间:2017-10-28 03:30:43

标签: node.js transactions promise hyperledger-fabric hyperledger-composer

我需要快速进行多笔交易

我正在Hyperledger Composer上开发 Node.JS 应用程序。我每秒发送疯狂的交易量(11,500),但速度相当慢。我正在使用Hyperledger Composer教程中的代码和网络上的一些示例,但似乎我无法让它更快。

我的模型非常简单,如下:

awk -F"[][]" '/Oscar/{gsub(/, /,",",$2);print $2}'  Input_file

我的script.js是以下

participant Client identified by id {
  o String id
}

asset Wallet identified by id {
  o String id
  o Double balance
  --> Client owner
}

而且我应该在它们之间转移资金,所以我的Node.js代码进行交互具有以下逻辑:

  1. 连接到Hyperledger Fabric
  2. 获取网络定义
  3. 加载转钱的钱包
  4. 加载正在收款的钱包
  5. 进行转移
  6. 执行交易
  7. 我觉得我的代码做得不好,它相当慢,而且它通常会压倒我的Hyperledger Fabric实例。这是NodeJS代码:

    function transferFunds(transfer){
        //Transfer the funds
        transfer.from.balance -= transfer.amount;
        transfer.to.balance += transfer.amount;
    
        return getAssetRegistry('org.acme.Wallet')
        .then(function(assetRegistry){
            //persist the state of the Wallet
            assetRegistry.update(transfer.from);
            assetRegistry.update(transfer.to);
        });
         }
    

    基本上,我想知道:

    1. 我如何改进它以允许多次交易而不连接多次?
    2. 我的模型可以优化以减少交易规模或不必预先加载两个钱包吗?
    3. 非常感谢你!

1 个答案:

答案 0 :(得分:0)

我没有看到为transfer交易建模的内容。

assetRegistry.update()完成两次,也许可以使用updateAll API调用? - > https://hyperledger.github.io/composer/jsdoc/module-composer-client.AssetRegistry.html可能有所帮助。

我可以理解为什么你的Node.js应用程序会连接到业务网络并进行交互;但是你为什么不独立创建你的JSON事务并只使用REST来提交你的交易?例如,使用Node-Red https://hyperledger.github.io/composer/integrating/node-red.html从事务文件中集成/加载您的JSON(如果这是您想要做的事情,从钱包转移到钱包)。因此,要安装Node Red,请使用npm install node-red -g然后启动它node-red并从安装选项卡下选择(从调色板中)Node红色节点'node-red-contrib-fs'(从目录中读取文件)文件系统)。在'文件模式'中使用模式字符串*.json

回答q2。是的,您的模型可以更好地建模。这可能是有用的 - > When to call getAssetRegistry to update assets (and the participants equivalent)