
本文來自Aragon本文來自
二級標題
背景
背景本文來自
本文來自二級標題
二級標題
作為領先的數字治理項目,Aragon Labs在研究和創新治理模式方面投入了大量資金。我們已經確定了各種顯示出潛力的Layer 2治理解決方案,但也存在一些技術問題。
二級標題
我們已經能夠在我們專門的投票區塊鏈——Vochain上實現無gas手續費的投票過程,並設計和實現了一種使用以太坊存儲證明(Ethereum Storage proof)的方法,將基於ERC-20代幣的統計從以太坊跨鏈到Vochain。不過到目前為止,將跨鏈結果轉到以太坊的可能性一直是一個開放性的研究問題。
為此,Aragon Labs一直在進行一項新設計的實驗,
該設計將允許鏈下投票過程的結果跨鏈到以太坊,而不使用主觀預言或任何其它可信組件。
我們的提議將允許完全在鏈下進行的投票過程,在以太坊上以與鏈上治理相同的完整性執行結果,成本僅為鏈上治理的一小部分。
二級標題
二級標題
投票協議概念驗證要求
在設計技術解決方案之前,我們定義了研究方案的參數:
投票協議的要求是:
免許可;
抗審查;
能夠在以太坊上綁定結果;
不產生gas手續費的投票者;
作為概念驗證設計,我們接受以下限制:
二級標題
理想的提案
沒有用戶匿名:投票可以綁定到一個以太坊地址;
並非沒有收據:購買選票是可能的;
對中繼者(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
新投票:25989
累計匯總:291801
舞弊證明2 :908822(賬戶ERC-20餘額為零)
二級標題
二級標題
未來的研究zk.money在這個研究的基礎上,我們想更深入地探討以下想法:
通過SNARKs驗證標準kecak / ECDSA / Sec256k1簽名。我們相信很快,PLOOKUP將能夠驗證這些方案,這將帶來兩種可能性:
證明BabyJubJub密鑰是從Secp256k1密鑰派生出來的。
驗証投票簽名本身。
在SNARK內部驗證存儲證明。我們認為這種複雜的線路可以很容易地通過一個zkVM集成,儘管成本可能是巨大的。我們擔心以太坊客戶端會退出存檔節點,會優先考慮更高的gas費用限制,所以另一個研究領域是嘗試使用EIP1186以外的方法進行存儲證明。