我能够在fabric-sdk-java-1.1.0
(可从github获得(中成功运行End2endIT
。
在End2endIT
中,设置完成后,我们peerOrg1
创建并连接到FOO
通道,安装,实例化链代码,然后执行一些操作。然后我们有一个不同的组织,peerOrg2
,做类似的事情,但在不同的渠道上,BAR
.
为了测试连接到同一频道的两个组织,我稍微修改了End2endIT
以测试这一点,以便peerOrg1
和peerOrg2
都将连接到FOO
通道。
peerOrg1
没有任何变化.对于peerOrg2
,由于FOO
频道已经由peerOrg1
创建,我调用
Channel newChannel = sampleStore.getChannel(client, name);
获取频道而不是呼叫client.newChannel
。
此外,无论在哪里调用channel.getPeer()
和channel.getEventHubs()
,我都确保只使用正确起源(对于peerOrg2
(的peers
和eventHubs
。
由于链码已经由peerOrg1
安装,因此无需再次安装链码,但确实需要为刚刚加入通道的peerOrg2
的两个对等方实例化链码。
将InstantiationProposal
发送给对等方(或peerOrg2
(并成功返回响应时没有问题。
但是当将交易发送到订单以提交(InstantiationProposal
(时,我得到了
Caused by: org.hyperledger.fabric.sdk.exception.TransactionEventException: Received invalid transaction event. Transaction ID 897902a02ad4285e9827f0cfa14244e2fc5fa21f9819f3be4f698f94d98c185c status 10
at org.hyperledger.fabric.sdk.Channel$TL.lambda$2(Channel.java:4458)
... 3 more
我的方向是否正确?错误中的状态10
是什么意思?
链码只需要在同一通道中实例化一次,因此不需要第二次实例化。