Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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
Corda 合同代码是如何分发的_Corda - Fatal编程技术网

Corda 合同代码是如何分发的

Corda 合同代码是如何分发的,corda,Corda,合同处理代码本质上只是Java,由服务器运行吗?。 如果我想编辑合同的功能,我必须发布代码才能通过网络安装吗?好问题。Corda技术白皮书对此进行了讨论。参见第5.9节: 简单的回答是,这些基础设施中的一些仍然需要构建,但关键的想法是,一个国家不仅仅说“这个名字的Java类控制着我的进化”;它说:“这个名字的Java类,生活在一个有这个散列的JAR中,控制着我的进化”。因此,如果有人试图替换恶意/受损的实现,那么游戏就没有空间了 至于代码是如何分发的:今天,它被本地安装在每个节点上。很快,它将能

合同处理代码本质上只是Java,由服务器运行吗?。
如果我想编辑合同的功能,我必须发布代码才能通过网络安装吗?

好问题。Corda技术白皮书对此进行了讨论。参见第5.9节:

简单的回答是,这些基础设施中的一些仍然需要构建,但关键的想法是,一个国家不仅仅说“这个名字的Java类控制着我的进化”;它说:“这个名字的Java类,生活在一个有这个散列的JAR中,控制着我的进化”。因此,如果有人试图替换恶意/受损的实现,那么游戏就没有空间了

至于代码是如何分发的:今天,它被本地安装在每个节点上。很快,它将能够使用附件功能在网络上进行迁移


我应该补充一点:契约验证逻辑将在一个非常严格的沙箱中运行:既限制它可以做什么,又确保它是100%确定的。。。我们不能让一个节点认为一个事务是有效的,而另一个节点认为它是无效的

正如Richard所指出的,国家参考合同。实际上,在基本
ContractState
界面中有一个
contract
属性:

@CordaSerializable
interface ContractState {
    val contract: Contract
    val participants: List<AbstractParty>
}
@cordaseriable
界面收缩状态{
val合同:合同
val参与者:名单
}

更改任何状态属性都需要Corda事务。因此,如果一方希望更新/更新合同代码,那么他们必须提出一项更改合同参考的交易,然后要求所有必要的
参与者同意此更改。

在中途更改现有合同的功能显然是非常有问题的。另一个问题是透明度,即了解合同的实际功能。如果代码没有封装,这显然会加剧。我指的是封装的环境。我对网络验证应用程序代码的直觉是,这是一个等待程序员意外触发的意外事件。所有Corda契约代码都将在沙盒环境中运行—本质上是一个轻量级、确定性JVM。有关更多详细信息,请参见技术白皮书()第13节。马克-是的。。需要完全澄清的是:一旦交易完成(即签署并公证),唯一对该交易的有效性具有权威性的合同代码就是该交易中的状态指定的代码(通过类名和JAR文件的散列)。因此,如果您不知道代码是做什么的,当然,您应该在同意受事务约束之前找到答案。但是一旦签署,没有你的同意,实现将无法更改。我更关心的是意外问题,即程序员在有足够的权限时会做什么,而不是恶意攻击,尽管他们当然必须受到保护。也许“封装环境的计划是什么”应该是我的下一个问题。