清晰簽署

很多錢包遇到不認得的合約,仍然只顯示原始資料;而「盲簽」——核准你其實讀不懂的呼叫——正是錢包 被盜領的途徑之一。Vela 的答案是清晰簽署:在你簽署之前,盡可能把這筆交易解碼成你看得懂的內容。

你會看到什麼

不是原始 calldata,而是:

  • 意圖——這筆交易在做什麼:發送、授權、兌換等等。
  • 實質內容——涉及的金額和位址;代幣金額以實際單位顯示,收款人只要有名字 就會顯示成名字。
  • 細節——nonce、期限和原始 calldata,需要時再展開,而不是一股腦全塞到你面前。
  • 風險提示,用顏色區分,讓危險的操作一眼就能看出來。

它是怎麼做到的(ERC-7730)

Vela 用 ERC-7730 描述檔來解碼合約呼叫和 EIP-712 結構化資料——描述檔是一份份小巧、可以共用的定義, 說明某個合約的函式到底是什麼意思。

Vela 依照這個順序尋找描述檔:

  1. 應用程式內建——常用合約的描述檔:Uniswap、PancakeSwap、SushiSwap 的路由合約、WETH、 Aave v3 資金池、1inch、Lido 和 wstETH,以及 Seaport。
  2. 從 Vela 的鏈資料伺服器取得,它轉發公開的 ERC-7730 註冊表。
  3. 標準形式——ERC-20 代幣、ERC-721 和 ERC-1155 NFT、ERC-4626 金庫,以及 ERC-2612 permit—— 所以大多數日常操作仍然解得開。

已驗證只留給第一種來源。只有當這段說明來自你正在執行的這個應用程式內建的描述檔, 或者來自鏈資料伺服器、而且和內建的那一份完全一致(這就證明它在傳輸途中沒有被改過), 交易才會標示為已驗證。伺服器送來的其他內容照樣會解碼、照樣會顯示, 只是會附上一行字,說明它來自描述檔服務、沒有任何東西替它做過認證。 那個服務沒有簽章,可信程度取決於架設它的人—— 這也是你可以自己架一個的原因之一。

代幣金額會依照該代幣鏈上實際的小數位數來格式化。如果 Vela 無法確認某個代幣的小數位數, 會先當成 18 位來顯示金額,並標示為未驗證,不讓一個可能錯誤的數字看起來像是檢查過的。

風險等級

每一筆解碼後的交易都會得到一個風險等級,讓危險的模式特別顯眼:

  • 注意——授權和 permit:你正在把動用資金的權限交出去。
  • 危險——真正有風險的操作,例如無上限的代幣授權。
  • 質押、存入這類日常操作,風險等級比較低。

當 Vela 解不開一個呼叫

如果沒有 ERC-7730 描述檔,但這個函式出現在公開的函式選擇器資料庫裡,Vela 會做一次通用解碼, 並在「注意」橫幅下標示為盡力解析——解出來了,但沒有經過驗證。如果連這一步都失敗,或 Vela 只能解開交易的一部分,它不會假裝自己看懂了。

為什麼這件事重要

自我保管代表沒有人能替你撤回一筆糟糕的交易。防線不是客服——而是在核准之前, 就弄懂你核准的是什麼。清晰簽署就是 Vela 為此所做的努力,它也有極限:它的可信程度取決於顯示它的 那個應用程式,這就是獨立核對之所以重要的原因。它在 Vela 安全模型裡 的位置,請看白皮書。