Aragon最新研究:通過zk-Rollups進行安全的鏈下投票
Katie 辜
2021-10-17 01:01
本文约4024字,阅读全文需要约16分钟
在以太坊上使用zk-Rollups的綁定執行。

本文來自Aragon本文來自

二級標題

背景

背景本文來自

本文來自二級標題

二級標題

作為領先的數字治理項目,Aragon Labs在研究和創新治理模式方面投入了大量資金。我們已經確定了各種顯示出潛力的Layer 2治理解決方案,但也存在一些技術問題。

二級標題

我們已經能夠在我們專門的投票區塊鏈——Vochain上實現無gas手續費的投票過程,並設計和實現了一種使用以太坊存儲證明(Ethereum Storage proof)的方法,將基於ERC-20代幣的統計從以太坊跨鏈到Vochain。不過到目前為止,將跨鏈結果轉到以太坊的可能性一直是一個開放性的研究問題。

為此,Aragon Labs一直在進行一項新設計的實驗,

  1. 該設計將允許鏈下投票過程的結果跨鏈到以太坊,而不使用主觀預言或任何其它可信組件。

  2. 我們的提議將允許完全在鏈下進行的投票過程,在以太坊上以與鏈上治理相同的完整性執行結果,成本僅為鏈上治理的一小部分。

  3. 二級標題

  4. 二級標題

  5. 投票協議概念驗證要求

  6. 在設計技術解決方案之前,我們定義了研究方案的參數:

  7. 投票協議的要求是:

免許可;

  1. 抗審查;

  2. 能夠在以太坊上綁定結果;

  3. 不產生gas手續費的投票者;

  4. 作為概念驗證設計,我們接受以下限制:

二級標題

理想的提案

沒有用戶匿名:投票可以綁定到一個以太坊地址;

並非沒有收據:購買選票是可能的;

  • 對中繼者(relayers)沒有明確的激勵模式。

  • 二級標題

  • 二級標題

  • 理想的提案

我們的提案將運用zk-SNARKS於以下目的:

二級標題

計算一批選票的部分結果;

二級標題

根據上述模式,我們可以發現兩個主要問題:

二級標題

二級標題

  • ERC-20存儲證明在SNARK中驗證是非常複雜的。這部分是由於它們使用了遞歸長度前綴(Recursive Length Prefix, RLP)解析和多個Kecmack -256哈希驗證,這兩種方法在最先進的SNARK匯總技術中計算效率都很低。這個問題很難解決,所以目前我們使用optimistic驗證來解決這個問題。

  • 二級標題

  • 總之,我們可以在SNARK中處理大多數驗證,但不包括:

  • 二級標題

用戶

  • 用戶

  • 二級標題

二級標題

二級標題

用戶

  • 用戶

  • 檢索其賬戶的投票信息和存儲證明,在投票包上生成簽名,並將其轉發給一個或一組中繼者(relayers)。

  • 二級標題

  • 保持投票累加器更新;

投票智能合約

  • 註冊投票進程,包括:ERC-20智能合約地址,ERC-20地址的槽位索引→平衡映射,投票進程啟動塊的狀態根哈希,計算計票的進程參數。

  • 通過zk-Rollup監聽新投票的註冊,SNARK將證明:

  • 保持投票累加器更新;

二級標題

  • 保持投票者名單的更新。

  • 允許任何人質疑上次投票登記舞弊的證據。但必須具備以下條件之一:

  • 存儲證明,證明投票人的以太坊地址沒有代幣;

  • 證明BabyJubJub密鑰已經投票(該密鑰在“已投票”的默克爾樹中)。

    二級標題

    階段0:在以太坊上創建選舉進程,並從可用中繼器列表中選擇一個中繼器。選舉組織者需要支付選舉費用(獎勵給協調者)。組織者提供EVM字節碼,這些字節碼需要在DAO智能合約的選舉之後執行,具體取決於結果。

二級標題

階段1:投票開始。任何人都可以向所選的協調器發送投票包(可以使用HTTPs或libp2p傳輸)。協調器將選中的結果分批捲起來,構建一個zk-SNARK證明,將這個證明和結果上傳到以太坊,收集用戶投出的選票,驗證它們,並將它們廣播給其它中繼者。

階段2:檢測未加入投票的協調者可以捲起自己的投票,並向投票智能合約發送zk-SNARK有效性證明。此外,如果他們檢測到投票添加錯誤,他們可以發送欺詐證明,以證明之前添加的結果是無效的,產生該結果的協調者將被削減。

  • 階段3:當達到投票日期限制時:

  • 任何人(通常是協調者)調用EVM字節碼執行,使用最終結果作為輸入。

  • 二級標題

  • 二級標題

  • zk-SNARK將匯總投票名單。 zk-SNARK證明是基於給定的投票列表、普查根、選舉標識符(electionId)和聚合結果而有效的。

  • 更新了的空符根;

  • zk-SNARK的輸入:

哈希輸入是為了減少SNARK驗證的gas成本;

  • 私人的選舉標識符;

  • 計算的投票結果;

  • 更新了的空符根;

  • 更新了空符根;

  • 用於上傳協調這結果的智能合約功能調用的輸入為:

二級標題

選舉標識符;

該批中投票者公鑰的列表;

  • 更新了空符根;

  • SNARK證明。

  • 概念實施的證明

  • 投票部署:6673,159

  • 新投票:25989

  • 我們已經實施了最小可行性的智能合約和線路,從而檢查解決方案的成本和可行性。該概念證明僅包括用戶註冊、投票匯總和舞弊證明驗證。

  • 註冊:68956

二級標題

投票部署:6673,159

  1. 新投票:25989

  2. 累計匯總:291801

  3. 舞弊證明2 :908822(賬戶ERC-20餘額為零)

  4. 二級標題

  5. 二級標題

  6. 未來的研究zk.money在這個研究的基礎上,我們想更深入地探討以下想法:

  7. 通過SNARKs驗證標準kecak / ECDSA / Sec256k1簽名。我們相信很快,PLOOKUP將能夠驗證這些方案,這將帶來兩種可能性:

  8. 證明BabyJubJub密鑰是從Secp256k1密鑰派生出來的。

  9. 驗証投票簽名本身。

  10. 在SNARK內部驗證存儲證明。我們認為這種複雜的線路可以很容易地通過一個zkVM集成,儘管成本可能是巨大的。我們擔心以太坊客戶端會退出存檔節點,會優先考慮更高的gas費用限制,所以另一個研究領域是嘗試使用EIP1186以外的方法進行存儲證明。

Katie 辜
作者文库