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

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

公证人服务(Notary services)提供了唯一性共识

  • 当一方想要提交一个 transaction 的时候,在 commands 中列出的所有相关方都需要提供签名
  • 同时我们还需要得到 input state 所指定的 notary service 的签名,这个就是所谓的 notarisation(个人理解为公正这个操作)
  • notary service 为一个 transaction 提供签名后,这个 transaction 才到了最后的步骤,会被提交到账本中
  • 这也有一些特殊情况不需要 notary service,如果一个 transaction 没有 input states 而且没有 timewindow 的话,就不需要有 notary service了

Notary services 追踪被使用了的 states

简单来讲,notaries 维护了一个跟 input state 匹配的key/value 对

  • Key: (Transaction ID, Output Index),这个指的是前一次的 transaction ID 和某个 output state 在 output states list 中的 index
  • Value: (Transaction ID, Input Index, Requesting Peer),这个指的是当前的 transaction ID,和要 consume 前边说的 output 的 input state 在 input states list 中的 index,还有提出要执行 notarization 的一方的名字

Notary services 确保了唯一性

  • 如果对一个 state 的引用已经在这个 map 中存在的话,那就说明该 state 已经在之前的 transaction 中被消费掉了并且已经被标记为历史记录了。
  • Notary services 只会为所有的 input state 都没有被添加到该 map 中的 transactions 提供签名
  • 这样就确保了所有的 output 只能够被一个 input 所消费

Notary services 会阻止一个 transaction 的提交

  • 对于一个使用历史记录的 state 的 transaction(其所指向的 input 已经被其他的 transaction 消费过了),notary 搜索它的 map 能够找到该条历史记录,那么这条 transaction 是不会成功的
  • 比如即使某个 transaction 中只有1/4的 input states 以前已经被消费掉了的话,那么该 transaction 是不会被成功提交的

Notary services 工作流

当一个 transaction 被发送给 notary service 的时候,notary 会判断 transaction 里的 input state 有没有已经在这个 map 里的,然后会有两个结果:

  • 如果有任何的 state 已经存在于 map 里了,notary 会抛出一个异常并表示这有一个冲突
  • 如果没有任何的 input state 在这个 map 中,notary 会把每个 input 添加到 map 里然后为该 transaction 提供签名

两种类型的 Notary Services

Corda 支持两种类型的 notary services:

  • Verifying:除了判断 state 是否已经被消费了以外,还会对 transaction 进行验证,这就需要 notary 能够看到 transaction 的 input 和 output states,以及这个 transaction 所对应的所有历史记录。使用 verifying notary 能够更加确定 transaction 的正确性,但是这个不是必须的。如果你很信任该 transaction 的所有相关方的话,那就不需要再让 notary 来做一次验证。
  • Non-Verifying:只会检查 state 是否是一条历史记录,是否已经被消费过,而不会去对 transaction 进行验证,所以它只需要知道 state 的 reference code 而不需要知道 state object 的内容

Notary services 是可插拔的(pluggable)

  • Corda network 中可以存在多个 notaries 并且他们可以同时工作
  • 每一个 notary 能够实现多种共识算法(consensus algorithms)来满足不同的需要
  • 网络上的任何一方都可以运营一个 notary

发表评论

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