一位Reddit用戶前幾天說,他不明白Avalanche的必要性,也不知道它真正解決了什么問題。這似乎是對Avalanche的一種普遍看法。在這篇文章中,我將盡我最大的努力,闡明目前我們在比特幣現(xiàn)金中遇到的問題,以及Avalanche如何解決這些問題。Avalanche有兩種使用方式——預共識和后共識——所以我將在本文中介紹它們。
?
預共識
有什么問題呢?實際上有兩個——塊傳播和零確認。
塊傳播
我們社區(qū)中似乎有很多人認為塊傳播是一個已經(jīng)解決的問題,因為我們已經(jīng)了解了塊壓縮算法,比如石墨烯。但這個問題真的沒有徹底解決。我們所有的塊傳播算法,包括Graphene,XThin,Compact Blocks和XThinner,都是依賴網(wǎng)絡中各個節(jié)點的內(nèi)存池來彼此同步的。
如果每個節(jié)點已經(jīng)擁有了區(qū)塊中的所有交易,那么塊傳播只會成為一項挑戰(zhàn),即只傳輸最少的必要數(shù)據(jù),以便傳送內(nèi)存池中的那些在區(qū)塊中的交易,而不是完整的交易本身。
但是,內(nèi)存池可能存在很多原因?qū)е虏荒芡?,特別是當網(wǎng)絡上的交易量增加時。這些原因包括:
1、不同的內(nèi)存池策略:節(jié)點始終可以自由選擇自己的內(nèi)存池策略。一些節(jié)點拒絕非標準交易,而其他節(jié)點接受它們。有些節(jié)點拒絕接受零費用的交易,而另一些則接受等等。這些差異并不一定會造成一次性的差異,相反,在拒絕其中一個依賴項的節(jié)點的內(nèi)存池中,任何構(gòu)建在這些交易上的未經(jīng)確認的交易鏈都將丟失。
2、雙倍花費:當同一時間發(fā)送雙倍花費時,不同的節(jié)點第一次看到的交易是不一樣的。與上述情況一樣,如果未經(jīng)確認的交易鏈建立在這一個或另一個交易上,內(nèi)存池的差異會被放大。
3、高容量:在交易量非常大的情況下,網(wǎng)絡中存在有很多交易,節(jié)點最終會因正常的傳播延遲而產(chǎn)生完全不同的內(nèi)存池。
那么當內(nèi)存池不同步時會發(fā)生什么?這意味著我們的塊壓縮算法不能很好工作,甚至根本無法工作,因為我們需要通過區(qū)塊傳輸完整的交易,而它們不在內(nèi)存池中。
這是BU Gigablock測試網(wǎng)研究的結(jié)論之一。在大約100 MB區(qū)塊的持續(xù)吞吐量下,有時網(wǎng)絡上各個節(jié)點的內(nèi)存池彼此不同步,以至于XThin壓縮算法根本無法為傳播100MB的區(qū)塊提供任何壓縮。
而且,由于傳播完整的100MB區(qū)塊可能超過10分鐘或者更長的時間,這意味著區(qū)塊鏈將會分叉并保持下去,從而導致共識的失敗和系統(tǒng)的全面崩潰。這一點在Peter Rizun的研究中曾提到。
Avalanche有什么幫助?
作為一種預共識機制,Avalanche可以幫助保持內(nèi)存池的同步,采用不同的方式部署它。在這一點上,我們?nèi)匀恢挥懻揂valanche并研究最佳方法,但是如果你要求所有交易在被允許打包之前使用Avalanche,那么你最終會遇到所有的Avalanche-aware節(jié)點在網(wǎng)絡共識的設(shè)置下允許打包的交易集合,因此區(qū)塊總是以最大速度傳播,因為每個節(jié)點已經(jīng)在區(qū)塊中具有完整的交易集。
零確認
我們提出了一種改進零確認的雙花證明方法,以防止快速重花攻擊。在這種情況下,攻擊者廣播兩個雙花交易的時間幾乎相同,因為彼此的結(jié)果都是非零概率的,所以雙花的兩個交易都會被打包。我們的雙花證明中繼可以幫助商家檢測這些雙倍花費并拒絕付款。
一種難以解決的雙花攻擊是礦工賄賂。在這種情況下,攻擊者向雙重支出交易附加大額交易費試圖賄賂礦工接受它。在之前的一篇文章中,給出的例子是,攻擊者購買了4000美元的電視。他用2000美元的費用廣播雙倍花費。如果有任何礦工接受賄賂,他們可以獲得2,000美元,而攻擊者可以得到2,000美元的折扣。
如果哪怕只有一小部分礦工愿意接受賄賂,零確認對任何人都不起作用,因為在這種支付系統(tǒng)中,在可以進行詐騙的地方,對大多數(shù)商家來說5-10%的時間是不可用的。
Peter Rizun 提出的研究表明,今天網(wǎng)絡上有礦工會很樂意接受賄賂來打包雙重支出交易。因此,這是一個我們想要解決的真正問題。
Avalanche有什么幫助?
通過讓節(jié)點預先就哪些交易是可以打包的達成共識,它們必然會在區(qū)塊被開采之前解決沖突交易(雙重花費)之間的沖突。事實上,Avalanche可以無理由的在幾秒鐘內(nèi)批準交易。假設(shè)我們能做到這一點,任何在接受付款后廣播的雙重支出都不會被接受。即使大多數(shù)礦工,甚至所有礦工都愿意接受賄賂打包雙重支出的交易,也是不能做到的。因為他們無法回到過去,逆轉(zhuǎn)已被Avalanche標記為最終交易的交易。
因此,Avalanche有可能給我們帶來近乎即時的確認?;蛘咧辽倏梢栽诰W(wǎng)絡延遲允許的范圍內(nèi)以最快的速度批準交易。
后共識
有什么問題呢?
51%攻擊!
回顧白皮書,人們一直都知道比特幣(以及任何POW加密貨幣)很容易受到控制著50%以上網(wǎng)絡算力的惡意方的攻擊。比特幣現(xiàn)金作為SHA-256哈希算法的小算力鏈,處境非常糟糕。因為有許多大型比特幣礦工個人擁有大量的算力,足以對BCH發(fā)起攻擊。即使BCH使用不同的挖礦算法并擁有自己獨特的ASICS,但是有足夠資源的惡意人員總是有可能購買足夠的算力來攻擊系統(tǒng)。
事實上,這正是11月份比特幣現(xiàn)金的遭遇。一個不理智、心懷惡意的演員(Craig Wright)使用他的財富(或者更具體地說是Caliv Ayre的財富)購買ASIC,其公開聲明的目標是對比特幣現(xiàn)金進行51%攻擊。最終他們失敗了,但保衛(wèi)比特幣現(xiàn)金付出了巨大的代價。如果 Craig 和 Calvin有更多的資源或愿意花更多的錢來進行攻擊,那么防御是非常困難的。
當時實施的臨時應急防御策略是在網(wǎng)絡節(jié)點構(gòu)建10個區(qū)塊之后,讓網(wǎng)絡節(jié)點確定“最終”區(qū)塊。最終意味著軟件認為給定的區(qū)塊是區(qū)塊鏈的最終和永久部分。如果沒有這個規(guī)則,當51%攻擊者發(fā)布了一個更長的鏈就會發(fā)生重組,而現(xiàn)在軟件會忽略這個更長的鏈,因為它試圖覆蓋一個標記為final的塊。
從表面上看,這確定聽起來是個好主意。如果沒有必要的話,那為什么我們還想要保持深度重組和51%攻擊的可能性呢?畢竟,如果歷史交易發(fā)生逆轉(zhuǎn),貨幣體系就無法運轉(zhuǎn)。
這個問題的答案與客觀性的概念有關(guān)。加入網(wǎng)絡的新節(jié)點,或者從缺失狀態(tài)返回的節(jié)點,只有一個客觀的衡量標準,用于確定他們應該遵循哪條競爭鏈,那就是工作量證明。如果現(xiàn)有節(jié)點拒絕深度重組并且遵循具有累積工作量較少的鏈,那么加入網(wǎng)絡的新節(jié)點無法知道這一點。結(jié)果是,新節(jié)點將同步到攻擊者的鏈上,現(xiàn)有節(jié)點將跟隨他們自己的鏈,從而導致分裂網(wǎng)絡。
還有一些人擔心,51%的攻擊者可能會利用競爭條件導致現(xiàn)有節(jié)點彼此分裂,盡管可能會部署一些技術(shù)來緩解此類攻擊。
Avalanche有什么幫助?
Avalanche可以讓我們在不暴露上述問題的情況下完成最終確定。當網(wǎng)絡節(jié)點使用Avalanche來協(xié)調(diào)他們認為有效的鏈時,51%的攻擊者不會利用競爭條件來分裂網(wǎng)絡。
此外,加入網(wǎng)絡的新節(jié)點可以使用Avalanche來確定其他人正在關(guān)注哪條鏈,并且將避免同步到由51%攻擊者生成的鏈。
因此,在后共識Avalanche的情況下,51%的攻擊者無法執(zhí)行深度重組或任何重組。這意味著一個確認將具有與當前系統(tǒng)中數(shù)千個確認相同的權(quán)重。
51%的攻擊者也不能挖空塊并對區(qū)塊鏈執(zhí)行某種形式的拒絕服務攻擊??諌K鏈的開采需要執(zhí)行一個塊重組操作,其他礦工挖塊都是孤塊。因為Avalanche的存在,這將是不可能的。攻擊者可以做的事情是,他個人挖的51%的區(qū)塊是空的,但其他人挖的區(qū)塊顯然不會是空的。
Avalanche的安全性如何呢?在某些方面,我們正在繞開POW的權(quán)威,這是不是意味著整個系統(tǒng)的安全現(xiàn)在要依賴于Avalanche的安全?答案并不是這樣。
如果你看一下Avalanche論文中的雪球算法,你會注意到一個擁有系統(tǒng)攻擊能力的拜占庭攻擊者只能在他保持攻擊的時候阻止塊的最終確定。舉個例子,他不能使某些節(jié)點最終確定是區(qū)塊A,而其他節(jié)點最終確定是區(qū)塊B,從而導致網(wǎng)絡的分裂。
所有這些意味著,如果Avalanche系統(tǒng)受到攻擊,網(wǎng)絡就會默認回到我們從第一天開始使用的中本聰共識。區(qū)塊將不會最終確定,節(jié)點將遵循工作量累積最多的鏈。一旦攻擊停止,區(qū)塊將再次開始最終確定。
因此,在POW之上使用Avalanche協(xié)議可以增強系統(tǒng)抵御51%攻擊的能力。它具有以下安全屬性:
如果攻擊者具有》 50%的算力而不是》攻擊Avalanche所需的拜占庭節(jié)點所需的閾值,則無法攻擊比特幣現(xiàn)金。
如果攻擊者具有》攻擊Avalanche所需的拜占庭節(jié)點所需的閾值但沒有》50%的算力,那么也無法攻擊比特幣現(xiàn)金。
只有攻擊者既具有大部分的算力也具有足夠的可以攻擊Avalanche系統(tǒng)的拜占庭節(jié)點,才能實現(xiàn)對比特幣現(xiàn)金的攻擊。
希望這篇文章能夠澄清一些對于Avalanche的誤解。我們還有更多的工作要做,以能夠在預共識和后共識的情況下更好的使用Avalanche。Avalanche似乎是針對比特幣誕生以來存在的一些棘手的問題的有效解決方案。
評論