我是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的一对多关系的区块链中?我怎么做?
那里有几个问题......但我会回答“如何明确初始化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
}
显然适当地更改user1
和test
,但正如您所看到的,这会返回CordaRPCOps
类型的对象
由于^ rich已经回答了初始化RPC Ops,我将回答其他部分。
我们最终使用NODE_PROPERTIES
表来存储与节点相关的信息。我们在corda 3.1
做到这一点可能有更好的方法在最新版本的corda中做到这一点,我不太确定。
在NODE_PROPERTIES
表中,您可以存储任何键值对,只要它们不与用于内部目的的键冲突即可。我们调整了我们的jenkins工作,它现在将在节点分类帐和updateNODE_PROPERTIES
上执行sql脚本,并在引导完成后使用所需的适当值。然后,您可以使用jdbc
轻松阅读表格,并根据需要随意更新。
另一种方法是,创建corda-service
并在其构造函数中执行您要更新的sql或创建任何合理的信息表。将此作为单独的cordapp并在任何节点上部署。您可以将sql脚本抽象出来并将其放在云中的某个位置并根据某个键下载它,这可能是您的节点名称,这样每个节点都将使用它自己的预定义脚本。