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

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

两种类型的共识

Corda 中共识包括两部分

  • 有效性共识(Verification Consensus):关注对于账本的更新是否是一个有效的
  • 唯一性共识(Uniqueness Consensus) :关注对于账本的更新是否是唯一的,确认在某个 transaction 中的 input states 不会被同时用在其他的 transaction 中,也就是常见的“双花(double spend)”

有效性共识

在 Corda 中,有效性共识需要一个 transaction 满足以下两点,只有当两点都满足的时候,transaction 才会被提交,账本才会被修改:

  • Commands 中列出的所有的相关方都需要提供签名
  • 满足 contract code 中定义的所有的约束条件
  • 这里可能还会有一些额外的步骤来 verify transaction,可能会需要一个第三方来对 transaction 进行 verify
  • 对于一个新创建的 transaction,有效性共识是由所有涉及的相关方来执行的,但是根据 transaction 中的 state 的类型,可能会引入一些最初的 transaction 没有涉及到的一些相关方来进行有效性共识。这也就是说在 Corda 中,transaction 会根据 need-to-know 的原则慢慢地传送给各个相关方
  • 当一个 transaction 中指定了要消费的 input state 的话,那关于产生这个 Input 的前一次的 transaction 也必须是被验证过的,因为当前的 input 是由上一次的 transaction 所产生的 output带来的,所以我们要一直反复地验证所有以前相关的 transactions,直到最初一次发布的 transaction,如果这其中任何一次的 transaction 是无效的话,那这个 transaction 是不会被接受的。

有效性共识是为了确保一个 transaction(包括它的所有依赖)已经得到了所有相关方的签名,并且满足 contract code 里定义的所有的约束条件

保护隐私

  • 多方的协议只会让需要提供签名的相关方知道,不会让其他人知道
  • 对于包含了多个 input/output groups 的 transaction,只有相关的 group 信息会被摘录下来并分享给相关方。可以通过默克尔树(Merkel-tree)来实现相关的功能,只把Merkel-tree 中相关的部分共享给一些人,而不是整个 transaction。比如当使用一个 Oracle service 来确认一份市场数据是否正确,你只需要把相关的command 发送给 Oracle 就可以而不需要把 input/output 发给他
  • 随机生成签名秘钥可以使相关方变为匿名的状态
  • State 的重新生成(re-issuance),这样就会使一个含有某个资产的 state 具有很长的一个 state sequences
  • 使用 Intel Software guard extensions 作为 hardware 解决方案,transaction 相关的数据会被加密到硬盘中,当发送到其他方获得签名的时候会被解密发送

唯一性共识

  • 我们要确保 transaction 中指定的要消费的 input 以前没有被消费过,这样就可以避免“双花”问题的产生。比如 Bob 从 Alice 那里得到了$10(这个 transaction 中 output 是 Bob 的 $10),然后 Bob 同时向 Charlie 和Dan 发起了两个 $10 的 transaction(这两个 transaction 中都指向了前一个 transaction 中的 output 的 $10),如果不验证 transaction 的唯一性的话,Bob 就会把这个 $10 花两次,也就是所谓的“双花”。
  • 双花问题可以通过唯一性共识来避免
  • 唯一性共识是由 notary service 提供的
  • 当一个 state 被发布到账本上的时候,它会被分配给一个 notary service
  • Notary service 要确保一个 state 在它的生命周期中不会被不会被重复地被 transaction 作为 input 消费掉两次

唯一性共识会让所有相关方确定 transaction 中产生的 output states 只能够被其他的 transaction 作为 input state 消费掉一次

发表评论

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