噜噜影院,一本大道色婷婷在线,中文字幕乱码高清完整版 ,最近2019中文字幕国语免费版 ,哺乳期色妇videos

[任逍遙大咖]Vitalik博文:暢想以太坊底層內(nèi)置ZK-EVM

作者 | Vitalik Buterin編譯 | 1912212.eth, Foresight News原文鏈接:https://notes.ethereum.org/@vbuterin/enshrined_zk_evm中文鏈接:https://share.foresight-news.com/article/detail/49208注:本文是上述中文版本的基礎(chǔ)上進(jìn)行節(jié)選編譯,可能有些細(xì)節(jié)或信息被刪除。我們建議讀者在閱讀本文時(shí)同時(shí)參考原文,以獲取更全面的信息。以太坊 L2 的 EVM,包括 optimistic rollups 和 ZK rollups,都依賴于主網(wǎng)的 EVM 驗(yàn)證。然而,這要求它們信任龐大的代碼庫(kù),如果該代碼庫(kù)中存在錯(cuò)誤,這些 VM 就有被黑客攻擊的風(fēng)險(xiǎn)。此外,這意味著即使是旨在與 L1 EVM 完全等效的 ZK-EVM 也需要某種形式的治理,以將 L1 EVM 的更改復(fù)制到他們自己的 EVM 實(shí)踐中。這種情況并不理想,因?yàn)檫@些項(xiàng)目正在復(fù)制以太坊協(xié)議中已經(jīng)存在的功能,而以太坊治理已經(jīng)負(fù)責(zé)進(jìn)行升級(jí)和修復(fù)錯(cuò)誤:ZK-EVM 基本上與驗(yàn)證主網(wǎng)區(qū)塊的工作相同!此外,在未來(lái)幾年,我們預(yù)計(jì)輕客戶端將變得越來(lái)越強(qiáng)大,很快就會(huì)達(dá)到使用 ZK-SNARKs 來(lái)完全驗(yàn)證主網(wǎng) EVM 執(zhí)行的程度。到那時(shí),以太坊網(wǎng)絡(luò)將能有效構(gòu)造內(nèi)置的 ZK-EVM。那么,問(wèn)題來(lái)了:為什么不讓 ZK-EVM 原生地適用于 rollups 呢?本文將介紹幾種可以實(shí)現(xiàn)的「內(nèi)置 ZK-EVM」版本,并討論權(quán)衡和設(shè)計(jì)挑戰(zhàn),以及不采用特定方向的原因。實(shí)施協(xié)議特性的好處應(yīng)該與將事情留給生態(tài)系統(tǒng)并保持基礎(chǔ)協(xié)議簡(jiǎn)單的好處進(jìn)行權(quán)衡。我們希望從內(nèi)置 ZK-EVM 中獲得哪些關(guān)鍵特性?● 基本功能:驗(yàn)證以太坊區(qū)塊。協(xié)議功能(目前尚不明確是操作碼、預(yù)編譯或其他機(jī)制)應(yīng)接受至少一個(gè)前狀態(tài)根、一個(gè)塊和一個(gè)后狀態(tài)根作為輸入,并驗(yàn)證后狀態(tài)根實(shí)際上是執(zhí)行塊后的結(jié)果。● 與以太坊的多個(gè)客戶端兼容。這意味著我們希望避免只采用一個(gè)證明系統(tǒng),而是允許不同的客戶端使用不同的證明系統(tǒng)。這又引出以下幾點(diǎn):○ 數(shù)據(jù)可用性要求:對(duì)于任何使用內(nèi)置 ZK-EVM 進(jìn)行證明的 EVM 執(zhí)行,我們希望保證底層數(shù)據(jù)的可用性,以便使用不同證明系統(tǒng)的證明者可以重新證明執(zhí)行,并允許依賴該證明系統(tǒng)的客戶端驗(yàn)證新生成的證明?!?證明存在于 EVM 和區(qū)塊數(shù)據(jù)結(jié)構(gòu)之外:內(nèi)置 ZK-EVM 功能不會(huì)將 SNARK 作為 EVM 內(nèi)的輸入,因?yàn)椴煌目蛻舳藭?huì)期望不同類型的 SNARK。相反,它可能類似于 blob 驗(yàn)證:交易可以包括(前狀態(tài)、區(qū)塊主體、后狀態(tài))需要證明的聲明,一個(gè)操作碼或預(yù)編譯可以訪問(wèn)這些聲明的內(nèi)容,客戶端共識(shí)規(guī)則將分別檢查每個(gè)聲明的數(shù)據(jù)可用性和存在證明?!?可審計(jì)性。如果任何執(zhí)行得到證明,我們希望底層數(shù)據(jù)是可用的,以便在出現(xiàn)問(wèn)題時(shí),用戶和開(kāi)發(fā)人員可以檢查它。實(shí)際上,這增加了為什么數(shù)據(jù)可用性要求如此重要的另一個(gè)原因?!?可升級(jí)性。如果某個(gè) ZK-EVM 方案被發(fā)現(xiàn)有 bug,我們希望能夠快速修復(fù)它。這意味著不需要硬分叉來(lái)修復(fù)。這增加了為什么證明存在于 EVM 和區(qū)塊數(shù)據(jù)結(jié)構(gòu)之外的原因?!?支持幾乎所有的 EVM。L2 的吸引力之一是在執(zhí)行層進(jìn)行創(chuàng)新,并擴(kuò)展 EVM。如果給定的 L2 的 VM 與 EVM 只有一點(diǎn)點(diǎn)不同,那么如果 L2 仍然可以在與 EVM 相同的部分使用內(nèi)置 ZK-EVM,并在不同的部分僅依賴于自己的代碼,那將是一件好事。這可以通過(guò)設(shè)計(jì) ZK-EVM 功能來(lái)實(shí)現(xiàn),該功能允許調(diào)用者指定位字段或操作碼列表或地址,這些位字段、操作碼列表或地址由外部提供的表而不是 EVM 本身處理。我們還可以在一定程度上使 Gas 成本開(kāi)放編輯?!搁_(kāi)放」與「封閉」的多客戶端系統(tǒng)「多客戶端理念」可能是這個(gè)列表中最具主觀性的要求??梢赃x擇放棄它,專注于 ZK-SNARK 方案,這將簡(jiǎn)化設(shè)計(jì),但代價(jià)是成為以太坊更大的「哲學(xué)轉(zhuǎn)折點(diǎn)」(因?yàn)檫@實(shí)際上是放棄了以太坊長(zhǎng)期以來(lái)的多客戶端理念),并帶來(lái)更大的風(fēng)險(xiǎn)。未來(lái)如果形式驗(yàn)證技術(shù)變得更好的時(shí)候,選擇這條路可能會(huì)更好,但現(xiàn)在看來(lái)風(fēng)險(xiǎn)似乎太大了。另一個(gè)選擇是封閉的多客戶端系統(tǒng),在協(xié)議中已知有一組固定的證明系統(tǒng)。例如,我們可能會(huì)決定使用三個(gè) ZK-EVM:PSE ZK-EVM、Polygon ZK-EVM 和 Kakarot。一個(gè)區(qū)塊需要這三個(gè)中的兩個(gè)提供的證明才有效。這比單一的證明系統(tǒng)要好,但它使系統(tǒng)的適應(yīng)性降低,因?yàn)橛脩舯仨殲槊總€(gè)存在的證明系統(tǒng)維護(hù)驗(yàn)證器,并且不可避免地會(huì)有政治治理過(guò)程來(lái)納入新的證明系統(tǒng)等。這促使我更喜歡開(kāi)放的多客戶端系統(tǒng),在這個(gè)系統(tǒng)中,證明被放置在「區(qū)塊外部」,并由客戶端單獨(dú)驗(yàn)證。個(gè)人用戶可以使用他們想要的任何客戶端來(lái)驗(yàn)證區(qū)塊,只要至少有一個(gè)證明者為該證明系統(tǒng)創(chuàng)建證明就可以。證明系統(tǒng)將通過(guò)說(shuō)服用戶運(yùn)行它們來(lái)獲得影響力,而不是通過(guò)說(shuō)服協(xié)議治理過(guò)程。然而,這種方法確實(shí)有更高的復(fù)雜性成本,正如我們將看到的那樣。我們希望從 ZK-EVM 實(shí)現(xiàn)中獲得哪些關(guān)鍵屬性? 除了基本的功能正確性和安全性保證之外,最重要的屬性是速度。雖然我們可以設(shè)計(jì)在協(xié)議內(nèi)的 ZK-EVM 特性,它是異步的,在 N 個(gè)插槽的延遲后只返回每個(gè)聲明的答案,但如果我們能夠可靠地保證在幾秒鐘內(nèi)生成一個(gè)證明,那么無(wú)論每個(gè)塊中發(fā)生什么都是自包含的,問(wèn)題就會(huì)變得容易得多。雖然今天為以太坊區(qū)塊生成證明需要很多分鐘或小時(shí),但我們知道沒(méi)有理論上的原因阻止大規(guī)模并行化:我們總是可以將足夠的 GPU 組合起來(lái),分別證明一個(gè)塊執(zhí)行的各個(gè)部分,然后使用遞歸 SNARK 將證明放在一起。此外,通過(guò) FPGA 和 ASIC 的硬件加速可以幫助進(jìn)一步優(yōu)化證明。然而,真正達(dá)到這一步卻是不容小覷的浩大工程挑戰(zhàn)。內(nèi)置 ZK-EVM 特性的具體形式可能是什么樣?與 EIP-4844 blob 交易類似,我們引入了新的包含 ZK-EVM 聲明的交易類型:與 EIP-4844 一樣,在內(nèi)存池中傳遞的對(duì)象將是交易的修改版本:后者可以轉(zhuǎn)換為前者,但反之則不行。我們還擴(kuò)展了區(qū)塊側(cè)載對(duì)象(在 EIP-4844 中引入),以包含區(qū)塊中聲明的證明列表。需要注意的是,在實(shí)踐中,我們可能想要將側(cè)載拆分為兩個(gè)單獨(dú)的側(cè)載,一個(gè)用于 blobs,一個(gè)用于證明,并為每種類型的證明(以及 blobs 的附加子網(wǎng))設(shè)置一個(gè)單獨(dú)的子網(wǎng)。在共識(shí)層,我們添加了驗(yàn)證規(guī)則,即只有當(dāng)客戶端看到塊中每個(gè)聲明的有效證明時(shí),才接受該塊。證明必須是一個(gè) ZK-SNARK,證明 transaction_and_witness_blobs 的串聯(lián)是 (Block, Witness) 對(duì)的序列化,并且在 Witness 上使用 pre_state_root 執(zhí)行該塊(i) 是有效的,并且(ii) 輸出正確的 post_state_root。可能的情況是,客戶端可以選擇等待多種類型證明的 M-of-N。這里需要注意的是,區(qū)塊執(zhí)行本身可以被簡(jiǎn)單地視為需要與 ZKEVMClaimTransaction 對(duì)象中提供的三元組一起檢查的三元組之一(σpre,σpost,Proof)。因此,用戶的 ZK-EVM 實(shí)現(xiàn)可以替換其執(zhí)行客戶端;執(zhí)行客戶端仍將由(i) 證明者和塊構(gòu)建者以及(ii) 關(guān)心索引和存儲(chǔ)數(shù)據(jù)以供本地使用的節(jié)點(diǎn)使用。此外,由于這種架構(gòu)將執(zhí)行與驗(yàn)證分開(kāi),因此它可能為以太坊生態(tài)系統(tǒng)中的不同角色提供更多靈活性和效率。例如,證明者可以專注于生成證明,而無(wú)需擔(dān)心執(zhí)行的具體細(xì)節(jié),而執(zhí)行客戶端可以被優(yōu)化以滿足特定用戶的需求,例如快速同步或高級(jí)索引功能。驗(yàn)證和重新證明假設(shè)有兩個(gè)以太坊客戶端,其中一個(gè)使用 PSE ZK-EVM,另一個(gè)使用 Polygon ZK-EVM,這個(gè)時(shí)候,這兩個(gè)實(shí)現(xiàn)都已經(jīng)發(fā)展到可以在 5 秒內(nèi)證明以太坊區(qū)塊執(zhí)行的程度,并且對(duì)于每個(gè)證明系統(tǒng),就存在足夠多的獨(dú)立志愿者運(yùn)行硬件以生成證明。不幸的是,因?yàn)閭€(gè)別證明系統(tǒng)沒(méi)有被正式確立,它們無(wú)法在協(xié)議中獲得激勵(lì);不過(guò),我們預(yù)計(jì)與研究和開(kāi)發(fā)相比,運(yùn)行證明的成本將較低,因此我們可以輕松通過(guò)面向公共物品資助的機(jī)構(gòu)為證明者提供資金。假設(shè)有人發(fā)布了一筆 ZKEvmClaimNetworkTransaction,但他們只發(fā)布了 PSE ZK-EVM 版本的證明。Polygon ZK-EVM 的證明節(jié)點(diǎn)看到了這一點(diǎn),計(jì)算并重新發(fā)布該對(duì)象,附帶 Polygon ZK-EVM 的證明。這將使得最早的誠(chéng)實(shí)節(jié)點(diǎn)接受一個(gè)塊和最晚的誠(chéng)實(shí)節(jié)點(diǎn)接受相同塊之間的總最大延遲從 δ 增加到 2δ+Tprove(在這里假設(shè) Tprove<5s)。然而,好消息是,如果我們采用單個(gè)時(shí)隙最終性(single slot finality,SSF),我們幾乎可以肯定將這個(gè)額外的延遲與 SSF 中固有的多輪共識(shí)延遲一起「流水線」進(jìn)行。例如,在這個(gè) 4 個(gè)子時(shí)隙的提案中,「頭部投票」步驟可能只需要檢查基本塊的有效性,但「凍結(jié)和確」步驟則需要存在一個(gè)證明。擴(kuò)展:支持「almost-EVMs」ZK-EVM 功能的可取目標(biāo)是支持「almost-EVMs」:具有額外功能的 EVMs。這可能包括新的預(yù)編譯,新的操作碼,合約可以用 EVM 或完全不同的 VM(例如在 Arbitrum Stylus 中),甚至具有同步交叉通信的多個(gè)并行 EVMs。一些修改可以以簡(jiǎn)單的方式支持:我們可以定義一種語(yǔ)言,允許 ZKEVMClaimTransaction 傳遞修改后的 EVM 規(guī)則的完整描述。這可以用于以下情況:● 自定義的 Gas 成本表(用戶不被允許減少 Gas 成本,但他們可以增加它們)● 禁用某些操作碼● 設(shè)置區(qū)塊號(hào)(這將意味著根據(jù)硬分叉有不同的規(guī)則)● 設(shè)置標(biāo)志,激活已經(jīng)為 L2 使用標(biāo)準(zhǔn)化但不適用于 L1 使用的整套 EVM 更改,或其他更簡(jiǎn)單的更改為了允許用戶以更加開(kāi)放的方式添加新功能,例如通過(guò)引入新的預(yù)編譯(或操作碼),我們可以在 ZKEVMClaimNetworkTransaction 的 blob 部分中添加一個(gè)包含預(yù)編譯輸入 / 輸出記錄的方式:EVM 執(zhí)行將被修改如下。一個(gè)名為 inputs 的數(shù)組將被初始化為空。每當(dāng)被調(diào)用 used_precompile_addresses 中的地址時(shí),我們向 inputs 添加一個(gè) InputsRecord(callee_address, Gas, input_calldata) 對(duì)象,并將調(diào)用的 RETURNDATA 設(shè)置為 outputs[i]。最后,我們檢查 used_precompile_addresses 總共被調(diào)用了 len(outputs) 次,以及 inputs_commitments 是否與生成的 blob 對(duì) inputs 的 SSZ 序列化的承諾的結(jié)果匹配。暴露 inputs_commitments 的目的是為了使外部 SNARK 能夠證明 inputs 和 outputs 之間的關(guān)系。請(qǐng)注意 inputs 和 outputs 之間的不對(duì)稱性,inputs 存儲(chǔ)在哈希中,而 outputs 存儲(chǔ)在必須提供的字節(jié)中。這是因?yàn)閳?zhí)行需要由僅看到輸入并理解 EVM 的客戶端執(zhí)行。EVM 執(zhí)行已經(jīng)為它們生成了輸入,因此它們只需要檢查生成的輸入是否與聲明的輸入匹配,這只需要進(jìn)行哈希檢查。然而,必須完全提供輸出給它們,因此必須具備數(shù)據(jù)可用性。另一個(gè)有用的功能可能是允許「特權(quán)交易」從任意發(fā)送方賬戶進(jìn)行調(diào)用。這些交易可以在兩個(gè)其他交易之間運(yùn)行,或者在另一個(gè)(可能也是特權(quán))交易中,同時(shí)調(diào)用預(yù)編譯。這可以用于允許非 EVM 機(jī)制調(diào)用回 EVM。該設(shè)計(jì)可以修改以支持新的或修改的操作碼,除了新的或修改的預(yù)編譯。即使只有預(yù)編譯,該設(shè)計(jì)也非常強(qiáng)大。例如:● 通過(guò)設(shè)置 used_precompile_addresses 以包含在狀態(tài)中的其帳戶對(duì)象中設(shè)置了某個(gè)標(biāo)志的一組常規(guī)帳戶地址的列表,并生成證明其正確構(gòu)建的 SNARK,可以支持像 Arbitrum Stylus 一樣的功能,其中合約可以在 EVM 或 WASM(或其他 VM)中編寫其代碼。特權(quán)交易可用于允許 WASM 賬戶回調(diào) EVM?!?通過(guò)添加外部檢查,確保多個(gè) EVM 執(zhí)行的輸入 / 輸出記錄和特權(quán)交易以正確的方式匹配,可以證明通過(guò)同步通道相互通信的多個(gè) EVM 的并行系統(tǒng)?!?類型為 4 的 ZK-EVM 可以通過(guò)具有多個(gè)實(shí)現(xiàn)來(lái)運(yùn)作:一個(gè)將 Solidity 或另一種更高級(jí)別語(yǔ)言直接轉(zhuǎn)換為 SNARK 友好 VM 的實(shí)現(xiàn),另一個(gè)將其編譯為 EVM 代碼并在規(guī)定的 ZK-EVM 中執(zhí)行的實(shí)現(xiàn)。第二個(gè)(不可避免地較慢的)實(shí)現(xiàn)只能在故障證明者發(fā)送一筆交易聲稱存在錯(cuò)誤的情況下運(yùn)行,如果他們能夠提供兩者處理不同的交易,則可以收集賞金。● 通過(guò)使所有調(diào)用返回零并將調(diào)用映射到添加到塊末尾的特權(quán)交易,可以實(shí)現(xiàn)純異步 VM。擴(kuò)展:支持狀態(tài)證明者上述設(shè)計(jì)的挑戰(zhàn)是它完全是無(wú)狀態(tài)的,這使得它在數(shù)據(jù)效率上表現(xiàn)不佳。使用理想的數(shù)據(jù)壓縮,相對(duì)于僅使用無(wú)狀態(tài)壓縮,有狀態(tài)壓縮可以使 ERC20 發(fā)送在空間利用上更高效,最多可以提高 3 倍。除此之外,有狀態(tài)的 EVM 不需要提供見(jiàn)證數(shù)據(jù)。在兩種情況下,原則是相同的:當(dāng)我們已經(jīng)知道數(shù)據(jù)可用,因?yàn)樗怯?EVM 的先前執(zhí)行輸入或產(chǎn)生的數(shù)據(jù)時(shí),要求數(shù)據(jù)可用是一種浪費(fèi)。如果我們希望使 ZK-EVM 功能具有狀態(tài),則有兩種選擇:1. 要求σpre 要么為空,要么數(shù)據(jù)可用的預(yù)先聲明的鍵和值列表,要么是某個(gè)先前執(zhí)行的σpost。2. 為由塊生成的收據(jù) R 添加一個(gè) blob 承諾到 (σpre, σpost, Proof) 元組。ZKEVMClaimTransaction 中可以引用并在其執(zhí)行過(guò)程中訪問(wèn)任何先前生成或使用的 blob 承諾,包括表示塊、見(jiàn)證、收據(jù)或甚至常規(guī) EIP-4844 blob 事務(wù)的承諾(可能有一些時(shí)間限制,可以通過(guò)一系列指令進(jìn)行引用:“在塊 + 見(jiàn)證數(shù)據(jù)的位置 j 處插入承諾 i 的字節(jié) N...N+k-1”)(1)基本意思是:與其確立無(wú)狀態(tài)的 EVM 驗(yàn)證,我們將確立 EVM 子鏈。(2)本質(zhì)上是創(chuàng)建了最小的內(nèi)置有狀態(tài)壓縮算法,該算法使用先前使用或生成的 blob 作為字典。這兩者都對(duì)證明者節(jié)點(diǎn)提出了負(fù)擔(dān),只對(duì)證明者節(jié)點(diǎn)提出了負(fù)擔(dān),以存儲(chǔ)更多的信息;在情況(2)中,更容易對(duì)這種負(fù)擔(dān)進(jìn)行時(shí)間限制,而在情況(1)中則較難。封閉多證明者系統(tǒng)和鏈下數(shù)據(jù)的論點(diǎn)封閉多證明者系統(tǒng),其中在 M-of-N 結(jié)構(gòu)中有固定數(shù)量的證明系統(tǒng),避免了上述很多復(fù)雜性。尤其是,封閉多證明者系統(tǒng)無(wú)需擔(dān)心確保數(shù)據(jù)存在于鏈上。此外,封閉多證明者系統(tǒng)將允許 ZK-EVM 證明鏈下執(zhí)行;這使其與 EVM Plasma 解決方案兼容。然而,封閉多證明者系統(tǒng)增加了治理復(fù)雜性并削弱了可審計(jì)性,這些是需要權(quán)衡與這些優(yōu)勢(shì)相對(duì)應(yīng)的高代價(jià)。如果我們內(nèi)置 ZK-EVM 并將其作為協(xié)議特性,那么 L2 項(xiàng)目的持續(xù)角色是什么?目前由 L2 團(tuán)隊(duì)自行實(shí)施的 EVM 驗(yàn)證功能將由協(xié)議處理,但 L2 項(xiàng)目仍將負(fù)責(zé)許多重要功能:● 快速預(yù)確認(rèn): 單時(shí)隙最終性可能會(huì)使 L1 時(shí)隙變慢,而 L2 已經(jīng)通過(guò)其自身的安全性為用戶提供了由預(yù)確認(rèn)支持的服務(wù),延遲遠(yuǎn)低于一個(gè)時(shí)隙。這項(xiàng)服務(wù)將繼續(xù)完全由 L2 負(fù)責(zé)?!?MEV 緩解策略: 這可能包括加密的內(nèi)存池、基于聲望的順序選擇等特性,而這些是 L1 不愿意實(shí)施的?!?對(duì) EVM 的擴(kuò)展:L2 項(xiàng)目可以引入對(duì) EVM 的重要擴(kuò)展,為其用戶提供顯著的價(jià)值。這包括“近乎等效的EVMs”和完全不同的方法,例如 Arbitrum Stylus 的 WASM 支持和 SNARK 友好的 Cairo 語(yǔ)言?!?面向用戶和開(kāi)發(fā)者的便利性:L2 團(tuán)隊(duì)在吸引用戶和項(xiàng)目進(jìn)入其生態(tài)系統(tǒng)并讓他們感到受歡迎方面付出了很多努力;他們通過(guò)在其網(wǎng)絡(luò)內(nèi)捕獲 MEV 和擁塞費(fèi)用來(lái)獲得報(bào)酬。這種關(guān)系將繼續(xù)存在下去。

相關(guān)推薦