如何在corda中仅存储节点特定的分类帐自定义数据?

时间:2017-09-04 07:07:19

标签: corda

我使用QueryableState在corda中创建了自定义表。例如IOUStates表。 我能够看到自定义信息存储在这种表中。 但我观察到,如果甲方和乙方正在进行交易,那么这个 自定义信息存储在两个地方,例如IOUStates 表格在nodeA分类帐以及nodeB&#39的分类帐中创建。 和自定义信息存储在partyA和PartyB的分类帐中。

我的问题是: -

如果某个交易正在从PartyA的节点处理,那么 我想存储部分交易的数据,即仅在partyA的Ledger。* 级别上自定义数据。即仅仅是partA的off-Ledger。

不应与partyB共享。

在简单的情况下,如何存储仅节点特定的分类帐自定义数据?

等待回复...

感谢。

1 个答案:

答案 0 :(得分:0)

有很多方法可以实现这一目标:

  1. 根本不要使用Corda!如果数据真的是偏离分类账,那你为什么要使用Corda?而是将其存储在单独的数据库中。当然,如果需要,您可以使用on-ledger数据“加入”它,因为on-ledger数据存储在SQL数据库中。
  2. 与第一点类似,但您可以使用jdbcSession()的{​​{1}}功能在节点的数据库中创建自定义表。您可以在流程中轻松访问此表格。
  3. 创建只有一个参与者的ServiceHub对象:要存储数据的节点。我称之为“单边”国家,即只有一方存储的国家。
  4. 最重要的是,如果您不想与对方共享某些数据,则不应在其他方可能看到的corda状态对象或附件中披露它。代替:

    • 在您的流程中,您可以使用封装在共享状态对象(例如IOU)中的数据来派生私有数据
    • 或者,如果在流程开始时提供数据,则使用上述方法之一在本地存储私有数据