Hyperledger Fabric 2同一组织的同行造成链码和couchdb的问题

时间:2018-05-17 09:48:13

标签: node.js hyperledger-fabric hyperledger

Hyperledger Fabric node.js sdk问题我面临一个非常奇怪的问题。

现在,我的网络包括:

a。)单一组织 b。)该组织的2个对等体(peer0和peer1)。 c。)1 orrrer d。)1 ca

当使用node.js sdk时,两个对等体都加入了频道,如下面的代码片段所示:

var fabric_client = new Fabric_Client();
var channel = fabric_client.newChannel(channelName);
var peer = fabric_client.newPeer('grpc://localhost:7051');
var peer2 = fabric_client.newPeer('grpc://localhost:8051');
channel.addPeer(peer);
channel.addPeer(peer2);
var order = fabric_client.newOrderer('grpc://localhost:7050')
channel.addOrderer(order);

我正在调用一个用golang编写的链代码函数,它生成一个唯一的id,创建它的哈希值(SHA256)并保存在couchdb中并将该哈希记录到容器中,如下所示:

"password":"5ef32e670c38727ce5011dad62ff1a150362433789fdd878f2623a08bbdc990b"

问题是,当node.js sdk配置了单个对等体时。它会在日志显示的couchdb中保存相同的哈希值。但是当配置了2个对等体时,如上面的sdk代码片段所示。记录的散列和couchdb散列不匹配。

我认为散列会发生变化,因为第二个对等体再次执行相同的代码,其中生成随机字符串并进行散列。

任何帮助/评论将不胜感激。 感谢

1 个答案:

答案 0 :(得分:2)

一些事情:

1)不确定您的认可政策是什么,但假设它是默认值,那么一般来说您只需要请求组织中的单个同行认可

2)最重要的是你不应该在你的链码中使用非确定性函数。如果您实际上有多个组织并且认可策略需要来自多个组织的签名,那么您的事务无论如何都会失败(因为来自不同组织的对等体会因您使用的非确定性唯一ID函数而生成不同的响应)。在这种情况下,由于您只需要一次认可,状态可能会更新,但会使用第一个响应的值。

相关问题