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散列不匹配。
我认为散列会发生变化,因为第二个对等体再次执行相同的代码,其中生成随机字符串并进行散列。
任何帮助/评论将不胜感激。 感谢
答案 0 :(得分:2)
一些事情:
1)不确定您的认可政策是什么,但假设它是默认值,那么一般来说您只需要请求组织中的单个同行认可
2)最重要的是你不应该在你的链码中使用非确定性函数。如果您实际上有多个组织并且认可策略需要来自多个组织的签名,那么您的事务无论如何都会失败(因为来自不同组织的对等体会因您使用的非确定性唯一ID函数而生成不同的响应)。在这种情况下,由于您只需要一次认可,状态可能会更新,但会使用第一个响应的值。