比特币网络完全公开,任何人都可以匿名接入,因此共识协议的稳定性和防攻击性十分关键。

比特币区块链采用了Proof of Work(PoW)的机制来实现共识,该机制最早于 1998 年在 B-money 设计中提出。

目前,Proof of X 系列中比较有名的一致性协议如 PoW、PoS 和 DPoS 等,都是通过经济惩罚来限制恶意参与。

什么是 PoW?

工作量证明 (Proof of Work,简称 PoW ) ,简单的解释就是一份证明,用来确认你做过一定量的工作。

通过计算来猜测一个数值(nonce),使得拼凑上交易数据后内容的 Hash 值满足规定的上限(来源于 hashcash)。Hash 难题在目前的模型下需要大量计算,这就保证在一段时间内,系统中只能出现少数合法提案。反过来讲,能够提出合法提案,也证明提案者确实付出了一定的工作量。

什么是PoS?

权益证明(Proof of Stake,PoS),最早提出于 2013 年,并在 Peercoin 系统中实现,类似现实生活中的股东机制,拥有股份越多的人越容易获取记账权(同时越倾向于维护网络的正常工作)。

作为一种在公链中的共识算法,PoS 可替换为 PoW 算法。PoW 的算法机制可以保证比特币、当前以太坊和其它区块链的安全,但是 PoW 算法在挖矿过程中因为破坏环境和浪费电力而受到指责,PoS 试图通过以一种不同的机制取代挖矿的概念,从而解决这些问题。

PoS 机制可以被描述成一种虚拟挖矿,主要依赖于区块链自身的代币。在 PoW 中,一个用户可能拿 1000 美元来买计算机,加入网络挖矿产生新区块,从而得到奖励。而在 PoS 中,用户可以拿 1000 美元购买等价值的代币,把这些代币当作押金放入 PoS 中,用户就有机会从新块里得到奖励。在 PoW 中,如果用户花费 2000 美元购买硬件设备,当然可以两倍算力来挖矿,从而获得两倍奖励。同样,用户在 PoS 中投入两倍代币作为押金,也能有两倍大的机会获得产生新区块的权利。

什么是 DPoS ?

委任权益证明。DPoS 是一种区块链的共识算法, 2014 年 4 月由 Bitshares 的首席开发者 Dan Larimer (现为EOS CTO) 提出并应用。当时 Dan 观察到比特币系统共识算法 PoW 的一些问题:比如矿池导致算力越来越集中、电力耗费过大等,所以他提出了一种更加快速、安全且能源消耗比较小的算法,这就是后来的 DPOS。

在DPoS共识算法中,区块链的正常运转依赖于受托人(Delegates),它们是完全等价的。受托人的职责主要有:

提供一台服务器节点,保证节点的正常运行;

利用节点服务器收集网络里的交易;

节点验证交易,把交易打包到区块;

节点广播区块,其他节点验证后把区块添加到自己的数据库;

带领并促进区块链项目的发展。

受托人的节点服务器相当于比特币网络里的矿机,在完成本职工作的同时可以领取区块奖励和交易的手续费。一个区块链项目的受托人个数由项目发起方决定,一般是101个受托人。任何一个持币用户都可以参与到投票和竞选受托人这两个过程中。用户可以随时投票、撤票,每个用户投票的权重和自己的持币量成正比。投票和撤票可以随时进行,在每一轮 (round) 选举结束后,得票率最高的 101(一般为101,也可以是其他数字,具体由区块链项目方决定)个用户则成为该项目的受托人,负责打包区块、维持系统的运转并获得相应的奖励。

选举的根本目的,是通过每个人的投票选举出社区里对项目发展和运行最有利的 101 个用户。这 101 个用户的服务器节点可以高效维护系统的运转,而它们也会贡献自己的能力促进区块链项目的发展。通过这种方式,既达到了去中心化的选举共识,又保证了整个系统的运行效率和减少能源浪费。