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

如何在corda中仅存储特定于节点的分类账外自定义数据?,corda,Corda,我使用QueryableState在corda中创建了自定义表。e、 g.他的桌子。 我可以看到这种表中存储的自定义信息。 但我观察到,如果甲方和乙方正在进行交易,那么 自定义信息存储在两个位置,例如IOUStates 在nodeA账本和nodeB账本中创建表。 自定义信息存储在partyA和PartyB的分类账中 我的问题是: 如果正在从PartyA的节点处理某个事务,则 我想只在partyA的分类账中存储部分交易数据,即自定义数据。*。i、 e.仅限于甲方的分类账 它不应该与Party共享

我使用QueryableState在corda中创建了自定义表。e、 g.他的桌子。 我可以看到这种表中存储的自定义信息。 但我观察到,如果甲方和乙方正在进行交易,那么 自定义信息存储在两个位置,例如IOUStates 在nodeA账本和nodeB账本中创建表。 自定义信息存储在partyA和PartyB的分类账中

我的问题是:

如果正在从PartyA的节点处理某个事务,则 我想只在partyA的分类账中存储部分交易数据,即自定义数据。*。i、 e.仅限于甲方的分类账

它不应该与Party共享

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

等待一些答复


谢谢。

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

  • 根本不要用科尔达!如果数据确实是账外数据,那么为什么要使用Corda?相反,将其存储在单独的数据库中。当然,如果需要,您可以将其与账本数据“连接”,因为账本数据存储在SQL数据库中
  • 与第一点类似,只是您可以使用
    ServiceHub
    jdbcSession()
    功能在节点的数据库中创建自定义表。可以从流中轻松访问此表
  • 创建一个只有一个参与者的
    ContractState
    对象:要存储数据的节点。我称之为“单边”国家,即只有一方保存的国家
  • 最重要的是,如果您不想与对方共享某些数据,则不应在另一方可能看到的状态对象或附件中披露这些数据。相反:

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