有关构建CordApps应用程序的设计问题

问题描述 投票:0回答:2

我是Corda的新手并且开始了解它。所以我所理解的只有重要的数据才能进入区块链。例如交换要共享的实物合同。我只应该创建合同的状态。因为这很重要,应该是不可改变的。

// From the example on CORDA site
flowProgressHandle<SignedTransaction> flowHandle = rpcOps
                    .startTrackedFlowDynamic(TestFlow.Initiator.class, iouValue, otherParty);
 //so this is  how flow would begin I'll pass the value of the otherParty and and I'll get my node information in the TestFlow.Initiator class something like this
IOUState iouState = new IOUState(iouValue, getServiceHub().getMyInfo().getLegalIdentities().get(0), otherParty);

现在getServiceHub()。getMyInfo()。getLegalIdentities()。get(0) - >这给了我自己的节点作为派对,因为IOUstate构造函数接纳贷方和所有者。

如何获得有关所有者的更多信息?就像他的职业或爱好在哪里可以存储它来获得它?在CORDA示例中,我看到他们在这里提供了名称,将兴趣爱好和职业放在这里是没有意义的。如何解决这个问题。我想发送和接收Singed

node {
        name "O=PartyA,L=London,C=GB"
        advertisedServices = []
        p2pPort 10005
        rpcPort 10006
        webPort 10007
        cordapps = ["net.corda:corda-finance:$corda_release_version"]
    }

现在另一个问题是如何显式初始化CordaRPCOps rpcOps ???因为似乎需要开始的事情。

现在如果我想获得下面的所有合同到partyA对STATE进行查询,以便从H2 DB获得结果?我是否也不能将各方存储在与您正在共享的合同的STATE的一对多关系的区块链中?我怎么做?

corda
2个回答
0
投票

那里有几个问题......但我会回答“如何明确初始化CordaRPCOps rpcOps?” - 答案是你不能(你不应该)明确地创建一个这样的实例。如果您通过RPC接口连接到正在运行的corda节点,或者您在Corda“Flow”中,您将获得一个。

我猜你想要连接到一个节点并获得一个实例 - 这就是我在https://github.com/ragmondo/cordaftp/blob/3d1fd9f636d85803206cae18b522b0c4884d2453/src/main/kotlin/net/corda/cordaftp/Sender.kt#L21中的表现

import net.corda.client.rpc.CordaRPCClient
import net.corda.core.messaging.CordaRPCOps
import net.corda.core.utilities.NetworkHostAndPort


fun loginToCordaNode(args: Array<String>): CordaRPCOps {
    val nodeAddress = NetworkHostAndPort.parse(args[0])
    val client = CordaRPCClient(nodeAddress)
    return client.start("user1", "test").proxy
}

显然适当地更改user1test,但正如您所看到的,这会返回CordaRPCOps类型的对象


0
投票

由于^ rich已经回答了初始化RPC Ops,我将回答其他部分。

我们最终使用NODE_PROPERTIES表来存储与节点相关的信息。我们在corda 3.1做到这一点可能有更好的方法在最新版本的corda中做到这一点,我不太确定。

NODE_PROPERTIES表中,您可以存储任何键值对,只要它们不与用于内部目的的键冲突即可。我们调整了我们的jenkins工作,它现在将在节点分类帐和updateNODE_PROPERTIES上执行sql脚本,并在引导完成后使用所需的适当值。然后,您可以使用jdbc轻松阅读表格,并根据需要随意更新。

另一种方法是,创建corda-service并在其构造函数中执行您要更新的sql或创建任何合理的信息表。将此作为单独的cordapp并在任何节点上部署。您可以将sql脚本抽象出来并将其放在云中的某个位置并根据某个键下载它,这可能是您的节点名称,这样每个节点都将使用它自己的预定义脚本。

© www.soinside.com 2019 - 2024. All rights reserved.