Понятная подпись

Многие кошельки до сих пор показывают сырые данные для любого незнакомого им контракта, а «слепая подпись» — одобрение вызовов, которые вы на самом деле не можете прочитать, — один из способов, которыми опустошают кошельки. Ответ Vela — понятная подпись: перед подписью транзакция расшифровывается во что-то понятное вам, насколько это возможно.

Что вы видите

Вместо сырой calldata Vela показывает:

  • Намерение — что делает транзакция: Отправить, Разрешить, Обменять и так далее.
  • Суть — задействованные суммы и адреса; суммы токенов — в настоящих единицах, а получатели — по имени, если оно есть.
  • Подробности — nonce, сроки действия и сырая calldata: доступны по запросу, а не вываливаются на вас сразу.
  • Оценку риска с цветовой разметкой, чтобы опасные действия бросались в глаза.

Как это работает (ERC-7730)

Vela расшифровывает и вызовы контрактов, и типизированные данные EIP-712 с помощью дескрипторов ERC-7730 — небольших общедоступных описаний того, что означают функции контракта.

Vela ищет дескриптор в таком порядке:

  1. Встроенные в приложение — дескрипторы для широко используемых контрактов: роутеры Uniswap, PancakeSwap и SushiSwap, WETH, пул Aave v3, 1inch, Lido и wstETH, Seaport.
  2. Загруженные с сервера данных сетей Vela, который переопубликует публичный реестр ERC-7730.
  3. Стандартные формы — токены ERC-20, NFT ERC-721 и ERC-1155, хранилища ERC-4626 и permit ERC-2612, — так что большинство повседневных действий всё равно расшифровывается.

«Проверено» оставлено за первым источником. Транзакция помечается как проверенная, только если описание пришло из дескриптора, встроенного в то приложение, которое у вас запущено, — или с сервера данных сетей и при этом в точности совпадает со встроенной копией, что доказывает: по дороге ничего не изменили. Всё остальное, что присылает сервер, по-прежнему расшифровывается и по-прежнему показывается — со строкой о том, что это пришло из сервиса дескрипторов и ничем не заверено. Этот сервис не подписывает то, что отдаёт, поэтому доверять ему можно ровно настолько, насколько тому, кто его держит, — и это одна из причин, по которым можно запустить свой.

Суммы токенов форматируются по реальному числу десятичных знаков токена в блокчейне. Если Vela не может подтвердить число знаков, она показывает сумму так, будто у токена их 18, и помечает её как непроверенную, чтобы неверное число никогда не выглядело как проверенное.

Уровни риска

Каждая расшифрованная транзакция получает уровень риска, чтобы опасные шаблоны бросались в глаза:

  • Внимание — для разрешений и permit: вы отдаёте право тратить.
  • Опасно — для по-настоящему рискованного, например неограниченного разрешения на токены.
  • Более низкий риск — для рутинных действий вроде стейкинга или депозита.

Когда Vela не может расшифровать вызов

Если дескриптора ERC-7730 нет, но функция есть в публичной базе селекторов, Vela расшифровывает вызов в общем виде и помечает его как «по мере возможности» — расшифровано, но не проверено — под предупреждающей плашкой. Если не выходит и это или Vela может расшифровать только часть транзакции, она не делает вид, что всё поняла.

Почему это важно

Самостоятельное хранение означает, что никто не отменит за вас неудачную транзакцию. Защита здесь не служба поддержки, а понимание того, что вы одобряете, до того как одобрить. Понятная подпись — это способ Vela это показать, и у неё есть пределы: она не может быть честнее приложения, которое её показывает, — поэтому так важна независимая проверка. Какое место понятная подпись занимает в модели безопасности Vela, описано в whitepaper.