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