Обновление потока Corda вызывает ошибку при следующем запуске: исключение TransactionVerificationException $ ContractConstraintRejection

#corda

#corda

Вопрос:

Как упоминалось в документации по выполнению обновлений потока, все, что вам нужно сделать, это в основном закрыть узел, заменить JAR и запустить резервную копию узла. Когда я делаю это, при следующем запуске моего обновленного потока я получаю следующую ошибку:

 net.corda.core.contracts.TransactionVerificationException$ContractConstraintRejection: Contract constraints failed for com.company.project.contract.MyContract, transaction: ABCDEFG
  

И в результате поток не завершается. Что я делаю не так?

Комментарии:

1. Привет, можете ли вы подтвердить, используете ли вы один jar для контракта и потоков или два разных jar. Если вы используете два разных jar, эта ошибка не должна возникать. Если вы используете один jar, выполните шаги, упомянутые Sateinpong ниже. Пожалуйста, сообщите, решена ли ваша проблема.

Ответ №1:

По моему опыту, похоже, что обновление Corda flow не обновляет сетевой параметр (состояние по-прежнему принадлежит старому хэшу, старому контракту). Тогда при замене на новый контракт это будет ограничение контракта. Итак, я думаю, у вас есть 3 способа справиться с этим

  1. Для начальной загрузки локальной сети обновите сетевой параметр перед выполнением обновления потока (я использую network-bootstrap.jar если скопировать новый контракт в папку cordapp, то он немедленно добавит хэш нового контракта)
  2. Для сети Corda необходимо связаться с оператором сети для обновления нового хэша.
  3. Используйте SignatureConstraint Corda4 (они утверждают, что это упрощает обновление, но я еще не пробовал)

Надеюсь, это поможет