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賬戶的代碼以及如何重置密碼。

推薦閱讀:

相关文章