【问题标题】:How can I interact with a Corda node via RPC, using curl?如何使用 curl 通过 RPC 与 Corda 节点交互?
【发布时间】:2020-07-18 10:12:29
【问题描述】:

希望一切安好!我在 Slack 上问过这个问题,但有人建议我在这里问。

我有一个使用 bootstrapper 的 Corda 4.3 兼容区域设置,并且我已经设置了我的 node.conf 文件用户部分,如下所示:

rpcUsers = [
    { 
        username=user1, 
        password=password1, 
        permissions=[ ALL ] 
    }
]

我的 RPC 设置是:

rpcSettings {
    address="localhost:10201"
    adminAddress="localhost:10202"
}

我可以看到端口是开放的:

# nc -v localhost 10201 
localhost (127.0.0.1:10201) open
^Cpunt!

我的问题是:

  1. 是否可以连接到 Corda 节点并使用 RPC 执行 API 命令?
  2. 通过 API 命令我的意思是就像我连接到 Corda shell 一样,是这样吗?

谢谢,

【问题讨论】:

    标签: shell curl rpc corda


    【解决方案1】:

    SSH 是默认关闭的,你可以通过 node.conf 文件中的以下设置来启用它。

    sshd {
        port = <portNumber>
    }
    

    启用后,您可以使用 SSH 连接到节点并执行通常可以从节点的 shell 执行的所有命令。

    使用以下命令连接节点:

    ssh -p [portNumber] [host] -l [user]
    

    有关节点外壳的更多详细信息,请参阅此处的文档:https://docs.corda.net/docs/corda-os/4.4/shell.html

    【讨论】:

    • 谢谢。我已经启用了 SSH,所以这可能是一个选项。
    • 所以看起来启用了 SSH,它是最后一个启动的服务组件,在所有参与者节点服务组件都启动之后,所以检查我们是否有一个打开和监听的套接字可能会为对于我要求的保真度/准确性水平......如果不是,那么生命周期监控将是必经之路。
    【解决方案2】:

    你可以像this example一样创建一个SpringBoot网络服务器:

    1. 您创建一个RPC connection;它使用您在 node.conf 中标识的 RPC 用户凭据。
    2. RPC 连接被注入到您定义 API 的控制器中。
    3. 注入的 RPC 连接公开了一个 proxy,您可以将其用于许多事情,包括启动流程和查询保管库。查看StandardController 示例,了解与节点的各种 RPC 交互。您可以将自己的 API 添加到模板 CustomController
    4. webserver 是一个简单的 SpringBoot 应用程序。
    5. 当您使用此Gradle task 启动网络服务器时,它会将 RPC 连接注入控制器并在您在application.properties 文件中提供的端口上公开您的 API。
    6. 现在网络服务器正在运行,您可以使用 CURL 或 Postman 调用您的 API。

    【讨论】:

    • 感谢您的回复。我在一个容器中运行 Corda,并且添加 SpringBoot webserver 应用程序会使容器资源占用更重(据我目前所见)不是很多实用程序......让我这样说吧,我我试图在容器中执行一些 shell 脚本之前确定 Corda 服务已经启动,你能推荐一个更好/替代的方法吗?
    • 我正在阅读您在 Slack 上的帖子,我了解到您希望在节点完全启动时发出一些事件。 Corda 4.4 有一个新功能,您可以在其中创建服务并在该服务中注册节点生命周期事件;一旦你注册了这些事件,你就可以监听某个事件(例如节点完全启动)并在它被调度时执行一个动作。因此,在您的情况下,这将转化为使用您的节点生命周期事件观察器发出节点已完全启动的通知。
    • 阅读 my article 中的 Corda 服务生命周期监控部分,看看是否可以用来实现目标。
    猜你喜欢
    • 2019-07-29
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    相关资源
    最近更新 更多