
EIP-8205:提款憑證預註冊
本提案引入了一種機制,讓驗證者金鑰持有者能在執行層對特定提款憑證簽署具約束力的承諾,藉此防止委託質押中可能發生的搶跑攻擊。
EIP-XXXX:提款憑證預註冊 討論串
注意:本 EIP 主要由 @sjors 撰寫;我僅代表他發佈,因為我們希望確保文件能儘快公開,而他的論壇帳號是新建立的。
問題所在
在委託質押(delegated staking)中,資助驗證者的實體與生成 BLS 金鑰對的實體是不同的對象。由於目前以太坊共識層邏輯的運作方式,任何人只要先為特定的公鑰進行存款,就會永久設定該提款憑證——這意味著金鑰持有者可以搶先(front-run)資助者的存款,並將 ETH 轉移到攻擊者控制的憑證中。此漏洞於 2019 年首次公開記錄,並在信標鏈啟動前的生產代碼中被發現。
每個受影響的委託質押協議都將此視為關鍵風險,並各自構建了應用層防禦機制——基於保證金的預存款方案、守護者委員會(guardian committees),或兩者兼具。每種防禦機制都引入了各自的權衡:預存款鎖定的資金、對鏈下委員會的信任、depositRoot 的脆弱性,以及各協議獨立的工程與審計成本。新進入者在建立並審計自己的防禦機制之前,預設都是脆弱的。補充文件 詳細介紹了現有的防禦措施,並進行了各協議間的比較。
提案內容
預註冊(Preregistration)允許金鑰持有者在進行任何存款之前,針對特定的提款憑證簽署具約束力的承諾。該承諾透過執行層上的 EIP-7685 系統合約提交,並在存款處理時由共識層強制執行:匹配的存款將繼續進行,不匹配的存款則會被拒絕。此機制是選擇性加入(opt-in)的——針對未預註冊金鑰的存款運作方式與今日完全相同。
值得注意的一個相關 EIP:EIP-7684 處理的是不同的場景:對現有驗證者進行不匹配的加載(top-up)存款。若沒有預註冊,僅靠 EIP-7684 會將「竊取」變為「惡意騷擾(griefing)」。若沒有 EIP-7684,預註冊則無法保護現有驗證者免受不匹配加載存款的影響。兩者是互補的,並可以在同一次分叉中交付。
連結
- EIP: ethereum/EIPs#XXXX
- 補充文件: 委託質押中的存款搶跑問題 —— 涵蓋問題範圍、現有協議目前的防禦方式、為何僅靠應用層防禦是不夠的、每種方法引入的權衡,以及曾考慮過的替代設計。
- 原始漏洞討論: 存款合約漏洞 (ethresear.ch, 2019)
1 則貼文 - 1 位參與者