Состояние после обновления контракта в корде нельзя использовать как ввод транзакции - PullRequest
0 голосов
/ 18 декабря 2018

Я следую инструкциям документа Corda, чтобы обновить контракт моего собственного приложения.Из консоли и базы данных я знаю, что контракт успешно обновлен.Но когда я использую состояние после обновления контракта в качестве ввода новой транзакции, я получаю следующую ошибку:

 net.corda.core.contracts.TransactionVerificationException$ContractConstraintRejection: Contract constraints failed for com.sm2.contract.NewMemberContract, transaction: 4F828B8DFA64EFAB88844C7EDEB140E6D5FA3EB7A8EBF6F294A13FE3C24BBEBE
    at net.corda.core.transactions.LedgerTransaction.verifyConstraints(LedgerTransaction.kt:119) ~[corda-core-3.3-corda.jar:?]
    at net.corda.core.transactions.LedgerTransaction.verify(LedgerTransaction.kt:82) ~[corda-core-3.3-corda.jar:?]
    at net.corda.core.transactions.TransactionBuilder.verify(TransactionBuilder.kt:143) ~[corda-core-3.3-corda.jar:?]
    at com.sm2.flow.MemberUpdateFlow$Initiator.call(MemberUpdateFlow.java:167) ~[contract-upgrade-1.0.jar:?]
    at com.sm2.flow.MemberUpdateFlow$Initiator.call(MemberUpdateFlow.java:33) ~[contract-upgrade-1.0.jar:?]
    at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:96) [corda-node-3.3-corda.jar:?]
    at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:44) [corda-node-3.3-corda.jar:?]
    at co.paralleluniverse.fibers.Fiber.run1(Fiber.java:1092) [quasar-core-0.7.9-jdk8.jar:0.7.9]
    at co.paralleluniverse.fibers.Fiber.exec(Fiber.java:788) [quasar-core-0.7.9-jdk8.jar:0.7.9]
    at co.paralleluniverse.fibers.RunnableFiberTask.doExec(RunnableFiberTask.java:100) [quasar-core-0.7.9-jdk8.jar:0.7.9]
    at co.paralleluniverse.fibers.RunnableFiberTask.run(RunnableFiberTask.java:91) [quasar-core-0.7.9-jdk8.jar:0.7.9]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_181]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_181]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source) [?:1.8.0_181]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [?:1.8.0_181]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_181]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_181]
    at net.corda.node.utilities.AffinityExecutor$ServiceAffinityExecutor$1$thread$1.run(AffinityExecutor.kt:62) [corda-node-3.3-corda.jar:?]

Я обновляю контракт, создавая специальную транзакцию обновления контракта и заставляя всех участников состояния подписать ее, используяобновление контракта течет.Кажется, что-то не так с белым списком?Любая идея полезна.

Я обнаружил, что следующая проверка не прошла, но когда я печатаю вложение и белый список, идентификатор прикрепленного файла находится в белом списке.

object WhitelistedByZoneAttachmentConstraint : AttachmentConstraint {
override fun isSatisfiedBy(attachment: Attachment): Boolean {
    return if (attachment is AttachmentWithContext) {
        System.out.print("--attachment--"+attachment.id.toString())
        val whitelist = attachment.whitelistedContractImplementations
                ?: throw IllegalStateException("Unable to verify WhitelistedByZoneAttachmentConstraint - whitelist not specified")
        System.out.print("--whitelist--"+whitelist.toString())
        attachment.id in (whitelist[attachment.stateContract] ?: emptyList())
    } else false
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...