是否可以在corda中添加审核员同行?

是否可以在corda中添加审核员同行?,corda,Corda,我想在corda中添加一些审核员同行。我的用例是否可能 目前网络有两个对等点:partyA和partyB。大约有100笔交易涉及双方。让我们稍后再说一个partyC(审计员)加入网络:是否可以让partyC访问账本中涉及partyA和partyB的所有已过账(和未来)交易?您应该使用观察者节点功能。请参见教程和可观察状态示例 在您的情况下,当审计师首次加入网络时,partyA或partyB需要以下流程将过去的所有交易发送给审计师: @InitiatingFlow @StartableByRPC

我想在corda中添加一些审核员同行。我的用例是否可能


目前网络有两个对等点:partyA和partyB。大约有100笔交易涉及双方。让我们稍后再说一个partyC(审计员)加入网络:是否可以让partyC访问账本中涉及partyA和partyB的所有已过账(和未来)交易?

您应该使用观察者节点功能。请参见教程和可观察状态示例

在您的情况下,当审计师首次加入网络时,
partyA
partyB
需要以下流程将过去的所有交易发送给审计师:

@InitiatingFlow
@StartableByRPC
class SendAllPastTransactionsToAuditor : FlowLogic<Unit>() {
    @Suspendable
    override fun call() {
        // We extract all existing transactions from the vault.
        val transactionFeed = serviceHub.validatedTransactions.track()
        transactionFeed.updates.notUsed()
        val transactions = transactionFeed.snapshot

        // We send all the existing transactions to the auditor.
        val auditor = serviceHub.identityService.partiesFromName("Auditor", true).single()
        val session = initiateFlow(auditor)
        transactions.forEach { transaction ->
            subFlow(SendToAuditorFlow(session, transaction))
        }
    }
}

@InitiatingFlow
class SendToAuditorFlow(val session: FlowSession, val transaction: SignedTransaction) : FlowLogic<Unit>() {
    @Suspendable
    override fun call() {
        subFlow(SendTransactionFlow(session, transaction))
    }
}

@InitiatedBy(SendToAuditorFlow::class)
class ReceiveAsAuditorFlow(private val otherSideSession: FlowSession) : FlowLogic<Unit>() {
    @Suspendable
    override fun call() {
        // We record all the visible states in the transactions we receive.
        subFlow(ReceiveTransactionFlow(otherSideSession, true, StatesToRecord.ALL_VISIBLE))
    }
}
或者,
partyA
partyB
可以从其节点的数据库中提取所有过去的事务,并将它们直接发送给审计员。然后,审计员可以在平台外检查交易及其签名

@InitiatingFlow
@StartableByRPC
class RegularFlow : FlowLogic<Unit>() {
    @Suspendable
    override fun call() {
        val transaction: SignedTransaction = TODO("Regular flow activity to agree transaction.")

        val auditor = serviceHub.identityService.partiesFromName("Auditor", true).single()
        val session = initiateFlow(auditor)
        subFlow(SendToAuditorFlow(session, transaction))
    }
}