當前位置:
首頁 > 新聞 > 技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突

技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突

技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突

雷鋒網AI金融評論此前報道,此前發布了DAG區塊鏈項目SPECTRE的區塊鏈初創企業DAG Labs在2月份正式公布了其最新擴容協議PHANTOM的技術細節,透露其將兼容智能合約,並實現了在鏈上區塊的線性排列。據雷鋒網AI金融評論了解,在由伯克利區塊鏈主辦的特幣技術交流大會上,DAG Labs的首席科學家、GHOST協議的共同作者Yonatan Sompolinsky為在場聽眾詳細介紹了DAG應用區塊鏈網路遇到的具體技術挑戰,並講解了SPRECTRE項目針對區塊鏈交易的擴展性、安全性的解決方案和基礎參數調整。

首先需要明白,區塊鏈是新生的事物。如果你有一個系統,要改善擴展區塊鏈的性能,在SPECTRE項目上應用DAG(Directed Acyclic Graph,有向無環圖)能很好地實現這一點。

技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突

如圖片所示,首先引出兩個問題。首先,目前區塊鏈中的交易是怎麼樣的?大家可以想像在銀行排隊辦理業務的情景,用戶們一個接著一個按序列排好等待,只有當上一個用戶完成交易後下一個用戶才能開始行動,通過這樣的方式來保證整個區塊鏈的一致性和貫徹性。當有過多需要辦理業務的用戶擠進銀行後,交易堵塞的情況就會變得越來越嚴重。

技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突

出於加快交易處理速率的考慮,節省用戶在等待交易時耗費的時間,DAG的設計能實現這樣性能的優化。對於這批湧進銀行等待交易的用戶,無論他們手持現金還是辦理銀行卡業務,DAG網路不再進行分類,使他們分成一行行排隊等待,而是加速去為他們辦理業務。如果發生交易衝突,DAG網路會先記錄在案,在處理完所有用戶的交易後再對出現的衝突進行處置,從整體上加快整批用戶的交易速率。DAG網路通過這樣的安排來取代傳統排序方式的區塊鏈,由此推廣為DAG應用區塊鏈的日常。

技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突

通常從技術層面來說,在一個分散式的系統里,開發人員都遵循著「CAP」定理來進行開發和維護,它們分別是上述提到的一致性、可用性和隔離性。在以往的區塊鏈中,首先需要注意的因素即為一致性,分散式賬本需要一致,上鏈後的交易信息要保持一致,創建以區塊,它裡面包含的信息必須要和以往的歷史信息保持一致,整個系統都要設計為儘力維持這個特性。這就是為什麼會出現之前圖中看到的,在銀行排隊等待信息同步的情況。DAG區塊鏈網路則更為注重可用性,保證每個用戶都能在這個網路上面完成交易。

DAG應用區塊鏈的技術挑戰:區塊混亂生成導致交易衝突

技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突

在現在,比特幣的交易速度約為3-7筆每秒,那麼什麼時候才能到達每秒過千筆的交易速度呢?要實現這樣的交易性能,需要對現有的區塊鏈系統做出什麼改造?我們需要先對區塊鏈的技術局限有所了解。首先,讓我們來看看在一個包含十個區塊的區塊鏈系統簡化圖,每秒的交易流程是什麼樣的。如圖所示,在每個區塊里儲存的信息都會被導向下一個生成的連接著的區塊,每個分支都導向最初的創世區塊,使得信息可追溯,從而形成一條條「樹杈」。

技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突

而在DAG應用區塊鏈的網路中,每一個區塊都有相鄰的區塊可參照,關注其中一個區塊,可以發現其能與其他區塊相連打通,體現了高度的可用性,但與此同時,區塊之間打通之後,挖礦行為將由於發生頻繁有可能導致更多的硬分叉,一致性將遭到挑戰。同時更為嚴重的是:區塊不再遵循序列來排列之後,在各區塊里的交易衝突事件將會大幅提升,比如雙花問題(double spending)。

特別地,針對這些問題,在DAG網路中的挖礦協議里形成了兩條共識原則:規則1,每個新增的區塊的誕生,都必須以過往的全部區塊作為參照;規則2,所有區塊生成的交易信息都必須在第一時間公布。

這樣一套DAG結合區塊鏈的系統,暴露出來的最大缺點在哪?交易的監管是一個大問題。如圖所示,比如用戶在某一個區塊里發生交易之後,有礦工想進行挖礦時,其交易信息很快就會被公布到整個區塊鏈,許多礦工都會很快求得挖礦結果,衝突累積得非常之快。所以最主要的挑戰在於,在這樣的DAG網路曲線圖裡,通過參考之前的區塊生成區塊之後,如何保證新生成的區塊包含信息的一致性,及隨之而來在交易中產生的大量衝突?

技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突

如何分辨抓住針對這個區塊鏈網路發起的攻擊也是一個難題,比如前面提到的雙花問題。當交易發生後,兩個礦工同時挖出結果的幾率很大,誰獲得交易費用的獎勵?還有,如何計算不同礦工的工作量證明?另外存儲問題也突出的非常嚴重,如果實現了每秒過千筆交易,產生的交易信息數據量將會巨大。還有許多其他隨之而產生的問題,但其中最為重要需要解決的首要問題還是一致性。

如何針對這些問題研發解決方案?根據前面描述的DAG結合區塊鏈網路應用的困境,證明了其只是一個應用模型,它本身是一個數據結構框架,而非現成的解決方案,具體DAG應用區塊鏈網路的案例有好有壞。那麼該如何製作一個性能優異的DAG應用區塊鏈網路的協議?首先在一個複雜的區塊鏈環境中,區塊呈鏈條、分支狀結構排列,很難找到隱藏其中屬於攻擊者的區塊,但它會干擾生成正確的區塊,並會拖慢整個區塊鏈環境的速度。所以一個好的DAG應用區塊鏈的協議,首先需要做到易於分辨找到這些攻擊區塊。

建立一個DAG應用區塊鏈的協議,第一原則是命令每個區塊按照給定次序排列,以此來得到一致性。如前面顯示的這些區塊,只有給出排列次序後,用戶才會明白哪個是創世區塊,哪個接在上個區塊之後,哪個區塊的交易是優先處理,才能實現追溯和保持數據的一致性。

技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突

由此我們從DAG應用區塊鏈的模型進入到具體的解決方案案例分析。在SPECTRE協議背後,有一個信息投票機制的考量設計。試想像一下,在一條區塊鏈上為許多傑出運動員投票,選出最佳,這就意味著用戶需要選出一個優勝者,捨棄其他所有剩下的。這就像是在一個社區裡面,投票的人互相告知自己最喜愛的運動員是哪個,要為哪位運動員投票。我們稱之為「單一贏家投票模式系統」(single winner vote system)。

但在這套系統裡面,只是憑藉最為多數的投票量選出唯一一個優勝者,而無法對所有候選的運動員做出排名。在一個多勝者投票系統(multi-winner voting system)里,用戶可以對所有候選運動員進行投票,分出名次。由此系統可以整合用戶對所有投票對象的偏好信息,擴展補充了這些信息量。

技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突

回到甄別攻擊區塊的問題上,如圖中所示,我們可以將區塊與區塊之間看成是彼此競爭的存在,但針對紅色的這條獨立於主鏈的鏈條,區塊之間共享所有的信息後也無法得知這條獨立鏈條的存在,所以這條隱藏的孤鏈有小概率的可能在生成區塊的過程中變成較長的一條,從而奪得對整個區塊鏈網路的控制。

SPECTRE投票機制辨別攻擊

為了防止這種情況,在SPECTRE的DAG區塊鏈網路協議中,我們採用了全體用戶投票的機制,來形成整個網路的架構。具體到每個區塊的生成次序,用戶可以在Z區塊上決定X區塊和Y區塊的生成次序,礦工沒有投票權,只需遵循這樣的順序進行挖掘,去按照演算法推導計算Y區塊在X區塊之後生成的邏輯過程,防止其出於牟利而主導控制整片區塊鏈網路的生成。當指定了具體的投票機制生成區塊後,在每個區塊上的投票彙集成大多數用戶的意見,由此來決定整個區塊鏈網路的生成次序。

技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突

圖中新生產的區塊,它來源於X區塊群和Y區塊群共同投票的結果,根據多數原則,新的區塊緊跟在X區塊鏈後生成。藍色的Z區塊群只承載了X區塊的信息,沒有參考Y區塊鏈,這意味著,對於藍色Z區塊而言,Y區塊鏈屬於隱藏狀態,沒有辦法得知它的存在。

技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突

這是一個主觀的觀點,同樣的,對於連接在Y區塊鏈之後的紅色Z區塊群,由於沒有參考X區塊的信息,也沒辦法知道X區塊群的存在。所以,圖中這個黃色區塊生成的時候,通過參考相鄰的區塊可以得知,它是一個屬於X的區塊。依次類推下去,根據投票機制最終推導出全部區塊的歸屬,從而確定整個區塊鏈網路的架構。可以看到,Y區塊鏈沒有參考任何可信的區塊節點,實現針對這個區塊鏈網路的雙花攻擊辨別。

所以我們可以總結出來,和一開始提到的其他DAG應用區塊鏈網路相比,SPECTRE的網路架構設計安全性有了很大的提升,原因在於在這樣的機制下,正常用戶生成區塊之後,攻擊者的區塊不可能佔大多數的區塊來發起攻擊,可信的區塊永遠優於有問題的可疑區塊,杜絕了51%攻擊的可能性,同時實現了整個網路極高的可用性。這樣的設計保證了,在一秒生成十個甚至過百個區塊的前提下,在網路上包括的可信區塊在內的所有區塊,不會缺乏排序指令而互相散亂連接,從而導致開始提到的種種引起混亂的安全性問題。

用戶在鏈上,什麼時候應該公布他們的交易?在區塊里,公布交易到整個網路的速度會有數百秒的延遲,然後快速廣播到公網上,如果發生了由於雙花現象引起的交易衝突,在投票機制下會發生無限延遲的情況。X區塊群之所以優於Y區塊群能成為主鏈,在於全體用戶投票生成區塊的機制,而如果X和Y同時公布交易,系統可能將無法即時判斷作出決定。但這樣只會傷害到攻擊者本身,無法對系統造成損失。作為一個可信區塊,其根據序列承載上個區塊信息生成,不會與相鄰區塊發生連接,故不會出現雙花問題。

區塊帶寬調整保證交易性能

技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突

在保證安全性的基礎上,整個區塊鏈網路展現出高擴展性。那麼,在這個網路上實現每秒過千筆交易的性能,會遇到哪些限制?首要的局限性體現在帶寬上。如果每秒不限制地生成過百個區塊,太多的區塊生成累積將會超出承載,沒有辦法解決任何問題。而是需要根據不同的目標交易量的設置,來確定不同類型區塊的最小帶寬。舉個例子,為了實現一萬TPS的交易性能,SPECTRE調整每秒五MB的帶寬,每秒生成十個零點五MB規模的區塊。

區塊的帶寬限制和交易頻率存在著擴展性和追求去中心化的取捨關係:降低區塊的帶寬能允許更多的用戶參與,有利於去中心化的趨勢發展,但卻會使交易頻率受影響,如何在它們之間保持平衡是需要重點考慮的問題。試著想像,假如將區塊的最低帶寬調整到兩MB每秒,那麼每秒能處理的交易額遠遠達不到一萬筆,系統可能會被擁堵的交易淹沒。所以在設計區塊鏈網路時,不能出於單純提高更多用戶的參與度的考慮,任意改變區塊的帶寬和基礎參數的設置,這會影響到整個區塊鏈網路的運營和目標交易性能。

技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突

另一個限制是數據儲存的問題。如果以每秒產生一MB的信息計算,每天將會生成八十六GB的數據量。在SPECTRE區塊鏈網路上,不可能將所有的數據都儲存上鏈,這樣才是合理的選擇。因此,我們提出了一個名為「檢查點運轉」(rolling checkpoints)的數據儲存解決方案。在每天的挖礦工作結束後,面對數百個生成的全新區塊,SPECTRE會將此前發生的交易數據信息儲存在一個固定的中心化節點,供整個區塊鏈網路定期檢查更新。

這需要用戶對系統提交信任,相信此前其儲存的信息沒有遺漏錯誤,或者篡改的情況。在這種情況下,儲存數據的中心節點需要驗證演示儲存數據的真實性以保證無誤。同樣,在去中心化的數據儲存和系統性能之間,我們必須找到不停尋找更好的辦法來達到平衡。

DAG網路中的分層框架:應用層和數據層的相互隔離

從當前來看,在分層結構的區塊鏈網路治理中,礦工是非常重要的因素,可以影響協議更新、激勵機制,還能覺得交易的有效性。假設現在需要購買集裝箱的儲存服務,只能通過經濟激勵的手段來號召工人來提供貨物的搬運儲存服務。與其相類似,在區塊鏈數據層上的礦工服從於工作量證明的共識機制,在驗證支付的獎勵是正確的之後,才會繼續進行下一項挖礦工作。沒有完善的激勵和獎懲機制,礦工將有可能隨意處置用戶的交易信息,可能會在公網廣播公布,也可能會將正確發生的交易處理為無效交易。

技術詳解DAG區塊鏈項目SPECTRE:圍繞一致性建設,投票機制甄別攻擊杜絕交易衝突

在SPECTRE的分層結構中,應用層和數據層相互隔離。在數據層上,礦工只負責收集交易數據,確保這些數據代表了有效發生的交易,來形成一個可追溯的不可篡改的共享資料庫。而在應用層上,需要生成分散式賬本來體現數據,解釋每一筆交易的來龍去脈,由於不同的應用遵循著不同的交易邏輯,在DAG網路中還要接入智能合約等不同的交易系統來實現執行,並最終生成交易數據以驗證礦工的工作結果。

雷鋒網

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

注資百萬美元,微軟聯合ID2020開發區塊鏈數字身份認證網路
被歐盟罰款 9.97 億歐元後,高通表示強烈反對並將提起上訴

TAG:雷鋒網 |