【问题标题】:How to access referenced object from RPC client in corda?如何从corda中的RPC客户端访问引用的对象?
【发布时间】:2020-03-28 21:58:59
【问题描述】:

在创建一些状态的流程中,我将引用状态添加到其他一些对象(在我的例子中是一些自定义帐户)。因此,当我通过 trackBy() 方法在 rpc 客户端上收到此状态时,我想知道它引用的是什么对象。 据我了解,引用存在于事务中,而不是状态中。从 RPC 客户端中的状态获取事务的正确方法是什么?

【问题讨论】:

    标签: corda


    【解决方案1】:

    不确定是否可以直接从客户端执行此操作,您可能需要编写一个接受事务 ID 并返回引用列表的流程。
    所以在你的流程中,你会有类似的东西:

    SignedTransaction tx = this.getServiceHub().getValidatedTransactions()
                               .getTransaction(SecureHash.parse("Your Tx Id"));
    ArrayList<StateRef> refs = tx.getReferences();
    

    【讨论】:

    • 感谢您的回答,阿德尔。所以我需要从 RPC 客户端调用一些技术流程来获取我的状态的引用?添加对我的状态的引用并检查合同的一致性似乎更容易。在这种情况下,我将能够从状态中获取引用的对象,并且可以非常确定这就是事务引用中的内容。
    • 您在评论中提到的两种情况之间存在差异。
    • 参考状态: 被添加到交易中,以便可以在合约内部访问它们并在验证规则中使用。 docs.corda.net/design/reference-states/design.html
    • StatePointer: 基本上是一个指向状态的指针,所以你可以有一个状态,它的属性是指向另一个状态的指针(它可以是静态指针或线性指针)。在这里阅读:docs.corda.r3.com/design/linear-pointer/design.html
    • 非常有用的链接,谢谢!在我看来,为了共识层的一致性需要参考状态(公证人验证指向实际状态的参考等)和用于实用目的的 StateRef(我真正需要的)。
    猜你喜欢
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    相关资源
    最近更新 更多