很多基于區(qū)塊鏈,P2P協(xié)議的項(xiàng)目都對(duì)其中的性能和吞吐量有所擔(dān)憂。這些項(xiàng)目在研發(fā)階段做了很多創(chuàng)新,但是很多人沒(méi)有考慮到這些協(xié)議其中的真正挑戰(zhàn)。
網(wǎng)絡(luò)技術(shù)
很容易就想象到運(yùn)行網(wǎng)絡(luò)的大多數(shù)人是處于延遲的可信區(qū)間以及計(jì)算能力之間,但是很容易忘記大多數(shù)用戶需要和區(qū)塊鏈上的節(jié)點(diǎn)進(jìn)行交互,其實(shí)是有障礙的。不幸地是,運(yùn)行全節(jié)點(diǎn)是非常昂貴和緩慢的,所以大多數(shù)用戶都依賴于“輕”節(jié)點(diǎn),它們可以擁有全節(jié)點(diǎn)的安全性,而且不需要過(guò)多的資源需求。
以太坊的輕節(jié)點(diǎn)模型可以讓設(shè)備作為輕量化的RaspberryPi來(lái)加入網(wǎng)絡(luò),下載區(qū)塊頭部作為顯示,同時(shí)只需要根據(jù)用戶需求,驗(yàn)證某些部分的狀態(tài)。特別是在以太坊網(wǎng)絡(luò)中,很容易就可以和這些擁有全節(jié)點(diǎn)的客戶端進(jìn)行滲透,從而通過(guò)RaspberryPi會(huì)比默克爾樹(shù)有更快的速度。
數(shù)字經(jīng)濟(jì)激勵(lì)并不足以來(lái)運(yùn)行全節(jié)點(diǎn),因?yàn)橘Y源消耗能力造成了平衡分布網(wǎng)絡(luò)的瓶頸。很難去準(zhǔn)確預(yù)測(cè),網(wǎng)絡(luò)中全節(jié)點(diǎn)和輕節(jié)點(diǎn)之間的平衡?,F(xiàn)在已經(jīng)有很多關(guān)于如何平衡這些激勵(lì)的討論,并且讓用戶更容易來(lái)驗(yàn)證運(yùn)行全節(jié)點(diǎn)。
引進(jìn)輕節(jié)點(diǎn):以太坊的關(guān)鍵參與者
輕節(jié)點(diǎn)背后的主要觀點(diǎn),就是它能夠根據(jù)需求來(lái)獲得部分狀態(tài),因?yàn)樗苯涌紤]用戶。假設(shè)一個(gè)誠(chéng)實(shí)的模型中,礦工正確地符合以太坊的規(guī)則,而且至少系統(tǒng)中的全節(jié)點(diǎn)是完全誠(chéng)實(shí)的。
他們基本的功能是下載區(qū)塊頭部作為網(wǎng)絡(luò)中的存在,然后根據(jù)被客戶端使用的某些狀態(tài)的默克爾證明來(lái)進(jìn)行發(fā)布。以太坊上的輕節(jié)點(diǎn)不會(huì)使用本地存儲(chǔ),而是使用分布式哈希表格來(lái)跟蹤Trie節(jié)點(diǎn)。
假設(shè)以太坊狀態(tài)是通過(guò)大型默克爾樹(shù)來(lái)代表的,很容易使用默克爾根部,還有書(shū)上分支路徑的節(jié)點(diǎn),來(lái)作為輕量化證明這部分信息的完整性。這就完全依賴于默克爾根部提供的信息是正確的。
輕量化客戶端的信息包含其中的,但是不限于檢查賬戶余額,驗(yàn)證轉(zhuǎn)賬確認(rèn),從網(wǎng)絡(luò)中部署的部分合約中的事件簿等等。所有這些都可以通過(guò)默克爾證明驗(yàn)證來(lái)減少為次線性的復(fù)雜程度。當(dāng)區(qū)塊鏈上的數(shù)據(jù)已經(jīng)不可用了,或者證明在驗(yàn)證狀態(tài)轉(zhuǎn)賬因子的時(shí)候,證明不能夠合格??蛻舳吮辉试S給P2P網(wǎng)絡(luò)中的其他用戶提供報(bào)警。
底層共識(shí)機(jī)制
目前的輕客戶端協(xié)議使用的是工作量證明共識(shí)算法,通過(guò)全節(jié)點(diǎn)在主鏈運(yùn)行。在工作量證明中,通過(guò)數(shù)學(xué)公式就可以驗(yàn)證區(qū)塊頭部是否有效。這個(gè)算法就很難計(jì)算,但是很容易去驗(yàn)證。
輕量化客戶端一旦啟動(dòng),就會(huì)尋找最長(zhǎng)區(qū)塊頭部的鏈,攻擊者通過(guò)產(chǎn)生錯(cuò)誤頭部進(jìn)行欺詐的成本幾乎是不可能實(shí)現(xiàn)的。
底層算法會(huì)通過(guò)消耗電力的方式,來(lái)進(jìn)行工作量證明,從而保證網(wǎng)絡(luò)的安全,雖然驗(yàn)證區(qū)塊頭部是很高效的。
輕量化客戶端被用在工作量證明,因?yàn)閰^(qū)塊頭部是一直進(jìn)行驗(yàn)證的,但是我們并不會(huì)在權(quán)益證明中獲得同樣的保證。權(quán)益證明的輕客戶端:工作量證明真的需要嗎?
在權(quán)益證明中,輕客戶端的簡(jiǎn)單化問(wèn)題是區(qū)塊頭部并沒(méi)有和一定數(shù)量的“真實(shí)”區(qū)塊生產(chǎn)者聯(lián)系。那也就是說(shuō),這個(gè)共識(shí)協(xié)議的清楚是在于對(duì)成員的懲罰震懾,而不是通過(guò)消耗電力來(lái)給他們獎(jiǎng)勵(lì)。在權(quán)益證明中,如果想運(yùn)行錯(cuò)誤的主鏈,會(huì)受到懲罰,但是在工作量證明中,如果挖錯(cuò)誤的鏈,就會(huì)產(chǎn)生分叉,而且沒(méi)辦法獲得主鏈的獎(jiǎng)勵(lì)。
權(quán)益證明提供協(xié)議內(nèi)置的機(jī)制,從而可以確切地確定區(qū)塊頭部。一旦這些頭部被信任了,他們所包含的數(shù)據(jù)就會(huì)呈現(xiàn)很復(fù)雜的對(duì)數(shù),也就是說(shuō),要從默克爾樹(shù)獲取節(jié)點(diǎn)。盡管如此,區(qū)塊頭部并沒(méi)有包含我們可以用來(lái)驗(yàn)證工作量證明解決方案的數(shù)值,使得驗(yàn)證至少是對(duì)數(shù),而不是恒定的時(shí)間效率。
但是,我們至少可以在輕客戶端的同步效率更高。Vitalik曾經(jīng)說(shuō)過(guò),友好的輕客戶端權(quán)益證明可以通過(guò)checkpoints 系統(tǒng)來(lái)完成。
Checkpoint的定義是一定數(shù)量的區(qū)塊,其中2/3的參與者必須要通過(guò)加密簽名達(dá)成同意,并且這類Checkpoint必須要包含前個(gè)Checkpoint的哈希值。在這個(gè)新型輕客戶端的同步中,只有Checkpoint可以下載,客戶端然后會(huì)驗(yàn)證參與者的簽名。這會(huì)降低必須下載單個(gè)區(qū)塊頭部的成本,就好像在工作量證明的輕客戶端模式中那樣。
但是,這個(gè)方法不會(huì)解決驗(yàn)證區(qū)塊頭部的問(wèn)題,所以對(duì)于權(quán)益證明協(xié)議會(huì)有個(gè)潛在方法,來(lái)包含一小部分的工作量證明,為了在輕客戶端中創(chuàng)建區(qū)塊頭部。
工作量證明/權(quán)益證明的混合系統(tǒng)會(huì)幫助輕客戶端嗎?
當(dāng)然,也可以在生成區(qū)塊頭部的時(shí)候使用算力,然后再驗(yàn)證的時(shí)候使用權(quán)益證明,那么驗(yàn)證這些區(qū)塊頭部所需要的能量就會(huì)很小。
評(píng)論
查看更多