CorDapp 列表

List of CorDapps

我正在尝试识别节点上 运行 哪些 CorDapps
此信息在启动期间显示在控制台和日志中
Loaded CorDapps : blah-1.1.20, corda-core-2.0.0

有没有程序化的方法来获取该列表? (RPC?)

您可以使用 CordaRPCOps.registeredFlows 方法检索在节点上注册的流列表。

如果你想要一个 CorDapp 名称的列表,你可以编写一个流程,从节点的 cordapps 目录中读取它们的目录,如下所示:

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

    @Suspendable
    override fun call(): List<String> {
        val cordappDirectory = File("./cordapps")
        val cordappFiles = cordappDirectory.listFiles()
        return cordappFiles.map { file -> file.name }
    }
}

然后您将使用以下方法通过 RPC 检索 CorDapps 列表:

CordaRPCOps.startFlowDynamic(ReadFilesFlow::class.java)

请注意,这在使用模拟网络进行流量测试的情况下不起作用,因为当前目录 (./) 不会引用节点的基本目录。