智慧合約以鉤子擴充執行邏輯,動態設定帶來治理風險
Hooks everywhere: the age of dynamic contracts
場次摘要
Hadrien 從鏈上程式碼不可變的特性,說明智慧合約如何透過鉤子,在特定操作前後執行額外邏輯。他指出,可升級合約也是由代理指向新邏輯,而非直接改寫既有程式碼。從代幣轉帳通知到帳戶與金融協議,不同鉤子的設定方式、阻擋交易能力與信任假設並不相同,不能只憑名稱判斷安全性。 他以 Uniswap v4 固定鉤子位址、Safe 可更新的交易守衛,以及合規檢查的多鉤子機制,展示不同設計。1inch 的通知機制限制運算資源並忽略鉤子失敗;他展示的機密代幣則以加密判斷結果決定轉帳金額。他提醒,動態修改鉤子會擴大攻擊面,可考慮延遲生效,讓使用者有退出機會。他也不贊成以單一標準涵蓋所有鉤子。
值得記下的 5 件事
- [6:20]
固定鉤子位址不代表邏輯永遠不變 Hadrien 說明,Uniswap v4 將鉤子位址納入資金池識別鍵,建池後不能更換該位址
但若鉤子本身是可升級合約,實際執行邏輯仍可能改變,使用者不能只看位址是否固定。
- [7:20]
可更新的交易守衛能替帳戶加入限制 他以 Safe 說明,交易執行時可呼叫守衛,記錄活動或阻擋不應通過的交易
守衛設定可由 Safe 更新;他也舉出緊急鎖定與延遲執行的案例,說明同一介面能承載不同限制邏輯。
- [12:40]
通知失敗是否阻擋操作,是重要設計分界 據他介紹,1inch 的通知鉤子限制可用的運算資源,並忽略鉤子中止執行的結果,因此不能藉此阻止轉帳
相較之下,他介紹的合規鉤子可阻擋操作,也能疊加不同檢查,兩者提供的保證並不相同。
- [17:20]
機密代幣可用加密判斷結果決定轉帳金額 在他介紹的全同態加密(FHE)設計中,合約無法在執行當下直接讀取機密數值,也無法依其大小直接中止交易
他展示讓鉤子回傳加密的是非判斷結果,再合併各項結果,選擇轉出全額或零的做法。
- [21:00]
修改鉤子應視為接近合約升級的敏感操作 Hadrien 建議,可考慮以時間鎖延遲鉤子修改生效,讓使用者在惡意設定生效前有退出機會
他也提醒,鉤子可能引入重入攻擊,也就是外部呼叫再次進入合約的風險;過高的運算資源消耗,也可能讓關鍵操作無法執行。
更多來自 DEVCON 8
Arrow 的硬體 DAO 實驗:AI 協作、在地製造與責任分工
A DAO Shipped an Aircraft: What It Takes to Coordinate Atoms with Tokens
Thomas Garrison
Kohaku:以 SDK 將隱私與安全功能帶入以太坊錢包
Kohaku : privacy for everyone, by default
Nico、Vitalik
私密區塊鏈的取捨:隱私、去中心化與合約協作
Private State, Public Network: The Tradeoffs Behind Privacy
Zachary Williamson