POA 全称是 Proof-of-authority ,翻译过来叫“权威证明”。POA 是 POW 和 POS 之外的一种区块链共识机制,最早是以太坊大神 Gavin Wood 提出的。

基本原理

先来说说 POA 的基本原理。

基本的思路就是选出中央权威来统一大家的状态。POA 网络上通常也是采用分布式记账的方式,每个节点手中都有一个账本,共识算法的意义就是防止大家的账本出现数据不统一的现象,说的正式一些,就是要保证各个节点状态一致。POA 共识机制的思路其实是非常简单的,每当有了交易,大家不再互相发了,而是统一发送到 Authority 手中,由它来验证交易。POA 网络中的 validator 验证人,就是大家选举出来的 Authority 。Validator 验证并签署交易之后,普通节点都从 validator 那里同步数据。

来体会一下 POA 中如何防止双花。双花,也就是一份钱同时被使用多次。首先说,双花问题之所以会产生,是因为在一个 P2P 网络上,大家同一时刻拿到手里的交易信息不一致。而 POA 逻辑下,大家的数据都是从 validator 同步过来的,所以双花问题是比较容易解决的。具体过程是这样,小明给小红10个 coin ,稍后又把这些 coin 给了小兰,这样交易发送给 validator 之后,validator 可以明确的给交易做出排序,这样排在前面的有效,而排在后面的交易就无效了。无效交易直接被丢掉,普通节点根本不会看到。

总之,POA 可以让所有节点状态一致,也能有效防止双花攻击,所以是一种可行的共识机制。

中心化问题

POA 缺点就是有中心化问题。

Validator 是网络上的一个明确的中心。普通节点对 Validator 几乎没有什么监督能力。如果 validator 自己发动对网络的攻击,就非常容易成功了。 Validator 也很容易被强势组织控制,形成 censorship 。另外如果被外来攻击者攻陷,就会造成单点失效。

但要注意 POA 也还是有自己的去中心化的特性的。首先,选举 validator 的过程可以相对去中心化。其次,validator 也可以同时有多个,大家通过多重签名机制来签署交易,只要保证 validator 来自不同国家,来自不同利益群体,就可以有效的抵御各种攻击了。第三点,普通节点手中也有完整的账本,对于一些明显的不合法交易也是可以验证出来的。

跟 POW 和 POS 对比

最后,把 POA 跟 POW 和 POS 做一下对比。

首先对比 POW ,POA 的特点是性能好,缺点是去中心化程度低。性能好很容易理解,因为 POA 过程本身不需要挖矿,同时一个网络上 validator 数量也不会很多。缺点也很明显,POA 不是一个开放的共识系统,不经允许是不能成为 validator 的,对比 POW 的无准入门槛的共识的方式还是有明显区别的。

POA 跟 POW 使用场合明显不同,但是跟 POS 确实类似的地方比较多,有竞争的可能。相同点是二者的都不需要挖矿,性能都比较高。不同点在于,POS 抵押的是代币,POA 抵押的是身份( identity as a stake ),或者说是个人信用。网上有很多夸 POA 猜 POS 的文章,可以作为参考。

这就是 POA 跟 POW 和 POS 的对比了。

总结

关于 POA 共识,要聊的就是这些了。重点内容有这么几项:第一,POA 通过中央权威来统一大家的状态,也可以有效的防止双花。第二,POA 有自己明显的中心化问题,但是也有各种方式可以有效的增加自己的去中心化属性。第三,跟 POW 和 POS 相比,POA 有自己的明确的优缺点,所以在业界是有自己的一席之地的。

参考: