R3- 没有公证人签名的 Corda 交易
R3- Corda transaction without notary signature
我是Corda新手,想详细了解公证人的作用。根据文件中的说法,例如甲方和乙方之间发生一笔交易,公证人将签署交易,公证人的作用是防止双花。我们可以进行没有公证签名的交易吗?在 TransactionBuilder class 它的说法 var notary: Party?用于交易的公证人。如果为空,则表示交易没有公证人。根据语法,我们可以将其设置为空,如果我们将其设置为空,交易是否有效以及 corda 如何防止双花。如果我误解了这个概念,请纠正我。
只有在以下情况下才需要公证签名:
- 如果您的交易有输入:证明这些输入没有被消耗,防止双花。
- 如果您的交易有参考状态:证明这些参考状态没有被消耗,从而阻止使用 "out-dated" 参考数据。
- 如果您的交易有时间-window:证明交易在指定时间内完成-window。
可以看到hereFinalityFlow
里面的函数needsNotarySignature()
证明了以上几点
我同意Adel对他提到的案例的公证签名要求的回答。除此之外,交易需要与公证人相关联,它不应该为空。
一种可能认为不需要公证人的情况是国家的签发。实际上,不需要公证人的签名,但是交易仍然需要公证人,因为状态需要标记给公证人以防止在消费状态时出现双花。
如果没有公证人,状态可以发送给不同的公证人,这可能会导致双花。
您可以在 TransactionBuilder 的 addOutput 方法中验证这一点:
fun addOutputState(
state: ContractState,
contract: ContractClassName = requireNotNullContractClassName(state),
constraint: AttachmentConstraint = AutomaticPlaceholderConstraint
): TransactionBuilder {
checkNotNull(notary) { "Need to specify a notary for the state, or set a default one on TransactionBuilder initialisation" }
addOutputState(state, contract, notary!!, constraint = constraint)
return this
}
我是Corda新手,想详细了解公证人的作用。根据文件中的说法,例如甲方和乙方之间发生一笔交易,公证人将签署交易,公证人的作用是防止双花。我们可以进行没有公证签名的交易吗?在 TransactionBuilder class 它的说法 var notary: Party?用于交易的公证人。如果为空,则表示交易没有公证人。根据语法,我们可以将其设置为空,如果我们将其设置为空,交易是否有效以及 corda 如何防止双花。如果我误解了这个概念,请纠正我。
只有在以下情况下才需要公证签名:
- 如果您的交易有输入:证明这些输入没有被消耗,防止双花。
- 如果您的交易有参考状态:证明这些参考状态没有被消耗,从而阻止使用 "out-dated" 参考数据。
- 如果您的交易有时间-window:证明交易在指定时间内完成-window。
可以看到hereFinalityFlow
里面的函数needsNotarySignature()
证明了以上几点
我同意Adel对他提到的案例的公证签名要求的回答。除此之外,交易需要与公证人相关联,它不应该为空。
一种可能认为不需要公证人的情况是国家的签发。实际上,不需要公证人的签名,但是交易仍然需要公证人,因为状态需要标记给公证人以防止在消费状态时出现双花。
如果没有公证人,状态可以发送给不同的公证人,这可能会导致双花。
您可以在 TransactionBuilder 的 addOutput 方法中验证这一点:
fun addOutputState(
state: ContractState,
contract: ContractClassName = requireNotNullContractClassName(state),
constraint: AttachmentConstraint = AutomaticPlaceholderConstraint
): TransactionBuilder {
checkNotNull(notary) { "Need to specify a notary for the state, or set a default one on TransactionBuilder initialisation" }
addOutputState(state, contract, notary!!, constraint = constraint)
return this
}