我使用cordapp示例设置了三个节点。这三个节点位于单独的机器上。我试图连接三个,但找不到合适的测试,将证明所有三个节点都连接。
发布一个 主要问题是我无法证明partyA节点已连接到正确的网络映射。 (在这一点的背面,如果聚会节点未连接到网络映射,是否会出现测试失败? - 这将帮助我证明两个节点(网络映射和聚会)是最小连接的。)
第2期 此外,我试图从partyA向partyB发送交易。 我得到的错误是
No matching constructor found:
- [int, Party]: Could not parse as a command: Could not find a Party with name C=US,L=New York,O=PartyB
at [Source: N/A; line: -1, column: -1]
我改变了什么 唯一的变化是partyA / partyB的node.conf文件,它们包含以下行:
networkMapService {
address="<controller-ip>:10002"
legalName="O=Controller,L=London,C=GB"
}
更新
通过这里的文档阅读我发现If null, or missing the node is declaring itself as the NetworkMapService host.
- 暗示问题一的解决方案,但是我仍然无法找到证明节点已经提交到网络地图的方法;无论是本身还是其他。
答案 0 :(得分:0)
检查您是否连接到正确的网络映射的一种方法是编写连接到节点的RPC客户端并调用CordaRPCOps.wellKnownPartyFromX500Name
以检查它是否与其他一方在同一网络映射中。例如:
val partyBX500Name = CordaX500Name.parse(partyBName)
val partyB = rpcProxy.wellKnownPartyFromX500Name(partyBX500Name)
您可以在此处查看示例:https://github.com/joeldudleyr3/ping-pong/blob/master/src/main/kotlin/com/pingpong/Client.kt。
或者,您可以按如下方式打印网络上所有节点的名称:
val networkMapSnapshot = proxy.networkMapSnapshot()
val nodeNames = networkMapSnapshot
.flatMap { it.legalIdentities }
.map { it.name }