EOS Dawn3.0 正式发布,对于EOS的百万TPS之路,又更进了一步!本部分就针对白皮书2.0的性能奥秘做相应解读,EOS为何可以达到百万的TPS。

原文与译文

Transaction Confirmation

Typical DPOS blockchains have 100% block producer participation. A transaction can be considered confirmed with 99.9% certainty after an average of 0.25 seconds from time of broadcast.

In addition to DPOS, EOS.IO adds asynchronous Byzantine Fault Tolerance (aBFT) for faster achievement of irreversibility. The aBFT algorithm provides 100% confirmation of irreversibility within 1 second.

交易确认

典型的DPOS区块链可以保证有100%区块生产者参与。一个交易从广播开始后平均 0.25秒就可以 99.9% 被认为是确认了。

在DPOS共识机制下,EOS.IO 通过增加非同步拜占庭容错更快的实现了交易的不可逆。非同步拜占庭容错演算法在1秒内便可确认这种100%的不可逆性。

Transaction as Proof of Stake (TaPoS)

The EOS.IO software requires every transaction to include part of the hash of a recent block header. This hash serves two purposes:

prevents a replay of a transaction on forks that do not include the referenced block; and

signals the network that a particular user and their stake are on a specific fork.

Over time all users end up directly confirming the blockchain which makes it difficult to forge counterfeit chains as the counterfeit would not be able to migrate transactions from the legitimate chain.

交易作为权益证明

EOS.IO软体要求每个交易都包括最近的区块头部分哈希。 这个哈希有两个目的:

1.防止不包含引用区块的分叉上出现重复的交易记录;

2.通知整个网路用户和权益都在某个特定的分叉上。

随著时间的推移,所有用户最终都会直接确认区块链,这使得伪造链变得困难,因为伪造者无法将合法链中的交易迁移。

概念解析

非同步拜占庭演算法(aBFT)--此前的BFT演算法,如实用拜占庭容错演算法PBFT是基于同步假设,性能很差,实用性低。而基于非同步假设的BFT演算法,弱化了假设,使得性能大幅提升。

区块头(block header)--区块数据在逻辑上分为区块头和区块体,我们先来看看比特币、以太坊、EOS数据结构对比:

▲ 比特币

▲ 以太坊

▲ EOS

从三个区块头结构,便可以看出三者之间的对比。比特币和以太坊都需要挖矿去寻找随机数nonce,但EOS的区块头中却不需要浪费算力去挖矿。取而代之的是21个超级节点作为生产者,去生产区块。

交易作为权益证明-(TaPOS) ,交易包含最近的区块头哈希,具体来说由以下三个部分构成:Reference block number (引用的区块号)、Reference block header (引用的区块头)、Expiration time of transaction (交易过期时间)。

▲ 交易的数据结构

从这段交易的示例来看,ref_block_num、ref_bolck_prefix(区块头哈希值的前缀)、expiration, 构成了这个交易,确保一笔交易在所引用的区块之后和交易过期日期之前能够发生。

每秒交易数(transactions per second,简称TPS,又叫吞吐量),影响tps的因素有三个:出块速度、确认时间、容量。以比特币为例:其出块速度为10分钟、确认时间为60分钟(需要六个节点确认)、容量为1M。如果把出块速度由10分钟降为1分钟,则tps提升10倍;如果把容量1M扩容到8M,则tps提升8倍。比特币的分叉也正是因为扩容争端引起,可见tps对于区块链性能起著一个至关重要的作用。

知识延伸:

本章内容中,新版白皮书2.0对于1.0版本进行了如下修改:

1.一个交易从广播开始后平均 0.25秒就可以 99.9% 被认为是确认了。(1.0版本白皮书中为:一笔交易可以认定为99.9%被区块链接收了需要1.5秒)

2.15个生产者签署了一个区块,该区块被认为是不可逆转的,不可逆转的共识应该在1秒内完成。(1.0版白皮书中为:在正常情况下15个区块确认平均需要45秒。)

3.EOS.IO软体要求每个交易都包括最近的区块头部分哈希。(1.0版白皮书中为:EOS.IO软体要求每个交易都包括最近的区块头的哈希)

梅克尔根(Merkle根):是指Merkle tree的根,而梅克尔数其实就是一种采用哈希散列演算法来保持资料库中数据一致性的且简化储存的一种方法,实际上就是将区块中的事务哈希值分组,再计算这些分组的哈希值,递归循环,直到计算出最后一个哈希值就是梅克尔根。

这么说可能有点抽象,我们拿比特币的梅克尔根举例说明一下:比特币的梅克尔树也叫二叉梅克尔树,二叉的名字也就是来源于比特币的梅克尔总是将两个事务的哈希值两两组合,计算出新的哈希值,再将新的哈希值两两组合,直到形成最后一个哈希值,这就是梅克尔根。

梅克尔树应用解决了需要耗费大量资源去对比网路中两个节点数据是否一致的问题,现在只需要通过对比梅克尔树,就可以很快找到不一样的数据块位置。

出块时间 确认时间 TPS

▲ 来自IMEOS社群的碰撞

▲ 交易速度对比

对于用户体验来说,确认时间是他们更为关心的问题;而对于开发者来说,tps是一个更为关键的指标。目前许多区块链都声称百万级别的tps,这个tps很有可能没有考虑到确认时间,因为确认时间与共识演算法有决定性的关系。只有采用DPOS的少数节点确认,才有可能达到百万级别的速度。

1秒确认速度

确定区块不可逆速度提升如此之大的原因在于在传统DPOS中加入了拜占庭容错演算法(BFT),交易只用等待选举出来的代理节点确认和打包,不需要等待其他非信任节点的确认,大大节约了交易确认时间的消耗,而且只要没有生产者签署具有相同时间戳或相同区块高度的两个区块,便允许所有生产者签署所有区块从而实现更快的不可逆转。非同步拜占庭容错(aBFT)演算法可在1秒内实现100%的确认,并且不可逆转。

百万TPS

DAWN 3.0给出了不同条件下单条链的测试结果,最差情况是1000TPS,理论最优情况是8000TPS,平均性能则是3000TPS。

由于跨链通信,我们可以根据需要在不同链之间分配工作量。代币可以可靠并且安全的在不同链之间转移。由于相同(或不同)矿工并行运行1000条链,我们可以看到每秒数百万的交易。这就是其他区块链提出的理论扩展方案的实际实现。

预告:下一篇是《解读EOS最新白皮书之账户体系》,这是EOS非常人性化的体系设置,在这部分也会详细解读EOS账户的代码以及如何重置密码。

推荐阅读:

相关文章