Hashgraph是一种号称能让区块链技术过时的全新的共识协议,类似于DAG的一种交易hash图,官方声称它的特点是:
- 250,000+ 的TPS
- 经过数学证明的公平性
- 银行级的安全性
看上去已经解决了当前区块链的一些痛点。但还是先来看一下Hashgraph的介绍,看看其优缺点,再下结论说它是不是一种颠覆性的技术。
什么是Hashgraph
Hashgraph是一种新的区块链共识机制,它依赖于gossip协议工作,gossip协议的原理简单地说就是消息像八卦一样告诉自己的邻居,邻居再告诉它的邻居,这样一直广播出去,直到全网都知道了这个消息。
- Hashgraph中的每个节点都可以将新创建的交易和从其他人那里收到的交易的签名信息(也叫事件)传播给其随机选择的邻居。
- 这些邻居将收到的事件与从其他节点收到的信息聚合成一个新事件,然后将其发送给其他随机选择的邻居。
- 这个过程一直持续到所有节点都知道在开始时创建或接收的信息。
由于八卦协议的快速收敛性,每条新信息都可以快速到达网络中的每个节点。
gossip协议的传播历史可以通过有向图来说明,即,每个节点维护一个图,表示每次交易的转发者/证人序列。
在理想情况下(没有拜占庭节点),所有节点对所有交易及其证人具有相同的观点。 此外,通过执行虚拟投票,每个节点可以根据是否有超过全网2/3的节点(也叫目击者)来确定交易是否有效。 请注意,哈希图的运行环境是假设不到1/3的节点是拜占庭节点(也就是通过伪造,延迟,重放和丢弃消息的节点)。
优缺点
-
快速。Hashgraph使用gossip协议并做了一定的优化,使得消息通信的开销变得更小,把gossip协议本身变成了一种共识协议。然而,Hashgraph速度很快的另一个原因是:目前它的节点需要在许可下工作。类似有联盟链或私链。
为什么在许可模式下的速度可以很快,而非许可模式下的速度很难提上来,先看一下2者区别。
在像比特币/以太坊这样的公链中,参与共识的节点事先不知道,也不可信,因为任何节点都可以随意加入或离开网络。 此外,共识机制必须考虑到恶意节点,尤其是Sybil攻击,其中单个用户生成多个节点来影响共识流程,因为一个节点一票,大量的sybil节点可以明显提高攻击的成功概率,例如,发生双重支出攻击。 在公链中解决这些问题会影响整体吞吐量。
另一方面,在私人(经许可的)分布式分类账中,所有节点的身份都是事先知道的,并且网络不对任意参与者开放。事先知道参与节点的身份,可以有效防止Sybil攻击,并使其更容易达成共识。这意味着不需要建立Sybil阻力机制,因此吞吐量可以显着提高(与公链相比)。
-
公平。Hashgraph通过共识时间戳提供公平性。这意味着如果一项交易在其他交易之前达到网络的2/3,那么它被认为是第一项交易。这是一个相对公平的制度,因为2/3的网络是证人,大多数人很难做出不公正的决定。
然而,Hashgraph是基于gossip协议的,这意味着当一个节点随机均匀选择其后继者时,存在一些概率(例如,如果节点的邻居是全局的且均匀随机选择的,则为1/3节点)使得选出来的节点可能是拜占庭式的或恶意的。这些恶意继任者可能不会将交易传递给下一组节点,从而防止交易达到网络的2/3,这对诚实节点是不公平的。或者能够确保每个诚实节点连接到其他诚实节点,并且每个消息可以传送到其他诚实节点而不被中间的拜占庭节点阻止,但是这也不是一个容易解决的问题。要部署为一个公链,这个问题必须得解决。
-
安全。Hashgraph是异步BFT,但它不是确定性的。在Fischer等人(1985)表明,在异步系统中,即使在仅有一个故障节点的简单情况下,不可能存在确定性的共识协议。在有拜占庭节点或恶意节点的场景下,共识协议要么是非确定性异步(典型的PoW),要么是确定性非完全异步(典型的PBFT)。
对于确定性协议,所有诚实的节点通过轮r对某些先验已知的常数r达成一致。
对于非确定性或概率性协议,当r接近无穷时,在r轮接近零后,诚实节点未定。
对于同步协议,消息保证在一定的边界Δ之后传递。
对于异步协议,没有这样的边界。
Hashgraph通过增加随机性成为一种非确定性的异步协议。假设共识协议最终会终止,但终止发生的时间是不确定的。在目前的设计中,Hashgraph使用掷硬币(即签名的中间位)作为节点做出决定。因此,经过多轮抛硬币后,所有诚实节点具有相同的值的概率是非零的。最终所有诚实的节点将会变得一致。然而,如果所有拜占庭节点试图通过操纵gossip协议来破坏协议规则,如上面第2点所详述的那样,这种抛硬币方法的有效性和效率就成了问题,因为它可能需要多轮才能达成共识。
总结
哈希图是一个有趣的共识协议,已被证明在许可环境中产生高吞吐量。Hashgraph在其当前运营的许可设置内是快速,公平和安全的。但是,如果在公共环境中使用Hashgraph,它将面临与其他公共块链现在面临的相同问题,并且可能无法维持其安全性和性能。
事实上,可扩展性对于公共区块链来说仍然是一个开放的问题。看到社区提出的新解决方案很有意思。例如,以太坊在Casper协议中使用PoS,NEO使用dBFT,EOS使用基于dPoS的解决方案,而Zilliqa使用分片。所有这些解决方案都有其各自的优点和缺点,因为没有解决可扩展性问题的灵丹妙药,而且许多科学问题从未出现过。
另一个重要问题是可扩展解决方案实际上意味着什么?这是否意味着该解决方案在用户数量,交易数量或网络规模方面是可扩展的?如果一个P2P网络能够处理数千个事务,我们可以称这个解决方案是可扩展的吗?如果是这样,当网络扩大两倍时会发生什么 - 可以保持吞吐量吗?事实上,可以在单一维度上扩展的解决方案可能不适合需要在不同维度上进行扩展的用例。目前,Hashgraph只能扩展已处理的交易数量,但不能与网络中的节点数量一起扩展。 Zilliqa是扩展网络中节点的数量而变化。