如何在corda中从RPC客户端访问引用的对象?

如何在corda中从RPC客户端访问引用的对象?,corda,Corda,在创建某个状态的流程中,我将引用状态添加到某个其他对象(在我的示例中是某个自定义帐户)。因此,当我通过trackBy()方法在rpc客户机上接收到这个状态时,我想知道它引用了什么对象。 据我所知,引用存在于事务中,而不是状态中。从RPC客户端的状态获取事务的正确方法是什么?不确定是否可以直接从客户端获取事务,您可能需要编写一个接受事务Id并返回引用列表的流。 所以在你的流程中,你会有这样的东西: SignedTransaction tx = this.getServiceHub().getVal

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

不确定是否可以直接从客户端获取事务,您可能需要编写一个接受事务Id并返回引用列表的流。
所以在你的流程中,你会有这样的东西:

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

谢谢你的回答,阿德尔。所以我需要从RPC客户端调用一些技术流来从我的状态获取引用?似乎更容易添加对我所在州的引用并检查合同的一致性。在这种情况下,我将能够从状态中获取引用对象,并且可能非常确定这是事务引用中的内容。您在评论中提到的两种场景之间存在差异。引用状态:添加到事务中,以便可以在合同中访问它们,并在验证规则中使用。StatePointer:基本上是一个指向一个状态的指针,因此您可以拥有一个带有属性的状态,该属性是指向另一个状态的指针(可以是StaticPointer或LinearPointer)。阅读这里:非常有用的链接,谢谢!在我看来,引用状态是为了共识层的一致性(公证人验证指向实际状态的引用等),StateRef是为了实用目的(我真正需要的)。