非验证公证人如何知道参与者是否被允许消费状态?
How does a non-validating notary knows if a participant is allowed to consume a state?
由于 Corda 中的非验证公证人不执行交易的 input/output 状态验证,公证人服务如何知道允许交易发起者使用特定输入状态?
例如,在这个简单的现金示例中:
State0{} -issueCashTX-> State1{owner:issuer, amount: 1000}
-transferTX-> State2{owner:issuer, amount: 500}
State3{owner:CompanyA, amount: 500}
智能合约规则验证 transfer
交易仅在输入状态为交易发起者所有者且输出金额之和等于输入金额之和时才有效。
[Q]:非验证公证人如何知道消费 State1
是可以的,因为它不知道验证规则?
他不知道 State1 是否正常,但他知道输入是否已在其他交易中使用。发送给公证人的交易已由所有同行签署,因此交易必须有效,否则这意味着交易中的所有同行都在互相作弊。
除了 MohamedLEGH 的回答之外,GitHub (https://github.com/corda/corda/issues/2971) 的讨论还提供了一些其他信息:
欺诈参与者可以创建任意交易并让非验证公证人对其进行签名,但是,公证人将存储交易创建者的身份。由于所有身份都是已知的,因此可以执行制裁。此外,还有一种计划提出争议并恢复此类交易的机制。 (参见 https://github.com/corda/corda/blob/master/node/src/main/kotlin/net/corda/node/services/transactions/NonValidatingNotaryFlow.kt#L18)
由于 Corda 中的非验证公证人不执行交易的 input/output 状态验证,公证人服务如何知道允许交易发起者使用特定输入状态?
例如,在这个简单的现金示例中:
State0{} -issueCashTX-> State1{owner:issuer, amount: 1000}
-transferTX-> State2{owner:issuer, amount: 500}
State3{owner:CompanyA, amount: 500}
智能合约规则验证 transfer
交易仅在输入状态为交易发起者所有者且输出金额之和等于输入金额之和时才有效。
[Q]:非验证公证人如何知道消费 State1
是可以的,因为它不知道验证规则?
他不知道 State1 是否正常,但他知道输入是否已在其他交易中使用。发送给公证人的交易已由所有同行签署,因此交易必须有效,否则这意味着交易中的所有同行都在互相作弊。
除了 MohamedLEGH 的回答之外,GitHub (https://github.com/corda/corda/issues/2971) 的讨论还提供了一些其他信息:
欺诈参与者可以创建任意交易并让非验证公证人对其进行签名,但是,公证人将存储交易创建者的身份。由于所有身份都是已知的,因此可以执行制裁。此外,还有一种计划提出争议并恢复此类交易的机制。 (参见 https://github.com/corda/corda/blob/master/node/src/main/kotlin/net/corda/node/services/transactions/NonValidatingNotaryFlow.kt#L18)