Как использовать контракты во вложениях - PullRequest
0 голосов
/ 26 ноября 2018

Я загрузил контрактную флягу из оболочки rpc.А затем использовал хеш в компоновщике транзакций

val txBuilder = TransactionBuilder(notary)
    .addOutputState(
        TransactionState(
            dummyState, 
            "com.example.contract.SampleContract", 
            notary, 
            null,
            HashAttachmentConstraint(SecureHash.parse(hashId))
        )
    )
    .addCommand(txCommand)

При запуске этого потока я вижу следующую ошибку в нотариальном журнале:

net.corda.core.contracts.TransactionVerificationException $ ContractConstraintRejection: ограничения контракта Сбой com.example.contract.SampleContract, сделки: 781CC5C14E9DC7642B3C7F12177CB79C5EADE0D7F2033F56DB6909E1F2199C42

The SecureHash моей закачанной баночки "05A2B667D5DDE42A632EF0A9810D5CE90B3F31BFF62E0539C11C9DEB0FAC2430".Это отличается от того, что видно в сообщении об ошибке.

1 Ответ

0 голосов
/ 26 ноября 2018

CordaRPCOps.uploadAttachment не должен использоваться для контрактных JAR.Контрактные JAR должны быть добавлены к узлу путем добавления файлов JAR в папку cordapps узла и перезапуска узла.Если нотариус является проверяющим нотариусом, им также потребуется копия JAR контракта.

CordaRPCOps.uploadAttachment следует использовать только для приложений, содержащих подтверждающую информацию для транзакции.Эти вложения распространяются автоматически и добавляются в транзакции с использованием метода TransactionBuilder.addAttachment.

...