ZeroKnowledge是業內著名的專注于零知識證明的英文播客,深入探討新興Web3技術,與正在構建它的社區成員們。該播客的聽眾為同行開發者和希望了解該區塊鏈內部運作的人們。播客的創建者FredrikHarrysson與AnnaRose表示,他們不投機,不多談交易,更多專注于技術本身。
最近的播客邀請到了Nervos研究員張韌。張韌和主持人一起聊了聊他在共識算法上的研究工作,并從Ren之前做的關于評估PoW共識協議安全性的研究開始,討論到了他為Nervos設計的共識協議NC-Max。Nervos中文社區為大家整理了播客的內容文稿,供小伙伴們查看。
文收錄|Kazafa
播客創建者Anna:歡迎張韌做客ZeroKnowledge播客。在今年四月份,我們和IttaiAbraham有一集關于共識的話題。在那期節目之后,之前上過我們節目的AlanSzepieniec聯系我說:「嘿,我在Nervos有一位同事,如果你們正在探討有關共識的話題,你真的應該和他聊聊。」這就是張韌。我們早就想請你來我們節目聊一聊共識協議這個話題,也很開心你今天終于能加入我們的節目!
播客創建者?Fredrik:所以我們今天有一些非常有趣的話題,深入挖掘共識的東西。但是在我們挖掘之前,讓我們先來談談你吧,你是怎樣進入這個領域的,是什么讓你對這方面的研究感到興奮?
Ren:我在讀碩的時候就在做點對點網絡的研究。我在COSIC攻讀博士學位期間,開始四處尋找有趣的課題,這個歷程大約花了兩年時間,我不得不說我失敗了。所以最后我準備了幾個研究課題,去問了一些組里的資深成員。比如說,你覺得哪個研究課題是最有意思的?而他們都推薦我去研究比特幣,他們說「研究加密貨幣的最佳時機已經過去了,但也許你還是會因此得到一個PHD:)」那是2014年的事了。
我從2014年開始從事比特幣和加密貨幣的研究,結果發現這個領域比他們預期的要持久的多。
Anna:當他們說這句話的時候,他們實際上是想說最激動人心的部分已經過去了,還是暗示說整個趨勢將會消失?
Ren:我想在那個時候,整個趨勢似乎正在消失。比特幣的價格每天都在下跌,領域里關于比特幣的論文也越來越少,但誰知道以后會發生什么呢?
Fredrik:這是有道理的,因為比特幣其實很簡單,它的概念很簡單。你不會覺得對于這樣一個簡單的東西,有幾十年的研究要做。但是我們現在已經過了十年了,人們還在不斷地發表論文。
Ren:特別是當時比特幣網絡還比較小,大概只有600個節點,當網絡越大,你就能在里面找到更多有趣的研究問題。所以當時大家認為比特幣網絡不是一個很令人興奮的研究對象。之所以還是決定要研究它,就是因為它是有些混亂,混亂的地方通常就有機會。
Fredrik:我們今天要談的第一篇論文,就是你與BartPreneel合寫的那篇論文《LayDowntheCommonMetrics:評估?PoW?共識協議的安全性》(https://www.chainnews.com/articles/877157649464.htm)。我還沒有讀過論文,但我讀了摘要,它的內容相當有趣,最有意思的是它里面談到人們通常會如何分析共識算法以及為什么有些分析方式是錯誤的。那你能不能談一下這篇論文是關于什么的,你在里面發現了什么?
Ren:有一段時間我對自私挖礦攻擊很著迷,所以我試圖找到解決這種攻擊的方法,找到一種對這種攻擊免疫的共識協議。我試著設計了十幾個協議來評估它們的安全性,所有的協議都不完美。我對這些方案都不滿意,所以我沒有公布任何一個方案。幾年后,我發現這些我認為是欺詐的想法由其他人陸續發表出來了,而且他們聲稱他們的協議是安全的,比中本聰共識好,比比特幣的共識協議好。我覺得這是不對的。人們需要被告知,這些想法是有缺陷的。他們開辟了新的攻擊載體,而設計者并沒有意識到這一點。
Anna:他們并不了解你的研究,他們并不是看到了你的研究,然后就拿去用了,這些應該是他們自己得出的結論,對吧?
Ren:對。因為這些想法都是比較簡單直接的,就是你第一眼看覺得是有道理的。但是如果你深挖一下,真正地去分析他們的安全性,你會發現問題。
尤其讓我感到生氣的是,很多論文都是通過模擬,針對某些攻擊策略來論證其共識系統的安全性。2013年有這樣一篇論文,叫《MajorityisnotEnough》(https://www.cs.cornell.edu/~ie53/publications/btcProcFC.pdf),里面針對自私挖礦攻擊分析了其協議的安全性,并號稱這個新的共識協議要優于中本聰共識。然而,我認為這并不是一個安全證明。為什么呢?也許你的系統、你的新設計會激發新的、專門針對你的攻擊方法。
Peter Brandt:比特幣優于其他加密貨幣:金色財經報道,傳奇交易員Peter Brandt表示,我認為比特幣優于其他加密貨幣,比特幣將埋葬所有冒名頂替者。最終,將只有一位山丘之王。[2023/5/1 14:37:06]
當我們在論證一個共識協議的安全性時,通常需要找到一個更為嚴謹的方式:比如要么你能證明在新的共識協議下,無論攻擊者采取何種攻擊策略,他都不能獲得更多的利潤或者造成更多的損失;要么你設法分析攻擊者所有可能會采取的策略,無論該攻擊者在某個策略空間內做什么,他都不能造成更多的損失。我認為這樣才是正確的分析一個共識協議安全性的方式。
Fredrik:這是一個常見的問題,人們不會老老實實、直截了當地談論他們的取舍,只會說,我們發明了這個新東西,它比另一個東西更安全,但是對可能產生的新問題避而不談。
Ren:是啊,所以我集合了一組這類新的共識協議,通過馬爾科夫決策過程來分析它們的安全性,然后寫了這篇論文。
Anna:好的。你在論文中提到的那些新的共識協議都是已經存在的對嗎?我們可以討論一下。
Ren:是的,有一個協議叫統一平局協議,是在Ethereum中實現的,但是我想所有的Ethereum開發者和研究者,他們都知道這個協議的漏洞。所以這不是一個很大的問題。而且還有一個協議叫作?Rootstock,是一個和我論文中提到的RewardSpittingprotocol非常相似的協議。另外一個比較著名的協議是?FruitChains。
FruitChains是由ElaineShi設計的,聲稱與激勵相容,可以抵抗自私挖礦攻擊。但是我發現它只是比中本聰共識對自私挖礦攻擊的抵抗力更強。如果每個區塊都是經過100個區塊確認的、如果你只用6個區塊信息,和比特幣的中本共識一樣,那么FruitChains其實更容易受到自私挖礦的攻擊。
所以在中本共識上的問題就像Fredrik問的那樣,就是它沒有完美的鏈質。也就是說,一個攻擊者擁有不到50%的挖礦能力,就可以安全地讓區塊鏈中最后幾個區塊失效。這也是為什么中本聰共識只能提供概率意義上的安全保障。
而對于這種號稱比中本聰共識更安全的新設計,我們認為它需要滿足兩個要求之一:要么它能實現更好的鏈質量,要么它們能更好地抵御三種攻擊:
自私挖礦攻擊雙花攻擊進一步分叉攻擊相應的我們將所有這些新的共識協議分為兩組:第一組聲稱能實現更好的鏈質量,第二組則聲稱能實現更強的抗攻擊能力,我們據此分析他們的安全性。
我采用了馬爾科夫決策過程作為分析框架,它可以讓我們在一個部分隨機的環境中模擬一個戰略參與者的行為。
戰略玩家指的是攻擊者,部分隨機環境指的是環境相對固定:如果攻擊者這樣做,在什么概率下,會發生某些情況,在什么概率下,會發生另外一些情況。攻擊者可以任意選擇挖哪條鏈以及任意時間發布他挖到的任意個區塊。攻擊者在攻擊鏈質量或者進行我提到的這三種攻擊方面能做的最好的是什么。
Anna:所以你的模型中,你實際上分析了兩種情況。
Ren:第一類叫「更好的鏈質量協議」。而另一個是三種抗攻擊協議。
Anna:所以要么是更好的鏈質量,要么就是這些具體的攻擊矢量,但在你的模型中,你是在做這些東西的組合,還是你總是專注于其中之一?
Ren:我覺得有兩個不同的標準。你可以從兩個不同的維度來考慮。只要你能在其中一個維度打敗中本聰共識,就算你贏。
Anna:我明白了,但是基于新的共識協議,可能會引起一些新的攻擊方式,最后你可能會有一個不太安全的鏈,對吧?
Ren:如果你的鏈質量比中本共識好,那么你自然有更好的抗攻擊能力。因為中本共識的根本問題在于,它的ChainQuality并不完美。然而,如果你不能達到更好的鏈質量,一些協議聲稱,他們仍然可以比中本共識更好,因為他們更能夠抵抗所有已知的攻擊方式。所以我們把協議分成兩組,第一組聲稱他們在鏈質量上比基于中本聰共識的鏈好,所以我們也就不需要分析他們如何應對攻擊了。
Anna:有哪些共識協議聲稱鏈質量更好呢?
Ren:有一些協議聲稱他們更好,但是并沒有聲稱他們在所有方面都更為優越,為了方便,我們把他們歸為第一類協議。但第二類協議通常聲稱自己采用了新的激勵機制,但是與中本聰共識擁有相同的鏈質量。基本上他們使用的是相同的比特幣主干協議,但是聲稱可以更好地抵御各類攻擊。所以我想看看是不是真的這樣。
Anna:在這種情況下,你是在分析他們的鏈質量是否相同,還是在分析他們是否真的能抵御這些攻擊?因為我的理解是,如果他們試圖在某一個方向上改進,他們就可能面臨新的攻擊?
ARB短時突破1.44美元,24小時漲超20.32%:4月14日消息,行情顯示,ARB短時突破1.44美元,現報價1.4319美元,24小時漲幅達20.32%。[2023/4/14 14:03:04]
Ren:這是在抗攻擊協議的范圍內。所以有兩組情況:第一組是「更好的鏈質量協議」,第二組是「抗攻擊協議」。
關于「更好的鏈質量協議」,他們對中本聰共識進行了修改。中本聰共識簡單來說,由兩個基本規則組成:第一個是礦工只認最長的鏈,第二個是如果礦工看到兩條在競爭的、長度相同的鏈,會在先收到的那條鏈上進行挖礦。
如果你按照這兩個規則走,你會和中本聰共識有同樣的鏈質量;如果你修改這兩條基本的規則,那我就把你放在「更好的鏈質量協議」里。如果你不修改這兩個基本規則,而是修改獎勵機制,你用新的機制來鼓勵大家不做自私挖礦、不做審查攻擊,那么我相信你是一個「抗攻擊協議」。
Fredrik:更具體地說,有哪些協議是可以做到改進鏈質量的?
Ren:我覺得最有趣的例子是有一個協議,我叫它「最小的HashTie-Breaking協議」。
我起這個名字是因為我不想說出任何具體的項目。在這個最小哈希平局打破協議中,設計者認為如果我總是在最新的一個區塊哈希值最小的鏈上挖礦,那么所有誠實的礦工都會自然而然地在同一條鏈上挖礦,算力永遠不會被分割,鏈變得更加安全。
這是他們的直覺。所以這是一個「更好的鏈質量協議」,因為它修改了中本聰共識中的首接策略。
Fredrik:直覺讓我覺得很有道理,因為就像你一樣,在編程中任何時候我們談論時間,都會出錯。如果你說的是「更先收到」,那顯然對每個人來說都會不同,因為網絡延遲或者什么其他的原因,它基本上只是一個隨機的偏差。那么最小哈希值平分協議又有什么問題嗎,或者說直覺其實就是正確的?
Ren:直覺是不對的。在一些極端的情況下,最小哈希值平分協議的表現比中本聰共識略好。但是,對于我們分析的大多數參數來說,它的表現其實比中本聰共識更差,因為它會面臨兩種新的攻擊:第一個我稱之為「后發趕超」,比如說,如果你是一個攻擊者,你在挖一條秘密鏈有一個區塊,誠實鏈有兩個區塊,那么在中本聰共識里,你通常會直接放棄,因為誠實鏈比較長,你沒辦法追上。
但是,在最小哈希值平分協議中,如果你的鏈比較短,而較長的那條鏈尖有非常大的哈希值,那么你可以繼續挖礦,因為你知道,如果你發現你的秘密鏈有下一個區塊,你就會放出兩個區塊,盡管你放出的時間比誠實鏈晚,但你的哈希值比誠實鏈尖小的概率非常大。
所以所有的誠實礦工都會轉回你的鏈,他們會放棄之前的鏈,在你的鏈上挖礦。所以這個最小哈希值平分協議啟用了這種新的攻擊行為,攻擊者可以選擇何時采用這種行為。這就像是在攻擊者的工具箱里放了一個新的工具,這也是為什么它會削弱協議安全性。
第二種攻擊方式是,假設你有一個秘密區塊,這個區塊的哈希值非常小。你是一個非常小的礦工,區塊的哈希值非常小,這樣你就可以確定,在99%的概率下,下一個誠實區塊的哈希值會比你的哈希值大。那么你可以說,好吧,現在我扣下這個區塊是安全的,我會秘密地進行挖礦。
另一方面,如果你是一個小礦工,你發現一個區塊的哈希值比較大,這樣你知道有非常大的概率,如果你扣下一個區塊,你會輸掉區塊競賽,那么你可能會選擇釋放區塊。因為最小哈希值平分協議,你可以準確估計自私挖礦攻擊的成功率。它給攻擊者提供了更多的信息來選擇什么時候扣塊,什么時候放塊。所以這也給攻擊者的工具箱里放了一個新的工具,因為攻擊者擁有了幾個新的工具,可以更有把握地進行攻擊。這就削弱了鏈的安全性。
Anna:我想這是一個「更好的鏈質量協議」的例子,但我還是有點困惑,因為你之前不是說過如果有「更好的鏈質量」,那么它就是安全的嗎?就像你剛才說的,我覺得我有點回到之前你有這兩類,那些你沒有分析的,但是你一直說如果他們有更好的鏈質量比你沒有分析,我就很困惑。
Ren:是的。如果他們有「更好的鏈質量」,我們就不去分析他們的激勵機制。
Anna:是的,我們不分析他們的激勵機制。但在這種情況下它有什么呢?它沒有更好的鏈質量,還是它有更好的鏈質量?
Ren:這個協議聲稱有更好的鏈質量,但它失敗了。
因為它通過模擬分析了它的安全性。我明白了。有一個主要的信息,你不應該,你永遠不應該通過模擬來分析你的安全性,我想是一個特定的攻擊者策略。因為你的協議可能會激發新的針對協議的攻擊策略。
Fredrik:那么,第二類的例子是什么,你改變了激勵機制。
ChatGPT承認在馬斯克的推文與狗狗幣之間的聯系在2021年9月是可靠的:金色財經報道,ChatGPT回復如何看待狗狗幣與備受爭議的埃隆馬斯克的關系。ChatGPT回應稱其數據截止日期為 2021 年 9 月。它還承認埃隆馬斯克的推文與狗狗幣之間的聯系在那個時間點是可靠的。但是,它無法直接回答相關性在撰寫本文時是否相同。[2023/4/10 13:53:50]
Ren:第二個我可以舉出幾個例子,我將談論「子鏈」。這是PeterRizun博士在一個叫TheLedger雜志上發表的一個協議。在這個協議中,礦工被允許發布具有較小哈希值的區塊。
這里有兩個哈希目標,一個更大的目標和一個較小的目標。在比特幣共識協議中,如果區塊小于一個預定義的閾值,你才能發布你的區塊,就是較小目標。但是在Subchains中,如果你沒有找到一個區塊,但是你的備選區塊的哈希結果小于大目標,你也可以發布這個備選區塊。這樣做的好處是,他們希望在將其納入正式區塊之前,可以更快地確認交易。
因為弱區塊的加入,所以出塊間隔實際上變小了。正式區塊可以獲得所有的區塊獎勵,而弱區塊只是一個用來同步交易的工具,得不到任何區塊獎勵。
然而每當有兩條競爭鏈時,還是會通過比較這兩條鏈的長度來解決分叉問題,正式區塊和弱區塊都會被計算在鏈的長度中。這種協議我們稱之為「獎勵幸運協議」,他們并不關心哪個區塊是誠實的、哪個區塊是惡意的。他們關心的是哪個區塊是最幸運的,并且只獎勵那些哈希值較小的區塊。雖然弱區塊參與了共識協議的過程,但是得不到任何獎勵,這類「獎勵幸運協議」的問題在于,幸運的弱區塊不一定是好的區塊。所以這種在獎勵發放方面的歧視產生了一種新的攻擊方式。
攻擊的方式是這樣的:每當攻擊者發現一個弱區塊,它就會扣留一個區塊,希望誠實的礦工可以發現一個正式區塊,這樣我就可以用我的弱區塊來使誠實礦工開采的正式區塊無效。因為反正弱區塊是得不到任何獎勵的,所以扣下這個弱區塊沒有任何風險。這就好比,我有了一個新的工具來攻擊系統,而且這個工具是沒有成本的。
每當攻擊者發現一個區塊時,如果攻擊者不想承擔任何經濟風險,他可以作為一個誠實的礦工發布這個區塊。所以,這個協議又可以讓攻擊者校準成功率,選擇更合理、更準確的策略來攻擊系統。
Fredrik:有意思。在這兩個例子中,就像你所說的那樣,你在攻擊者的工具箱中又放了一個工具,人們是如何通過引入更多的復雜性來實現的呢?他們就像,「哦,我想簡化這個,或者我想讓這個路徑更復雜。或者我想讓這個路徑更優化,或者我想引入這些其他的概念,讓X、Y或Z更簡單」。但其實通過引入這個新的東西,那其實是攻擊者可以利用的另一個東西,這是一件他們可以隱瞞的事情,這是一件他們可以獲得更多信息的事情。這樣他們的攻擊就有可能更成功。
Ren:是的,我完全同意,復雜是安全的敵人,如果你想要一個更安全的協議,通常應該做的第一件事就是嘗試去簡化協議,看看可以削減掉哪些東西,這就是為什么NC-Max是基于中本聰共識而設計的,我們試圖從最開始著手,不引入任何新的攻擊變量。
Anna:創建這個評估共識協議安全性的模型過程中,你有什么其他的收獲或想法嗎??
Ren:通過這個研究,我們有幾點想強調:
第一點有關如何分析安全性。
你永遠不應該只通過模擬單一攻擊者的攻擊方式來分析協議的安全性,那樣是很危險的。另外,不要設計一個太過復雜的協議,如果連協議設計者都無法分析它,那情況也會變得很危險,因為復雜是安全的敵人。
而有關我們在激勵機制上的測試結果,我們發現,沒有一種激勵機制可以阻止這三種攻擊。
如果你獎勵所有的區塊候選人,不管他們是誠實還是惡意的,這就會讓雙花行為沒有風險可言。對于一個攻擊者來說,既然我總會得到獎勵,那我為什么不嘗試雙花呢,即使我失敗了,我也可以得到獎勵。
如果你沒收所有可疑挖礦者的獎勵,比方說無論什么時候,只要他們和最長鏈進行競爭,就不會得到任何區塊獎勵。這實際上是為攻擊者引入了一個審查網絡的工具,就是說,如果你把這些交易包含進區塊里,我會嘗試讓你的區塊變得無效。即使我失敗了,只要我發現了點什么,我還可以通過可以沒收你的獎勵,以迫使理性的礦工加入審查攻擊,以避免經濟損失。
如果你只獎勵幸運區塊,而幸運區塊不一定是誠實區塊,如此一來,就給了攻擊者機會,他們可以在「幸運」的時候老老實實執行,而在「不幸運」的時候進行作惡。
綜上所述,我們發現了一個取舍,我們稱之為「獎勵壞的人還是懲罰好的人」。
Arbitrum總鎖倉量近三天下降約3%至21.9億美元:金色財經報道,據DefiLlama數據顯示,Arbitrum上總鎖倉量為21.9億美元,近三天下降約3%。[2023/4/3 13:41:40]
Anna:好的,你剛剛只是舉了兩個例子,但顯然你已經分析了很多其他例子,在這篇論文里面我們可以看到嗎?或者說你是否還有使用這個模型去分析其他共識協議的工作?
Ren:這篇通用指標論文中涉及到了七個不同的協議,在這之后,這部分的工作其實還一直進行著。
有一篇論文叫SquirRL,它基于馬爾科夫決策過程的方法進行了擴展,馬爾科夫決策過程的問題是,它只能對有少量狀態的協議進行建模,如果協議變得越來越復雜,那么它就超出了馬爾科夫決策過程的計算能力。
所以這些研究人員就采用深度學習來模擬更復雜的協議,深度學習是著名的圍棋游戲AlphaGo使用的一種技術,它使我們能夠對更復雜的協議進行建模,他們也得到了一些有趣的結果。
Anna:我意識到這是一個與PoS非常不同的模型,但我想知道,你發現的這些工具或分析方法可以應用于PoS這種模型嗎?我們能它們歸在同一類別嗎?
Ren:我認為它是相關的。
一般來說,我覺得應用馬爾科夫決策過程或者深度學習來分析PoS協議不存在什么困難,但分析PoS協議的問題是,你無法直接集合一組協議,讓他們彼此競爭,知道誰是第一,誰是第二,沒有這種簡單的結果。
你無法把它們放在同一個約束當中,對不同PoS協議來說,它們通常有著不同的安全假設,這意味著每個協議都在自己的規則中進行游戲,所以你不能只是統一規則,強行把它們放到同一個領域。
所以在這方面會有一些復雜度,但總的來說,我認為在分析PoS協議時,應用馬爾科夫決策過程或深度學習是很有意思的一件事。
Anna:在你自己的研究中,你是否真正探索過這一點?
Ren:也許以后會,但不是現在。
Fredrik:我很想深入了解更多有關馬爾科夫決策過程或深度學習方面的內容,但這樣的話,我們可能需要另外一小時的時間了。
所以,我們應該繼續談談你之前預告的內容——NC-Max,這是你和其他人一起設計的一個共識算法對吧?這是我們今天要講的第二篇論文,能不能請你高屋建瓴的和我們聊聊,什么是NC-Max?它想做什么?
Ren:當然沒問題,我應該從后面的故事說起。
我們都很喜歡「中本聰共識」,其中有三個原因。
首先,它只有一系列最低要求的安全假設。與通常有不同很多安全假設的PoS協議不同,中本聰共識的安全假設非常少,而這樣的好處是,協議很好理解。到目前為止,工業學術界有許多篇論文對中本聰共識進行了詳細的分析,所以我們完全知道它的優點和缺點。
中本聰共識的第二個優點是,它將通信開銷降到了最低。在中本聰共識中,特別是在比特幣中,如果你發現了一個新的區塊,你可以把它作為一個13千字節左右的致密區塊傳播,就這樣,一條消息確認一組交易,這是理論的極限,你不可能做的比這更好,因為一條消息來自一組交易,而其他所有的協議在通信開銷方面都更貴。
我們喜歡中本聰共識的第三點原因是,它是基于鏈的,也就是說所有的交易有一個全局順序,它不會像DAG協議那樣存在重復打包的問題。如果你用的是DAG協議,那么很有可能區塊中會同時包含很多重復的交易,而要想去除這些重復的交易,要么需要一定的計算能力,要么需要一定的通信成本。
中本聰共識的問題在于它的吞吐量非常低,這也是為什么很多協議設計者為了實現更高的吞吐量而放棄中本聰共識甚至放棄工作量證明的原因。
Anna:你說吞吐量提高,是不是指的就是,實際處理交易速度的性能擴展?
Ren:性能擴展有兩個指標,第一個是吞吐量,一秒鐘可以確認多少筆交易;第二個是延遲,指的是交易廣播時間和交易確認時間之間的時間差,中本聰共識的主要問題是吞吐量。
所以從我的角度來說,在你放棄中本聰共識之前,先檢查一下網絡的情況。我們來看一下低吞吐量的瓶頸是什么,我們能不能在這個瓶頸上做一些事情,而不是完全放棄基于鏈的結構。
所以我認為,我和其他共識協議設計者的主要區別在于,他們沒有計算機網絡的背景。當我在Blockstream和PeterWuille以及GregoryMaxwell一起實習的時候,我們討論了很多關于比特幣如何傳播區塊和交易的問題,而這最終導致了這個研究的誕生。
比特幣ATM制造商General Bytes正對安全事件受損客戶進行賠償:金色財經報道,比特幣ATM制造商General Bytes表示,他們正在賠償在3月份的一次“安全事件”中損失資金的云托管客戶,該事件導致客戶的熱錢包被訪問。
此前消息,General Bytes加密貨幣ATM服務在3月17和18號受到攻擊,損失約180萬美元。[2023/3/28 13:30:42]
一般而言,我們看一個節點帶寬時,可以把它分成三個不同的部分,第一部分是用來同步交易的,這其實是我們想要的部分,我們要把這部分最大化,我們每秒能夠同步的交易越多,吞吐量就越高。第二部分是共識本身消耗的帶寬。我們希望把這部分降到最低,中本聰共識已經做到了,第三部分是閑置的帶寬,有一部分時間,我們沒有傳輸任何交易,也沒有傳輸任何區塊。
Anna:你剛才用的詞是閑置,像是某個時候,什么都沒發生。
Ren:對的。中本聰共識的問題在于為了維持它的安全性,孤塊率必須很低,而由于所有的區塊時間間隔都遵循指數分布,如果我們想要一個非常低的孤塊率,那我們就需要很長的平均區塊間隔時間。
平均區塊間隔時間長,就會導致閑置時間變長,所以盡管網絡實際上可以每秒傳輸2500筆交易,但大部分時間網絡都是閑置的,因為如果我們減少區塊時間間隔,網絡孤塊率會更高,協議的安全性會變差。
Fredrik:就在最近一期的Podcast里,我們談到了這個點,不過是在以太坊語境下的。我們談到了mempool是如何工作以及交易是如何分布的,以及我們看到實際挖礦節點時,mempool是什么樣的。
它們實際上是在推送交易,在網絡方面,它們每秒推送數千筆交易,但它們并不是都被包含在一個區塊里,就像競爭性交易,人們在DEX上互相出價,諸如此類。因此,這并不是解決交易中的網絡問題,它會將它們包含在一個區塊中,并給礦工足夠的時間來處理該區塊,并且希望在下一個區塊上繼續。
Ren:對的,在Ethereum中,計算是一個瓶頸,這也是為什么Nervos選擇使用UTXO模型的原因,我后面會詳細介紹。
我們解決比特幣閑置時間過長的方法,就是要找到導致高孤塊率的瓶頸所在。我們要加速區塊傳播,降低區塊時間間隔,增加區塊大小,但這并不是說我們要無限地增加區塊大小或者降低區塊時間間隔,只要我們設法找到一個平衡點,即區塊間隔足夠低,區塊足夠大,所有的節點帶寬都被耗盡,那么,我們就完成了任務。如果我們能夠把節點帶寬用完,那么我們就不用引入DAG協議了。
那,區塊傳播延遲的瓶頸是什么?我們發現,區塊傳播的瓶頸其實是區塊中的新的交易。「新的交易」的定義是指還沒有完成傳播就被包含到區塊中的交易。
交易通常會在15秒內傳播至整個網絡。假設區塊間隔是10分鐘,在前9分45秒內的交易,都在包含到區塊之前,就已經得到了傳播。但是,如果有一些交易是在最后15秒才首次廣播,并且它們被包含到了下一個區塊中,那么這些交易中有可能有一些沒有被同步到網絡中。
它們必須和區塊一起傳播,這樣做的問題是,如果我是一個節點,當我收到致密區塊時,如果沒有「新的交易」,你可以直接把這個致密區塊轉發給下面的節點。
但是,如果有一些「新的交易」,你必須先向之前的節點查詢這個交易,只有在等到他們回復之后,你才能把這個致密區塊轉發給下面的節點,所以額外同步這個新的交易的往返,其實就構成了提高區塊傳播速度的主要障礙。
Anna:這是業界廣為流傳的研究結論了,還是說是你在研究過程中想要弄清楚的東西?
Ren:它被比特幣核心開發者所熟知,但這在比特幣中并不是一個太大的問題,因為在比特幣中,大多數區塊都沒有「新的交易」。
它被比特幣核心開發者所熟知,但這在比特幣中并不是一個太大的問題,因為在比特幣中,大多數區塊都沒有「新的交易」。
在比特幣里,當一個區塊第一次廣播時,它可以在600毫秒內同步到網絡中90%的節點。這點非常好,但是,如果區塊比較大,或者區塊間隔比較短,那區塊中的新的交易就會比較多。
那,我們如何消除這些新的交易呢?
我們的解決方案是:首先,我們把交易同步和交易確認解耦。比如說,在每個區塊里面,有一個字段,我們叫它交易提案區,所有的交易必須先出現在這個交易提案區里面。而之前的交易區,或者我們叫它交易承諾區。
交易必須先出現在交易提案區,只有在兩個區塊之后,才能被嵌入到到交易承諾區。
因此這樣做的好處是,每當你作為節點收到到新的區塊時,所有提交的交易都已同步,你可以直接將致密區塊轉發給下面的節點,這樣,同步這些新的交易的額外往返就從區塊傳播的關鍵路徑中移除了。
并且,交易提案區中的交易有效性并不影響區塊的有效性,交易提案區可以有缺失的交易、畸形的交易、甚至雙花的交易。這些都沒關系,后來的礦工可以直接跳過這些交易,只認可那些有效的交易,這樣,他們收到的交易已經是通過兩步確認機制了。我們設法消除新的交易,確保所有的區塊在600毫秒內同步整個網絡。
所以這就使得我們能夠把平均區塊間隔縮短到兩三秒,同時保持一個很低的孤塊率。
Fredrik:這聽起來很有趣,我簡單總結一下。
一個比特幣的區塊時間是10分鐘,你可以提交交易,它會被傳遞到整個網絡,如果你的交易是在那個時間段內提交的,并且被包括在內,那對任何人來說,這都不是一個「新的交易」,因為在區塊出現的時候,每個人都已經看到了它,對吧?
所以本質上你所做的是將礦工可以選擇的交易集限制在這個區域內,在這個區域內,它將被傳遞到整個網絡中。就像在比特幣的例子中,比特幣礦工只允許包含在前9分45秒內收到的交易。
Ren:對,礦工只會認可在兩個區塊之前提出的交易。
Fredrik:我明白了。
還有一件事,我覺得它和PBFT非常相似,在PBFT中,有預準備、準備和提交這三個階段,聽起來非常相似。
Ren:這就是為什么我說,可以把它看作是HotStuff的工作量證明版本,HotStuff是一個更明顯的流水線式協議,在任何共識協議中,其實有兩種技術可以用來并行處理事務。第一種叫做流水線式操作,它在NC-Max中使用,同樣,在HotStuff中也是如此。
第二種類型叫做并發操作。
流水線式操作相對并發操作的好處是,安全分析要簡單得多,因為它沒有那么多同時在挖的區塊,你可以只需用以前的技術來分析安全性,一切都不變。而且它的功能更強,因為網絡仍然保持著一個全局的交易順序。
Anna:另外,有點想問問同步和異步的問題
Ren:一般來說,所有的工作量證明協議都是同步協議。
Anna:好的,明白了。
我只是在想說,節目之前有好幾期節目,我們談了些這部分的東西,網絡范圍和部分同步,但在這個情況下,它是同步的。那么,對于NC-Max,它是同步協議嗎?鑒于你已經對流水線式操作和并發操作有了一些研究。
Ren:其實我最喜歡NC-Max的部分是有其他協議可以將交易同步和交易確認解耦,比如Prism,Prism是另一個將這兩件事解耦的例子。
但NC-Max的好處是,交易承諾區和交易提案區被重新耦合在同一個區塊結構中,這大大簡化了安全分析,因為NC-Max仍然遵循比特幣主干協議,使用的是「最長鏈」原則。
所以之前所有對中本聰共識進行的安全分析都可以直接適用于NC-Max,不需要我們證明其他額外的東西,所有的安全證明都是成立的。除此之外,我們還有一個額外的安全改進,就是在NC-Max中,自私挖礦是不賺錢的。
但這需要一個相對較大的安全證明,如果你感興趣的話,可以看論文了解更多細節。
Anna:我其實是想問的是,鑒于你之前的工作都是在尋找協議新的一些威脅點,那么,你能找到NC-Max引入的新的威脅點嗎?
我其實是想問的是,鑒于你之前的工作都是在尋找協議新的一些威脅點,那么,你能找到NC-Max引入的新的威脅點嗎?
Ren:實際上,是有一個威脅的。
有一個被之前的工作所忽略,但NC-Max能夠緩解的威脅,它叫做「交易扣留攻擊」,攻擊的原理是這樣的,如果你是一個礦工,你想進行自私挖礦但不想讓任何人發現,你可以做一個全是新的交易的區塊,你的區塊實際上比其他所有的區塊傳播得慢,這就給了你一些時間來進行自私挖礦,但沒有人可以指責你,因為你可以說:「好吧,我在區塊被挖出來之后,馬上就發布了,只是,交易同步的速度比其他區塊慢而已」。
在NC-Max中,這種攻擊更難發起,因為如果你想發起這種攻擊,你必須先傳播這些新的交易,然后在兩個區塊之后,你能找到一個區塊包含這些交易。而且你還不能立即發起攻擊,只有當你在特定距離上有兩個區塊被開采出來后,你才能發起攻擊,這就是為什么這種攻擊在NC-Max中比在中本聰共識中更難發起的原因。
Anna:我進一步的問題是,有沒有新的攻擊是你不能減輕的?
Ren:我覺得不會。
因為NC-Max遵循比特幣主干協議,使用的是「最長鏈」原則,以及相對相同的區塊結構,它符合中本聰共識的所有安全假設。
Anna:明白了,我們剛才詳細介紹了NC-Max。
現在我想知道的是,你在Nervos這個項目工作,這是一個網絡。NC-Max的工作和Nervos有什么關系?我們過去還請了Alan上過節目,也許你可以給我們多講講NC-Max是如何和Nervos這個網絡相整合的。
Ren:其實很簡單,NervosCKB使用NC-Max作為它的共識機制。而Alan的工作和NervosCKB之間的關系也很簡單,Alan設計了EagleSong,它被用作工作量證明算法的哈希函數。?
這就是我們和Nervos的關系,但我認為共識協議是NervosCKB最無聊的部分,它有一些更讓人興奮的功能。
Anna:是啊,如果你愿意的話,請多告訴我們一些有關NervosCKB的東西,因為我們實際上從來沒有在節目中談論過它。
Ren:當然,Nervos的設計有三件事我覺得值得一提。
第一點是,NervosCKB使用的是UTXO模型,UTXO模型對用戶自定義代幣來說更容易,在以太坊里,很多安全漏洞來源之一就是所有的用戶自定義代幣都存在ERC20合約里面,像是用戶的所有賬戶余額都存儲在同一個合約中,所以,如果黑客破解了這個合約,那基本上就可以任意修改用戶的余額。
而UTXO模型可以讓我們把訪問控制權還給用戶,你的資產存在你自己的UTXO里,你可以決定用什么簽名算法來解鎖這些資產,所以,在智能合約方面不存在單點故障。
Anna:等等,你可以在NervosCKB上運行智能合約,但它使用的是UTXO模型,那還有其他項目可以這樣做嗎?
因為我主要了解的是以太坊,我一直以為你需要有一個賬戶模型才能做智能合約的東西,但我猜,好像不是......。
Ren:不,其實你不需要一個賬戶模型才能支持智能合約,有其他產品也可以做到這一點,但我想我們是最早的一個。
Anna:明白了,我在想那是什么樣子,智能合約到底是如何在UTXO上運行的?
Ren:我稍后就會談到這部分。
在Nervos中script分為兩種,第一種叫做?lockscript,你可以把它想象成你公寓的鎖,第二種叫做?typescript。你可以把它想象成你公寓里的家具。你正在運行的實際代碼是為了執行智能合約,而將lockscript和typescript分開的好處是,它可以消除很多安全漏洞。
在以太坊里面,基本上誰能修改智能合約,誰就能修改變量,它與執行功能的代碼混合在一起,而在NervosCKB中,這兩種腳本是分開的,這樣就很難被攻擊。
另外,用戶可以定義自己的lockscript,你可以說我更喜歡Schnorr簽名,也可以說更喜歡ECDS簽名,這些都是很靈活的,這是Nervos的UTXO模型。
Nervos的第二個新東西是它的經濟模型,原生代幣CKB代表了存儲空間。在以太坊里面,你只需支付一次性費用,而無論占用存儲空間有多大,它都永遠不收取任何鏈上存儲的費用。
在NervosCKB中,我們使用了不同的經濟模型,每個UTXO都有一定數量的存儲空間,所有的空間都有利息,如果你使用了這個存儲空間,那么利息就歸礦工所有,如果你不使用那個存儲空間,那么你可以保留這個利息。
Anna:所以用戶要為存儲付費,對嗎?
Fredrik:是的,沒錯,就像是狀態租賃,但它不需要讓我的智能合約一直活躍,我必須不斷地把合約的錢送來,而NervosCKB的付款像是通過通脹來付款。
Ren:是的,而且有交易費。
有意思的是,你可以用任意一種資產來支付交易費,并沒有Gas機制。你可能知道,以太坊的許多攻擊就是來自于費用估算和共識機制之間的緊密耦合,而我們認為這是沒有必要的,我們把它去掉,看看它的效果如何。
Nervos設計的第三個亮點是,它使用?RISC-V來打造虛擬機,RISC-V是一個硬件指令集,這意味著它非常強大,你可以用任何你想要的編程語言來編程,包括Solidity,你可以實現任何你想要的密碼學原語,而這就方便了跨鏈操作和算法更新,因為在很多跨鏈操作中,不同的鏈使用不同的簽名算法,但在Nervos中,這不是個問題,因為你可以隨時從密碼學庫中調用。
Fredrik:有沒有一種有效的方法可以將RISC-V編譯成x86?或者這是否意味著你的礦工需要購買RISC-V的CPU?
Ren:我不是這方面的專家,目前為止我被告知,目前它的速度比EVM稍慢,但他們正在優化它。
Fredrik:好的,我認為那應該是在仿真模式下跑的,因為如果在實際的硬件上運行RISC-V,它會很快。
Ren:對,這個環境下運行的RISC-V預計比在硬件上運行要慢50倍,而且有人告訴我,相對WebAssembly,RISC-V指令集實現起來更簡單。
Anna:總結一下,我很好奇你現在在做什么研究?你有什么正在進行的工作嗎?
Ren:有一件大事我真的很想做,就是寫一篇論文,叫做「LaydowntheCommonMetrics2.0」。
近些年有很多新的協議出來,但有些協議還是犯了同樣的錯誤,就是把模擬作為安全分析,我想分析它們的安全性,找出這些協議中新的攻擊方式。
行情分析: 從4小時圖來看,以太受大餅行情聯動,從481附近一路震蕩上行,多頭不斷發力于日間最高來到597一線,布林帶開口運行,K線運行在布林通道上軌附近,各均線向上散發.
1900/1/1 0:00:00早上好,各位投資朋友們,進入了今年的最后一個月份,不知道大家這一年下來收獲如何呢?昨日黃金早盤開盤在1786.5的后行情小幅拉升給出1790.2后回落.
1900/1/1 0:00:00宸浩論幣:以太坊突破新高多單到達目標,順勢而為就好!晚間的以太坊行情也是大漲,再次的站上了600的壓力位,凌晨的行情布局中宸浩就講過,大趨勢看漲,中線目標位我們可以看到600的目標壓力位.
1900/1/1 0:00:00本期AMA,鏈想邀請到了UENC中國區首席社區運營官-Thomas,為我們解讀UENC如何在跨鏈領域的探索!UENC是一個以跨鏈為技術方向.
1900/1/1 0:00:00各位幣友們,大家好,我是幣圈龍校長本著負責、誠懇、認真的態度用心寫好每一篇分析文章,在交易中,最重要的就是要敢于出手,面對機會,果斷出擊,這樣才不至于錯失機會.
1900/1/1 0:00:0011月26日,2020年第五場“中新數通匯智聚力”對接活動,在中新數據通道國際路演發布與產業轉化中心成功舉辦。大棒客職業培訓學校與新加坡九竹系統科技有限公司就教育培訓領域的合作進行了專項對接.
1900/1/1 0:00:00