Коротко: Address Lookup Table, или ALT, – это аккаунт Solana со списком публичных адресов. Версионированная транзакция может сослаться на запись в такой таблице коротким индексом вместо полного адреса, чтобы уместить больше аккаунтов в ограниченный размер сообщения. ALT не хранит токены и не выдаёт разрешение на перевод: он помогает компактно указать, с какими аккаунтами должна работать транзакция.
Зачем нужны таблицы адресов
Инструкции Solana указывают программы и аккаунты, с которыми они взаимодействуют. Сложный обмен, пакет операций, торговля NFT или взаимодействие с несколькими программами может требовать большого списка адресов. Если каждый публичный ключ включать в сообщение полностью, транзакция быстрее упирается в ограничение размера.
ALT выносит перечень адресов в отдельный on-chain аккаунт. Версионированное сообщение может обращаться к нему и включать компактные индексы нужных записей. В официальной терминологии Solana адрес в таблице занимает однобайтовый индекс вместо полного 32-байтового ключа. Это экономит место сообщения, но не уменьшает число реальных аккаунтов, которые выполняются инструкциями.
Поддержка lookup table связана с форматом транзакции. Официальная документация указывает, что address lookup tables используются в транзакциях версии v0. Поэтому нельзя считать любую транзакцию с множеством инструкций ALT-транзакцией: сначала проверьте формат сообщения. Обзор Solana объясняет базовую модель транзакций и аккаунтов сети.
Что находится в ALT
Таблица содержит список адресов, а транзакция задаёт ссылки на нужные позиции. При чтении сообщения клиент или обозреватель должен разрешить индексы обратно в публичные ключи. В итоге программе передаются конкретные адреса, а не абстрактное описание «вызвать нужный контракт». Если разрешение не выполнено, человеку сложнее понять, какие счета будут изменены.
Таблица адресов сама по себе не подтверждает, что каждый адрес безопасен. В ней могут находиться пользовательские аккаунты, программы, хранилища токенов и адреса протокола. Критично проверить, что транзакция использует ожидаемую таблицу, а выбранные индексы соответствуют нужным адресам. Подмена таблицы или неправильный набор адресов может привести к нежелательному вызову, даже если визуальная подпись кошелька выглядит привычно.
ALT не хранит приватные ключи и не превращает перечисленные адреса в подписантов. Подпись транзакции по-прежнему связана с требуемыми полномочиями и ключами. Таблица экономит место в сообщении; она не заменяет проверку владельца, mint, суммы, программы или инструкции. Наличие token account в ALT не означает, что он принадлежит ожидаемому кошельку.
Как транзакция обращается к таблице
Сначала создаётся и наполняется таблица адресов по правилам программы Address Lookup Table. Затем сборщик транзакции включает в сообщение ссылку на таблицу и индексы нужных записей. При исполнении сеть разрешает эти индексы в адреса и использует их вместе со статическими ключами сообщения. Для наблюдателя это значит, что один только список статических адресов может быть неполным.
При разборе транзакции найдите формат версии, адрес каждой таблицы и списки индексов для чтения и записи. RPC-ответ может показывать разрешённые адреса отдельно от исходного message. Сверьте итоговый список с инструкциями, а не делайте вывод только по индексу. Важные операции, например перевод токенов, изменение разрешений или обмен через DEX, нужно читать по развёрнутым адресам и параметрам вызова.
Если таблица не разрешена в обозревателе, не подписывайте транзакцию вслепую. Проверьте адрес lookup table в доверенном инструменте и сопоставьте его содержимое с документацией проекта. Для сложного пакета полезно разобрать каждую инструкцию отдельно и убедиться, что среди них нет неожиданных переводов или изменения authority.
Практическая проверка перед подписью
Проверьте, какая сеть выбрана, и запросите полное представление транзакции. Если она использует ALT, найдите адрес таблицы и разверните все индексы в публичные ключи. Установите, какие аккаунты доступны только для чтения, а какие транзакция может менять. Сопоставьте эти значения с ожидаемым приложением, токеном и кошельком.
Затем прочитайте инструкции: какая программа вызывается, какой метод выполняется, какие суммы и mint указаны, каковы получатель и плательщик комиссии. Проверьте token account через полный адрес mint. Материал об Associated Token Account объясняет, почему один токеновый баланс может находиться в отдельном аккаунте. Для полномочий эмиссии и заморозки см. инструкцию о mint и freeze authority.
Некоторые интерфейсы отображают только сокращённые адреса или подписи. Раскрывайте полный адрес при проверке, особенно если транзакция требует подтверждения в кошельке. Иконка программы не является доказательством правильной программы. Если приложение сообщает, что список адресов не может быть прочитан или симуляция не удалась, выясните причину до подписи, а не игнорируйте предупреждение.
Таблица адресов и её администрирование
Сама ALT является аккаунтом протокола и может иметь состояние, связанное с управлением таблицей. При техническом анализе посмотрите владельца аккаунта, данные таблицы и инструкции создания или обновления. Не делайте вывод об изменяемости только по наличию адреса: проверьте полномочия и правила программы для конкретного состояния. Для приложения важно знать, кто может добавлять адреса и как изменение отражается в транзакциях.
Адрес в lookup table может со временем использоваться в разных сценариях. Если приложение показывает таблицу как часть сборки, сохраните её адрес и содержимое вместе с параметрами транзакции. При сравнении симуляции с подписываемым сообщением проверьте, что список индексов и итоговые адреса совпадают. В противном случае симуляция одной операции не подтверждает безопасность другой.
Что ALT не гарантирует
Таблица не подтверждает честность приложения, безопасность программы, корректность цены или отсутствие вредоносной инструкции. Она не скрывает адреса от сети: после разрешения таблицы валидаторы видят аккаунты, которые участвуют в транзакции. Она не уменьшает комиссии автоматически и не гарантирует успешное выполнение, если баланс, права или состояние программы не подходят.
ALT делает сложные транзакции компактнее, но создаёт дополнительный шаг проверки для кошелька, обозревателя и пользователя. Убедитесь, что адреса раскрыты полностью, инструкции понятны, а получатели и токены соответствуют ожидаемым значениям. Если вы не можете разрешить таблицу и прочитать сообщение, безопаснее остановиться и получить понятную транзакцию, чем доверять одному описанию в интерфейсе.



