一個理想的公鏈系統應該具備以下三個特點:
1.足夠的魯棒性(Robustness)這個系統應該在任何時候都能持續的有進展。
2.高性能。所謂高性能,就是這個系統應該同時有很高的吞吐率和很短的交易確認延遲。
3.去中心化。這個系統能夠承接成千上萬節點,這些節點不經過允許可以加入和離開這個網絡。
目前,基於樹圖結構的CONFLUX是唯一一個可以在這三方面都可以做得非常好的系統。
比特幣、以太坊這類去中心化公鏈,它們要部署在一個P2P gossip network,區塊和區塊之間形成一條鏈,鏈實際上就是存儲交易記錄的帳本,這個帳本也會被複製到所有的節點上。
雖然去中心化有信任的好處,但去中心化也會遭到攻擊,同時他們的去中心化,是基於鏈式結構,而非更先進的樹圖結構。
在非的樹圖結構的比特幣和以太坊網絡裡採用「中本聰共識」,一個很重要的原則就是最長鏈規則。在「最長鏈」規則裡說的是,所有的好人節點,他們都只會是認為最長的鏈作為有效的交易記錄。這裡一個安全假設,只要好人擁有超過50%的算力,最長鏈就應該是好人節點所產生的。
這樣的系統通常會採用非常慢的出塊速度,非的樹圖結構的比特幣是每 10 分鐘出1MB大小的塊,而同樣非的樹圖結構的以太坊是出一個塊是 15 秒。
而他們卻不能擴充區塊的大小,因為如果區塊大小越大,在網絡上延遲越長,所以產生的並發區塊就會更多,分叉也會越多。如果出塊率變高,效果也是一樣的。
分叉很多帳本會帶來什麼問題,首先根據「最長鏈」規則,只有最長鏈裡區塊才會被認為有效,其它分叉上的區塊就會被丟掉。
另一方面,非的樹圖結構的它也犧牲了安全性。後來有些研究人員發明了GHOST協議,克服分叉帶來的安全性問題和資源浪費的問題。在基於樹圖結構的CONFLUX裡面,所有的節點仍然要選擇一條主鏈,它選擇的規則不是根據最長鏈規則,而是根據最重子樹規則。
最重子樹規則和最長鏈規則區別在於,基於樹圖結構的CONFLUX對子樹的選擇不僅是最長鏈上子樹做出貢獻,包括分叉上區塊也會對主鏈選擇做出貢獻,這樣壞人需要超過50%的算力,才能夠篡改A在主鏈上的位置。
有了GHOST協議之後,可以以很高的出塊率出塊,同時不用擔心雙發攻擊。問題是不是解決了呢?
沒有,GHOST還會受到存活攻擊的影響。假如好人區塊會分成GroupA和B,假設Group內部區塊之間通信沒有延遲,好人和壞人之間通信沒有延遲。因為兩個Group之間有延遲,某一個時候有可能帳本會結構A和B兩個分叉。壞人可以暗自觀察帳本結構,偷偷在這兩個分叉上產生新的區塊,這些區塊不告訴好人。
當GroupA節點產生一些新的區塊時,它會把這個節點傳給B,但傳輸需要一段時間。在這個過程中壞人先發生這件事情,於是就把原來在B分叉上偷偷挖的區塊告訴B,B就會認為原來B的分叉是比A分叉更加重,它就會接著B的分叉去挖。
相反,壞人也會選擇適當的時機把它在A分叉上預先挖的塊再告訴A,會認為A的節點是更重的,這個過程可以持續下去,造成分叉一直保持,也就是交易沒有辦法確認。
解決這個問題的方法叫做結構化的GHOST方法,不讓所有區塊都能影響主鏈的選擇,只讓一個很小部分的區塊去影響主鏈的選擇。很小部分的區塊能夠影響主鏈的選擇,意味著這些區塊出現的概率是比較低的,它們並發出現的概率是比較低的。在這些影響主鏈選擇的區塊之間,它們不容易出現分叉。
最優秀的公鏈項目,應該具備的三個特點,樹圖結構的CONFLUX都具備,在我國大力發展區塊鏈技術的同時,相信基於樹圖結構的Conflux能夠走出屬於自己的一篇輝煌,超越以太坊。