如何在 Corda 中为 CorDapp 提供自定义配置?

How to provide a CorDapp with custom config in Corda?

我需要在 Corda 流程中与外部系统通信,因此应该有一种方法可以提供一些配置(例如外部 API 的用户名和密码)。例如,它可能是 .properties 或 .yaml 文件。

是否有最佳做法?甚至样本?

Corda 3 没有为节点提供任意配置文件的内置支持。将使用 CorDapp 配置文件在 Corda 4 中添加对此的支持:https://docs.corda.net/head/cordapp-build-systems.html#cordapp-configuration-files.

同时,您可以将本地文件放在节点目录中,并在流中直接从中读取。例如,如果我在节点的根目录中放置一个名为 properties.txt 的配置文件,然后我可以使用以下流程读回其内容:

@InitiatingFlow
@StartableByRPC
class ReadPropertiesFlow : FlowLogic<String>() {
    override val progressTracker = ProgressTracker()

    @Suspendable
    override fun call() = File("./properties.txt").readText()
}

节点的工作目录始终是节点的根目录(使用 MockNetwork 进行流量测试时除外)。

或者,您可以将信息直接存储在节点的数据库中。有关示例,请参阅 NODE_PROPERTIES table in database