Материал проверен 7 ноября 2026?
БК

ГЛАВНАЯ / ИНСТРУКЦИИ / OWNER АККАУНТА SOLANA И AUTHORITY ДАННЫХ: В ЧЁМ РАЗНИЦА

Owner аккаунта Solana и authority данных: в чём разница

В Solana у аккаунта есть runtime-поле owner – program ID программы, которая может изменять его данные и списывать с него lamports по правилам runtime. Но приложения также хранят в данных аккаунтов отдельные authority: владельца token account, mint authority, close authority, stake authority или withdraw authority. Эти значения контролируют разные операции и не заменяют поле owner.

Поле Account.owner

Runtime owner указывает программу, управляющую данными аккаунта

Каждый аккаунт Solana имеет адрес, lamports, data, owner и runtime-флаги. Поле owner содержит program ID. Runtime разрешает этой программе менять data и уменьшать баланс lamports; любой program может зачислить lamports в writable account, но не списать их без соответствующего владения и правил исполнения.

Обычный пользовательский кошелёк обычно является System Program-owned аккаунтом. Аккаунт mint и token account обычно принадлежат Token Program либо Token-2022. Это не говорит, кто владеет токенами или может закрыть счёт: такие полномочия записаны в структуре данных, которую декодирует программа-владелец.

  • поле Account.owner прочитано из account info
  • программа сверена по ID
  • данные декодированы соответствующей схемой
Authority в данных

Authority – это разрешение на конкретный тип действия

Программа может хранить один или несколько адресов authority. Например, у mint отдельно бывают mint authority и freeze authority; у token account – внутренний owner и опциональный close authority. У stake account различаются stake authority для делегирования и деактивации и withdraw authority для вывода. Каждая роль действует в рамках инструкции соответствующей программы.

Изменить authority можно только поддерживаемой инструкцией и с требуемой подписью текущего authority. Успешная подпись адреса, который просто присутствует среди account keys, не даёт ему дополнительных прав. Проверяйте тип authority, программу-владельца, конкретное действие и список подписантов инструкции.

  • runtime owner отличён от authority внутри data
  • каждая authority связана с отдельным действием
  • изменение требует нужного signer
Пример token account

В token account есть два уровня слова owner

На runtime-уровне Token Program владеет данными token account, потому что именно эта программа валидирует формат и выполняет инструкции. Внутри этих данных поле owner указывает token authority, обычно адрес владельца токенов. Если существует отдельное close_authority, закрытие может требовать именно его; authority для перевода и authority для закрытия не всегда совпадают.

Адрес ATA также не обязательно является адресом пользователя и не имеет самостоятельного приватного ключа. Сопоставляйте mint, внутреннего token owner, close authority, runtime program owner и адрес назначения операции как разные поля.

Как проверить право

Свяжите signer с инструкцией и аккаунтом, а не с подписью вообще

Сначала запросите фактический account info и убедитесь в правильной сети и endpoint. Затем декодируйте data по формату runtime owner программы. Определите, какая инструкция меняет состояние и какие authority она проверяет. Проверьте, что ожидаемая подпись относится к этой роли, аккаунт передан как writable, а CPI использует разрешённую программу.

Если обозреватель показывает только сокращённую подпись поля или названия из непроверенного ABI, подтвердите результат независимым декодером и официальным ID программы. Ошибка program ownership и отсутствие authority – разные причины отказа, хотя интерфейс может показывать их похожим сообщением.

  • endpoint и сеть проверены
  • writable flags сопоставлены
  • код ошибки отнесён к runtime или программе
FAQ

Частые вопросы

Runtime owner – это человек, который владеет токенами?

Нет. Это program ID программы, которой разрешено управлять данными аккаунта.

Если я подписал транзакцию, могу изменить любой аккаунт?

Нет. Подпись подтверждает действие signer-а, но runtime и программа отдельно проверяют ownership, authority и доступность аккаунта.

Token account owner – это Token Program?

Runtime owner обычно Token Program или Token-2022; внутреннее поле owner указывает authority токенов.

Stake authority может вывести SOL?

Stake authority управляет делегированием и деактивацией; выводом неделегированного stake занимается withdraw authority.

Почему нужно проверять программу и данные?

Runtime owner определяет, кто может декодировать и менять данные; authority внутри data задаёт прикладные права.

Итоговая проверка

Чек-лист: owner аккаунта solana и authority данных: в чём разница

  • сеть и источник RPC подтверждены;
  • runtime поле owner считано из account info;
  • ID программы сверено с проверенным источником;
  • данные декодированы по соответствующему формату;
  • нужный authority найден отдельно от program owner;
  • роль authority сопоставлена с конкретной инструкцией;
  • подписи и writable flags проверены до отправки.

Материал подготовлен редакцией сайта и проверен 7 ноября 2026 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.