如何在附件中使用合同

时间:2018-11-26 02:56:45

标签: corda

我从rpc shell上传了合约jar。然后在交易生成器中使用哈希值

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

我上传的jar中的SecureHash是“ 05A2B667D5DDE42A632EF0A9810D5CE90B3F31BFF62E0539C11C9DEB0FAC2430”。这与错误消息中看到的不同。

1 个答案:

答案 0 :(得分:0)

CordaRPCOps.uploadAttachment不应用于合同JAR。通过将JAR文件添加到节点的cordapps文件夹中并重新启动节点,可以将Contract JAR添加到节点。如果公证人是有效的公证人,他们还将需要合同JAR的副本。

CordaRPCOps.uploadAttachment仅应用于包含交易支持信息的附件。这些附件 会自动传播,并使用TransactionBuilder.addAttachment方法添加到交易中。