{"content":{"title":"共识发展的核心问题及其改进方向","body":"> 通过对近年论文总结做的笔记，从个人角度思考，仅供参考。\r\n## 一、研究背景\r\n针对公链共识的基础要求：通过阅读和完成共识协议的比较，我们首先要明确，任何的区块链共识协议都需要满足基本的安全性，最理想的情况是一笔新交易到达之前，网络各节点就对前一笔交易的有效性进行了确认，但我们必须考虑到，公链网络节点数量规模大，无论通信消息有多小，都存在无法忽略的瞬时延迟，如果采取强一致共识，会存在两方面问题，一个是巨大的通信开销（通信复杂度随着网络规模呈二次方增长），另一个是网络带宽，也就是通信能力是有限的，很难在有限的时间达成一致，所以对于公链我们应该考虑的是弱一致性的情况。\r\n\r\n针对PoW所存在的不足：首先讨论，区块链典型代表比特币，比特币是在无许可环境中的第一个完成实现BFT共识协议，它通过工作量证明（PoW）算法选举领导者进行出块，通过最长链原则实现概率性确定，PoW能够有效地防范女巫攻击以及双花攻击，因为产生区块要耗费一定的算力，而要成功实施双花攻击需要掌握全网51%的算力。\r\n\r\n共识共有的限制因素：比特币的吞吐量和交易确认延迟无法满足用户需求，其性能瓶颈是由多种因素造成的，比特币产生区块之后，要进行区块广播，区块验证和确认，当区块间隔足够长，才能给区块广播验证和确认提供充裕的时间，从而减少未确认区块又产生新区快的可能性，进而减少网络分叉的风险。而**这一过程的处理速度实际上是与区块链网络通信能力，也就是网络负载能力，以及节点对区块处理能力相关**。\r\n## 二、现有协议改进技术调研\r\n现有PoW后续优化的协议主要是通过以下两个大方向进行优化的：\r\n1. 提升TPS\r\na.  对选举方式进行改进。通过减少Bitcoin-NG，Prism以PoT这几篇论文将选举出块节点和出块分开，进而使一段时间内由一个节点打包交易出块，这可以使区块网络的带宽减小，同时采用最长链的原则来实现区块finalization。\r\nb.  通过对底层网络拓扑的优化，从而对通信进行优化。Solana的PoH对网络消息转发进行优化，并且采取出块与验证并行的策略，而后采用PoH的出块方式，一方面在一段时间内只有一个leader进行出块，另一方面优化区块传播方式，优化底层网络拓扑，通过流水线式传播，进而减小网络的负载，加上滞后的验证方式，来延长通信时间。\r\nc. 允许区块链网络在一定时间内分叉，延长区块在网络传播时间。基于DAG的共识，例如以太坊的GHOST（2017）和conflux，允许区块链短暂的分叉，相当于针对其有限网络负载和区块生成速度进行了折衷，通过允许分叉来延长通信的持续时间，对于其会产生的分叉，通过最大权重来实现block finalization，牺牲了一定的安全性。（分片部分还没具体看）\r\n2. 提高去中心化\r\n    PoW是通过算力进行竞争，这对矿工的计算性能要求越来越高，随着越来越多的节点参与区块链，对设备要求更高更专业，现在设备趋向选择专用集成电路（ASIC），这不利于个人节点加入比特币网络，这会导致区块链网络中心化，不利于区块链网络安全。\r\n    \r\n那么有很多共识协议就想着缩短专用设备和和个人设备的距离，这样就能使更多节点加入网络。例如，比较火的Filecoin的共识协议PoRe是通过存储空间代替算力来进行竞争记账权，以及PoSt则是用Data storage time来代替，采用PoSt减少通信成本，以及Hyperledger Sawtooth 采用的 PoET 依赖于可信执行环境 （TEE）等等。\r\n\r\nPoS作为最有可能替代PoW的共识协议，它能够补充PoW在以上两问题的不足。PoS的里程碑Peercoin（2012）将PoS和PoW结合，h(x)<=target * stake，并且采取币龄最高链为block finalization。以及第一个纯PoS加密货币Nxt ，节点拥有的加密货币越多，获得生成区块的权利的机会就越大。这样的PoS也带来了新的问题，攻击者可以通过增长币龄操控节点的选举，以及中心化的问题。如果leader的产生是可预见的，或是恶意节点通过特定手段便可让其选举成功，进而使恶意节点操控网络，从而破坏区块链网络安全，所以PoS协议设计需要考虑到leader的产生不可预测不可操纵。\r\n\r\n 随着密码学、分布式计算、可信多方计算等发展，很多共识协议将其加入在其中，用于出块节点的选举和区块的验证。基于委员会的PoS，共识对象议委员会为单位，这样可以减小达成共识的通信开销，是为了其增强选举出leader的随机性，通过安全多方计算（MPC）生成委员会，以及leader名单。Ouroboros（2017）通过可公开验证秘密共享(PVSS)选举下一个epoch的出块者名单，对应着每个slot进行出块，这带来了leader被攻击的风险，或是提前贿赂leader的可能。Ouroboros Praos通过可验证随机函数（VRF）以本地加密计算为代价节省了大部分通信开销，leader名册不公开，生成leader可以安全验证。Algorand（2017）在基于委员会的PoS的基础上，通过一种称为加密排序的VRF方案完成的，该方案根据stake对候选人进行排序，只有排名高于阈值的人才被接纳进入下一个区块周期的委员会。\r\n \r\n区块链网络由委员会进行共识，但随着网络节点越多，委员会中节点数量也会增多，通信开销也会随之增大，可能出现宕机和性能下降的情况。又加上其采用的大部分是LCR这种概率性总结规则，在这种情况下，也容易出现Nothing-at-Stake，也就是双押攻击，以致于更加容易出现网络分叉的情况。\r\n\r\nPoS为了确保block finalization的确定性，将BFT作为其区块终结方式，同时，也在减少委员会内的通信开销努力。早期的Tendermint（2014）将BFT和PoS分离，通过BFT来进行共识投票，但由于未实施有效的slash规则，很容易出现懈怠行为，进而影响其区块链安全性。Algorand过BA*（拜占庭共识，满足调节的候选者通过密码学抽签随机选取）来达成共识。CasperFFG（2017）首先将网络中活跃的验证者随机地加入各个委员会，以委员会为单位进行出块和投票收集，通过检查点和投票权重结合，并结合一系列奖惩措施去保证PoS的正确执行。\r\n## 三、总结\r\n安全性是我们设置共识协议的前提条件，在这个基础上，我们再结合对应的使用场景在去中心化和可扩展性之间进行平衡。在设计共识协议的时候，可以尝试在这些方面进行优化： \r\n\r\n  a. 对PoX出块方式进行优化，将X与特定场景性能进行结合，就类似于将算力工作运用在别的地方，或者与IoT相应特性结合，例如PoLe(与强化学习结合)；\r\n  b. 减少区块链网络的通信开销，例如对底层网络拓扑进行优化，或者将出块方式进行拆解，异步并行处理，另一个方面，对重复或是冲突交易进行处理；\r\n  c. 通过密码学等来对共识过程进行优化，例如通过密码学改进区块验证方式，减少区块处理时间，或是增强选举过程的随机性."},"author":{"user":"https://learnblockchain.cn/people/18116","address":"0x3F3cFa84D3825185C897cC6FCaac35431169Dc2F"},"history":"bafkreicupoud3m6ly3chunaep55ttcy4yk7fbxnsca2ejutfy5fbaauve4","timestamp":1709105029,"version":1}