corda v3文档描述了交易撕裂和使用默克尔树在交易期间'隐藏'信息。具体来说,使用的示例是在验证交易期间对敏感数据隐藏敏感数据。
Corda框架是否使用Merkle树支持隐藏信息签署反派节点?或者,当完全签名的交易连接到反党节点时,状态信息的一个子集可以隐藏吗?当完全签名的事务分配给其他方时,"修订"级别可以随着反派节点而变化,或者状态必须相同?
在科达(Corda(中,交易是更新分类帐的建议。仅当以下情况下,只有:
才能提交交易建议。- 它不包含双重根本
- 它在合同上是有效的
- 它由所需的各方签署
简单的答案是,这取决于您的合同代码。您当然可以使用该框架来构建过滤交易,并将其发送给交易对手进行签名。但是,它们只有在合同上有效时才会签名。
我认为您会发现这条路线的问题,因为您本质上要求交易对手签署某些东西,而无需他们知道他们在签名,例如该交易可能包括一组隐藏的州转移其现金。
您可以查看其他加密层,并且只能与要查看敏感数据的对手共享密钥。
corda还支持使用流框架发送数据,因此您可以在交易之外分别发送敏感数据。
在您的最后一点上,一旦签署了交易,就不会在不使交易无效的情况下更改。
最后,查看Mike Hearn的这篇博客文章-https://www.corda.net/2017/06/corda-sgx-privacy-update/这解决了不使用过滤
但是,在任何撕裂的交易中,您至少都有能力检查某个组的所有组件(输入,输出,命令,附件...(是否已被拆除。例如
@InitiatingFlow
@StartableByRPC
class Initiator(val counterparty: Party) : FlowLogic<Unit>() {
@Suspendable
override fun call() {
val notary = serviceHub.networkMapCache.notaryIdentities[0]
val txBuilder = TransactionBuilder(notary)
.addOutputState(TemplateState(), TemplateContract.ID)
.addCommand(TemplateContract.Commands.Action(), ourIdentity.owningKey)
val partlySignedTx = serviceHub.signInitialTransaction(txBuilder)
// We filter out the outputs, which are of type `TransactionState<ContractState>`.
val filteredTx = partlySignedTx.buildFilteredTransaction(Predicate {
when (it) {
is TransactionState<ContractState> -> false
else -> true
}
})
val session = initiateFlow(counterparty)
val signature = session.sendAndReceive<TransactionSignature>(filteredTx).unwrap { it }
val fullySignedTx = partlySignedTx.withAdditionalSignature(signature)
subFlow(FinalityFlow(fullySignedTx))
}
}
@InitiatedBy(Initiator::class)
class Responder(val session: FlowSession) : FlowLogic<Unit>() {
@Suspendable
override fun call() {
val filteredTx = session.receive<FilteredTransaction>().unwrap { it }
// We check that all inputs are visible before accidentally signing something away.
filteredTx.checkAllComponentsVisible(ComponentGroupEnum.INPUTS_GROUP)
val signature = serviceHub.createSignature(filteredTx)
session.send(signature)
}
}
您仍然无法验证交易的智能合约,但是您至少可以确保您没有通过签署来消费任何自己的投入。
您可以以不同的方式使用此方法。例如,您可以检查仅附件是否已被拆除,附件可能包含不允许交易对手的秘密数据。