Corda 非验证公证人如何知道参与者是否被允许消费国家?

Corda 非验证公证人如何知道参与者是否被允许消费国家?,corda,Corda,由于Corda中的非验证公证人不执行事务的输入/输出状态验证,公证服务如何知道允许事务发起人使用特定的输入状态 例如,在这个简单的现金示例中: State0{} -issueCashTX-> State1{owner:issuer, amount: 1000} -transferTX-> State2{owner:issuer, amount: 500} S

由于Corda中的非验证公证人不执行事务的输入/输出状态验证,公证服务如何知道允许事务发起人使用特定的输入状态

例如,在这个简单的现金示例中:

State0{} -issueCashTX-> State1{owner:issuer, amount: 1000}
                        -transferTX-> State2{owner:issuer,   amount: 500}
                                      State3{owner:CompanyA, amount: 500}
智能合约规则仅在输入状态为交易发起人的所有者且输出金额之和等于输入金额之和的情况下验证
转移
交易是否有效


[Q]:非验证公证人如何知道消费
状态1
是正常的,因为它不知道验证规则?

他不知道状态1是正常的,但他知道输入是否已在其他交易中使用。发送给公证人的交易已由所有对等方签字,因此交易必须有效,或者这意味着交易中的所有对等方都在相互欺骗。

除了MohamedLEGH的回答之外,GitHub()讨论中的一些附加信息:


欺诈参与者可以创建任意交易,并让非验证公证人对其进行签名,但公证人将存储交易创建者的身份。由于所有身份都是已知的,因此可以实施制裁。此外,有一种机制可以计划取消并恢复此类交易。(请参阅)

但如果第三方能够从发行人的保险库中“窃取”State1,他可以使用State1作为输入创建TX,并让公证人签字。既然notaray只知道State1还没有被消费,他会签署这个吗?然而,在这个过程的后期,发行人将无法再次消费State1,因为公证服务已经将其标记为已消费?