以太坊Sharding FAQ
原文:https://github.com/ethereum/wiki/wiki/Sharding-FAQ?作者:vbuterin
譯注:原文內(nèi)容在不斷更新,本譯文不一定是最新的~
簡(jiǎn)介
目前,在所有的區(qū)塊鏈協(xié)議中每個(gè)節(jié)點(diǎn)存儲(chǔ)所有的狀態(tài)(賬戶余額,合約代碼和存儲(chǔ)等等)并且處理所有的交易。這提供了大量的安全性,但極大的限制了可擴(kuò)展性:區(qū)塊鏈不能處理比一個(gè)單節(jié)點(diǎn)更多的交易。很大程度上因?yàn)檫@個(gè)原因,比特幣被限制在每秒3-7筆交易,以太坊每秒7-15筆交易,等等。然后,這提出了一個(gè)問(wèn)題:是否有方法創(chuàng)建一個(gè)新的機(jī)制,只讓一個(gè)小集合的節(jié)點(diǎn)來(lái)驗(yàn)證每筆交易?只要有足夠多的節(jié)點(diǎn)驗(yàn)證每筆交易那么系統(tǒng)依然是高度安全的,但又足夠少使得系統(tǒng)系統(tǒng)可以并行處理很多的交易,我們是否可以使用這種技術(shù)來(lái)大大增加區(qū)塊鏈的吞吐量?
有哪些簡(jiǎn)單但有缺陷的方式來(lái)解決這個(gè)問(wèn)題?
”簡(jiǎn)單的解決方案“主要由三大類。第一個(gè)是直接放棄獨(dú)立區(qū)塊鏈縮放性,而是假設(shè)用戶將使用許多不同的”altcoins"。這種方法極大提升了吞吐量,但是是以安全性為代價(jià):使用這種方案在在吞吐量上N-factor的增加必然伴隨在安全性上N-factor的下降。因此,對(duì)于大于N小值可以被論證是不可行的。
第二個(gè)是簡(jiǎn)單增加區(qū)塊大小限制。這種方式可以起作用,而且在某些情況下可能是正確的處理方法,因?yàn)閰^(qū)塊鏈大小可能更多受到政治上的約束而不是現(xiàn)實(shí)的技術(shù)考量。但不管個(gè)人對(duì)于個(gè)別案例的信念如何,這個(gè)方案不可避免有它的局限性:如果區(qū)塊鏈運(yùn)行的足夠長(zhǎng),那么運(yùn)行在消費(fèi)者硬件上的節(jié)點(diǎn)就會(huì)退出,網(wǎng)絡(luò)將開(kāi)始只能依賴于少數(shù)運(yùn)行區(qū)塊鏈的超級(jí)計(jì)算機(jī),者可能導(dǎo)致極大的中心化風(fēng)險(xiǎn)。
第三個(gè)是“合并挖礦”,這是一種多區(qū)塊鏈共存的技術(shù),但所有的區(qū)塊鏈共享同一的挖礦激勵(lì)(或者權(quán)益證明系統(tǒng)中的賭注)。目前,Namecoin通過(guò)這樣的技術(shù)從比特幣區(qū)塊鏈中獲取了很大一部分的安全性。如果所有的礦工參與進(jìn)來(lái),理論上可以將吞吐量提升N倍而不會(huì)影響安全性。然而,這也存在這樣的問(wèn)題:它將每個(gè)礦工的計(jì)算和存儲(chǔ)負(fù)載增加了N倍。所以,實(shí)際上這個(gè)方法僅僅是一個(gè)隱藏的區(qū)塊大小限制提升方式。
即使這被認(rèn)為可以接受的,依然存在這樣的缺陷:這些區(qū)塊鏈不是真正被“捆綁在一起"的;只需要少量的經(jīng)濟(jì)激勵(lì)就能說(shuō)服礦工放棄或妥協(xié)某個(gè)特定的區(qū)塊鏈。這種可能性是非常真實(shí)的,并且有合并挖礦被攻擊的[真實(shí)歷史事件](actual historical incidents),以及明確提倡使用合并挖礦攻擊作為一種“治理特性”的開(kāi)發(fā)者,對(duì)于給定的聯(lián)盟,破壞區(qū)塊鏈并不是有利可圖的。
如果每條鏈只有少數(shù)礦工參與合并挖礦,則集中化風(fēng)險(xiǎn)得到緩解,但合并挖礦的安全效益也大大降低。
這聽(tīng)起來(lái)像是有某種擴(kuò)展性三難困境在起作用。這三難困境是什么呢,我們能突破它嗎?
這三難困境表明區(qū)塊鏈系統(tǒng)最多只能擁有以下三個(gè)屬性中的兩個(gè):
去中心化(定義為系統(tǒng)可以在每個(gè)參與者只能訪問(wèn)O(c)資源的場(chǎng)景下運(yùn)行,即普通筆記本電腦或小型VPS)
擴(kuò)展性(定義為可以處理O(n) > O(c)交易)
安全性(定義為最多使用O(n)資源就可以抵御安全攻擊)
在這個(gè)文檔的其余部分,我們繼續(xù)使用c來(lái)指代每個(gè)節(jié)點(diǎn)的可用計(jì)算資源大小(包括計(jì)算,帶寬和存儲(chǔ)),以及用n指代抽象意義上生態(tài)系統(tǒng)的大小;我們假設(shè)交易負(fù)載,狀態(tài)大小和加密貨幣市值都與n成正比。
有人認(rèn)為,由于梅特卡夫定律,一個(gè)加密貨幣的市值應(yīng)該與n ^ 2成正比,而不是n。 他們是正確的嗎?
不。
為什么不?
梅特卡夫法則認(rèn)為,網(wǎng)絡(luò)的價(jià)值與用戶數(shù)量的平方成正比(n ^ 2),因?yàn)槿绻W(wǎng)絡(luò)有n個(gè)用戶,那么網(wǎng)絡(luò)對(duì)每個(gè)用戶都有價(jià)值,但是每個(gè)用戶的價(jià)值是與用戶數(shù)量成正比,因?yàn)槿绻粋€(gè)網(wǎng)絡(luò)有n個(gè)用戶通過(guò)網(wǎng)絡(luò)有n-1個(gè)潛在的連接,每個(gè)用戶都可以從中受益。
在實(shí)踐中,實(shí)證研究表明,擁有n個(gè)用戶的網(wǎng)絡(luò)的價(jià)值”對(duì)于小的n值是與n ^ 2成比例且對(duì)于大的n值是與n×log n成比例“。這很容易理解,因?yàn)閷?duì)于小的n值,這個(gè)論點(diǎn)是成立的,但是一旦這個(gè)系統(tǒng)變得很大,兩個(gè)影響就會(huì)減緩增長(zhǎng)。首先,實(shí)踐中的增長(zhǎng)通常發(fā)生在社區(qū)中,因此在中等規(guī)模的網(wǎng)絡(luò)中,網(wǎng)絡(luò)通常已經(jīng)提供了每個(gè)用戶關(guān)心的大部分連接。其次,連接往往是可以互相替代的。你可以爭(zhēng)論說(shuō)人們從k個(gè)連接中只能獲得~O(log(k))的價(jià)值-有23個(gè)品牌的除臭劑可以選擇是好的,但并不不是說(shuō)比有22個(gè)選擇好多了,而一個(gè)選擇和零個(gè)選擇是非常重要的差異。
另外,即使加密貨幣的價(jià)值與k個(gè)用戶的O(k * log(k))成正比,如果我們接受上述解釋作為這種情況的原因,那這也意味著交易量也是O(k * log(k)),因?yàn)槊總€(gè)用戶的log(k)價(jià)值理論上來(lái)自于用戶通過(guò)網(wǎng)絡(luò)執(zhí)行l(wèi)og(k)的連接,并且狀態(tài)大小在許多情況下也應(yīng)該隨著O(k * log(k)) 一起增長(zhǎng),因?yàn)橹辽儆心撤N類型的狀態(tài)是特定關(guān)心而不是用戶特定的。因此,假設(shè)n=O(k * log(k)) ,并且基于n(生態(tài)系統(tǒng)大小)和c(單節(jié)點(diǎn)的計(jì)算能力)是我們使用的完美模型。
有哪些適度簡(jiǎn)單但只部分解決了可擴(kuò)展性問(wèn)題的方法?
許多分片建議(比如國(guó)大的Loi Luu等人提出的這個(gè)早期的BFT分片方案,以及為比特幣提議的this Merklix tree方案)都試圖只分片交易或者只分片狀態(tài),而不考慮其他方面。這些努力是令人欽佩的,可能會(huì)帶來(lái)效率上的提升,但他們遇到根本性的問(wèn)題,他們只能解決其中一個(gè)瓶頸。我們希望能夠每秒處理超過(guò)10000個(gè)交易,而即不必強(qiáng)迫每個(gè)節(jié)點(diǎn)成為超級(jí)計(jì)算機(jī)也不強(qiáng)迫每個(gè)節(jié)點(diǎn)存儲(chǔ)一兆字節(jié)的狀態(tài)數(shù)據(jù),而這需要一個(gè)全面的解決方案即狀態(tài)存儲(chǔ)工作量,交易處理甚至交易下載和廣播都跨節(jié)點(diǎn)分散。
特別要注意的是,這要求在P2P級(jí)別做出變更,因?yàn)閺V播模型是不可擴(kuò)展的,因?yàn)樗竺總€(gè)節(jié)點(diǎn)下載和重復(fù)廣播O(n) 的數(shù)據(jù)(每個(gè)被發(fā)送的交易),而我們?nèi)ブ行幕臉?biāo)準(zhǔn)假設(shè)是每個(gè)節(jié)點(diǎn)只能訪問(wèn)各種O(c)資源。
有哪些不試圖“分片”任何東西的方法?
Bitcoin-NG 可以通過(guò)另外一種區(qū)塊鏈設(shè)計(jì)來(lái)增加擴(kuò)展性,即如果節(jié)點(diǎn)花費(fèi)大量CPU時(shí)間驗(yàn)證區(qū)塊來(lái)使得網(wǎng)絡(luò)更安全。在簡(jiǎn)單的PoW區(qū)塊鏈中,存在較高的中心化風(fēng)險(xiǎn),并且如果閥值增長(zhǎng)到節(jié)點(diǎn)的CPU時(shí)間超過(guò)5%用于驗(yàn)證塊則共識(shí)安全就會(huì)被削弱;Bitcoin-NG的設(shè)計(jì)緩解了這個(gè)問(wèn)題。然而,這僅僅使得交易擴(kuò)展性提升了大約常量因子5-50x3,4,但并沒(méi)有提升狀態(tài)擴(kuò)展性。也就是說(shuō),Bitcoin-NG式的方法與分片并不互相排斥,兩者當(dāng)然可以同時(shí)實(shí)施。
基于通道的策略(閃電網(wǎng)絡(luò),雷電網(wǎng)絡(luò)等)可以通過(guò)常量因子擴(kuò)展交易容量,但不能擴(kuò)展?fàn)顟B(tài)存儲(chǔ),并且還會(huì)帶來(lái)他們自己獨(dú)特的折衷和限制,特別是涉及到拒絕服務(wù)攻擊;通過(guò)分片實(shí)現(xiàn)鏈上擴(kuò)展(加上其他的技術(shù))和通過(guò)通道實(shí)現(xiàn)鏈下擴(kuò)展可以說(shuō)是必要和互補(bǔ)的。
還有其他一些使用高級(jí)密碼學(xué)的方法。如Mimblewimble?和基于ZK-SNARKs的策略來(lái)解決擴(kuò)展性問(wèn)題的特定部分。初始化全節(jié)點(diǎn)同步,而不是從創(chuàng)世塊驗(yàn)證整個(gè)歷史,節(jié)點(diǎn)可以驗(yàn)證一個(gè)密碼學(xué)證明當(dāng)前狀態(tài)合法地遵循歷史記錄。這些方法確實(shí)解決了合法性問(wèn)題,但是值得注意的是,可以依靠加密經(jīng)濟(jì)學(xué)用更簡(jiǎn)單的方式而不是純粹密碼學(xué)來(lái)解決同樣的問(wèn)題-參見(jiàn)以太坊當(dāng)前快速同步和神同步的實(shí)現(xiàn)。這兩種方法都沒(méi)有緩解狀態(tài)大小的增長(zhǎng)或者在線交易處理的限制。
Plasma 如何適應(yīng)三難困境?
在Plasma子鏈發(fā)生較大攻擊的時(shí)候,Plasma子鏈的所有用戶需要提現(xiàn)回根鏈。如果Plasma有 O(N)用戶,那么就需要 O(N)的交易,所以需要 O(N/C)的時(shí)間來(lái)處理所有的提現(xiàn)。如果提現(xiàn)延遲固定在某個(gè)D上(即天真的實(shí)現(xiàn)),那么只要N>C*D,區(qū)塊鏈中就沒(méi)有足夠空間來(lái)及時(shí)處理所有的提現(xiàn),這樣系統(tǒng)將變得不安全。在這種模式下,Plasma應(yīng)該被視為只通過(guò)一個(gè)(可能很大)常數(shù)因子來(lái)提升擴(kuò)展性。如果提現(xiàn)延遲是靈活的,那么如果有很多的提現(xiàn)發(fā)生他們會(huì)自動(dòng)延長(zhǎng),這意味著當(dāng)N增長(zhǎng)的越來(lái)越大,攻擊者迫使所有人的資金被鎖定的時(shí)間越來(lái)越長(zhǎng),系統(tǒng)的“安全性“級(jí)別在一定意義上進(jìn)一步降低。因?yàn)閿U(kuò)展的拒絕訪問(wèn)可以被認(rèn)為是安全上的失敗,盡管比失去所有訪問(wèn)要折衷些。然而,這是與其他方案不同的折衷方案,可以說(shuō)是一個(gè)更溫和的折衷,所以Plasma子鏈為什么依然是現(xiàn)狀的巨大改進(jìn)。
狀態(tài)大小,歷史,加密經(jīng)濟(jì)學(xué),哦,我的天!在我們繼續(xù)之前,先定義一些這樣的術(shù)語(yǔ)!
- 狀態(tài) 代表系統(tǒng)”當(dāng)前狀態(tài)“的一個(gè)信息集合;確定交易是否有效,以及交易的結(jié)果,在最簡(jiǎn)單的模型中應(yīng)該僅僅依賴狀態(tài)。例如比特幣中UTXO的狀態(tài)數(shù)據(jù),以太坊中的balances+nonces+code+storage,Namecoin中的域名注冊(cè)項(xiàng)。
- 歷史:自從創(chuàng)世塊以來(lái)的所有交易的有序列表。在一個(gè)簡(jiǎn)單模型中,當(dāng)前狀態(tài)應(yīng)該是創(chuàng)世狀態(tài)和歷史的確定性函數(shù)。
- 交易:進(jìn)入歷史的一個(gè)對(duì)象。在實(shí)踐中,一筆交易代表了某用戶想要做的操作,并且是加密簽名的。
- 狀態(tài)轉(zhuǎn)換函數(shù):一個(gè)獲取狀態(tài),應(yīng)用交易并輸出新?tīng)顟B(tài)的函數(shù)。涉及的計(jì)算可能包含對(duì)交易指定的賬戶中增加或減少余額,驗(yàn)證數(shù)字簽名和運(yùn)行合約代碼。
- 默克爾樹(shù):可以存儲(chǔ)大量數(shù)據(jù)的加密哈希樹(shù)結(jié)構(gòu),其中驗(yàn)證每個(gè)單項(xiàng)數(shù)據(jù)項(xiàng)只需要O(log(n)) 的空間和時(shí)間。詳情看這里。在以太坊中,每個(gè)塊的交易集合已經(jīng)狀態(tài)都保存在默克爾樹(shù)中,樹(shù)的根被提交在塊中。
- 收據(jù):代表交易執(zhí)行結(jié)果的對(duì)象,它并不存儲(chǔ)在狀態(tài)中,但仍存儲(chǔ)在一個(gè)默克爾樹(shù)中并提交到塊,以便節(jié)點(diǎn)在沒(méi)有擁有所有數(shù)據(jù)的情況下可以高效驗(yàn)證證明。在以太坊中Logs就是收據(jù)。在分片模型中,收據(jù)是用來(lái)促進(jìn)異步跨分片通信。
- 輕客戶端:與區(qū)塊鏈交互的一種方式,它只需要非常少量的計(jì)算資源,默認(rèn)情況下只需要跟蹤鏈的區(qū)塊頭,并根據(jù)需要請(qǐng)求關(guān)于交易,狀態(tài)和收據(jù)的相關(guān)信息,并驗(yàn)證相關(guān)數(shù)據(jù)的默克爾證明。
- 狀態(tài)根:代表狀態(tài)的默克爾樹(shù)根哈希。
分片背后的基本思想?
把狀態(tài)分成K = O(n / c) 分區(qū),我們稱之為”分片“。例如,以太坊的分片方案可能會(huì)將所有0x00開(kāi)頭的所有地址放入一個(gè)分片,所有以0x01開(kāi)頭的地方hi放入另外一個(gè)分片等等。在最簡(jiǎn)單的分片形式中,每個(gè)分片都有自己的交易歷史,且在某個(gè)分片k中的交易影響僅限于分片k的狀態(tài)。一個(gè)簡(jiǎn)單的例子是多資產(chǎn)區(qū)塊鏈,其中有k個(gè)分片,每個(gè)分片存儲(chǔ)余額和處理一個(gè)特定資產(chǎn)相關(guān)的交易。在更高級(jí)的分片形式中,包括了某些形式的跨分片通信能力,其中一個(gè)分片上的交易可以出發(fā)其他分片上的事件。
分片區(qū)塊鏈的基本設(shè)計(jì)是怎么樣的?
一個(gè)簡(jiǎn)單的方法如下。存在一些稱為協(xié)調(diào)者的節(jié)點(diǎn),其接受在分片k上的交易(取決于協(xié)議,協(xié)調(diào)者可以選擇哪個(gè)k分片或者隨機(jī)分配k)并創(chuàng)建排序規(guī)則。一個(gè)排序規(guī)則有一個(gè)排序頭,一個(gè)形式為”這是在分片k上的交易排序“的短消息。它期望分片k的前狀態(tài)根是0x12bc57,在當(dāng)前排序的交易默克爾樹(shù)根是0x3f98ea,并且交易被處理之后的狀態(tài)根應(yīng)當(dāng)是0x5d0cc1。且協(xié)調(diào)者#1,2,4,5,8,11,13...98,99對(duì)其簽名。
一個(gè)區(qū)塊必須包括每個(gè)分片的排序頭,在以下情況下區(qū)塊是有效的:
需要注意的是,在這樣的系統(tǒng)中現(xiàn)在存在幾個(gè)”層次“的節(jié)點(diǎn):
- 超級(jí)全節(jié)點(diǎn)- 處理在所有排序規(guī)則中的所有交易,并且維護(hù)所有分片的全狀態(tài)
- 頂級(jí)節(jié)點(diǎn)- 處理所有頂級(jí)(top-level)區(qū)塊,但不處理或試圖下載在每個(gè)排序規(guī)則的交易。相反,如果在某個(gè)分片中有三分之二協(xié)調(diào)者認(rèn)為一個(gè)排序規(guī)則是有效的,那么這個(gè)排序規(guī)則就是有效的。
- 單分片節(jié)點(diǎn)- 充當(dāng)頂級(jí)節(jié)點(diǎn),但同時(shí)也處理某個(gè)分片的所有交易和維護(hù)全狀態(tài)。
- 輕節(jié)點(diǎn)- 僅下載和驗(yàn)證頂級(jí)區(qū)塊的區(qū)塊頭;不處理任何排序頭或交易,除非它需要讀取某個(gè)特定分片的狀態(tài)的某些特定信息,在這種情況下,它下載該分片最近的排序頭的默克爾分支并且下載在該狀態(tài)下的默克爾證明期望值。
這里面臨的挑戰(zhàn)是什么?
- 跨分片通信- 上述設(shè)計(jì)不支持跨分片通信。我們?nèi)绾伟踩卦黾涌绶制ㄐ拧?/li>
- 單分片接管攻擊- 如果在一個(gè)分片中攻擊者接管了大多數(shù)協(xié)調(diào)者,要么獲取足夠的簽名來(lái)阻止任何排序規(guī)則,要么更糟糕的,提交無(wú)效的排序?
- 欺詐檢測(cè)- 如果得到一個(gè)無(wú)效的排序規(guī)則,節(jié)點(diǎn)(包括輕節(jié)點(diǎn))如何能夠可靠的得知,以便它們可以驗(yàn)證欺詐行為并且確認(rèn)是欺詐行為之后拒絕這個(gè)排序規(guī)則?
- 數(shù)據(jù)可用性問(wèn)題- 作為欺詐檢測(cè)的子集,排序規(guī)則中缺失數(shù)據(jù)這種特殊情況會(huì)怎么樣?
- 超二次分片- 在n > c^2的特殊情況下,在上面給出的簡(jiǎn)單設(shè)計(jì)里面,將會(huì)有超過(guò)O(c)的排序頭,因此普通節(jié)點(diǎn)將不能處理它們,只能處理頂級(jí)區(qū)塊。因此,在交易和頂級(jí)區(qū)塊頭直接超過(guò)兩級(jí)的間接尋址是需要的(即我們需要”分片的分片“)。達(dá)到這個(gè)目標(biāo)的最簡(jiǎn)單和最好的方式是什么呢?
然后,交易的結(jié)果取決于之前發(fā)生在其他分片中的事件;一個(gè)典型的例子是貨幣轉(zhuǎn)賬,貨幣可以從分片i轉(zhuǎn)移到分片j,首先在分片i中創(chuàng)建一個(gè)”借記“交易來(lái)銷毀代幣,然后在分片j中創(chuàng)建一個(gè)”貸記“交易來(lái)創(chuàng)建代幣,并將借記交易的收據(jù)作為貸記證明是合法的。
但是CAP定理意味著完全安全的分布式系統(tǒng)是不可能的,因此分片是無(wú)法實(shí)現(xiàn)的?
CAP定理是于分布式共識(shí)有關(guān)的結(jié)果。一個(gè)簡(jiǎn)單的描述是:”在網(wǎng)絡(luò)發(fā)生分區(qū)的情況下,你必須選擇一致性或可用性,你不能同時(shí)擁有兩者“。直觀的論點(diǎn)很簡(jiǎn)單:如果網(wǎng)絡(luò)分為兩半,在一半網(wǎng)絡(luò)中發(fā)送交易”發(fā)送10個(gè)代幣給A",而在另一半發(fā)送交易”發(fā)送10個(gè)代幣給B“,然后系統(tǒng)是不可用的,因?yàn)槠渲幸粋€(gè)或者兩個(gè)交易將不被處理,或者變得不一致,因?yàn)橐话氲木W(wǎng)絡(luò)將看到第一個(gè)交易完成,另一半將看到第二個(gè)交易完成。注意CAP定理與擴(kuò)展性無(wú)關(guān);它適用于多節(jié)點(diǎn)需要對(duì)某個(gè)值導(dǎo)致一致的任何情況,而不管它們所達(dá)成一致的數(shù)據(jù)量大小。所有現(xiàn)有的去中心化系統(tǒng)已在可用性和一致性之間找到一些折衷方法,在這方面分片并沒(méi)有從根本上造成困難。
我們?nèi)绾未龠M(jìn)跨分片通信?
最容易滿足的一個(gè)場(chǎng)景是,有許多的應(yīng)用程序沒(méi)有太多獨(dú)立用戶,而且這些應(yīng)用程序只是偶爾或者很少與彼此交互;在這種情況下,應(yīng)用程序可以在單獨(dú)的分片上生存,并通過(guò)使用收據(jù)來(lái)與其他分片進(jìn)行通信。
這通常涉及將每筆交易分解為”借記“和”貸記“。例如,假設(shè)我們有一個(gè)交易,其中賬戶A在分片M上,期望發(fā)送100個(gè)代幣到分片N上的賬戶B。這些步驟如下所示:
在分片M上發(fā)送一個(gè)交易(i)扣除賬戶A的100個(gè)代幣(ii) 創(chuàng)建一個(gè)收據(jù)。收據(jù)對(duì)象并不直接保存在狀態(tài)中,但收據(jù)的生成能通過(guò)默克爾證明來(lái)驗(yàn)證。
等待第一個(gè)交易被包含進(jìn)來(lái)(有時(shí)候需要等待終止化,這取決于系統(tǒng))
在分片N上發(fā)送一個(gè)交易,包含來(lái)自(1)收據(jù)的默克爾證明。這個(gè)交易也檢查分片N上的狀態(tài)以確保收據(jù)是”未花費(fèi)“;如果是的話,那么它將賬戶B增加100個(gè)代幣,并且保存在狀態(tài)中代表收據(jù)已花費(fèi)。
可選地,(3)中的交易也保存收據(jù),然后可以在分片M中用來(lái)執(zhí)行進(jìn)一步的操作,這取決與原操作是否成功。
在更復(fù)雜的分片形式中,交易在某些場(chǎng)景下可能具有分散在不同分片上的效果,并且可以從多個(gè)分片狀態(tài)中同時(shí)請(qǐng)求數(shù)據(jù)。
不同類型的應(yīng)用程序如何與分片區(qū)塊鏈融合?
有些應(yīng)用程序完全不需要跨分片交互;多資產(chǎn)區(qū)塊鏈和不需要互操作性的完全異構(gòu)應(yīng)用程序的區(qū)塊鏈?zhǔn)亲詈?jiǎn)單的案例。如果應(yīng)用程序不需要彼此交互,如果可以異步交互,面臨的挑戰(zhàn)會(huì)更容易應(yīng)對(duì)。也就是說(shuō),如果交互可以以分片A上的應(yīng)用程序的形式完成,則生成收據(jù),在分片B上的交易“消費(fèi)”該收據(jù)并基于它執(zhí)行一些操作,并且可能向分片A發(fā)送包含某些響應(yīng)的“回調(diào)”??偟膩?lái)說(shuō)這個(gè)模式是很簡(jiǎn)單的,并且不難將其整合入高級(jí)程序語(yǔ)言中。
需要注意的是,與可用于分片內(nèi)通信的機(jī)制相比,用于異步跨分片通信的協(xié)議內(nèi)置機(jī)制可能會(huì)有所不同并且功能較弱。在不可擴(kuò)展的區(qū)塊鏈中的當(dāng)前可用的一些功能在可擴(kuò)展區(qū)塊鏈中只能用于分區(qū)內(nèi)通信。
什么是火車旅館問(wèn)題?
下面的例子是Andrew Miller提供的。 假設(shè)用戶想要購(gòu)買一張火車票并預(yù)訂一家旅館,并且想要確保這個(gè)操作是原子的 - 無(wú)論是保留成功還是兩者都不成立。 如果火車票和酒店預(yù)訂應(yīng)用程序在同一個(gè)分片上,這很容易:創(chuàng)建一個(gè)交易,試圖進(jìn)行兩個(gè)預(yù)訂,除非兩個(gè)預(yù)訂都成功,否則引發(fā)異常,并且回滾所有。 但是,如果兩者在不同的分片上,這并不是那么容易; 即使沒(méi)有加密經(jīng)濟(jì)/去中心化的問(wèn)題,這實(shí)質(zhì)上也是數(shù)據(jù)庫(kù)原子事務(wù)的問(wèn)題。
只有異步消息,最簡(jiǎn)單的解決方法是先預(yù)訂火車,然后再預(yù)訂旅館,然后一旦兩個(gè)預(yù)訂都成功就都確認(rèn);預(yù)訂機(jī)制將阻止其他人預(yù)留(或者至少會(huì)確保有足夠的空間開(kāi)放讓所有的預(yù)訂被確認(rèn))一段時(shí)間。然而,這意味著該機(jī)制依賴于額外安全假設(shè):來(lái)自于跨分片的消息可以在固定的周期內(nèi)被包含在另外的分片中。
使用跨分片同步交易,問(wèn)題更容易,但創(chuàng)建可以跨分片原子同步交易的分片解決方案的挑戰(zhàn)本身絕對(duì)是重要的。
如果單個(gè)應(yīng)用程序的使用量超過(guò) O(c),則該應(yīng)用程序需要存在多個(gè)區(qū)塊鏈中。這樣做的可行性取決于應(yīng)用程序自身的具體情況。一些應(yīng)用程序(如貨幣)很容易并行化,而另外一些應(yīng)用程序(例如某些類型的市場(chǎng)設(shè)計(jì))則不能并行化智能串行處理。
我們知道分片區(qū)塊鏈的屬性有一個(gè)事實(shí)是不可能實(shí)現(xiàn)的。阿姆達(dá)爾定律?表明在應(yīng)用程序有任何不可并行化組件的情況下,一旦容易獲得并行化,不可并行化組件就會(huì)快速成為瓶頸。在像以太坊的通用計(jì)算平臺(tái)中,很容易提出不可并行化計(jì)算的例子:一個(gè)跟蹤內(nèi)部變量x的合約,一旦接到到一個(gè)交易就將變量x設(shè)置為sha3(x, tx_data)就是個(gè)簡(jiǎn)單的例子。沒(méi)有分片方案可以給與這種形式的個(gè)別應(yīng)用程序超過(guò)O(c)的性能。因此,隨著時(shí)間的推移,分片區(qū)塊鏈協(xié)議將會(huì)越來(lái)越好地能夠處理越來(lái)越多樣化的應(yīng)用程序類型和應(yīng)用程序交互,但分片架構(gòu)至少在規(guī)模超過(guò)O(c)的某些方面總是落后于單分片的架構(gòu)。
我們正在運(yùn)行的是哪些安全模型?
評(píng)估區(qū)塊鏈設(shè)計(jì)的安全性有幾個(gè)競(jìng)爭(zhēng)模型:
- 誠(chéng)實(shí)的大多數(shù)(或誠(chéng)實(shí)的絕對(duì)多數(shù)):我們假設(shè)有一組驗(yàn)證者,而且這些驗(yàn)證者的?(或?或?)由攻擊者控制,其余的驗(yàn)證者誠(chéng)實(shí)地遵循協(xié)議。
- 不協(xié)調(diào)的大多數(shù):我們假設(shè)所有的驗(yàn)證者在博弈論的上都是合理的(除了攻擊者,他們有動(dòng)機(jī)使用某種方式來(lái)攻擊網(wǎng)絡(luò)),但是不超過(guò)一部分(通常在?和?之間)協(xié)調(diào)他們的行動(dòng)。
- 協(xié)調(diào)選擇:我們假定所有的驗(yàn)證者都是由同一個(gè)參與者控制的,或者完全有能力協(xié)調(diào)他們之間的經(jīng)濟(jì)上最優(yōu)的選擇。我們可以討論聯(lián)合的成本(或聯(lián)合的利潤(rùn))達(dá)到一些不良的結(jié)果。
- 賄賂攻擊者模式:我們采取不協(xié)調(diào)的多數(shù)模型,而不是讓攻擊者成為參與者之一,攻擊者處于協(xié)議之外,并有能力賄賂任何參與者來(lái)改變他們的行為。攻擊者被模擬為擁有預(yù)算,這是他們?cè)敢庵Ц兜淖罡呓痤~,我們可以討論他們的成本,即他們最終為破壞協(xié)議平衡而支付的金額。
比特幣的Eyal and Sirer’s selfish mining fix?工作量證明是健壯的,在誠(chéng)實(shí)的大多數(shù)高達(dá)?的假設(shè)下,在不協(xié)調(diào)的大多數(shù)高達(dá)?的假設(shè)下。Schellingcoin?在誠(chéng)實(shí)的大多數(shù)假設(shè)和在不協(xié)調(diào)的大多數(shù)假設(shè)下高達(dá)?,在協(xié)調(diào)選擇模型下具有ε(即略微大于零)的攻擊成本,并且在賄賂攻擊者模型中由于P + epsilon attacks?要求具有P + ε預(yù)算要求和ε成本。
混合模型也是存在的。例如,即使是在協(xié)調(diào)選擇模型和賄賂攻擊者模型中,通常也會(huì)做出一個(gè)誠(chéng)實(shí)的少數(shù)人的假設(shè),某些部分(可能是1-15%)的驗(yàn)證者會(huì)無(wú)視激勵(lì)而采取利他行為。 我們也可以討論由50-99%的驗(yàn)證者組成的聯(lián)盟,試圖破壞協(xié)議或傷害其他驗(yàn)證者; 例如在工作量證明中,一個(gè)51%算力大小的聯(lián)盟可以通過(guò)拒絕包含其他礦工產(chǎn)出的區(qū)塊來(lái)增加增加自己的收入。
誠(chéng)實(shí)的大多數(shù)模型可能是非常不切實(shí)際的,并且已經(jīng)被證明了-比特幣的SPV mining fork?是個(gè)實(shí)際的例子。它證明了很多;例如,一個(gè)誠(chéng)實(shí)的大多數(shù)模型意味著誠(chéng)實(shí)的礦工自愿燒毀他們自己的資金,以某種方式懲罰攻擊者。不協(xié)調(diào)的大多數(shù)模型的假設(shè)可能是現(xiàn)實(shí)的;還有個(gè)中間模型,其中大多數(shù)節(jié)點(diǎn)是誠(chéng)實(shí)的但有個(gè)預(yù)算,如果他們失去了太多資金就回停止。
賄賂攻擊者模式在某些情況下被批評(píng)為不切實(shí)際的對(duì)抗行為,盡管其支持者認(rèn)為,如果一個(gè)協(xié)議的設(shè)計(jì)考慮了賄賂攻擊者模型,那么它應(yīng)該能夠大幅降低共識(shí)成本,因?yàn)?1%的攻擊變成一個(gè)可以從中恢復(fù)的事件。 我們將在不協(xié)調(diào)的大多數(shù)和賄賂攻擊者模型的背景下評(píng)估分片。
我們?nèi)绾谓鉀Q在不協(xié)調(diào)的大多數(shù)模型中的單分片接管攻擊?
簡(jiǎn)單來(lái)說(shuō),隨機(jī)抽樣。 每個(gè)分片被分配一定數(shù)量的協(xié)調(diào)者(例如,150),在每個(gè)分片上批準(zhǔn)區(qū)塊的協(xié)調(diào)者都是從分片的樣本中獲取的。樣本可以半頻繁地(例如每12小時(shí)一次)或最頻繁地(也就是說(shuō),沒(méi)有真正的獨(dú)立抽樣過(guò)程,每個(gè)塊從全局池中的每個(gè)分片隨機(jī)選擇協(xié)調(diào)者)進(jìn)行重新洗牌。
結(jié)果是,在一個(gè)誠(chéng)實(shí)/不協(xié)調(diào)的多數(shù)模型中,相對(duì)于每一個(gè)單節(jié)點(diǎn)正在驗(yàn)證和創(chuàng)建塊,即使在任何給定的時(shí)間在每個(gè)分片上只有幾個(gè)節(jié)點(diǎn)驗(yàn)證和創(chuàng)建塊,安全級(jí)別實(shí)際上并不低得多。 原因是簡(jiǎn)單統(tǒng)計(jì):如果你在全局集合上假設(shè)一個(gè)?誠(chéng)實(shí)的絕對(duì)多數(shù),如果樣本的大小是150,那么以99.999%的概率就可以滿足樣本的誠(chéng)實(shí)多數(shù)條件。 如果你假定在全局組合上有一個(gè)?誠(chéng)實(shí)的絕對(duì)多數(shù),那么這個(gè)概率就會(huì)增加到99.999999998%(這里請(qǐng)看細(xì)節(jié)?)。
因此,至少在誠(chéng)實(shí)/不協(xié)調(diào)的大多數(shù)情況下,我們有:
- 去中心化(每個(gè)節(jié)點(diǎn)只存儲(chǔ)O(c) 數(shù)據(jù),因?yàn)樗荗(c) 分片的一個(gè)輕客戶端,所以存儲(chǔ)O(1) * O(c) = O(c)的塊頭數(shù)據(jù),以及對(duì)應(yīng)于當(dāng)前分配給它的一個(gè)或多個(gè)分片的完整狀態(tài)和近期歷史的O(c)數(shù)據(jù))
- 可擴(kuò)展性 (有O(c) 個(gè)分片,每個(gè)分片有O(c) 的容量,最大容量是n = O(c^2))
- 安全性(攻擊者需要控制整個(gè)O(n)大小的驗(yàn)證池中的至少 ? ,以便有機(jī)會(huì)接管網(wǎng)絡(luò))。
在Zamfir模型中(或者在“非常非常適應(yīng)性的對(duì)手”模型中),事情并不是那么容易,但是我們稍后會(huì)做到這一點(diǎn)。 請(qǐng)注意,由于采樣的不完善性,安全閾值確實(shí)從1/2降低到了?,但相對(duì)于可能是100-1000倍的可擴(kuò)展性收益而不會(huì)損失去中心化,這仍然是一個(gè)令人驚訝的低安全性損失。
你如何在工作量證明和權(quán)益證明中做這個(gè)抽樣?
在權(quán)益證明中,這很容易。 已經(jīng)有一個(gè)“活動(dòng)驗(yàn)證者集合”在狀態(tài)中被跟蹤,并且可以直接從這個(gè)集合中簡(jiǎn)單地抽樣。 協(xié)議內(nèi)算法運(yùn)行并為每個(gè)分片選擇150個(gè)校驗(yàn)者,或者每個(gè)校驗(yàn)者獨(dú)立地運(yùn)行一個(gè)算法,該算法使用一個(gè)共同的隨機(jī)源來(lái)(可證實(shí)地)確定它們?cè)谌魏谓o定時(shí)間的分片。 請(qǐng)注意,抽樣任務(wù)是“強(qiáng)制性的”是非常重要的。 驗(yàn)證者不能選擇它們進(jìn)入的碎片。 如果驗(yàn)證者可以選擇,那么攻擊者可以用小權(quán)益集中他們的權(quán)益到一個(gè)分片上并攻擊它,從而消除系統(tǒng)的安全性。
在工作量證明中,這是比較困難的,就像“直接的”工作量證明計(jì)劃一樣,不能阻止礦工將工作量于某一特定的分片。 有可能使用proof-of-file-access forms工作量證明來(lái)將個(gè)人礦工鎖定到單獨(dú)的分片,但是很難確保礦工不能快速下載或生成可用于其他分片的數(shù)據(jù)并因此避開(kāi) 這種機(jī)制。 最為人所知的方法是通過(guò)Dominic Williams發(fā)明的一種叫做“拼圖塔”的技術(shù),礦工首先在一個(gè)共同鏈上進(jìn)行工作量證明,然后將這些證明導(dǎo)入到關(guān)于權(quán)益風(fēng)格驗(yàn)證池的證明中,然后驗(yàn)證池就像在權(quán)益證明的情況下一樣。
一個(gè)可能的中間路線可能如下所示。 礦工可以花費(fèi)大量的(O(c)大小)工作來(lái)創(chuàng)建一個(gè)新的“密碼身份”。 工作量證明方案的確切值,然后選擇他們?cè)谀膫€(gè)分片上產(chǎn)生下一個(gè)塊。他們可以花費(fèi)O(1)大小的工作量在分片上創(chuàng)建一個(gè)塊,然后工作量證明的價(jià)值決定了他們接下來(lái)可以繼續(xù)產(chǎn)塊的分片。注意的是,所有這些方法都以某種方式工作量證明“有狀態(tài)”,這是必要的。
取樣的頻率高低有哪些折衷?
選擇頻率只影響如何自適應(yīng)攻擊者使得協(xié)議仍然安全防御他們; 例如,如果您認(rèn)為適應(yīng)性攻擊(例如不誠(chéng)實(shí)的驗(yàn)證者發(fā)現(xiàn)他們是同一個(gè)樣本的一部分并且共同勾結(jié))可能在6小時(shí)內(nèi)發(fā)生但不會(huì)更早,那么采樣時(shí)間為4 小時(shí)而不是12小時(shí)。 這是一個(gè)贊成盡快抽樣的理由。
每個(gè)區(qū)塊進(jìn)行抽樣的主要挑戰(zhàn)是重新改組會(huì)帶來(lái)非常高的開(kāi)銷。 具體來(lái)說(shuō),驗(yàn)證分片上的塊需要知道該分片的狀態(tài),因此每次驗(yàn)證器被重新改組時(shí),驗(yàn)證器需要下載他們所在的新分片的整個(gè)狀態(tài)。這需要強(qiáng)大的狀態(tài)大小控制策略(即經(jīng)濟(jì)上確保狀態(tài)不會(huì)增長(zhǎng)過(guò)大,無(wú)論是刪除舊賬戶,限制創(chuàng)建新賬戶的比率還是兩者的結(jié)合),以及相當(dāng)長(zhǎng)的重組時(shí)間。
目前,Parity客戶端可以在?3分鐘內(nèi)通過(guò)“warp-sync”下載和驗(yàn)證完整的以太坊狀態(tài)快照; 如果我們?cè)黾?0倍以彌補(bǔ)增加的使用量(10 tx / sec而不是0.5 tx / sec)(我們假定未來(lái)的狀態(tài)大小控制策略和從長(zhǎng)期使用中積累的“灰塵”大致抵消了) 得到約60分鐘的狀態(tài)同步時(shí)間,這表明12-24小時(shí)的同步周期但不少于是安全的。
有兩條可能的途徑可以克服這個(gè)挑戰(zhàn)。
我們是否可以強(qiáng)制更多的狀態(tài)保持在用戶端,以便交易可以被驗(yàn)證,而不需要驗(yàn)證器來(lái)保存所有的狀態(tài)數(shù)據(jù)?
這里的技術(shù)往往涉及要求用戶存儲(chǔ)狀態(tài)數(shù)據(jù),并為他們發(fā)送的每一個(gè)交易單獨(dú)提供Merkle證明。 一個(gè)交易將與一個(gè)正確執(zhí)行Merkle證明一起發(fā)送,這個(gè)證明將允許一個(gè)只有狀態(tài)根的節(jié)點(diǎn)計(jì)算新的狀態(tài)根。 這種正確執(zhí)行證明將包括需要遍歷的trie中對(duì)象的子集,以訪問(wèn)和驗(yàn)證交易必須驗(yàn)證的狀態(tài)信息; 因?yàn)镸erkle證明的大小是 O(log(n)),所以訪問(wèn)恒定數(shù)量對(duì)象的交易證明也是 O(log(n))大小。
Merkle樹(shù)中對(duì)象的子集,需要在訪問(wèn)多個(gè)狀態(tài)對(duì)象的交易的Merkle證明中提供
以純粹的形式實(shí)施這個(gè)計(jì)劃有兩個(gè)缺陷。 首先,它引入了O(log(n))的開(kāi)銷,盡管可以說(shuō)這個(gè)O(log(n))開(kāi)銷并不像看起來(lái)那么糟糕,因?yàn)樗_保了驗(yàn)證器總是可以簡(jiǎn)單地將狀態(tài)數(shù)據(jù)保存在內(nèi)存中, 它永遠(yuǎn)不需要處理訪問(wèn)硬盤驅(qū)動(dòng)器的開(kāi)銷。 其次,如果交易訪問(wèn)的地址是靜態(tài)的,那么它可以很容易地實(shí)施,但是如果所討論的地址是動(dòng)態(tài)的那么是很困難實(shí)施的,也就是說(shuō),如果交易執(zhí)行的代碼是read(f(read(x))),其中某些狀態(tài)讀取的地址取決于其他狀態(tài)讀取的執(zhí)行結(jié)果。 在這種情況下,交易發(fā)送者認(rèn)為交易將在發(fā)送交易時(shí)讀取的地址可能與交易被打包在塊中時(shí)實(shí)際讀取的地址不同,因此Merkle證明可能是不充分的。
一種折中方法是允許交易發(fā)送者發(fā)送一個(gè)證明,該證明包含訪問(wèn)數(shù)據(jù)的最可能的可能性; 如果證明是充分的,則交易將被接受,如果狀態(tài)意外地變化并且證明不足,則發(fā)送者必須重新發(fā)送或者網(wǎng)絡(luò)中的一些幫助者節(jié)點(diǎn)重新發(fā)送交易并添加正確的證明。 那么開(kāi)發(fā)者可以自由地進(jìn)行具有動(dòng)態(tài)行為的交易,但是行為越動(dòng)態(tài),交易實(shí)際上被打包在塊中的可能性就越小。
注意驗(yàn)證者在這種方法下的交易包含策略需要很復(fù)雜,因?yàn)樗麄兛赡軙?huì)花費(fèi)數(shù)百萬(wàn)的gas處理一筆交易運(yùn)行到最后一步才發(fā)現(xiàn)訪問(wèn)到他們沒(méi)有的一些狀態(tài)條目。 一個(gè)可能的妥協(xié)是驗(yàn)證者有一個(gè)策略,只接受(i)低gas成本的交易,例如<100k。 (ii)靜態(tài)地指定一組允許訪問(wèn)的合約,并包含這些合約的整個(gè)狀態(tài)的證明。 請(qǐng)注意,這只適用于最初廣播交易時(shí); 一旦交易被打包在一個(gè)塊中,執(zhí)行順序是固定的,因此只能提供與實(shí)際需要訪問(wèn)的狀態(tài)對(duì)應(yīng)的最小Merkle證明。
如果驗(yàn)證者不立即重新重組,還有一個(gè)提高效率的機(jī)會(huì)。 我們可以期望驗(yàn)證者存儲(chǔ)來(lái)自已經(jīng)處理的交易的證明的數(shù)據(jù),以便該數(shù)據(jù)不需要被再次發(fā)送; 如果k交易是在一個(gè)重組周期內(nèi)發(fā)送的,那么這就將Merkle證據(jù)的平均大小從log(n) 減少到log(n) -log(k)。
隨機(jī)抽樣的隨機(jī)性是如何產(chǎn)生的?
首先,重要的是要指出,即使隨機(jī)數(shù)的產(chǎn)生是高度可利用的,這對(duì)協(xié)議來(lái)說(shuō)也不是一個(gè)致命的缺陷。 相反,它只是意味著有一個(gè)中等偏高的中心化激勵(lì)。 原因在于,由于隨機(jī)性選取相當(dāng)大的樣本,因此很難將隨機(jī)性偏差超過(guò)一定數(shù)量。
如上所述,最簡(jiǎn)單的方法就是通過(guò)二項(xiàng)式分布。 如果希望避免大小為N的樣本被超過(guò)50%攻擊,并且攻擊者具有全球權(quán)益池的p%,則攻擊者能夠在一輪中獲得大多數(shù)的概率是:
下面是一個(gè)表格,說(shuō)明N和P的各種值在實(shí)踐中的概率:
| p = 0.4 | 0.0978 | 0.0271 | 0.0082 | 0.0009 |
| p = 0.33 | 0.0108 | 0.0004 | 1.83 * 10-5 | 3.98 * 10-8 |
| p = 0.25 | 0.0001 | 6.63 * 10-8 | 4.11 * 10-11 | 1.81 * 10-17 |
| p = 0.2 | 2.09 * 10-6 | 2.14 * 10-11 | 2.50 * 10-16 | 3.96 * 10-26 |
因此,對(duì)于N> = 150,任何給定的隨機(jī)種子將導(dǎo)致有利于攻擊者的樣本的可能性確實(shí)非常小。 這就意味著從隨機(jī)性的安全角度來(lái)看,攻擊者需要在選擇隨機(jī)值的順序上有非常大的自由度,以徹底打破抽樣過(guò)程。 大多數(shù)權(quán)益證明隨機(jī)性的漏洞不允許攻擊者簡(jiǎn)單地選擇種子; 在最壞的情況下,他們給了攻擊者許多機(jī)會(huì)從許多偽隨機(jī)生成的選項(xiàng)中選出最有利的種子。 如果對(duì)此非常擔(dān)心,可以簡(jiǎn)單地將N設(shè)置為更大的值,并且在計(jì)算隨機(jī)性的過(guò)程中添加適度的硬key-derivation函數(shù),從而需要超過(guò)2100計(jì)算步驟來(lái)找到足夠隨機(jī)性偏差。
現(xiàn)在,我們來(lái)看看為了獲利而不是直接接管,試圖更輕微影響隨機(jī)性的攻擊風(fēng)險(xiǎn)。 例如,假設(shè)有一個(gè)算法從一些非常大的集合中偽隨機(jī)地選擇了1000個(gè)驗(yàn)證者(每個(gè)驗(yàn)證者獲得$ 1的獎(jiǎng)勵(lì)),攻擊者擁有10%的權(quán)益,所以攻擊者的平均“誠(chéng)實(shí)”收入為100, 攻擊者可以操縱隨機(jī)性來(lái)“重新擲骰子”(攻擊者可以無(wú)限次地執(zhí)行此操作),這個(gè)成本是1美元。
由于中心極限定理,樣本數(shù)量的標(biāo)準(zhǔn)偏差,并且基于數(shù)學(xué)上的其他已知結(jié)果,N個(gè)隨機(jī)樣本的期望最大值略低于M + S * sqrt(2 * log(N)),其中M是 平均值和S是標(biāo)準(zhǔn)差。 因此,操縱隨機(jī)性和有效地重?cái)S骰子(即增加N)的獎(jiǎng)勵(lì)急劇下降, 重新選擇你的預(yù)期獎(jiǎng)勵(lì)是100美元,一個(gè)重新選擇105.5美元,兩個(gè)108.5美元,其中三個(gè)110.3美元,其中四個(gè)111.6美元,五個(gè)112.6美元,六個(gè)113.5美元。 因此,在五次重試之后,它不值得這樣做。 結(jié)果,一個(gè)有10%權(quán)益的經(jīng)濟(jì)動(dòng)機(jī)的攻擊者會(huì)(在社會(huì)上浪費(fèi))花5美元獲得13美元的額外收入,凈盈余為8美元。
然而,這種邏輯假定單輪重?cái)S骰子是昂貴的。 許多比較老的權(quán)益證明算法有一個(gè)“權(quán)益磨損”漏洞,重?cái)S擲骰子只是在本地計(jì)算機(jī)上進(jìn)行計(jì)算; 具有此漏洞的算法在分片環(huán)境中肯定是不可接受的。 較新的算法(參見(jiàn)關(guān)于權(quán)益證明FAQ的“驗(yàn)證器選擇”部分)具有只能通過(guò)在塊創(chuàng)建過(guò)程中自愿放棄一個(gè)點(diǎn)來(lái)完成擲骰子的屬性,這需要放棄獎(jiǎng)勵(lì)和費(fèi)用。 減輕邊緣經(jīng)濟(jì)動(dòng)機(jī)的攻擊對(duì)樣本選擇的影響的最好辦法是找到增加成本的方法。 一種將N輪投票的成本增加一倍的方法是由Iddo Bentov設(shè)計(jì)的多數(shù)位方法; Mauve論文分片算法期望使用這種方法。
多米尼克·威廉斯(Dominic Williams)最為研究和倡導(dǎo)的確定性門限簽名方法是另一種不被少數(shù)群體聯(lián)盟利用的隨機(jī)數(shù)生成方式。 這里的策略是使用確定性的門限簽名來(lái)從選擇樣本中生成隨機(jī)種子。 確定性閾值簽名具有這樣的屬性,即不管給定的一組參與者中的哪一個(gè)向算法提供其數(shù)據(jù),只要至少1/3的參與者誠(chéng)實(shí)地參與,值就保證相同。 這種方法顯然不是經(jīng)濟(jì)上可以利用的,并且完全抵抗各種形式的權(quán)益磨損,但是它有幾個(gè)弱點(diǎn):
- 它依賴于更復(fù)雜的密碼學(xué)(具體來(lái)說(shuō),橢圓曲線和配對(duì))。 其他方法僅僅依賴于對(duì)常見(jiàn)散列算法的隨機(jī)預(yù)言。
- 當(dāng)許多驗(yàn)證器脫機(jī)時(shí),它會(huì)失敗。 公共區(qū)塊鏈的預(yù)期目標(biāo)就是能夠在網(wǎng)絡(luò)的很大一部分節(jié)點(diǎn)同時(shí)消失但剩余節(jié)點(diǎn)大部分是誠(chéng)實(shí)的情況下,�它依然可以存活。 確定性門限簽名方案在這一點(diǎn)上不能提供這種屬性。
- 在Zamfir模型中,有超過(guò)? 的驗(yàn)證器串通是不安全的。 上述權(quán)益證明FAQ中描述的其他方法仍然會(huì)使操作隨機(jī)性變得非常昂貴,因?yàn)閬?lái)自所有驗(yàn)證人的數(shù)據(jù)被混合到種子中,并且進(jìn)行任何操作都需要通用串通或徹底排除其他驗(yàn)證者。
有人可能會(huì)認(rèn)為確定性門限簽名方法在一致性較好的情況下工作得更好,其他方法在可用性較好的情況下工作得更好。
在賄賂攻擊者或協(xié)調(diào)選擇模式中通過(guò)隨機(jī)抽樣進(jìn)行分片的關(guān)注點(diǎn)是什么?
在賄賂攻擊者或協(xié)調(diào)選擇模型中,驗(yàn)證者是隨機(jī)抽樣的事實(shí)并不重要:不管樣本是什么,攻擊者都可以賄賂絕大多數(shù)樣本做攻擊者喜歡的事情,或者攻擊者直接控制大多數(shù)的樣本,并且可以指揮樣本以低成本(O(c) 成本)執(zhí)行任意的動(dòng)作。
在這一點(diǎn)上,攻擊者有能力對(duì)該樣本進(jìn)行51%的攻擊。 由于存在跨分片擴(kuò)散風(fēng)險(xiǎn),威脅進(jìn)一步放大:如果攻擊者破壞了分片的狀態(tài),攻擊者就可以開(kāi)始向其他分片發(fā)送無(wú)限量的資金,并執(zhí)行其他跨分片的惡作劇。 總而言之,賄賂攻擊者或協(xié)調(diào)選擇模型的安全性并不比簡(jiǎn)單地創(chuàng)O(c) altcoins好得多。
我們?nèi)绾胃倪M(jìn)?
基本上是通過(guò)全面解決欺詐檢測(cè)問(wèn)題。
解決這個(gè)問(wèn)題的一個(gè)主要類別是使用挑戰(zhàn)-響應(yīng)機(jī)制。 挑戰(zhàn)-響應(yīng)機(jī)制通常依賴于一個(gè)升級(jí)原則:事實(shí)上X(例如,“在#54分片的排序#17293是有效的”)最初被接受為真,如果至少有k個(gè)驗(yàn)證人簽署聲明(背后有存款)為真。 但是,如果發(fā)生這種情況,那么在這個(gè)挑戰(zhàn)期間,2k驗(yàn)證者可以簽署聲明,聲明這是錯(cuò)誤的。 如果發(fā)生這種情況,4k驗(yàn)證人可以簽署一個(gè)聲明,說(shuō)明聲明實(shí)際上是真實(shí)的,等等,直到一方放棄或大多數(shù)驗(yàn)證人已經(jīng)簽署聲明,此時(shí)每個(gè)驗(yàn)證人和客戶端自己檢查X是否為真。 如果X被裁定為正確,那么所有提出這種聲明的人都會(huì)得到獎(jiǎng)勵(lì),每個(gè)提出錯(cuò)誤聲明的人都會(huì)受到懲罰,反之亦然。
看看這個(gè)機(jī)制,你可以證明惡意行為者失去了一定數(shù)量的資金,與他們被迫查看給定數(shù)據(jù)的行為者數(shù)量成比例。 強(qiáng)迫所有用戶查看數(shù)據(jù)需要大量的驗(yàn)證者簽署錯(cuò)誤的聲明,這可以用來(lái)懲罰他們,所以迫使所有用戶查看一段數(shù)據(jù)的成本是 O(n); 這防止了挑戰(zhàn)-響應(yīng)機(jī)制被用作拒絕服務(wù)向量。
什么是數(shù)據(jù)可用性問(wèn)題,我們?nèi)绾问褂眉m刪碼來(lái)解決它?
See?https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding
我們可以通過(guò)某種奇特的密碼累加器方案來(lái)消除解決數(shù)據(jù)可用性的需要嗎?
不。假設(shè)有一個(gè)方案存在一個(gè)表示狀態(tài)的對(duì)象S(S可能是一個(gè)散列),以及個(gè)別用戶持有的可以證明存在狀態(tài)對(duì)象的輔助信息(“證人”)(例如 S是Merkle根,證人是分支,盡管其他結(jié)構(gòu)如RSA累加器確實(shí)存在)。 存在廣播一些數(shù)據(jù)的更新協(xié)議,并且該數(shù)據(jù)改變S以改變狀態(tài)的內(nèi)容,并且還可能改變證人。
假設(shè)某個(gè)用戶在該狀態(tài)下有一組N個(gè)對(duì)象的證人,并且更新了這些對(duì)象中的M個(gè)。 接收到更新信息后,用戶可以檢查所有N個(gè)對(duì)象的新?tīng)顟B(tài),從而查看哪個(gè)M被更新。 因此,更新信息本身至少編碼~M * log(N)個(gè)比特的信息。 因此,為了實(shí)現(xiàn)M個(gè)交易的效果,每個(gè)人需要接收的更新信息必須是O(M)。
那么這意味著我們實(shí)際上可以創(chuàng)建可擴(kuò)展的分片區(qū)塊鏈,其中發(fā)生不良事件的成本與整個(gè)驗(yàn)證人集的大小成正比?
有一個(gè)微不足道的攻擊,攻擊者總是可以焚燒O(c)資金來(lái)暫時(shí)降低分片的質(zhì)量:通過(guò)發(fā)送高交易費(fèi)用的交易來(lái)制造垃圾,迫使正常用戶無(wú)法進(jìn)入。這種攻擊是不可避免的;你可以用靈活的gas限制進(jìn)行補(bǔ)償,甚至可以嘗試根據(jù)使用情況嘗試自動(dòng)重新分配節(jié)點(diǎn)到分片的“透明分片”方案,但是如果某個(gè)特定的應(yīng)用程序是不可并行的,Amdahl法則保證你無(wú)能為力。在這里打開(kāi)的攻擊(提醒:它只適用于Zamfir模式,而不是誠(chéng)實(shí)/不協(xié)調(diào)的大多數(shù))可以說(shuō)沒(méi)有比垃圾交易攻擊嚴(yán)重得多。因此,我們已經(jīng)達(dá)到了單個(gè)分片安全性的已知限制,并且試圖走得更遠(yuǎn)是沒(méi)有價(jià)值的。
讓我們往回走一點(diǎn),如果有實(shí)時(shí)重組,我們是否真的需要這種復(fù)雜性?不實(shí)時(shí)重組基本上意味著每個(gè)分片直接從全局驗(yàn)證人池中提取驗(yàn)證人,所以它就像區(qū)塊鏈一樣運(yùn)行,所以分片實(shí)際上不會(huì)引入任何新的復(fù)雜性?
有點(diǎn)。首先,值得注意的是,工作量證明和簡(jiǎn)單的權(quán)益證明,即使沒(méi)有分片,在賄賂攻擊者模型中都具有非常低的安全性;一個(gè)區(qū)塊在經(jīng)過(guò)O(n) 時(shí)間后才在經(jīng)濟(jì)意義上真正地“確定”(好像只有幾個(gè)區(qū)塊已經(jīng)過(guò)去了,那么替換區(qū)塊的經(jīng)濟(jì)成本就是從區(qū)塊有問(wèn)題之前開(kāi)始雙花的成本)。Casper通過(guò)增加最終機(jī)制解決了這個(gè)問(wèn)題,經(jīng)濟(jì)安全邊際立即增加到最大。在一個(gè)分片鏈中,如果我們想要經(jīng)濟(jì)最終性的話,那么我們需要提出一個(gè)演繹鏈,為什么一個(gè)驗(yàn)證人愿意在一個(gè)完全基于隨機(jī)樣本的鏈上做出一個(gè)非常強(qiáng)有力的聲明,當(dāng)驗(yàn)證人本身相信賄賂攻擊者和協(xié)調(diào)選擇模型可能是真實(shí)的,所以隨機(jī)樣本可能被破壞。
你提到透明分片。 我12歲了,這是什么?
基本上,我們并不直接向開(kāi)發(fā)者提供“分片”的概念,也不會(huì)永久性地將狀態(tài)對(duì)象分配給特定的分片。 相反,該協(xié)議有一個(gè)正在進(jìn)行的內(nèi)置負(fù)載均衡過(guò)程,可以在分片之間移動(dòng)對(duì)象。 如果分片變得太大或者消耗太多的gas,可以分成兩半。 如果兩個(gè)分片變得太小,并且經(jīng)常彼此交互,他們可以合并在一起; 如果所有分片太小,則可以刪除一個(gè)分片并將其內(nèi)容移動(dòng)到各種其他分片等等。
想象一下,唐納德·特朗普是否意識(shí)到人們?cè)诩~約和倫敦之間的旅行很多,但是有一個(gè)海洋的路,所以他可以拿出剪刀,剪掉海洋,把美國(guó)東海岸和西歐粘在一起, 大西洋旁邊的南極 - 這就是這樣的。
這有哪些優(yōu)點(diǎn)和缺點(diǎn)?
- 開(kāi)發(fā)者不再需要考慮分片
- 分片有可能根據(jù)gas價(jià)格的變化手動(dòng)調(diào)整,而不是依靠市場(chǎng)機(jī)制來(lái)提高一些分片中的gas價(jià)格
- 不再有一個(gè)可靠的共置的概念:如果兩個(gè)合約被放入同一個(gè)分片,以便他們可以互相交互,分片的變化可能最終將它們分開(kāi)
- 協(xié)議更復(fù)雜
可以通過(guò)引入“順序域”的概念來(lái)緩解共置問(wèn)題,其中合約可以指定它們存在于相同的順序域中,在這種情況下,它們之間的同步通信將始終是可能的。 在這個(gè)模型中,一個(gè)分片可以被看作是一組被一起驗(yàn)證的順序域,并且如果協(xié)議確定這樣做是有效的,那么順序域可以在分片之間重新平衡。
同步跨分片消息將如何工作?
如果您將歷史交易記錄視為已經(jīng)結(jié)算,并且只是試圖計(jì)算狀態(tài)轉(zhuǎn)換函數(shù),則該過(guò)程變得更容易。有幾種方法;一個(gè)相當(dāng)簡(jiǎn)單的方法可以描述如下:
- 一個(gè)交易可以指定一個(gè)可以在其中操作的一組分片
- 為了使交易有效,它必須在所有分片上被打包在相同塊高處。
- 塊中的交易必須按照它們的散列順序(這確保了規(guī)范的執(zhí)行順序)
如果分片X上的客戶端看到帶有分片(X,Y)的交易,則請(qǐng)求分片Y中的Merkle證明,以驗(yàn)證(i)分片Y上存在該交易,以及(ii)分片上的前置狀態(tài)Y表示交易需要訪問(wèn)的那些數(shù)據(jù)位。然后執(zhí)行交易并提交執(zhí)行結(jié)果。請(qǐng)注意,如果很多交易有許多不同的“塊對(duì)”,那么這個(gè)過(guò)程可能是非常低效的;由于這個(gè)原因,只需要簡(jiǎn)單的要求塊來(lái)指定姐妹分片就可能是最佳的,然后可以在每塊級(jí)別更有效地進(jìn)行計(jì)算。這是該方案如何運(yùn)作的基礎(chǔ);人們可以想象更復(fù)雜的設(shè)計(jì)。但是,在進(jìn)行新的設(shè)計(jì)時(shí),確保低成本的拒絕服務(wù)攻擊不能任意拖慢狀態(tài)計(jì)算總是非常重要的。
那么半異步消息呢?
Vlad Zamfir創(chuàng)建了一個(gè)方案,異步消息仍然可以解決“預(yù)訂火車和旅館”的問(wèn)題。這工作如下。狀態(tài)記錄了最近所做的所有操作,以及任何給定操作(包括跨分片操作)觸發(fā)哪些操作的圖譜。如果操作被還原,則創(chuàng)建收據(jù),然后可以使用該收據(jù)來(lái)回滾該操作對(duì)其他分片的任何影響;這些回滾可能會(huì)觸發(fā)他們自己的回滾之類。這個(gè)論點(diǎn)是,如果一個(gè)偏好系統(tǒng)使得回滾消息可以像其他類型的消息一樣快地傳播兩次,那么一個(gè)在K個(gè)回合中完成執(zhí)行的復(fù)雜跨分片交易可以在另外的K個(gè)回合中完全回滾。
這個(gè)方案引入的開(kāi)銷可以說(shuō)是沒(méi)有得到充分的研究;可能存在觸發(fā)二次執(zhí)行漏洞的最壞情況。很顯然,如果交易具有更加孤立的影響,這種機(jī)制的開(kāi)銷較低;也許可以通過(guò)有利的gas成本規(guī)則激勵(lì)孤立執(zhí)行。總而言之,這是高級(jí)分片更有前途的研究方向之一。
什么是保證跨分片調(diào)用?
分片中的挑戰(zhàn)之一是,在進(jìn)行調(diào)用時(shí),默認(rèn)情況下沒(méi)有硬協(xié)議提供,保證由該調(diào)用創(chuàng)建的任何異步操作都將在特定的時(shí)間范圍內(nèi)完成,甚至完全沒(méi)有;而是由某方在目的地分片中發(fā)送觸發(fā)收據(jù)的交易。這對(duì)于許多應(yīng)用程序來(lái)說(shuō)是可以的,但是在某些情況下,由于以下幾個(gè)原因可能會(huì)有問(wèn)題:
- 可能沒(méi)有任何明確的激勵(lì)措施來(lái)觸發(fā)給定的收據(jù)。如果一個(gè)交易的發(fā)送給多方帶來(lái)了好處,那么在各方試圖等待更長(zhǎng)時(shí)間直到其他人發(fā)送交易(即玩“雞”)或者簡(jiǎn)單地決定發(fā)送一個(gè)交易交易是不值得單獨(dú)交易的。
- 跨分片的gas價(jià)格可能會(huì)波動(dòng),在某些情況下,執(zhí)行前半部的操作會(huì)迫使用戶“堅(jiān)持到底”,但用戶可能不得不以更高的gas價(jià)格來(lái)追蹤。這可能會(huì)由于DoS攻擊和相關(guān)的惡意破壞形式而加劇。
- 一些應(yīng)用依賴于跨分片消息的“等待時(shí)間”上限(例如火車和旅館示例)。由于缺乏硬性保證,這些應(yīng)用程序?qū)⒈仨毦哂袩o(wú)效率大安全邊界。
人們可以試著想出一個(gè)系統(tǒng),在某些分片中生成的異步消息在一定數(shù)量的塊之后自動(dòng)觸發(fā)目標(biāo)分片中的結(jié)果。然而,這要求每個(gè)分片上的每個(gè)客戶端在計(jì)算狀態(tài)轉(zhuǎn)換函數(shù)的過(guò)程中主動(dòng)檢查所有其他分片,這可能是低效率的來(lái)源。最為人所知的折衷方法是:當(dāng)高度為height_a的分片A的收據(jù)包含在高度為height_b的碎片B中時(shí),如果塊高度的差異超過(guò)MAX_HEIGHT,則碎片B中的所有驗(yàn)證人都從height_a + MAX_HEIGHT + 1創(chuàng)建塊到height_b - 1是受到懲罰的,這個(gè)懲罰成倍增加。這些處罰的一部分給予最終包括該塊作為獎(jiǎng)勵(lì)的確認(rèn)者。這使?fàn)顟B(tài)轉(zhuǎn)換功能保持簡(jiǎn)單,同時(shí)仍強(qiáng)烈激勵(lì)正確的行為。
等等,但是如果攻擊者同時(shí)從每一個(gè)碎片向碎片X發(fā)送一個(gè)跨分片調(diào)用呢?在數(shù)學(xué)上不能及時(shí)包含所有這些調(diào)用嗎?
正確;這是個(gè)問(wèn)題。這是一個(gè)建議的解決方案。為了從分片A到分片B進(jìn)行跨分片調(diào)用,調(diào)用者必須預(yù)先購(gòu)買“凍結(jié)分片B的gas”(這是通過(guò)分片B中的交易完成的,并記錄在分片B中)。凍結(jié)分片B的gas具有快速滯期費(fèi)率:一旦排序,每塊失去1 / k的剩余效能。分片A上的交易隨后可以將凍結(jié)的分片B gas與其創(chuàng)建的收據(jù)一起發(fā)送,并且可以在分片B上免費(fèi)使用。分片B的塊專門為這些交易分配額外的gas空間。請(qǐng)注意,由于滯期規(guī)則,對(duì)于給定的分片,在任何時(shí)候都可以獲得最多GAS_LIMIT * k的凍結(jié)gas,當(dāng)然可以在k個(gè)塊內(nèi)填充(事實(shí)上,由于滯期造成的速度更快,但是我們可能由于惡意驗(yàn)證人需要這個(gè)松散的空間)。假如太多的驗(yàn)證人惡意地不包括收據(jù),我們可以通過(guò)免除驗(yàn)證者來(lái)公平懲罰,盡可能多地從最舊的收據(jù)開(kāi)始填充更多收據(jù)到“收據(jù)空間”。
在此預(yù)購(gòu)機(jī)制下,想要進(jìn)行跨分片操作的用戶將首先預(yù)先購(gòu)買所有將要進(jìn)行操作的分片的gas,過(guò)度購(gòu)買以考慮滯期費(fèi)用。 如果操作會(huì)創(chuàng)建一個(gè)收據(jù),觸發(fā)在B分片中消耗100000gas的操作,那么用戶將預(yù)先購(gòu)買100000 * e(如271818)分片B凍結(jié)的gas。 如果該操作反過(guò)來(lái)在分片C中花費(fèi)100000gas(即,兩個(gè)間接級(jí)別),則用戶將需要預(yù)先購(gòu)買100000 * e^2(如738906)分片C凍結(jié)的gas。 注意,一旦購(gòu)買被確認(rèn),并且用戶開(kāi)始主要操作,用戶可以確信他們將與gas價(jià)格市場(chǎng)的變化隔離,除非驗(yàn)證者自愿地從收據(jù)不包含懲罰中失去大量的資金。
凍結(jié)gas? 這聽(tīng)起來(lái)很有趣,不僅是跨分片操作,還有可靠的分片內(nèi)調(diào)度
確實(shí); 您可以購(gòu)買分片A中的凍結(jié)分片A gas,并從分片A向其自身發(fā)送保證的跨鏈分片調(diào)用。 雖然注意到這個(gè)方案只支持在很短的時(shí)間間隔內(nèi)進(jìn)行調(diào)度,并且調(diào)度對(duì)于這個(gè)塊是不準(zhǔn)確的; 只能保證在一段時(shí)間內(nèi)發(fā)生。
是否內(nèi)分片和跨分片有保證的調(diào)度,有助于抵制試圖審查交易的大多數(shù)共謀?
是。 如果用戶未能獲得交易,因?yàn)楣仓\驗(yàn)證者正在過(guò)濾交易并且不接受任何包含該交易的塊,則用戶可以發(fā)送一系列消息來(lái)觸發(fā)一系列有保證的預(yù)定消息,最后一個(gè)消息在EVM內(nèi)部重建交易并執(zhí)行它。 如果不徹底關(guān)閉有保證的調(diào)度功能,并嚴(yán)重限制整個(gè)協(xié)議,防止這種規(guī)避技術(shù)實(shí)際上是不可能的,因此惡意的驗(yàn)證者將無(wú)法輕易做到。
分片區(qū)塊鏈可以更好地處理網(wǎng)絡(luò)分區(qū)嗎?
本文檔中描述的方案不會(huì)改進(jìn)非分片區(qū)塊鏈; 實(shí)際上,每個(gè)分區(qū)最終都會(huì)在分區(qū)兩側(cè)有一些節(jié)點(diǎn)。 有人(例如來(lái)自IPFS的Juan Benet)建立了可擴(kuò)展的網(wǎng)絡(luò),其具體目標(biāo)是網(wǎng)絡(luò)可以根據(jù)需要切分成分片,從而在網(wǎng)絡(luò)劃分的條件下盡可能地繼續(xù)運(yùn)行,但是存在不尋常的加密經(jīng)濟(jì)挑戰(zhàn)來(lái)做好這項(xiàng)工作。
一個(gè)主要的挑戰(zhàn)是,如果我們想要基于位置的分片,那么地理網(wǎng)絡(luò)劃分最低限度地阻礙了分片內(nèi)聚合(具有非常低的分片內(nèi)延遲和因此非??斓姆制瑑?nèi)塊時(shí)間的副作用),那么 我們需要有一種方法讓驗(yàn)證者選擇他們正在參與的分片。這是很危險(xiǎn)的,因?yàn)樗试S在誠(chéng)實(shí)/不協(xié)調(diào)的多數(shù)模型中有更多類別的攻擊,和Zamfir模型中更高作惡因子更低成本的攻擊。 地理切分分片的安全性和通過(guò)隨機(jī)抽樣來(lái)分片效率是兩個(gè)完全不同的事情。
其次,如何組織應(yīng)用程序需要更多的思考。 上面描述的分片區(qū)塊鏈中的一個(gè)可能的模型是每個(gè)“app”在某個(gè)分片上(至少對(duì)于小規(guī)模的應(yīng)用程序)。 但是,如果我們希望應(yīng)用程序本身具有分區(qū)防護(hù)功能,則意味著所有應(yīng)用程序都需要在某種程度上進(jìn)行跨分片。
解決這個(gè)問(wèn)題的一個(gè)可能途徑是創(chuàng)建一個(gè)提供兩種分片的平臺(tái) - 一些分片是隨機(jī)抽樣的高安全性“全局”分片,而其他碎片則是較低安全“本地”分片,可能具有屬性的如超快的塊時(shí)間和更便宜的交易費(fèi)用。 非常低的安全性碎片甚至可以用于數(shù)據(jù)發(fā)布和消息傳遞。
通過(guò) n = O(c^2)推動(dòng)擴(kuò)展的獨(dú)特挑戰(zhàn)是什么?
有幾個(gè)考慮因素。首先,需要將算法從雙層算法轉(zhuǎn)換為可堆疊的n層算法;這是可能的,但是很復(fù)雜。其次,n / c(即網(wǎng)絡(luò)的總計(jì)算負(fù)荷與一個(gè)節(jié)點(diǎn)的容量之間的比率)恰好是接近兩個(gè)常數(shù)的值:首先,如果以塊為單位測(cè)量,則幾個(gè)小時(shí)的時(shí)間跨度,這是一個(gè)可以接受的“最大安全確認(rèn)時(shí)間”,其次是獎(jiǎng)勵(lì)和存款之間的比率(早期計(jì)算表明Casper的存款大小為32ETH,塊獎(jiǎng)勵(lì)為0.05ETH)。后者的后果是,如果一個(gè)分片上的獎(jiǎng)勵(lì)和懲罰升級(jí)到驗(yàn)證者存款的規(guī)模,持續(xù)攻擊分片的成本將是O(n)大小。
高于c^2可能會(huì)導(dǎo)致進(jìn)一步削弱系統(tǒng)所能提供的安全保障類別,并允許攻擊者以中等成本長(zhǎng)時(shí)間周期以某種方式攻擊某個(gè)碎片,盡管仍有可能防止無(wú)效狀態(tài)被最終確定,并防止最終狀態(tài)被回滾,除非攻擊者愿意支付O(n)的成本。然而,回報(bào)是巨大的 - 一個(gè)超級(jí)分割的區(qū)塊鏈可以用作幾乎所有去中心化應(yīng)用程序的通用工具,并且可以承擔(dān)交易費(fèi)用,使其幾乎免費(fèi)。
總結(jié)
以上是生活随笔為你收集整理的以太坊Sharding FAQ的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SPV、SPV节点和SPV钱包
- 下一篇: 【IPFS + 区块链 系列】 入门篇