Добро пожаловать в серию "Solana: просто о сложном" (Solana Simplified), призванную помочь вам освоить запутанную экосистему Solana. В первой статье мы изучили механизм работы Solana, модель аккаунтов и структуру транзакций. Во второй статье мы помогли вам написать и протестировать вашу первую программу для Solana на языке Rust.
В этой, третьей и заключительной части серии, эта статья поможет вам проанализировать простую транзакцию в сети Solana с помощью Phalcon Explorer. Прежде чем мы перейдем к практическому анализу транзакций Solana, давайте сначала разберемся, как реализованы токены в Solana — это фундаментальный аспект для понимания потоков транзакций.
Разбираемся в реализации токенов в Solana
Токены в Solana можно условно разделить на две категории: нативный токен и другие токены (токены SPL). Понимание этих различий имеет решающее значение для эффективного анализа транзакций в сети.
Нативный токен (SOL)
Нативный токен — это основная криптовалюта Solana под названием SOL. Как упоминалось в первой статье, каждый аккаунт в Solana имеет поле Lamports, в котором записывается баланс SOL на этом аккаунте. Лампорты (Lamports) — это минимальная неделимая единица SOL, где 1 SOL равен 1 миллиарду лампортов. SOL используется для оплаты комиссий за транзакции, стейкинга и участия в жизни сети.
Другие токены (токены SPL)
Для других токенов Solana использует надежную структуру, построенную вокруг программного аккаунта (Token Program) и двух типов аккаунтов данных: Mint Account (аккаунт чеканки) и Token Account (аккаунт токенов). Эта архитектура предоставляет все необходимые функции для управления различными токенами и взаимодействия с ними в блокчейне Solana.
Программа токенов Solana (Token Program)
Token Program — это программный аккаунт, предоставляемый библиотекой Solana Program Library (SPL), у которого поле Executable (исполняемый) в AccountInfo установлено в значение True.
Подобно системной программе (System Program), Token Program развернута по фиксированному адресу в Solana, а ее владельцем является BPF Loader. Будучи мощным программным аккаунтом, она реализует множество инструкций для обеспечения различных функций токенов. Например, некоторые инструкции используются для создания Mint Account для инициализации нового токена или для создания Token Account, чтобы фиксировать количество токенов, принадлежащих конкретному адресу. Другие инструкции обеспечивают основные операции с токенами, такие как инструкция MintTo для увеличения предложения токенов или инструкция Transfer для перевода токенов между двумя адресами.
Важно отметить, что, поскольку Token Program отвечает за создание Mint Account и Token Account, именно она является владельцем этих аккаунтов, что дает ей контроль над их жизненным циклом и данными.
Структура Mint Account
Mint Account — это аккаунт данных, что означает, что его поле Executable в AccountInfo равно False. В Solana каждый уникальный токен (например, USDC, RAY и т. д.) соответствует одному Mint Account. Этот аккаунт хранит важную информацию, такую как общий объем предложения токена, количество знаков после запятой (decimals) и адрес аккаунта, имеющего полномочия на чеканку (создание новых) или сжигание (уничтожение) токенов.
Структура Token Account
Token Account записывает сумму конкретного токена, принадлежащую физическому лицу или другой программе. Для каждого типа токена у каждой сущности, владеющей этим токеном, есть соответствующий Token Account. Например, если пользователь владеет пятью различными SPL-токенами, у него будет пять отдельных Token Account — по одному для каждого типа токена.
Token Account — это аккаунт данных, и поле Data в его AccountInfo обычно состоит из трех ключевых подполей:
- Mint: Адрес Mint Account, соответствующий этому конкретному Token Account, который определяет, какой именно токен на нем хранится.
- Owner: Публичный ключ аккаунта, имеющего привилегию переводить токены с этого Token Account. Это настоящий «владелец» токенов.
- Amount: Текущее количество токенов, хранящихся на этом Token Account.
Следует подчеркнуть, что поле
owner в AccountInfo (которое определяет, кто может изменять данные аккаунта) и поле owner внутри Data самого аккаунта токенов (которое указывает, кто владеет токенами) — это совершенно разные понятия. Первое является общим свойством аккаунта Solana, в то время как второе специфично для аккаунтов SPL-токенов.
Соединяя эти концепции, мы можем представить схему взаимосвязи аккаунтов ниже. И System Program, и Token Program развернуты по уникальным фиксированным адресам в блокчейне и функционируют как базовые библиотеки. Аккаунт кошелька может содержать несколько Token Account, и он является настоящим «владельцем» токенов на них. Поле Mint в Token Account одного типа указывает на уникальный Mint Account для этого токена, в котором записаны такие данные, как общий объем предложения.
Анализ транзакций в Solana с помощью Phalcon Explorer
Хотя традиционные обозреватели, такие как Solscan, предоставляют ценные данные, иногда они могут отображать информацию не самым интуитивно понятным для глубокого анализа транзакций Solana способом. Давайте сначала рассмотрим транзакцию в Solscan, а затем увидим, как Phalcon Explorer от BlockSec предлагает более ясный и всесторонний обзор.
Просмотр Token Account в Solscan
Мы можем использовать Solscan для просмотра изменений в Token Account в рамках этой транзакции-примера:
В столбце Address перечислены все Token Account, участвующие в транзакции. Столбец Owner указывает истинного «владельца» токена (поле owner в данных аккаунта токенов). Столбец Token соответствует Mint Account текущего токена. Мы можем нажать на «$SON» в правой части первой строки для получения дополнительной информации:
Owner Program в сводке профиля указывает, что владельцем текущего Mint Account является Token Program. К этому моменту мы сопоставили все три типа аккаунтов в Solscan.
Однако такое отображение в Solscan может вводить в заблуждение. Например, на предыдущем изображении неясно, принадлежит ли увеличенный баланс в первой строке адресу CHS9WajyFfuaAZRk2JC7hRJvPHXmG5fC94gtAPbnLjuY или Raydium Authority V4. Такая двусмысленность затрудняет понимание пользователями реального потока транзакции. Кроме того, читатели могут заметить, что токены SOL и другие токены отображаются в разных разделах Solscan. Хотя технически это разделение обосновано, было бы проще понять ситуацию, если бы они были представлены вместе в едином разделе токенов для целостного видения изменений активов.
Phalcon Explorer не только решает эти проблемы, но и привносит множество других инноваций для детального анализа транзакций в Solana. Теперь давайте используем Phalcon Explorer для изучения той же транзакции.
Мы настоятельно рекомендуем открыть ссылку на транзакцию в Phalcon Explorer и следовать нашим шагам для совместного анализа. Этот интерактивный подход позволит вам лучше понять детали транзакции и оценить мощные возможности Phalcon Explorer для анализа транзакций Solana!
Начните работу с Phalcon Explorer
Погрузитесь в транзакции для принятия взвешенных решений
Попробовать бесплатноПросмотр и анализ транзакций в Phalcon Explorer
В левом верхнем углу страницы вы можете увидеть, что текущая транзакция была определена как JITO MEV-транзакция — ценная информация для специалистов по безопасности. Вы также можете нажать на иконку Solana рядом с сигнатурой транзакции, чтобы при необходимости перейти к Solscan.
Информация об этой транзакции Solana логически разделена на четыре ключевых раздела: Basic Info (Основная информация), Fund Flow (Поток средств), Balance Changes (Изменения баланса) и Invocation Flow (Поток вызовов). Вы можете легко переключаться между этими разделами, нажимая на значки в правом верхнем углу, что позволяет проводить комплексный анализ транзакций Solana.
Basic Info (Основная информация)
Раздел Basic Info предлагает важные детали текущей транзакции Solana. Вы можете нажать на номер блока и адрес подписавшего лица, чтобы перейти в Solscan для сверки или получения дополнительного контекста. Этот раздел дает быстрый обзор перед погружением в тонкости выполнения транзакции.
Fund Flow (Поток средств)
Раздел Fund Flow предоставляет четкое визуальное представление о движении активов и тайминге во время выполнения транзакции, делая анализ транзакций в Solana интуитивно понятным:
- Инициатор и подписавший транзакцию,
59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F, сначала перевел определенное количество токенов на адрес, помеченный какRaydium Authority V4. - Затем
Raydium Authority V4перевел примерно 6.747 Wrapped SOL обратно подписавшему лицу,59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F. - Наконец, подписавший предоставил 0.000003 SOL для Jito в качестве чаевых валидатору Jito за выполнение транзакции, что указывает на активность, связанную с MEV.
Ниже приведена диаграмма потока средств из Solscan для сравнения. По сравнению с Solscan, каждый адрес на диаграмме потока средств в Phalcon Explorer уникально соответствует одному узлу (ноде), что значительно упрощает выявление связей между адресами и тем самым повышает эффективность анализа, особенно для сложных транзакций Solana.
Если вы хотите провести более глубокий анализ потока средств транзакции, например, при реагировании на инциденты или проведении форензического расследования, вы можете нажать на коричневый значок в правом верхнем углу, чтобы перейти в MetaSleuth, продвинутый инструмент анализа блокчейна от BlockSec.
Balance Changes (Изменения баланса)
Раздел Balance Changes четко показывает изменения токенов для различных аккаунтов после завершения транзакции в Solana. Этот унифицированный обзор является значительным преимуществом для анализа транзакций.
Например, подписавший транзакцию адрес 59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F претерпел изменения в трех типах токенов: нативный токен SOL, токен с именем 61Hh8Udg7zruvG3BhyNiHF4UmULnC8reB9RBFtwi8uKp (вероятно, SPL-токен) и Wrapped SOL (обернутый SOL).
Каждый адрес аккаунта, который отображается в разделе Balance Changes, имеет один или несколько связанных с ним Token Account. Нажав на соответствующий адрес, вы можете скопировать его или перейти в Solscan для получения дополнительной информации.
Phalcon Explorer не проводит различий между токенами SOL и другими SPL-токенами в этом представлении, что напрямую отражает изменения всех токенов для данного аккаунта. Такая унифицированная презентация значительно облегчает визуализацию взаимосвязи между Token Account и его владельцем (Owner), предлагая более полную картину перемещения активов во время транзакций Solana.
Invocation Flow (Поток вызовов)
Invocation Flow записывает процесс выполнения инструкций транзакции, где каждая строка соответствует инструкции, выполненной в ходе транзакции Solana. Этот раздел неоценим для понимания точной последовательности операций в рамках взаимодействия со смарт-контрактом или вызова программы.
Здесь мы сосредоточимся на инструкциях 2 и 4, которые связаны с переводом токенов.
Вторая инструкция вызывает функцию swapBaseIn в Raydium AMM для продажи токена. Развертывание этой инструкции показывает, что она состоит из двух инструкций CPI (Cross-Program Invocation — межпрограммный вызов), которые способствуют переводу токенов между Raydium Authority V4 и подписавшим лицом транзакции. Четвертая инструкция — это процесс, в ходе которого подписавший выплачивает чаевые Jito, что подтверждает MEV-характер транзакции.
Как показано на рисунке ниже, нажав на вкладку Accounts после каждой инструкции, мы можем просмотреть все аккаунты, участвующие в этой конкретной операции. По сравнению с Solscan, такой метод отображения более лаконичен, позволяя аналитикам сосредоточиться на наиболее важной информации в транзакции, не перегружая себя лишними деталями. Этот детализированный вид необходим для глубокого анализа и отладки транзакций Solana.

Заключение
В этой статье мы сначала познакомились с принципами реализации токенов в Solana, включая нативный SOL, программы токенов (Token Programs), Mint Account и Token Account. Затем мы использовали Solscan для изучения изменений аккаунтов токенов в конкретной транзакции, выделив некоторые ограничения этого сервиса. Наконец, мы провели глубокий анализ той же самой транзакции Solana с помощью Phalcon Explorer от BlockSec, продемонстрировав его инновационные функции, которые обеспечивают превосходную ясность и глубокое понимание для анализа транзакций Solana.
На этом серия "Solana: просто о сложном" завершается. Мы надеемся, что она помогла вам понять основные концепции Solana и освоить практический анализ транзакций. Если у вас есть другие темы, которые вы хотели бы изучить — например, конкретные инциденты безопасности, обзоры экосистемы или другие продукты BlockSec — не стесняйтесь оставлять комментарии! 🫡


