gpt4 book ai didi

java - CORDA:对参与交易的各方调用自定义查询

转载 作者:行者123 更新时间:2023-12-02 02:31:45 26 4
gpt4 key购买 nike

我有多个关于 Corda 的问题:

  1. 我们可以预定义 h2 配置以在 build.gradle 文件中选择吗?
  2. 我的 corda 网络中有一项交易,我想根据自定义字段验证某些内容,验证必须基于需要在所有查询上触发的查询进行3方发送者接收者公证人我如何获取所有3个节点的 session ?我可以使用 getServiceHub().jdbcSession()
  3. 提取 sender 的 session
  4. 向公证人查询自定义字段的最建议方式是什么?可以通过创建子流程来完成吗?如果可以,那么如何实现?
  5. 我们有验证公证人和非验证公证人,我们在哪里实际使用公证人进行验证?我们在哪里编写验证代码?
  6. 我们如何在intellij中为corda的java api启用自动提示?

最佳答案

  1. 您可以在 deployNodes 中设置 h2Port 选项:

    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": []]]
    }

    这是您需要的配置吗?

  2. 每个节点的数据库在设计上都是私有(private)的,不能从另一个节点查询。相反,您需要与其他节点进行通信,作为流程的一部分,使它们在其一端启动响应流,在其中查询自己的数据库并将结果发回。像这样的东西:

    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;
    }
    }
    }
  3. 公证人的作用不是查询数据,而是防止双花。从技术上讲,您可以使用上面 (2) 中描述的方法来完成此操作,但不建议这样做。你想实现什么目标?

  4. 验证逻辑已写入平台中。请参阅https://github.com/corda/corda/blob/release-V1/node/src/main/kotlin/net/corda/node/services/transactions/ValidatingNotaryFlow.kt .

  5. 自动完成应该自动出现,就像任何其他库一样。

关于java - CORDA:对参与交易的各方调用自定义查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46986655/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com