Corda 我是否可以在某个节点上拥有一个帐户,并在该帐户上进行交易,而不使状态保留在帐户节点上?
我在和科达的客户合作。 在我的场景中,帐户在节点M上创建,并与节点D共享。 节点D运行状态创建流,其中帐户是参与者。 通过对解决方案进行建模,事务必须在节点D上注册,而不是在节点M上注册。 问题是,当使用属于节点M的帐户时,需要节点M的会话。当我不在响应程序流上执行ReceiveFinalityFlow时,会生成一个意外的FlowEndException异常 我需要能够通过accountId进行Vault查询 问题是,我是否可以在一个节点上拥有一个帐户,并与该帐户进行交易,而不让状态保留在帐户节点上Corda 我是否可以在某个节点上拥有一个帐户,并在该帐户上进行交易,而不使状态保留在帐户节点上?,corda,Corda,我在和科达的客户合作。 在我的场景中,帐户在节点M上创建,并与节点D共享。 节点D运行状态创建流,其中帐户是参与者。 通过对解决方案进行建模,事务必须在节点D上注册,而不是在节点M上注册。 问题是,当使用属于节点M的帐户时,需要节点M的会话。当我不在响应程序流上执行ReceiveFinalityFlow时,会生成一个意外的FlowEndException异常 我需要能够通过accountId进行Vault查询 问题是,我是否可以在一个节点上拥有一个帐户,并与该帐户进行交易,而不让状态保留在帐户节
FinalityFlow
如果您没有为每个参与者提供FlowSession
(请参阅),并且您的帐户是参与者,则会抛出错误;因此,您需要为节点M
提供FlowSession
李>
M
传递了FlowSession
,因此应该有一个响应程序流,其中节点M
调用ReceiveFinalityFlow
;否则,您的启动器流将挂起,因为FinalityFlow
将执行send()
将事务发送到M
,而M
没有receive()
调用(执行ReceiveFinalityFlow
)李>
ReceiveFinalityFlow
并将输入参数statesToRecord
设置为NONE
来实现所要求的要求;默认情况下,该参数设置为“仅相关”(请参见流定义)。说明了各种类型的StatesToRecord
李>
if
语句,如果getOurIdentity()
是nodeM
,则使用statesToRecord==NONE
调用ReceiveFinalityFlow
(因为您不希望M
记录状态),如果是节点D
,则使用statesToRecord==RELEVANT
调用ReceiveFinalityFlow
(因为您希望D
记录状态)李>
M
将执行您的版本;编写响应程序流通常是另一个节点的责任;他们的开发人员可以编写自己版本的响应程序,在其中使用statesToRecord==RELEVANT
调用ReceiveFinalityFlow
(意思是节点M
将注册结果状态)。阅读中的第一个这不是真的李>
M
:
- 未在其事务存储中注册生成的事务
- 未在其vault中注册结果状态
调用ReceiveFinalityFlow
ReceiveTransactionFlow
调用ReceiveTransactionFlow
ResolveTransactionFlow
将ResolveTransactionFlow
从statesToRecord
覆盖到NONE
,这句话让我很担心;我只想确保当您在节点RELEVANT
的M
中将ReceiveFinalityFlow
设置为statesToRecord
时,它不会记录事务或状态NONE
你好,阿德尔,非常感谢。成功了。我检查了节点M,没有保存状态。项目7中的问题未得到证实。没有一个的价值得到尊重。