概述
1.1 引言
Algorand 称其突破了”公链不可能三角“,项目创始人是图灵奖得主、MIT CSAIL 实验室的 Silvio Micali 教授。Algorand 提出的共识协议是项目的一大亮点,本文主要分析 Algorand 共识协议的工作原理,并分析其优缺点。
1.2 Algorand 设计的初衷
Algorand 想解决的核心问题是:去中心化网络中低延时(Latency)和高置信度(Confidence)之间的矛盾[1]。
其中,延时指从发起交易到确认交易所需要的时间;置信度指的是发出的交易不会再被更改的概率。
在比特币网络中,为了提高交易的置信度,用户必须等待 6 个区块确认(约 1 个小时)的确认延时;而如果选择低延时,比如少于 6 个确认,甚至是 0 确认,则必然导致低置信度,增加“双花”攻击的可能。双花问题是绝大多数加密数字货币的核心问题。比特币中采用 PoW 共识来解决,但链本身仍然有分叉的可能,并且需要较长的共识达成过程和确认时间。
同时 Algorand 还想解决比特币中 PoW 挖矿耗费巨大资源、交易确认时间长、易分叉、网络呈中心化趋势,可扩展性差等问题。
1.3 Algorand 是什么?
根据官方描述,Algorand 是一个采用 permissionless 的纯 PoS 共识的公链项目,结合改进的拜占庭共识协议,可实现快速的交易确认,几乎不会分叉,并且用户数可无限扩展,不会影响交易确认速度。同时兼顾“可扩展、安全性、去中心化”这个“公链不可能三角”[2]。
(注:”公链不可能三角“的正确性和具体定义存在较多争议[7]。在 Algorand 中:可扩展性指在较大用户规模下仍可实现较高的吞吐量[8],安全性指的是可以对抗恶意攻击[9],去中心化指的是网络完全开放,成为节点没有任何门槛[10]。)
· 可扩展性:Algorand 通过可验证随机函数(VRF)随机选择区块的生产者和验证者,一旦得知被选中,生产者或验证者只需广播一个简短的消息即可证明自己的身份。每产生一个新区块在网络中需要交换的消息不会随着用户数的增大而改变,,因此即使用户规模增大,系统仍可保持较高的 TPS(每秒处理的交易数)。Algorand 的 TPS 是比特币的 125 倍。
· 安全性:由于采用了上述的 VRF 随机选取生产者和验证者,并且选取的过程完全由节点独立完成,因此Algorand 网络中的攻击者无法预先得知下一个区块生产者和验证者,从而也就无法完成攻击。具体来说,生产者和验证者的身份只有在他们确定自己被选中并广播对应的证明信息时才会被披露,这时攻击者即使立刻采取各种攻击手段,也无法阻止关于新区块的正确消息在网络中的传播。
· 去中心化:Algorand 中每一轮的区块生产者和验证者都是随机选取的,并且加入网络没有任何门槛,因此是完全去中心化的。
下面详细介绍 Algorand 的共识协议。
lgorand 协议详述
几乎所有公链项目的区块产生和共识的过程都可以抽象为两个步骤:
1. 选择出区块生产者,生成新区块
2. 其他节点对新区块达成共识
以上步骤周而复始,最终形成一条“不可篡改”的区块链。
整个共识过程虽然简单,但在实际实现中,必须解决几个关键问题:
· 如何选择区块生产者,且保证公平和不可被预测?
· 如何对新区块达成共识?
· 如何避免分叉?
· 如何提高安全性?
· 如何扩展到更大规模的用户?
比特币采用哈希函数的随机性来确保公平,采用工作量证明(PoW)达成共识,同时能够在一定程度上抵抗算力攻击。然而比特币仍然面临上述消耗计算资源、确认时间长、易分叉以及扩展性差等问题。以 Qtum 为代表的采用纯权益证明(PoS)共识机制的项目,同样采用了哈希函数,并且不需要消耗大量的计算资源,然而仍然面临易分叉、安全性及扩展性的问题。
Algorand 提出了一种新的共识机制解决上述 5 个问题。
2.1 基础知识
正式介绍 Algorand 共识协议之前,本文假设读者基本了解以下名词的含义:
· 哈希函数(Hash)
· 公钥/私钥
· 数字签名
· 交易
· 区块
· 账本
· 共识