区块链共识英语
⑴ 区块链共识机制有哪些
区块链共识机制主要包括以下几种:
**1. 工作量证明(Proof of Work,PoW)
**2. 权益证明(Proof of Stake,PoS)
- 简介:权益证明机制根据节点持有的代币数量(即“权益”)来决定其成为验证者的概率,从而参与区块的创建和验证。
- 特点:相比PoW,PoS机制能耗更低,交易确认速度更快,但可能面临权益集中化的问题。
**3. 实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)
- 简介:PBFT是一种容错协议,允许在存在拜占庭错误(即恶意节点)的情况下达成共识。它适用于联盟链环境。
- 特点:具有低延迟和高吞吐量的特点,但节点数量受限,且需要较高的通信复杂度。
**4. 授权拜占庭容错(delegated BFT,dBFT)
- 简介:dBFT是PBFT的一种变体,通过选举代表节点来参与共识过程,降低了节点的参与门槛。
- 特点:在保持拜占庭容错能力的同时,提高了系统的可扩展性和效率。
**5. 验证池(POOL)
- 简介:验证池机制是一种结合了权益证明和工作量证明特点的新型共识机制。它允许节点通过质押代币或参与工作量证明来成为验证者。
- 特点:旨在平衡去中心化、安全性和效率,但具体实现和性能可能因项目而异。
综上所述,区块链共识机制多种多样,每种机制都有其独特的优点和适用场景。在选择共识机制时,需要根据项目的具体需求和目标进行权衡。
⑵ POA(Proof of Activity)区块链共识算法
POA(Proof of Activity)算法是一个区块链的共识算法,基本原理是结合POW(Proof of work)和POS(Proof of stake)算法的特点进行工作,POW算法和POS算法的具体内容可以参考:
POW算法 : https://www.jianshu.com/p/b23cbafbbad2
POS算法 : https://blog.csdn.net/wgwgnihao/article/details/80635162
POA算法相比于其他算法可以改进网络拓扑,维持在线节点比例,需求更少的交易费同时减少共识算法过程中的能量损耗。
POA算法需求的网络中同样包含两类节点,矿工和普通参与者,其中普通参与者不一定一直保持在线。POA算法首先由矿工构造区块头,由块头选出N个币,这N个币的所有者参与后续的校验和生成块的过程。
从这里可以看到POA算法不仅与算力有关,后续的N个参与者的选举则完全由参与者在网络中所拥有的币的总数量决定。拥有越多币的参与者越有机会被选为N个后续的参与者。而后续N个参与者参与的必要条件是这N个参与者必须在线,这也是POA命名的由来,POA算法的维护取决于网络中的活跃节点(Active)。
POA算法的一个理想的基本流程是,类似于POW协议,矿工构造出一个符合难度要求的块头,通过矿工得到的块头计算衍生出N个币的编号,从区块链中追溯可以得到这几个币目前所述的参与者。矿工将这个块头发送给这N个参与者,其中前N-1个参与者对这个块进行校验和签名,最后第N个参与者校验并将交易加入到该块中,将这个区块发布出去,即完成一个区块的出块。
一个理想过程如下图所示:
在实际运行中,无法保证网络上所有参与者都在线,而不在线的参与者则无法进行校验和签名,这个无法被校验和签名的块头则会被废弃。
即在实际运行中,应该是一个矿工构造出块头后广播给各个参与者签名,同时继续重新构造新的块头,以免上一个块头衍生的N个参与者存在有某一个没有在线,而导致块头被废弃。
因此,在这种情况下,一个块是否被确认不仅与矿工的计算能力有关同时也与网络上的在线比例有关。
与纯POW相比,在与比特币(POW)同样10分钟出一个块的情况下,POA由于会有参与者不在线而产生的损耗,因此,10分钟内矿工可以构造的块的数量会更多,即块头的难度限制会降低,那么矿工在挖矿过程中会造成的能量损耗也会降低。
与纯POS相比,可以看到POA的出块流程并不会将构造区块过程中的相关信息上链,可以明显减少区块链上用于维护协议产生的冗余信息的量。
本节对上诉协议中一些参数设置进行分析
在矿工构造出块头后对块头进行校验和区块构造的N个参与者的数量选定比较类似于比特币中每一个块的出块时间的选取。比特币中选择了10分钟作为每一个块的期望出块时间并通过动态调节难度来适应。
这里N的取值同样可以选择选定值或者动态调节。动态调节需要更加复杂的协议内容,同时可能会带来区块链的数据膨胀,而复杂的协议也增加了攻击者攻击的可能性。另外暂时没有办法证明动态调节可以带来什么好处。静态调节在后续的分析(4 安全分析)中可以得到N=3的取值是比较合适的。
从上面的描述可以看到,构造新的区块的除了矿工还有从块头中衍生出来的N个币所有者。在构造出一个新的区块后,这些参与者同样应该收到一定的激励,以维持参与者保持在线状态。
矿工与参与者之间的非配比例与参与者的在线状态相关。给予参与者的激励与参与者保持在线状态的热情密切相关,越多参与者保持在线状态,能更好地维持网络的稳定。因此,可以在网络上在线参与者不够多的时候,提高参与者得到的激励分成比例,从而激发更多的参与者上线。
如何确定当前参与者的在线情况呢?可以最后第N个参与者构造区块时,将构造出来但是被废弃的块头加入到区块中,如果被丢弃的块头数量过多,说明在线人数过低,应当调节分成比例。
同时最后第N个参与者与其他参与者的分成同样需要考虑,第N个参与者需要将交易加入区块中,即需要维护UTXO池,同时第N个参与者还需要将被丢弃的块头加入新构建的区块中。
为了激励其将废弃区块头加入新构建的区块中,可以按照加入的区块头,适当增加一点小的激励。虽然加入更多的区块头,可以在下一轮的时候增加分成的比例,应当足够激励参与者往区块中加入未使用的块头了(这里参与者不可能为了增加分成而更多地加入区块头,每一个区块头都意味着一位矿工的工作量)。
一个参与者如果没有维护UTXO池则无法构造区块,但是可以参与前N-1个的签名,因此为了激励参与者维护UTXO池,作为最后一个构造区块的参与者,必须给予更多的激励,比如是其他参与者的两倍。
从3.2的描述中可以知道一个用户必须在线且维护UTXO池才可能尽可能地获得利益。这种机制势必会导致一些用户将自己的账户托管给一个中心化的机构。这个机构一直保持在线,并为用户维护其账户,在被选为构造区块的参与者时参与区块的构建并获取利益。最后该机构将收益按照某种形式进行分成。
上面说到参与者必须用自己的密钥进行签名,而托管给某个机构后,这个机构在可以用这个密钥签名构造区块的同时,也有可能使用这个密钥消费用户的财产。这里可以采用一种有限花销的密钥,这个密钥有两个功能,一个是将账户中的部分财产消费出去,另一个是将所有财产转移到一个指定账户。在托管的时候可以使用这个密钥,在被通知部分财产被花费后可以立即将所有财产转移到自己的另一个账户下,以保证财产的安全。
从上面的分析可以看到,POA的安全性与攻击者所拥有的算力和攻击者所拥有的股权有关。假设攻击者拥有的在线股权占比为 ,则攻击者的算力需要达到其他所有算力的 倍才能达成分叉。假设攻击者股权总占比为 ,网络中诚实用户的在线比例为 ,则攻击者的算力需要达到其他所有算力的 倍才能达成攻击。
攻击的分析表格如下:
从上文的分析可以看到,POA算法相比于其他算法可以改进网络拓扑,维持在线节点比例,需求更少的交易费同时减少共识算法过程中的能量损耗。同时,PoA协议的攻击成本要高于比特币的纯PoW协议。
参考文献:Proof of Activity: Extending Bitcoin’s Proof of Work via Proof of Stake
⑶ 什么是共识
共识,英文为 Consensus,是区块链领域中的核心概念。本文将详细阐述在区块链条件下共识的精确含义。
在传统社会中,共识是一个非常人文的概念。字典上将其定义为:大家都可以接受的观念或者决定。观念和决定是两个不同的层面,观念影响达成共识的过程,以确保流程的公正。而决定则是一份条款明确的文件,代表着最终的决议。
传统社会的共识基于宗教文化、道德标准、国家利益和法律法规等人类社区的基石性概念。然而,基于人文达成的共识存在根本性问题,不同国家之间的观念差异可能导致共识破裂。观念冲突是共识失败的根本原因。
数字社会中,共识的达成越来越依赖于数学和代码。计算机科学下的共识定义为:在分布式计算机系统上,通过容错措施,确保系统可靠运行,使各组件达成对同一数据的认可。区块链系统中的共识描述为:所有节点在各自区块链上接收相同区块。这实质上意味着所有矿工达成数据统一。
数字时代的共识与传统共识存在显著区别。共识不再基于观念,而是数学原理,数学成为全球共识的基础。拥有共同接受的观念,是达成共识、生成可接受数据的前提。
区块链世界中存在几种共识算法,体现了人文属性。POW算法基于民主制,采用一人一票的方式,有效避免多数人暴政。POS算法类似公司表决,富人持有系统股份,可能导致共识偏向于利益集团。DPOS算法类似代议制民主,根据公平投票原则选出代理人执行记账操作,但可能引发精英与底层的矛盾。
尽管区块链共识算法中包含人文痕迹,但算法中的观念相对透明、普世。这标志着科技对人类社会的巨大推动。
本文探讨了共识的概念及其在区块链和传统社会中的应用。共识作为普遍接受的观念和决定,对达成最终决议的过程至关重要。在全球化进程中,观念冲突加剧,数字社会通过数学方法达成共识。尽管区块链共识算法中存在人文元素,但透明和普世的价值观念使共识的达成更加公正。