• <option id="cacee"><noscript id="cacee"></noscript></option>
  • <table id="cacee"><noscript id="cacee"></noscript></table>
  • <td id="cacee"></td>
  • <option id="cacee"></option>
  • <table id="cacee"></table>
  • <option id="cacee"><option id="cacee"></option></option>
  • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
    <option id="cacee"><option id="cacee"></option></option>
     找回密碼
     立即注冊

    掃一掃,登錄網站

    首頁 自媒體 查看內容
    • 1027
    • 0
    • 分享到

    對話 Conflux: Layer1 還有很大提升空間,公鏈還沒到需要 trade-off 的時候

    2019-8-29 00:01

    來源: chengpishu

    Conflux 辦公室在五道口,距離清華大學很近。這是一個有很強學術背景的公鏈團隊。創始人龍凡博士 5 歲開始學編程,獲得過兩塊國際信息學奧賽(IOI)金牌,保送清華大學,在麻省理工學院拿到博士學位后,于多倫多大學擔任助理教授。華人唯一圖靈獎得主姚期智教授是Conflux的首席科學家。團隊中研究核心協議的技術人員,幾乎也全是清一色的競賽保送學霸,加上“清華姚班”的標簽,這個五十多人的團隊無論在哪里都顯得有點特別。

    同 Algorand 一樣,Conflux 也是先有論文再開始籌備的項目。可能是因為這種學術基因,團隊很看重提出一種新的技術方案時有沒有嚴格的數學證明。Conflux 負責理論研究工作的研究總監楊光博士告訴橙皮書,對于公鏈這樣的涉及到密碼學和安全性的項目,學術背景的團隊通常會更傾向于先把理論上的東西搞清楚,證明方案在數學上是完備可靠的再動手做。這個證明過程最直觀的產出就是相應的學術論文。

    在看重技術理論的同時,龍凡也對魚龍混雜的行業現狀感到無奈。他發現這個圈子充斥著大量的騙子、民科,很多時候談技術是沒有用的。以前常有人問 Conflux 和其它 DAG 項目的區別,龍凡起初會嘗試小心地解釋二者技術上的差異,當被問太多次之后,他更習慣直接說,區別就是“他們是錯的,而我們是對的”。對錯在幣圈創業者眼里或許是一個很陌生的表達,在這里指的是技術方案在理論上是否可行。

    在兇險的公鏈賽道里,競爭往往是全方位的。任何形式的市場,不管是公募、ICO 還是上交易所,對團隊來說都是走入一個又一個搏殺的斗獸場,里面擠滿了對風險一無所知又想一夜暴富的散戶。這樣的散戶往往有一種奇怪的邏輯:既然你技術這么好,那你就拉盤給我看看。在這種邏輯下,幣價下跌就是項目的原罪。市場表現一旦不好,散戶的質疑就會撲面而來。

    這也是為什么近期第三代公鏈集中上線卻遭遇許多之前沒有料想到的質疑。說白了,很多團隊其實低估了市場的兇險。“教授幣”從最初受到熱烈追捧的概念,再到如今成為某種警告散戶不要碰的標簽,就是最好的證明。“學術基因”未來可能也會成為人們質疑 Conflux 的一個標簽。不過 Conflux 團隊之前已經公開承諾了絕不會進行公募,更不會和任何中心化交易所合作進行IXO。“謹慎”看起來是他們目前采取的最好的策略。

    對于自己所選擇的技術路線,以龍凡為首的 Conflux 則顯得非常有自信。他們在社區建設上的思路也和其他團隊不太一樣。龍凡告訴橙皮書,Conflux 上線后,除了一些常規的動作,比如對 DAPP 開發者進行扶持外,還會嘗試和政府機構展開一些合作,共同打造一個開放的開發平臺。因為行業目前還遠未發展成熟,政策方面仍有很多空白,Conflux 希望通過這個開發平臺,為開發者和政府之間提供一個有效的溝通管道,“至少能讓他們問一句什么東西可以做,什么不能做,這可能會是開發者非常重要的需求”。

    事實上,學術基因不僅會影響團隊做事的風格,也在一定程度上塑造著 Conflux 想達成的目標。“MIT 一所大學所擁有的 IP 地址數量和全中國一樣多。為什么?因為美國是互聯網游戲規則的制定者。將來區塊鏈可能成為和互聯網一樣重要的東西,無論從國家戰略層面還是其他層面,現在都是個很好的時機”,在北美讀博士時,龍凡能明顯感覺到,同樣做一些研究,中國人想得到美國學術圈和社會的認可,其實并不容易。因此他身上有很強烈的證明自己的欲望。“We can beat them。”龍凡如是說。

    當然,Conflux 自己也清楚,公鏈不僅僅是技術,更重要的是整個生態。龍凡拿操作系統舉例子,“中國為什么不能設計自己的操作系統?我認識至少有四五十個人就可以干這事,因為做一個操作系統其實并不難,難的是生態,難的是做出一個安卓,上面能有那么多的資源和開發者。”

    作為對比,現階段的區塊鏈生態更加不完善。在龍凡看來,它仍然只是一個大賭場:“核心原因在于,因為存在吞吐量的問題、預言機的問題、layer2 的問題等等,區塊鏈還是一個被隔離開的獨立的小生態,不能跟其它世界交互,所以我們只能玩一些無中生有的東西,比如賭博”。

    要改變這樣的現狀,作為最重要的基礎設施,公鏈首先需要突破的最大瓶頸是吞吐量。Conflux 希望成為讓所有有價值的比特完成驗證和交換的地方(where valuable bits are exchanged and validated ),這意味著需要把足夠多的信息上鏈,也意味著需要通過擴容大幅度降低上鏈的成本。

    Conflux 采用了不太一般的擴容思路。他們希望在 POW 的機制下鼓勵礦工盡可能參與出塊,通過節點并行出塊來提高整個網絡的吞吐量,然后再借助樹圖結構為所有區塊確定出一個統一的順序,以此確定所有交易的先后順序并解決交易沖突的問題。這種通過改變賬本結構來擴容的方案,更聚焦于共識算法本身的擴展,與行業里更常見的分層、分片、狀態通道等擴容方案分屬不同的派別。

    “在保證安全性的前提下,layer1 的性能遠沒有做到極致。現有共識算法的效率,跟物理硬件所能達到的性能還有很大的差距。我們想先讓共識算法充分使用硬件的計算能力、網絡傳輸的速率,到達這個天花板之后,再去考慮 layer2、分片等擴容方案。而且,Conflux 本質上跟這些方案也沒有沖突,它們都可以疊加在 Conflux 上面。”

    除了希望把 layer1 的性能榨干之外,Conflux 使用樹圖方案的另一個原因是,分片這類技術在龍凡看來其實還很不成熟。“Sharding (分片)在歷史上從來都只在沒有攻擊者和對手方的環境里出現過。大家做 sharding 的時候,最多只會假設某個數據庫 down 掉了,無法響應,從來不會假設這里面還藏著一個惡意的攻擊者。所以 ETH 2.0 想實現 sharding,這里面會有非常多的坑要踩,技術難度很大。這會是一件讓人很恐懼的事。”

    Conflux 希望在一點都不犧牲安全性的情況下擴容,同時提高共識算法的效率。楊光認為,區塊鏈現在的性能其實還遠沒有到必須進行 trade-off 的時候,急于往上加 sharding 等方案只會引入不必要的復雜性。

    這個觀點很有意思。從17年以來,整個公鏈賽道發生了很多的變化。大家放棄了和不可能三角正面搏斗,紛紛選擇嘗試一些迂回的技術路線,包括分片、狀態通道、在 layer2 上做更多的擴展等等。但 Conflux 的想法是,我們腦子里想的比腳上走的快太多了,需要后退一步,先把 layer1 的性能做到極致再說。技術的進展有時候比我們想象得要慢。

    公鏈是一個技術與非技術因素雙重疊加的行業。很多時候,先發優勢所積攢的社區力量會帶來額外的收益和反哺。我不知道 Conflux 這種方案最終是不是正確的,但他們對公鏈的問題有自己的思考,也給出了自己的答案。這篇文章,希望能把 Conflux 基于樹圖的技術方案介紹清楚,讓更多人參與到這種不同思路的討論中來。

    1


       

    從比特幣和以太坊開始說起

    眾所周知,比特幣確定主鏈的方法是選出最長的那一條,即最長鏈算法。比特幣的所有分叉區塊都會被視為廢塊,不影響對最長鏈的選擇,其中交易不被計入交易歷史,挖到廢塊的礦工也不會得到任何獎勵。因此,投入到廢塊上的算力不能為系統增加任何安全性和吞吐量。

    以太坊把出塊時間從比特幣的 10 分鐘變成了 15 秒,這是一個巨大的提升,但也因為出塊時間縮短,產生分叉塊的數量大大增加。在這種情況下,繼續選擇最長鏈作為主鏈是不合適的,因此,以太坊采用了 GHOST 算法選擇最重的一條鏈作為自己的主鏈。GHOST 是一種主鏈選擇協議,遇到有分叉的情況會選擇擁有最重子樹的分支。

    那么,最重鏈和最長鏈有什么區別呢?

    簡單點說,一個看區塊的數量,一個看區塊連起來的長度:

    以太坊使用了一個變種的 GHOST 協議。在區塊獎勵上,被后續區塊引用的分叉塊,也就是“叔塊”,也會給挖出這些叔塊的礦工帶來一定的獎勵。這樣一方面能讓更多的算力為系統的安全性做出貢獻,另一方面,也能解決因為大量分叉區塊而帶來的一些中心化和公平性的問題。GHOST 協議會讓分叉區塊盡量統一到一條主鏈上。

    2


       

    Conflux 并行出塊的思路

    以太坊雖然保留了對叔塊的一點獎勵,但叔塊內的交易仍然是無效的,不被記錄在鏈上。這部分吞吐量相當于被浪費了。

    Conflux 采用了一個類似 GHOST 的方案(他們自己的算法稱為 GHAST 算法)選擇主鏈,也被稱為“樞軸鏈”。不同的是,分叉區塊會被 Conflux 視為是有效的,不僅挖這些分叉塊的礦工能得到出塊獎勵,區塊內的交易還會被記錄到鏈上。這樣相當于把分叉塊上被浪費的吞吐量撿了回來。礦工不需要等待收到所有最新的區塊就可以并行出塊。

    把分叉塊撿回來需要解決的問題,就變成了分叉塊和正常塊上所有交易的排序問題。因為如果我們能把所有交易排出一個順序,就能解決分叉產生交易沖突的問題,最終得到一個干凈的賬本。

    2.1


       

    排隊的例子

    從一個更高層次的角度來理解,Conflux 這種擴容思路其實很簡單。

    比特幣需要等當前區塊結束之后才能出下一個塊。這就像在排一個隊,所有人都擁擠在同一條隊伍里。為了避免很多人一擁而上導致混亂,比特幣選擇通過調高 PoW 的目標難度限制來人的速度(即出塊速度),因此這條隊伍的速度注定是很慢的。

    另外,最長鏈規則規定,分叉的隊伍都是無效的,除非它們能排得比現在這條隊伍更長。這樣雖然保障了排隊秩序的安全,但也損失了排隊的效率。

    Conflux 的做法是,允許所有人排成許多不同的隊伍,隨便分叉。假設同時有10個隊伍在排隊,只要我們最后能在這10個隊伍里找出一種方式確定出每個人的先后順序就可以了。

    通過這種思路,可以鼓勵礦工更積極地出塊,不過分限制系統同一時刻出塊的數量,從而充分利用帶寬資源,提高整個系統的吞吐量。這樣我們把一個擴容問題轉變成了排序問題:當允許分叉塊存在的時候,怎么確定所有區塊的先后順序?在10個隊伍里,怎么確定誰先來后到?

    答案就藏在樹圖結構里。

    2.2


       

    什么是樹圖結構

    Conflux 的區塊結構不是鏈式的,而是一個圖,同時圖中又包含一棵樹。所以 Conflux 把它稱為樹圖結構。

    Conflux 的樹圖結構為每個區塊引入了兩種邊,一條邊叫父邊,一條叫引用邊。

    所謂的“邊”指的是區塊的引用關系,一個塊引用了另一個塊就會建立一條邊,用排隊的例子來看,“邊”就相當于把在你之前排隊的人引用起來,以后通過這條邊,我們就可以知道對方是排在你前面的。

    Conflux 規定,每個區塊有且只有一條父邊。相當于一個礦工在打包一個新區塊的時候,必須選擇前面的某個區塊作為自己的父親,并且只能選擇一個父親,不能選擇多個父親。

    除了父邊,每個區塊還必須把自己看到的其它分叉上未被引用的區塊引用起來,作為引用邊。引用邊的作用是,說明在一個塊加入的時候那些被引用的分叉塊是排在自己前面的,表達一種先后順序。每個區塊可以有 0 或多條引用邊。

    如果只看父邊,Conflux 整個區塊結構就是一棵樹。

    如果同時看引用邊和父邊的話,整個結構就是一個圖。

    3


       

    怎么確定順序

    弄清楚了 Conflux 的樹圖結構,接下來我們再來討論,在分叉區塊都被接受的情況下,系統是怎么確定這些區塊的排序的。

    排序非常重要,如果我們能為所有區塊確定一個“一致”且“無法被篡改”的順序,那么:

    1、相當于我們可以根據順序逐一確定交易的有效性,兩筆交易如果沖突的話,后一筆就是無效的。2、雙花攻擊也是不可能的。除非攻擊者可以創建一個更重的分支,而這需要的工作量超過了原有分支上包括分叉區塊在內的所有區塊——而不僅僅是其中一條最長鏈上的區塊。因此,所有用于產生分叉區塊的算力都為系統貢獻了安全性。

    所以問題變成了一個排序算法的問題。因為有了引用邊和父邊的存在,這個排序算法其實非常簡單。

    排序算法需要分兩部分進行。

    通過父邊,我們能夠根據最重鏈原則,先找出一條主鏈,Conflux 把這條主鏈叫作樞軸鏈。上面的圖里,紅色的區塊就構成一條樞軸鏈。

    樞軸鏈上的區塊天然就能排出一個順序:A -> C -> G -> J -> M -> N

    其它黃色區塊怎么排序呢?

    這時候就要使用“引用邊”所表達的先后順序了。例如,在上圖中,F 區塊引用了 B 區塊,這說明在 F 區塊產生之前它就已經觀察到了 B 區塊的存在,所以 B 區塊應該排在 F 之前。

    這種情況很好理解,你可能會問:B 和 D 又該怎么排序呢?

    這里需要再介紹一個新概念。Conflux 為樞軸鏈上的區塊引入了一個叫 Epoch 的概念,類似于“時間段”、“階段”的意思。

    比如,A 區塊是樞軸鏈上的第一個區塊,所以 A 區塊處于“階段0”;C 區塊處于樞軸鏈的第二個區塊,所以 C 區塊屬于“階段1”,以此類推。

    對于樞軸鏈之外的區塊,則根據第一個直接或間接引用它的樞軸鏈區塊來判斷它屬于什么階段。具體算法并不復雜,我們用一個實際例子走一遍就能清楚了,我們以“階段3”為例:

    首先,樞軸鏈上的區塊 J 屬于“階段3”:

    J 的引用塊 F 因為之前還沒有被排序,所以它也屬于“階段3”,同時根據引用邊的關系,我們知道 F 應該排在 J 前面;

    F 的父親區塊 C 已經被納入“階段2”了,所以不屬于“階段3”,但 F 的引用區塊 B 還沒有被排序,所以 B 也屬于“階段3”。并且,根據引用關系,B 排在 F 之前。

    所以,“階段3”內部區塊的排序順序是:B -> F -> J

    也就是說,樞軸鏈區塊的引用塊,以及引用塊的父塊及其引用塊,如果還沒有被排序,那么都同屬于同一階段。這里還有一種例外的情況,就是同一階段內,有兩個引用塊彼此無法確定先后順序,那么這時候就采用哈希ID來排序。

    總結起來,排序的時候:

    1、先用樞軸鏈為不同階段排出一個順序,2、再為同一階段內的區塊進行排序。

    利用這套算法,我們可以為上圖中包括紅色和黃色的所有區塊進行一個確定的排序。你可以按照上面的步驟算一遍,看是否得出了相同的結果。

    4


       

    Conflux 方案的分析

    不管什么樣的區塊鏈系統,任何區塊只要產生了,都需要通過網絡廣播到各個節點進行同步。只要涉及到廣播,網絡的傳輸速率和負載能力就不可被忽略,因為在網絡上傳輸數據是有瓶頸的。假設網絡帶寬是一個固定值,廣播時傳輸的數據越大,速度就越慢。

    所有廣播的數據 = 真正有用的區塊 + 分叉無效的區塊 + 系統自身的開銷

    在 Conflux 系統里,分叉區塊也是有效區塊。Conflux 樂觀地假設,分叉區塊上的交易和主鏈上的交易大部分是不沖突的,所以保留全部區塊理論上就能更有效的利用帶寬。

    當然,這種方案也并非完全沒有問題。我們看看 Conflux 是怎么解決一些潛在問題的。

    4.1


       

    重復交易被打包的問題

    分叉塊內的交易可能是不沖突的,分叉塊上的算力也是誠實算力,是好人在挖,但如果分叉區塊內的交易重復了怎么辦?也就是說,怎么解決多名誠實礦工重復打包同一筆交易的問題?顯然,如果每個人打包的交易都是重復的,那么即使保留所有分叉區塊,也難以達到增加吞吐量的目的。

    對于這個問題,Conflux 通過使用一種混合策略,利用博弈機制,讓礦工盡可能會為了利益最大化而去隨機選擇交易池里的交易進行打包。當交易池里的交易數量很多時(也是最需要提高吞吐量的時候),通過隨機打包策略就可以極大地減少交易被重復打包的概率。如果交易池里只有一筆交易,那肯定每個礦工都只能打包這筆交易了,這樣交易重復度就是最高的——實際上,這也是最不需要利用并行打包提高吞吐量的時候。

    Conflux 經過理論測算得出的一個結論是,剔除掉重復交易的無效吞吐量,整套方案仍然能獲得無重復交易的理想情況下 60% 以上的擴容效果。

    4.2


       

    Liveness 活性被攻擊的問題

    因為采用的是最重鏈作為主鏈,如果有一個攻擊者通過選擇性隱藏區塊的方式讓誠實節點看到的兩條子鏈保持相近的重量,則誠實節點永遠無法一致地選出一條樞軸鏈,更沒法確認交易排序。盡管這不是雙花攻擊,但可以使整個系統陷入無法確認交易的不可用的狀態。這種攻擊也被稱為 liveness 活性攻擊。

    Conflux 解決這個問題的方法是,通過改進 GHOST 算法,也就是采用前面提到的 GHAST 算法。這個算法在出現疑似攻擊的異常的情況下,會切換成另一種模式,根據區塊處在樹圖中的拓撲位置,來給這個區塊打上不同的權重。簡單來說,這種帶權重的拓撲結構有著和比特幣類似的安全性,通過更慢的出塊速度和賦予每個塊更高的權重來提高整個系統的安全性。直到誠實算力恢復集中后,GHAST 會再切換成原來的快速模式,以此防止活性攻擊。

    4.3


       

    樹圖結構的開銷

    樹圖結構會保留很多區塊的引用關系。當一個圖非常大的時候,整個結構很復雜,要計算網絡中的拓撲關系會有不菲的計算開銷。Conflux 處理樹圖結構的時候怎么才能更高效呢?

    以太坊采用修改過的 GHOST 算法,只算七層的關系,如果要算所有層的 GHOST,那么需要 O(N) 復雜度的開銷,其中 N 是整條鏈上所有區塊的數量。Conflux 采用了一個更高效率的新算法,能夠把 GHAST 算法每一步添加區塊的復雜度控制在 O (logN)內。如果感興趣,可以去閱讀 Conflux 相關的論文和資料。

    4.4


       

    激勵機制的問題

    比特幣中,分叉鏈的攻擊者需要消耗大量算力,一旦失敗得不到任何獎勵,因此攻擊需要付出高額的成本。Conflux 網絡里所有分叉區塊都是有效的,盡管攻擊者無法通過分叉來實現雙花攻擊,但攻擊者如果可以從惡意增加的分叉區塊中拿到區塊獎勵,這也會對系統造成一定的影響。比如說攻擊者幾乎不用承擔損失就可以增加交易確認的時間,或者讓整個樹圖結構復雜度提高很多,增加整個系統的開銷。Conflux 怎么解決這個問題?

    答案是通過激勵機制去罰那些故意分叉的攻擊者。在 Conflux 的主鏈選擇協議下,攻擊者如果要故意在分叉鏈上增加區塊,那么他必須假裝沒有看到一些引用塊、無視另一些已經出現的塊,才能做到這一點。而在 Conflux 的設計中,區塊獎勵并不是固定的:一個區塊“無視其他區塊”的數量越多,它能獲得的獎勵就越少。通過這種經濟上的懲罰,在 Conflux 中攻擊者也必須要承擔經濟上的損失。

    5


       

    總結

    Conflux 通過樹圖的結構,保留礦工消耗 POW 產生的分叉區塊,從而提高系統的吞吐量,在保證安全性的前提下達到擴容的目的。整體思路看起來并不復雜,但在工程實現上,所有交易全局的排序、樹圖復雜拓撲結構的處理、區塊激勵的問題、怎么減少重復交易,有不少坑都需要有更深的技術理論加以解決。目前 Conflux 已經上線了測試網,感興趣的朋友可以動手嘗試下。

    版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。
    相關新聞
    發表評論

    請先 注冊/登錄 后參與評論

      回頂部
    • <option id="cacee"><noscript id="cacee"></noscript></option>
    • <table id="cacee"><noscript id="cacee"></noscript></table>
    • <td id="cacee"></td>
    • <option id="cacee"></option>
    • <table id="cacee"></table>
    • <option id="cacee"><option id="cacee"></option></option>
    • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
      <option id="cacee"><option id="cacee"></option></option>
      妖精视频