【问题标题】:How to see which network map you are connected to?如何查看您连接到哪个网络地图?
【发布时间】:2018-02-06 14:55:44
【问题描述】:

我使用 cordapp 示例设置了三个节点。这三个节点位于不同的机器上。我正在尝试将三个节点连接起来,但找不到合适的测试来证明所有三个节点都已连接。

一期 主要问题是我无法证明partyA 节点连接到正确的网络地图。 (在这一点的后面,如果聚会节点未连接到网络地图,是否会有测试失败? - 这将帮助我证明两个节点(网络地图和聚会)至少连接。)

问题 2 除此之外,我还尝试将交易从甲方发送到乙方。 我得到的错误如下

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. - 暗示了issue one的解决方案,但是我仍然找不到证明节点已提交到网络地图的方法;无论是它本身还是其他。

【问题讨论】:

    标签: networking corda


    【解决方案1】:

    检查您是否连接到正确的网络映射的一种方法是编写一个连接到一个节点并调用CordaRPCOps.wellKnownPartyFromX500Name 的 RPC 客户端来检查它是否与其他方在同一个网络映射上。例如:

    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 }
    

    【讨论】:

    • 有没有办法查看单个节点可以看到的所有 x500 名称?我使用了命令run wellKnownPartyFromX500Name x500Name: "O=PartyB,L=New York,C=US",但只有在您知道您正在寻找的x500 时才有效。有没有办法获取你可以看到的所有节点的列表?
    • 当然。编辑了我上面的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    相关资源
    最近更新 更多