跳到正文

ERC-2612 Permit簽章:Nonce與Deadline怎麼核對

ERC-2612 Permit允許用簽章設定代幣授權。本文說明Owner、Spender、Value、Nonce與Deadline的逐項檢查。

更新於

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

直接答案

ERC-2612使用EIP-712簽章設定ERC-20代幣的allowance,不必另外發送approve交易。本文說明如何檢查Owner、Spender、Value、Nonce、Deadline,並核對鏈上結果。

有效的permit上鏈成功後,代幣合約會將allowance(owner, spender)設為value,並把所有者的nonce加 1。中繼者或第三方可以提交簽章,因此所有者不必發送交易或支付這筆交易的Gas。deadline只在提交permit時檢查,不會讓已寫入的額度自動到期。只要額度不為 0,Spender就能在額度內呼叫transferFrom

ERC-2612 Permit簽章:Nonce與Deadline怎麼核對
0 / 5
0 項已核查; 5 項仍未解決

完成核查不代表資產、交易或系統已經安全。

機制

訊息綁定ownerspendervaluenoncedeadline;EIP-712域會把簽章綁定到正確的代幣合約和鏈ID。合約只在block.timestamp <= deadline時接受;成功後寫入額度並將nonce加1,但較晚的截止時間不會縮短已寫入的額度。惡意頁面可能把Spender換成攻擊合約,將value設為2^256-1,或把deadline設得很遠。

鏈上操作應分為錢包介面、RPC廣播、合約執行和區塊最終性四層。任何一層顯示成功都不能取代其他層核驗。真實結果以正確鏈上的交易回執、事件、合約儲存和餘額為準。

例子

使用者只想授權 100 USDC,但簽署的value2^256-1deadline在十年後。成功呼叫會寫入這個最大額度並將nonce加 1;即使第一次交易只轉出 100,只要額度仍在,攻擊者以後仍能轉走新存入的USDC。截止時間過後,未使用的permit不能再提交,但已寫入的額度不會自動變成 0。應透過approve(spender, 0)或其他可信的額度變更撤銷。

案例中的Gas、稅率和區塊時間只顯示數量級。操作前必須讀取目前合約狀態、池內流動性和權限。金額同時記錄人類可讀數量、美元價值和鏈上原始整數,避免精確度錯誤。

風險

把協議收益與最壞退出損失比較。假設Gas擴大五倍、價格衝擊擴大兩倍、穩定幣折價5%,再加入一天無法退出。若一週或一個月收益無法覆蓋這些摩擦,所謂高收益並沒有提供足夠補償。任何單一協議故障都不應讓整個錢包失去支付Gas或轉移資產的能力。

常見誤區

  • 迷思1:前端顯示就是鏈上事實。 前端可能快取、索引延遲或連接錯誤網絡,必須交叉驗證。

  • 迷思2:提高Gas或滑點能解決任何失敗。 Gas只影響排序,滑點只放寬價格;權限、Nonce和合約條件錯誤不會自動修復。

  • 迷思3:小額測試成功就永久安全。 管理者升級、動態參數和流動性變化會改變結果,每次擴大部位前都要重複檢查。

相關主題

來源

導覽

搜尋知識庫...