我从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”。这与错误消息中看到的不同。
答案 0 :(得分:0)
CordaRPCOps.uploadAttachment
不应用于合同JAR。通过将JAR文件添加到节点的cordapps
文件夹中并重新启动节点,可以将Contract JAR添加到节点。如果公证人是有效的公证人,他们还将需要合同JAR的副本。
CordaRPCOps.uploadAttachment
仅应用于包含交易支持信息的附件。这些附件 会自动传播,并使用TransactionBuilder.addAttachment
方法添加到交易中。