ГЛАВНАЯ / ИНСТРУКЦИИ / 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.
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. Например, у 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 есть два уровня слова 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 или программе
Частые вопросы
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 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.