跳到正文

時間鎖:延遲交易與治理操作

時間鎖要求交易或合約操作等待到指定區塊、時間戳或間隔後才能生效。了解延遲由誰強制、到期後會發生什麼,以及哪些繞過路徑會讓它失效。

更新於

僅供教育參考,不構成投資建議;投資可能產生損失。

直接答案

時間鎖是由區塊鏈或智慧合約強制執行的規則:在指定區塊高度、時間戳或經過的時間間隔尚未達到之前,交易、資金支出或管理操作不能成為有效或可執行狀態。它改變的是操作何時可以發生,本身並不判斷操作是否正確。

這個術語涵蓋不同機制。交易層時間鎖可以讓代幣在滿足鏈上條件前無法花費,或讓交易保持非最終狀態。治理時間鎖則把已經授權的合約呼叫排入佇列,並要求執行者至少等待一段時間後才能提交。兩者使用的時鐘、狀態變化和故障模式並不相同。

安全價值來自可強制的延遲。在治理中,這段時間可以讓監控者和使用者檢查排隊的呼叫資料、發出警報、透過已授權路徑取消或暫停,或在確有退出管道時離場。如果存在不經過時間鎖就能改變同一系統的特權路徑,這項保護就會失效。

運作原理

  1. 機制先定義時鐘。 門檻可以採用區塊高度、鏈上導出的時間戳,或從先前鏈上事件起計算的時間。這些是協議值,並非對準確現實時間的承諾。
  2. 被鎖定的操作綁定到條件。 絕對時間鎖指定未來的高度或時間;相對時間鎖從某個事件開始計算間隔,例如待花費輸出的確認。治理控制器則記錄已排程操作及其就緒時間。
  3. 相應層級強制等待。 共識規則可以拒絕過早的交易或腳本支出,智慧合約可以拒絕提前的函式呼叫。僅有網頁倒數並不構成時間鎖,因為使用者可以繞過介面。
  4. 到期只改變資格,不改變意圖。 條件滿足後,操作可能變為有效或就緒,但不一定自動廣播或執行。仍需有人提交,而且其他授權與有效性檢查仍然適用。
  5. 覆蓋範圍取決於權限。 在治理場景中,時間鎖必須持有目標合約的所有權或必要角色,所有效果相同的特權路徑也必須延遲。提議者、取消者、執行者和管理員權限決定誰能排程、阻止、執行或重新設定操作。

比特幣體現了交易層的區別。BIP 65 規定 CHECKLOCKTIMEVERIFY,可讓某項輸出在達到絕對區塊高度或時間條件前無法花費。BIP 68 則為符合條件的輸入序列號賦予共識強制的相對時間鎖含義,從待花費輸出的年齡開始計算。這些規則不同於治理合約的操作佇列。

OpenZeppelin 的 TimelockController 展示了治理延遲。提議者以不低於最短延遲的時間排程一個可識別操作;計時結束後,操作從等待變為就緒,隨後仍須由執行者執行。取消和角色管理遵循合約規則,修改最短延遲本身也必須經過時間鎖。

範例

排隊的協議升級

DAO 批准升級後,其治理合約把準確的目標位址、轉帳值、呼叫資料、依賴項和鹽值排入時間鎖。監控工具可以在延遲期間比對排隊載荷與提案,並模擬其影響。操作就緒後,由獲授權的執行者提交。

只有時間鎖實際控制升級權限,這項保護才成立。如果另一個所有者、代理管理員、安全委員會或模組能立即安裝同一升級,使用者必須單獨評估該繞過路徑。同樣,只有監控足夠及時,而且提款或遷移能在執行前完成,延遲視窗才有實際價值。

延遲交易路徑

腳本可以提供截止時間前的一條支出路徑,以及截止時間後的退款路徑。鏈在驗證支出時強制執行相應條件。達到門檻不會自動移動資金:有資格的一方仍須建構並廣播有效交易,確認也仍取決於費用和區塊打包。

風險與審查清單

  • 權限繞過: 其他所有者、角色、模組、升級金鑰或緊急路徑可以不等待就執行受保護操作。
  • 時鐘或邊界錯誤: 區塊高度、鏈上時間和經過時間不能互換;差一個單位的假設可能讓支出比預期更早或更晚生效。
  • 延遲不足: 等待期可能短於發現、分析、溝通和回應操作所需的時間。
  • 缺少可行退出: 暫停提款、跨鏈延遲、流動性不足、解除質押或壅塞,可能讓使用者無法在名義視窗內行動。
  • 角色失陷或死鎖: 惡意提議者或管理員可以排入有害呼叫;執行者金鑰遺失或過寬的取消權也會阻塞正當操作。
  • 載荷不一致: 易懂的提案標題不能證明排程中的目標、轉帳值、呼叫資料、依賴項和鹽值實現了投票批准的內容。
  • 實作差異: 到期、取消、批次處理、依賴、開放執行和延遲修改規則會隨合約及版本而不同。
  • 鎖定錯誤: 錯誤的時間戳、高度、序列值、腳本分支或不可用金鑰,可能讓資產無法存取的時間超出預期。

常見迷思

時間鎖到期後會自動執行嗎?

通常不會。到期一般只是讓操作取得執行資格。交易仍需廣播,或由執行者呼叫治理合約。

時間鎖能讓治理變得安全嗎?

不能。它提供反應時間,但不會驗證載荷、保護特權金鑰、保證能夠取消,也不確保使用者可以退出。未延遲的平行權限可能使這項控制失效。

所有時間鎖都按現實時間計算嗎?

不是。有的使用區塊高度,有的使用鏈上時間戳,還有的計算相對年齡。預期出塊間隔和時間戳都不是準確的交付時間表。

交易時間鎖與治理時間鎖可以互換嗎?

不可以。兩者都體現「延遲取得資格」,但共識交易規則、腳本條件與應用層治理佇列保護的是不同操作,必須分別按照各自規範審查。

相關主題

來源

導覽

搜尋知識庫...