Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同一源代码在不同时间编译(到CorDapps中)是否被视为不同版本?_Corda - Fatal编程技术网

同一源代码在不同时间编译(到CorDapps中)是否被视为不同版本?

同一源代码在不同时间编译(到CorDapps中)是否被视为不同版本?,corda,Corda,今天的一次讨论中强调了这一点。甲方和乙方均部署了相同的CorDapp(相同的源代码,无差异)。然而,甲方的CorDapp是一周前编译的。当乙方试图创建与的交易时,该交易无效,您会得到一个异常,即net.corda.core.contracts.TransactionverificationException$ContractCOnstraintRejection@:net-corda.training.Contract.IOUContract的合同约束失败,交易:tx哈希。这是一个有效的观察结果

今天的一次讨论中强调了这一点。甲方和乙方均部署了相同的CorDapp(相同的源代码,无差异)。然而,甲方的CorDapp是一周前编译的。当乙方试图创建与的交易时,该交易无效,您会得到一个异常,即net.corda.core.contracts.TransactionverificationException$ContractCOnstraintRejection@:net-corda.training.Contract.IOUContract的合同约束失败,交易:tx哈希。这是一个有效的观察结果吗

以IOUContract为例,日志输出以下异常:
net.corda.core.contracts.TransactionVerificationException$ContractConstraintRejection:net.corda.training.Contract.IOU合同的合同约束失败,交易:D60DD71F9D50BA7A638455B676CD394601460D937544A5697643FDD952C9FCB4
在net.corda.core.transactions.LedgerTransaction.verifyConstraints(LedgerTransaction.kt:91)~[corda-core-1.0.0.jar:?]
在net.corda.core.transactions.LedgerTransaction.verify(LedgerTransaction.kt:67)~[corda-core-1.0.0.jar:?]
在net.corda.node.services.transactions.InMemoryTransactionVerifierService$verify$1.invoke(InMemoryTransactionVerifierService.kt:13)~[corda-node-1.0.0.jar:?]
在net.corda.node.services.transactions.InMemoryTransactionVerifierService$verify$1.invoke(InMemoryTransactionVerifierService.kt:10)~[corda-node-1.0.0.jar:?]
在net.corda.core.internal.concurrent.ValueOrException$DefaultImpls.capture(CordaFutureImpl.kt:104)~[corda-core-1.0.0.jar:?]
在net.corda.core.internal.concurrent.OpenFuture$DefaultImpls.capture(cordafutureinpl.kt)~[corda-core-1.0.0.jar:?]
在net.corda.core.internal.concurrent.cordafutureinpl.capture(cordafutureinpl.kt:116)~[corda-core-1.0.0.jar:?]
在net.corda.core.internal.concurrent.cordafutureimpkt$fork$$inlined$还$lambda$1.run(CordaFutureImpl.kt:22)~[corda-core-1.0.0.jar:?]
位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)~[?:1.8.0131]
在java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)~[?:1.8.0_131]

在java.lang.Thread.run(未知源代码)~[?:1.8.0_131]

中缺少的一个问题是:


是否将同一个cordapp jar分发到两台机器?我的意思不是说分发相同的源代码,然后独立编译,而是一次编译,然后在两个节点上运行结果。在Corda达到wire稳定性之前,编译环境中的任何差异(无论多么微小)都可能导致与您遇到的错误类似的错误

正如Richard所说,对于给定的一组CorDapp源文件,生成的CorDapp JAR的散列是不确定的


一个关键原因是JAR仍然包含一个时间戳。请参阅。

我发布的错误实际上来自我在机器上编译的jar。我编译了第一个jar,将整个构建复制到另一个位置,旋转节点以确保其正常工作。接下来,我再次运行deployNodes来编译另一组节点。这一次,我复制了参与者C的插件,并将其替换为我先前复制的构建文件夹上的插件。有一点背景:这一切都是在我们想要表明交易方不能单方面修改流程代码时开始的。我们取得了借据回购协议,对结算流程进行了修改,并在我们之前准备的另一个构建文件夹中覆盖了参与者C的插件。当然有一个流异常错误,尽管这不是我们所期望的。因此,我们通过再次删除和克隆来恢复IOU repo。我们将插件文件复制回C,它显示了相同的错误,因此我们决定进行调查。不幸的是,错误消息并没有告诉我们太多。(顺便说一句,阿凡达不错!)嗯。。。我必须确保所有机器上的所有jar文件都完全相同(目前)。。您可以使用
sum
cksum
生成基本哈希,以检查二进制文件是否完全相同