翻译笔记:视频讲解 Corda 核心概念 – Contracts

翻译整理自 Corda 官方核心概念 Contract and Contract Code 介绍视频,视频如下

  • Corda是为了协助让可能的分布在各地的相关方对于共享的事实(shared facts)达成共识(consensus)
  • Corda 对于每种 state 类别的 transaction verification 都要求有一个常规的定义
  • 通过这种方式, Corda 能够有目标地实现一种共识,以确定 Transaction 是已经被确认过的了还是没有被确认过

States 是数据

  • State 只是一些数据,它具有一些属性,你可以给这些属性设置值。每次 transaction 中,你可以更新 state 的属性值
  • 为了确认 State 的改动是否有效,必须要有一个 verification 方法,这样我们就需要使用合约代码(contract code)

详解 State

  • State 对象包括以下部分:
    • 属性(properties):State 相关的一些属性
    • 参与者列表(participants list):State 相关方列表,谁能够消费或者使用这个 state
    • 合约代码引用(contract code reference):指向了一个合约,该合约定义了确认(verification)方法
  • 在 Corda 中,每个 State 必须要匹配一个 Contract,每个 contract 包含两部分相关内容:
    • IOU contract code
    • legal prose reference:是一个对于法律合约(legal contract)的引用
  • 因为一个 Transaction 可能会包含多种类型的 State,一个 transaction 可能会同时引用到多个合约(contracts),比如一个现金与债券的transaction 会包含关于现金的 State 和关于债券的 State,那现金的 State 会引用一个 现金的合约,债券的 State 会引用债券类型的合约,合约中定义了都包含哪些进行验证的规则(rules),相关方可以通过这个 contract code 来确认该 transaction 是不是有效的
  • Corda platform 会使用所有的引用到的 contract code 来确认一个提议的 transaction

合约代码 Contract Code

  • Contract code 指的就是定义的 verification 方法
  • 该方法会把 transaction 作为传入的参数,如果通过验证就不返回任何内容,如果验证失败就会返回一个错误
  • 该方法会返回一个 Unit 类型的值,Kotlin中的 Unit 类型跟 Java/C 中的 void 是一样的
  • Verification 方法中会定义各种规则,如果没有满足任何一条规则的话就会返回错误,如果所有的规则都满足,这个 contract 会被认为是 valid的
  • 为了确认一个 transaction, contract code 必须要被所有需要知道(need-to-know)的相关方执行
  • Corda 必须要确保每一次执行 contract code 都会产生同样的 output,比如在今天或明天或后天执行来确认一个 transaction,执行的结果都应该是相同的。一个不好的例子就像使用了随机数,每次执行的时候会产生不同的结果,这个是不应该出现的
  • Transaction code 是一个在具有确定性的环境中执行的纯方法(verify function),这个方法只有那些需要知道(need-to-know)的人才会去关注并用它来验证该 transaction,来确定这个对账本的更新是否是正确的

发表评论

电子邮件地址不会被公开。 必填项已用*标注