清晰簽署
很多錢包遇到不認識的合約,仍然只顯示原始資料;而「盲簽」——批准你其實看不懂的呼叫——正是錢包被掏空的 途徑之一。Vela 的答案是清晰簽署:在你簽署之前,盡可能把交易解碼成你看得懂的內容。
你會看到甚麼
Vela 顯示的不是原始 calldata,而是:
- 意圖——這筆交易做甚麼:發送、授權、兌換等等。
- 實質內容——涉及的金額和地址;代幣金額以實際單位顯示,收款方如有名稱就會顯示名稱。
- 細節——nonce、截止時間和原始 calldata,需要時才展開,而不是一股腦兒擺在你面前。
- 風險提示,以顏色區分,讓危險的操作一目了然。
運作方式(ERC-7730)
Vela 用 ERC-7730 描述檔解碼合約呼叫和 EIP-712 結構化資料——描述檔是一份份小巧、可共享的定義,說明某份合約的函數是甚麼意思。
Vela 按以下次序尋找描述檔:
- App 內置——常用合約的描述檔:Uniswap、PancakeSwap 和 SushiSwap 的路由合約、WETH、Aave v3 資金池、1inch、Lido 和 wstETH,以及 Seaport。
- 從 Vela 的鏈數據伺服器取得,該伺服器轉載公開的 ERC-7730 註冊表。
- 標準形態——ERC-20 代幣、ERC-721 和 ERC-1155 NFT、ERC-4626 金庫及 ERC-2612 permit——所以大部分 日常操作仍然可以解碼。
已驗證只留給第一種來源。只有當這段說明來自你正在運行的這個 App 內置的描述檔, 或者來自鏈數據伺服器、而且與內置的那一份完全相同(這就證明它在傳送途中沒有被改過), 交易才會標示為已驗證。伺服器送來的其他內容照樣會解碼、照樣會顯示, 只是會附上一行字,說明它來自描述檔服務、沒有任何東西為它做過認證。 那個服務沒有簽名,可信程度只等於運行它的人—— 這也是你可以自行運行一個的原因之一。
代幣金額按代幣在鏈上的實際小數位數來格式化。如果 Vela 無法確認某種代幣的小數位數,就會假設為 18 位來顯示金額,並標示為未驗證,避免一個錯誤的數字看起來像經過核實。
風險等級
每一筆解碼後的交易都會獲得一個風險等級,讓危險的模式突顯出來:
- 注意——授權和 permit:你正在授出動用資金的權力。
- 危險——真正有風險的操作,例如無限額的代幣授權。
- 質押或存入等日常操作的風險等級較低。
Vela 無法解碼呼叫時
如果沒有 ERC-7730 描述檔,但該函數出現在公開的函數選擇器資料庫中,Vela 會以通用方式解碼這個呼叫,並在 「注意」橫額下標示為盡力解析——已解碼,但未經驗證。如果連這一步都失敗,或 Vela 只能解碼交易的一部分, 它不會假裝看得懂。
為甚麼這很重要
自我託管意味着沒有人能替你撤回一筆出錯的交易。防線不是客服——而是在批准之前就弄清楚你批准的是甚麼。 清晰簽署是 Vela 嘗試讓你看清這一點的方法,但它有局限:它最多只能和顯示它的那個 App 一樣可信,所以 獨立核對才重要。它在 Vela 安全模型中的位置,見 白皮書。