合同处理代码本质上只是Java并由服务器运行吗? 如果我想编辑合同的功能,我是否必须发布要在网络上安装的代码?。
答案 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
同意此更改。