【问题标题】:how to differentiate transactions that the node is involved in or broadcasted vs the chain of txs如何区分节点参与或广播的交易与 txs 链
【发布时间】:2018-01-19 17:09:32
【问题描述】:

问题:有没有办法区分节点参与或广播的交易与 txs 链

场景:

  1. A 和 B 执行涉及状态 X 的事务 #1
  2. B 和 C 执行涉及状态 X 的事务 #2
  3. C 和 D 执行涉及状态 X 的事务 #3(监管者作为 FinalityFlow 的额外参与者)

当监管机构运行下面的代码来查询其保险库时,意图只获得 tx #3,它实际上获得了所有 3 笔交易。没有办法区分这 3 个 txs,只能过滤 tx #3。

val transactionsSnapshot = serviceHub.validatedTransactions.track().snapshot

有没有办法区分节点所涉及的交易、由于从某个节点广播而收到的交易以及由于广播而您也收到的属于链的一部分的交易。

随后,当 SGX 到来时,只有在出处期间收到用于验证/处理的交易才会在安全飞地中,而节点参与并作为广播的一部分接收的交易会存在于保险库存储中查询?

【问题讨论】:

    标签: corda


    【解决方案1】:

    要广播交易,你可能有类似这样的东西 ReportToRegulatorFlow。但此外,在响应者方面,您可以这样做

    val recorded = subFlow(ReceiveTransactionFlow(otherSideSession, true, StatesToRecord.ONLY_RELEVANT))
    
    // Currently there's no way to distiguish transactions that are from a tx that was broadcasted versus ones from walking the chain and kept in storage
    // We use memo/notes to keep track of this to differentiate during tx snapshot enquiry
    
    serviceHub.vaultService.addNoteToTransaction(recorded.id, "BROADCASTED")
    

    只查询广播的 tx。

    val transactionsSnapshot = serviceHub.validatedTransactions.track().snapshot
    val broadcastedTx = transactionsSnapshot.filter{ serviceHub.vaultService.getTransactionNotes(it.tx.id).firstOrNull() == "BROADCASTED" }
    

    只查询参与的Tx。

    val participatedTx = transactionsSnapshot.filter{ it.tx.requiredSigningKeys.any { resolveKey(it) != null && resolveKey(it) == ourIdentity} }  
    

    【讨论】:

      【解决方案2】:

      还没有直接尝试我将要提出的全部建议;但我已经实现了一些非常相似的东西....实现一个基于 VaultQueryCriteria 的未来,它只观察参与者 C 和 D 的状态。在每次这样的更新中,检索事务(从节点已知的经过验证的事务列表中),其中输出状态 = 从 VaultQueryCriteria 返回的状态。

      可能有一种更流畅的方式来做到这一点;但我基本上对我的要求采取了非常相似的方法......似乎工作令人满意。警告讲师:我对 V2.0 还不是很熟悉。

      只是一个想法-希望它有所帮助。

      【讨论】:

      • 我不希望只观察 C 和 D 之间的状态。无论参与者如何,我都希望能够区分和/或过滤我作为广播/额外接收者收到的那些 tx FinalityFlow 与那些存储在存储中的 txs 相比,这些 txs 是作为依赖关系验证的一部分而遍历链的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多