проблема использования существующих данных после перестроения и развертывания узлов - PullRequest
0 голосов
/ 23 мая 2018

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

1 Ответ

0 голосов
/ 24 мая 2018

TransactionVerificationException.ContractConstraintRejection

Это исключение выдается, когда в хранилище имеются существующие состояния, вы обновили код контракта и повторно развернули его.

  1. Каждый раз при запуске узла сканируется CorDapp Jar, а Jar с классами Contract загружается в хранилище вложений, а hash Jar используется как Attachment ID для прикрепленияcontract до transaction.

  2. Теперь рассмотрим, у вас есть первая свежая версия CorDapp - Attachment ID это: 3B6CA18330500C738455444115C49769D54074CE3CFFB194D8943F34494DB0A4

  3. Для создания StateВ хранилище вы создаете transaction, Corda, автоматически присоединяющий contract, используя Attachment ID, как указано выше.

  4. Затем, предположим, вы изменили код и повторно использовалиCorDapp, теперь jar-хэш изменен, новый Attachment ID: F054BA8C1A67BAABF58539F8718B8A62DC770157D9F1D01434B86E73AD2A9217

  5. Мой вывод при создании любой новой транзакции Corda использует новую / недавнююAttachment ID для прикрепления указанного contract.

  6. Например, Вы хотите обновить состояние, уже имеющееся в хранилище.

    a.Вы создали транзакцию с одним входом и состоянием выхода.

    б.Вы отправили эту транзакцию для проверки.

    c.Есть проверка, подтверждающая, что input state contract Attachment Id и текущий transaction Attachment Id должны быть одинаковыми.

    д.Но прямо сейчас input state указывает на старый Attachment ID и transaction указывает новый Attachment ID.Здесь проверка завершается неудачно и выдает TransactionVerificationException.ContractConstraintRejection исключение.

...