开发一条公链,对于任何技术团队都是一件极具挑战性的事情。假如糟糕的网络通信这种被动的恶意,还能让人接受,那么不择手段的双花、DDoS、智能合约攻击等等,让我们必须谨慎的设计每一个逻辑环节。
公链面临的问题
我们先来看看公链设计中的“不可能三角”问题:Scalability、Decentralization、Security。
Scalability,可以理解为可扩展性,例如分片技术;也可以理解为网络能耗低,保证网络的性能最优,总的来讲就是优异的TPS。
Decentralization,去中心化是如何保障网络的去中心性,这就要求该网络需要是一个对等网络,该网络中的机器的地位都是平等的,不存在任何特殊化的中心节点,同时为了保证该网络的去中心性,该网络需要是一个开放的无准入的网络,从而可以让人人都能够加入该网络,且该网络不会被一个或多个中心控制。
Security,安全性是保障该网络足够安全,不能被坏人破坏。在一个开放并与经济利益挂钩的网络中,不仅会有好人购买机器加入这个网络,也会有更多的坏人企图希望通过破坏该网络获利。那么,如何在网络内部存在坏人的情况下,保证网络的安全性,这已经突破了传统意义上的安全架构,是安全设计的挑战。
PoW的算力浪费以及单节点产块让它的性能低下,PoS面对众多安全问题,例如无厉害攻击、远程攻击等,DPoS的产块节点有限,虽然有选举制度,但是它的去中心化就是让人耿耿于怀,而PBFT的同步通信让它的节点数注定会受到制约。
以上是现有共识的优缺点,而我所在的alabs ADAG公链团队,选择了Hashgraph作为基本共识算法来设计我们的公链,因为我们通过严谨的分析该共识算法,并在此基础上做了重要的改进,在不破坏算法严谨性的同时,让它面对公网环境时,也能具有很强的说服力。我们在它身上,看到了画出一个尽可能最大三角的可能,以下就谈谈它的性能,去中心化和安全三个维度的情况。
ADAG为什么选择Hashgraph共识