欢迎来到“Solana 简化”系列,该系列旨在帮助您掌握 Solana 复杂的生态系统。在第一篇文章中,我们探讨了 Solana 的运行机制、账户模型和交易结构。在第二篇文章中,我们指导您使用 Rust 编写和测试您的第一个 Solana 程序。
作为本系列的第三部分,也是最后一篇,本文将指导您使用Phalcon Explorer分析简单的 Solana 交易。在深入进行实际的 Solana 交易分析之前,让我们先探讨一下 Solana 上代币的实现方式,这是理解交易流程的关键方面。
理解 Solana 代币实现
Solana 上的代币可以大致分为两类:原生代币 (Native Token) 和其他代币 (SPL Tokens)。掌握这些区别对于有效的 Solana 交易分析至关重要。
原生代币 (SOL)
原生代币是指 Solana 的主要加密货币 SOL。正如在第一篇文章中提到的,Solana 中的每个账户都有一个 Lamports 字段,该字段记录了该账户中 SOL 的余额。Lamports 是 SOL 的最小单位,1 SOL 等于 10 亿 Lamports。SOL 用于交易费用、质押和网络参与。
其他代币 (SPL 代币)
对于其他代币,Solana 利用了一个围绕程序账户(代币程序)和两种数据账户构建的强大框架:铸币账户 (Mint Account) 和代币账户 (Token Account)。这种架构提供了管理和与 Solana 区块链上的各种代币交互所需的所有功能。
Solana 代币程序
代币程序是由 Solana 程序库 (SPL) 提供的一个程序账户,使其在 AccountInfo 中的 Executable 字段为 True。
与系统程序类似,代币程序部署在 Solana 的固定地址,其所有者是 BPF Loader。作为一个强大的程序账户,它实现了许多指令,提供了各种代币功能。例如,一些指令用于创建铸币账户以初始化新代币,或创建代币账户以记录特定地址持有的代币数量。其他指令则促进了重要的代币操作,例如用于增加代币供应量的 MintTo 指令,或用于在两个地址之间转移代币的 Transfer 指令。
需要注意的是,由于代币程序负责创建铸币账户和代币账户,它也是这些账户的所有者,从而控制了它们的生命周期和数据。
铸币账户结构
铸币账户是一个数据账户,意味着它在 AccountInfo 中的 Executable 字段为 False。在 Solana 上,每个唯一的代币(例如,USDC、RAY 等)对应一个唯一的铸币账户。该账户存储了关键信息,例如代币的总供应量、小数位数以及拥有铸造(创建新)或销毁(删除)代币权限的账户的地址。
代币账户结构
代币账户记录了个人或另一个程序持有的特定代币数量。对于每种类型的代币,持有该代币的每个实体都有一个相应的代币账户。例如,如果一个用户持有五种不同的 SPL 代币,他们将拥有五个不同的代币账户,每种代币类型一个。
代币账户是一个数据账户,其 AccountInfo 的 Data 字段通常包含三个关键子字段:
- Mint: 与此特定代币账户对应的铸币账户的地址,标识了它持有的代币。
- Owner: 拥有从此代币账户转移代币特权账户的公钥。这是代币的真正“所有者”。
- Amount: 此代币账户中当前持有的代币数量。
需要强调的是,
AccountInfo 中的 owner 字段(决定了谁可以修改账户数据)和代币账户 Data 中的 owner 字段(指定了谁拥有代币)是完全不同的概念。前者是 Solana 通用账户属性,后者是 SPL 代币账户特有的。
将这些概念联系起来,我们可以看到下面的账户关系图。系统程序和代币程序都部署在区块链上的唯一、固定地址,并作为核心库运行。钱包账户可能持有多个代币账户,并且它是这些代币账户中代币的真正“所有者”。相同类型的代币账户中的 Mint 字段指向该代币的唯一铸币账户,该账户记录了代币的总供应量等信息。
使用 Phalcon Explorer 分析 Solana 交易
虽然 Solscan 等传统浏览器提供了有价值的数据,但它们有时呈现信息的方式可能不利于详细的 Solana 交易分析。让我们先看看 Solscan 中的一笔交易,然后看看 BlockSec 的 Phalcon Explorer 如何提供更清晰、更全面的视图。
在 Solscan 中查看代币账户
我们可以使用 Solscan 查看此示例交易中的代币账户变化:
Address 列列出了交易中涉及的所有代币账户。Owner 列指示了代币的真正“所有者”(代币账户数据字段中的 owner)。Token 列对应当前代币的铸币账户。我们可以点击第一行右侧的“$SON”以获取更多详细信息:
“Profile Summary”中的 Owner Program 表明当前铸币账户的所有者是代币程序。至此,我们已经在 Solscan 中匹配了所有三种账户类型。
然而,Solscan 中的这种显示可能有些误导。例如,在前一张图中,不清楚第一行中增加的余额属于地址 CHS9WajyFfuaAZRk2JC7hRJvPHXmG5fC94gtAPbnLjuY 还是 Raydium Authority V4。这种歧义增加了用户理解交易真实流向的难度。此外,读者可能会注意到 SOL 代币和其他代币在 Solscan 中显示在不同的部分。虽然这种分离在技术上是合理的,但如果它们在统一的代币部分一起呈现,以便全面了解资产变化,会更容易理解。
Phalcon Explorer 不仅解决了这些问题,还为详细的 Solana 交易分析引入了许多其他创新。现在让我们使用 Phalcon Explorer 来检查同一笔交易。
我们强烈建议打开Phalcon Explorer 中交易的链接,并按照我们的步骤一起分析。这种互动式方法将使您能够更好地理解交易详情,并欣赏 Phalcon Explorer 在 Solana 交易分析方面的强大功能!
在 Phalcon Explorer 中查看和分析交易
在页面左上角,您可以看到当前交易已被识别为 JITO MEV 交易,这是安全分析人员有价值的信息。如果需要,您还可以点击交易签名旁边的 Solana 图标直接跳转到 Solscan。
有关此 Solana 交易的信息逻辑上分为四个关键部分:基本信息 (Basic Info)、资金流 (Fund Flow)、余额变化 (Balance Changes) 和调用流 (Invocation Flow)。您可以通过点击右上角的图标在这些部分之间无缝切换,从而进行全面的 Solana 交易分析。
基本信息
基本信息部分提供了有关当前 Solana 交易的基本详细信息。您可以点击区块号和签名者地址跳转到 Solscan 进行交叉引用或获取更多上下文。本节提供了快速概述,然后再深入研究交易执行的具体细节。
资金流
资金流部分提供了交易执行期间资金移动和时间的可视化表示,使得 Solana 交易分析直观易懂:
- 交易发起者和签名者
59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F首先将一定数量的代币转移到了标记为Raydium Authority V4的地址。 - 接下来,
Raydium Authority V4将约 6.747 个 Wrapped SOL 代币转回给签名者59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F。 - 最后,签名者向 Jito 支付了 0.000003 SOL 作为给 Jito 验证者执行交易的小费,表明这是一项与 MEV 相关的活动。
下方是 Solscan 的资金流图以供比较。与 Solscan 相比,Phalcon Explorer 的资金流图中的每个地址唯一对应一个节点,使得识别地址之间的关系变得更加容易,从而提高了分析效率,尤其是在处理复杂的 Solana 交易时。
如果您想对交易的资金流进行更深入的分析,例如用于事件响应或取证调查,您可以点击右上角的棕色图标进入 BlockSec 的高级链上分析工具MetaSleuth。
余额变化
余额变化部分清晰地显示了 Solana 交易完成后不同账户的代币变化。这种统一的视图是 Solana 交易分析的一大优势。
例如,交易的签名者 59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F 的三种代币发生了变化:原生代币 SOL、一种名为 61Hh8Udg7zruvG3BhyNiHF4UmULnC8reB9RBFtwi8uKp 的代币(可能是 SPL 代币)以及 Wrapped SOL 代币。
在余额变化中出现的每个账户地址都关联着一个或多个代币账户。通过点击相应的地址,您可以复制它或跳转到 Solscan 获取其他上下文。
Phalcon Explorer 在此视图中不区分 SOL 代币和其他 SPL 代币,这直接反映了给定账户所有代币的变化。这种统一的呈现方式使得可视化代币账户与其所有者之间的关系更加容易,从而为 Solana 交易中的资产流动提供了更完整的图景。
调用流
调用流记录了交易指令的执行过程,每一行对应 Solana 交易中执行的一条指令。这一部分对于理解智能合约交互或程序调用中的精确操作顺序至关重要。
在这里,我们关注指令 2 和 4,它们涉及代币转账。
第二条指令调用 Raydium AMM 的 swapBaseIn 来出售一种代币。展开此指令会发现它由两个 CPI(跨程序调用)指令组成,这些指令促进了 Raydium Authority V4 和交易签名者之间的代币转账。第四条指令是签名者向 Jito 支付小费的过程,证实了交易的 MEV 性质。
如下图所示,通过点击每条指令后的 Accounts 选项卡,我们可以查看该特定指令涉及的所有账户。与 Solscan 相比,这种显示方式更简洁,使分析人员能够专注于交易中更关键的信息,而不会被无关细节淹没。这种细粒度的视图对于深入的 Solana 交易分析和调试至关重要。

结论
在本文中,我们首先介绍了 Solana 代币的实现原理,涵盖了原生 SOL、代币程序、铸币账户和代币账户。然后,我们使用 Solscan 检查了特定交易的代币账户变化,并重点介绍了它的一些局限性。最后,我们使用 BlockSec 的 Phalcon Explorer 对同一笔 Solana 交易进行了更深入的分析,展示了其创新的功能,为 Solana 交易分析提供了卓越的清晰度和洞察力。
“Solana 简化”系列到此结束。我们希望它能帮助您理解 Solana 的核心概念和实际交易分析。如果您还有其他希望了解的主题,例如特定的安全事件、生态系统介绍或其他 BlockSec 产品,请随时发表评论!🫡



