在Corda中,我能够在无障碍状态的情况下将自己的障碍状态花费在独立交易中。这是设计使然还是我缺少什么?
截至目前,我只能通过合同强制执行产权负担。
我已经使用
实现了保留 transactionBuilder.addOutputState(state = TesterState(data = 1, participants = listOf(serviceHub.myInfo.legalIdentities.first())),contract = TesterContract.ID, notary = serviceHub.networkMapCache.notaryIdentities.first(), encumbrance = 1)
transactionBuilder.addOutputState(state =TimeEncumbranceState(Timestamp = System.currentTimeMillis(), participants = listOf(serviceHub.myInfo.legalIdentities.first())),contract = TimeEncumbranceContract.ID,notary = serviceHub.networkMapCache.notaryIdentities.first())
如果没有合同中的产权负担检查,我也可以单独使用这些状态。
是否有非合同强制执行产权负担?
答案 0 :(得分:0)
假定您有State A
(处于保留状态)处于State B
(处于保留状态)。保留状态(如果存在)会强制对保留状态进行其他控制。没有encumbered state
encumbrance state
但是,在截至Corda v3.x
的当前保留设计中,没有人阻止您自己花费encumbrance state
(因此,恶意用户确实可以冻结A,因为A由{{1}引用B })
通过始终需要循环保留链接,可以轻松解决上述问题。国A由国B负担,国B由国A负担。stateRef
因此,国B不能自己花费。
Corda 4.x应该添加了针对产权负担的双向检查。请参见here。但是,建议您不要使用负担。