← 回到 DEVCON 8

智慧合約以鉤子擴充執行邏輯,動態設定帶來治理風險

Hooks everywhere: the age of dynamic contracts

場次摘要

Hadrien 從鏈上程式碼不可變的特性,說明智慧合約如何透過鉤子,在特定操作前後執行額外邏輯。他指出,可升級合約也是由代理指向新邏輯,而非直接改寫既有程式碼。從代幣轉帳通知到帳戶與金融協議,不同鉤子的設定方式、阻擋交易能力與信任假設並不相同,不能只憑名稱判斷安全性。 他以 Uniswap v4 固定鉤子位址、Safe 可更新的交易守衛,以及合規檢查的多鉤子機制,展示不同設計。1inch 的通知機制限制運算資源並忽略鉤子失敗;他展示的機密代幣則以加密判斷結果決定轉帳金額。他提醒,動態修改鉤子會擴大攻擊面,可考慮延遲生效,讓使用者有退出機會。他也不贊成以單一標準涵蓋所有鉤子。

值得記下的 5 件事

  1. [6:20]
    固定鉤子位址不代表邏輯永遠不變 Hadrien 說明,Uniswap v4 將鉤子位址納入資金池識別鍵,建池後不能更換該位址

    但若鉤子本身是可升級合約,實際執行邏輯仍可能改變,使用者不能只看位址是否固定。

  2. [7:20]
    可更新的交易守衛能替帳戶加入限制 他以 Safe 說明,交易執行時可呼叫守衛,記錄活動或阻擋不應通過的交易

    守衛設定可由 Safe 更新;他也舉出緊急鎖定與延遲執行的案例,說明同一介面能承載不同限制邏輯。

  3. [12:40]
    通知失敗是否阻擋操作,是重要設計分界 據他介紹,1inch 的通知鉤子限制可用的運算資源,並忽略鉤子中止執行的結果,因此不能藉此阻止轉帳

    相較之下,他介紹的合規鉤子可阻擋操作,也能疊加不同檢查,兩者提供的保證並不相同。

  4. [17:20]
    機密代幣可用加密判斷結果決定轉帳金額 在他介紹的全同態加密(FHE)設計中,合約無法在執行當下直接讀取機密數值,也無法依其大小直接中止交易

    他展示讓鉤子回傳加密的是非判斷結果,再合併各項結果,選擇轉出全額或零的做法。

  5. [21:00]
    修改鉤子應視為接近合約升級的敏感操作 Hadrien 建議,可考慮以時間鎖延遲鉤子修改生效,讓使用者在惡意設定生效前有退出機會

    他也提醒,鉤子可能引入重入攻擊,也就是外部呼叫再次進入合約的風險;過高的運算資源消耗,也可能讓關鍵操作無法執行。

下載摘要 下載 Word 摘要(.docx)

更多來自 DEVCON 8

訂閱