Corda 核心概念:共识

原文地址:https://docs.corda.net/key-concepts-consensus.html

概要

两种类型的共识

判断一个提议的交易是否是一次有效的账本更新要达到两种类型的共识:

有效性共识 Validity Consensus

有效性共识是关于验证下边所描述的条件对于提交的 transaction 和生成该次 transaction 的 inputs 的交易链中的每次 transaction 都必须要满足:

仅仅检查提议的交易本身信息是不够的。我们还需要检查跟产生当前这个 transaction 的 inputs 有关的所有以前的 transaction 链。

这个被称作 walking the chain。假设,例如网络中的一个节点提交了一个交换债券的一笔交易。我们只有了解下边的情况才能确保这个债券的交换是有效的:

确保两点都满足的唯一方式就是查看整个交易链。我们可以用下图表示:

查看交易链

当确认一个提交的交易的时候,给定的一方可能没有它需要验证的交易链上的所有交易信息。这种情况下,他可以向交易的提出方索要缺少的那部分交易。交易的提出方应该永远会有整个的交易链信息,因为他们应该在验证之前的交易中已经获取了相关的交易链信息。

唯一性共识 Uniqueness consensus

设想一下 Bob 持有有效的由中央银行发行的 $1,000,000 现金 state。Bob 可以创建两个交易提案:

这会是一个问题,因为尽管这两笔交易都可以通过有效性共识,但是 Bob 确实现了一次“双花 double spend” 他的美元来获得了两倍价值的 GBP 和 EUR。我们可以用下图表示这个流程:

双花的例子

为了避免这样的问题发生,一个有效的交易提案同时也要满足唯一性共识。唯一性共识要求一个 transaction 的 input 不能被任何其他的 transaction 消费掉过。

当一个交易中的一个或多个 inputs 已经被其他的交易消费掉的情况,通常被称为双花 double spend,那么相关的交易应该被视为无效的交易。

唯一性共识是有 notaries 提供的。