合同代码是如何分配的

时间:2017-07-13 15:44:48

标签: corda

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

2 个答案:

答案 0 :(得分:2)

好问题。 Corda技术白皮书谈到了这一点。参见例如第5.9节:https://docs.corda.net/_static/corda-technical-whitepaper.pdf

简短的回答是,一些基础设施仍然需要建立,但关键的想法是,一个国家不只是说“具有此名称的Java类控制着我的进化”;它说:“具有这个名字的Java类,生活在带有这个散列的JAR中控制着我的进化”。因此,人们试图替换恶意/受到破坏的实施时,将不会有游戏空间。

至于如何分配代码:今天,它在本地安装在每个节点中。很快,它就可以使用附件功能在网络中进行迁移。

我应该补充一点:合同验证逻辑将在一个非常严格的沙箱中运行:既限制它可以做什么,又确保它是100%确定性的...我们不能让一个节点认为交易是有效的另一个人认为它无效!

答案 1 :(得分:1)

正如理查德所说,州指的是合同。实际上,基础contract接口中有ContractState属性:

@CordaSerializable
interface ContractState {
    val contract: Contract
    val participants: List<AbstractParty>
}

需要Corda交易来更改任何州财产。因此,如果一方希望更新/更新合同代码,那么他们必须提出更改合同参考的交易,然后要求所有必需的participants同意此更改。