我对Corda有多个问题:
h2
配置以选择build.gradle
文件吗?corda
网络中有一个交易,我希望根据custom fields
验证某些内容,根据需要对所有3方sender
触发的查询进行验证,receiver
,notary
如何获取所有3个节点的会话?我可以使用sender
getServiceHub().jdbcSession()
的会话
答案 0 :(得分:2)
您可以在h2Port
中设置deployNodes
选项:
node {
name "O=PartyA,L=London,C=GB"
advertisedServices = []
p2pPort 10005
rpcPort 10006
webPort 10007
h2Port 10008
cordapps = ["net.corda:corda-finance:$corda_release_version"]
rpcUsers = [[ user: "user1", "password": "test", "permissions": []]]
}
这是您需要的配置吗?
每个节点的数据库都是设计私有的,不能从另一个节点查询。相反,您需要作为流的一部分与其他节点进行通信,以使它们在其结束时启动响应流,以便查询自己的数据库并将结果发回。类似的东西:
public class CollectDBDataFlow {
@InitiatingFlow
@StartableByRPC
public static class Initiator extends FlowLogic<List<Object>> {
Party counterparty;
public Initiator(Party counterparty) {
this.counterparty = counterparty;
}
@Suspendable
@Override public List<Object> call() {
// TODO: Implement queryMyDatabase to perform querying.
Object myDBData = queryMyDatabase();
FlowSession counterpartySession = initiateFlow(counterparty);
Object theirDBData = counterpartySession.receive(Object.class);
return ImmutableList.of(myDBData, theirDBData);
}
}
@InitiatedBy(Initiator.class)
public static class Responder extends FlowLogic<Void> {
private FlowSession counterpartySession;
public Responder(FlowSession counterpartySession) {
this.counterpartySession = counterpartySession;
}
@Suspendable
@Override
public Void call() {
// TODO: Implement queryMyDatabase to perform querying.
Object myDBData = queryMyDatabase();
counterpartySession.send(myDBData);
return null;
}
}
}
公证人的角色不是要查询数据,而是要防止双倍花费。你可以使用上面(2)中描述的方法在技术上做到这一点,但是不建议这样做。你想要实现什么目标?
自动完成应该会自动显示,就像任何其他库一样。