Back to Blog

Solana 简明教程 03:5 分钟理解 Solana 交易

June 27, 2024
9 min read

欢迎来到“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 代币程序

Token Program Structure Diagram 代币程序是由 Solana 程序库 (SPL) 提供的一个程序账户,使其在 AccountInfo 中的 Executable 字段为 True

与系统程序类似,代币程序部署在 Solana 的固定地址,其所有者是 BPF Loader。作为一个强大的程序账户,它实现了许多指令,提供了各种代币功能。例如,一些指令用于创建铸币账户以初始化新代币,或创建代币账户以记录特定地址持有的代币数量。其他指令则促进了重要的代币操作,例如用于增加代币供应量的 MintTo 指令,或用于在两个地址之间转移代币的 Transfer 指令。

需要注意的是,由于代币程序负责创建铸币账户和代币账户,它也是这些账户的所有者,从而控制了它们的生命周期和数据。

铸币账户结构

Mint Account Structure Diagram 铸币账户是一个数据账户,意味着它在 AccountInfo 中的 Executable 字段为 False。在 Solana 上,每个唯一的代币(例如,USDC、RAY 等)对应一个唯一的铸币账户。该账户存储了关键信息,例如代币的总供应量、小数位数以及拥有铸造(创建新)或销毁(删除)代币权限的账户的地址。

代币账户结构

代币账户记录了个人或另一个程序持有的特定代币数量。对于每种类型的代币,持有该代币的每个实体都有一个相应的代币账户。例如,如果一个用户持有五种不同的 SPL 代币,他们将拥有五个不同的代币账户,每种代币类型一个。

代币账户是一个数据账户,其 AccountInfoData 字段通常包含三个关键子字段:

  • Mint: 与此特定代币账户对应的铸币账户的地址,标识了它持有的代币。
  • Owner: 拥有从此代币账户转移代币特权账户的公钥。这是代币的真正“所有者”。
  • Amount: 此代币账户中当前持有的代币数量。

Token Account Structure Diagram 需要强调的是,AccountInfo 中的 owner 字段(决定了谁可以修改账户数据)和代币账户 Data 中的 owner 字段(指定了谁拥有代币)是完全不同的概念。前者是 Solana 通用账户属性,后者是 SPL 代币账户特有的。

将这些概念联系起来,我们可以看到下面的账户关系图。系统程序和代币程序都部署在区块链上的唯一、固定地址,并作为核心库运行。钱包账户可能持有多个代币账户,并且它是这些代币账户中代币的真正“所有者”。相同类型的代币账户中的 Mint 字段指向该代币的唯一铸币账户,该账户记录了代币的总供应量等信息。

Solana Account Relationship Diagram
Solana Account Relationship Diagram

使用 Phalcon Explorer 分析 Solana 交易

虽然 Solscan 等传统浏览器提供了有价值的数据,但它们有时呈现信息的方式可能不利于详细的 Solana 交易分析。让我们先看看 Solscan 中的一笔交易,然后看看 BlockSec 的 Phalcon Explorer 如何提供更清晰、更全面的视图。

在 Solscan 中查看代币账户

我们可以使用 Solscan 查看此示例交易中的代币账户变化:

Solscan Token Balance Change View Address 列列出了交易中涉及的所有代币账户。Owner 列指示了代币的真正“所有者”(代币账户数据字段中的 owner)。Token 列对应当前代币的铸币账户。我们可以点击第一行右侧的“$SON”以获取更多详细信息:

Solscan Token Profile Summary “Profile Summary”中的 Owner Program 表明当前铸币账户的所有者是代币程序。至此,我们已经在 Solscan 中匹配了所有三种账户类型。

然而,Solscan 中的这种显示可能有些误导。例如,在前一张图中,不清楚第一行中增加的余额属于地址 CHS9WajyFfuaAZRk2JC7hRJvPHXmG5fC94gtAPbnLjuY 还是 Raydium Authority V4。这种歧义增加了用户理解交易真实流向的难度。此外,读者可能会注意到 SOL 代币和其他代币在 Solscan 中显示在不同的部分。虽然这种分离在技术上是合理的,但如果它们在统一的代币部分一起呈现,以便全面了解资产变化,会更容易理解。

Phalcon Explorer 不仅解决了这些问题,还为详细的 Solana 交易分析引入了许多其他创新。现在让我们使用 Phalcon Explorer 来检查同一笔交易。

我们强烈建议打开Phalcon Explorer 中交易的链接,并按照我们的步骤一起分析。这种互动式方法将使您能够更好地理解交易详情,并欣赏 Phalcon Explorer 在 Solana 交易分析方面的强大功能!

开始使用 Phalcon Explorer

深入了解交易,明智行动

立即免费试用

在 Phalcon Explorer 中查看和分析交易

Phalcon Explorer Transaction Overview 在页面左上角,您可以看到当前交易已被识别为 JITO MEV 交易,这是安全分析人员有价值的信息。如果需要,您还可以点击交易签名旁边的 Solana 图标直接跳转到 Solscan。

有关此 Solana 交易的信息逻辑上分为四个关键部分:基本信息 (Basic Info)资金流 (Fund Flow)余额变化 (Balance Changes)调用流 (Invocation Flow)。您可以通过点击右上角的图标在这些部分之间无缝切换,从而进行全面的 Solana 交易分析。

基本信息

Phalcon Explorer Basic Info Section 基本信息部分提供了有关当前 Solana 交易的基本详细信息。您可以点击区块号和签名者地址跳转到 Solscan 进行交叉引用或获取更多上下文。本节提供了快速概述,然后再深入研究交易执行的具体细节。

资金流

Phalcon Explorer Fund Flow Section 资金流部分提供了交易执行期间资金移动和时间的可视化表示,使得 Solana 交易分析直观易懂:

  • 交易发起者和签名者 59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F 首先将一定数量的代币转移到了标记为 Raydium Authority V4 的地址。
  • 接下来,Raydium Authority V4 将约 6.747 个 Wrapped SOL 代币转回给签名者 59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F
  • 最后,签名者向 Jito 支付了 0.000003 SOL 作为给 Jito 验证者执行交易的小费,表明这是一项与 MEV 相关的活动。

下方是 Solscan 的资金流图以供比较。与 Solscan 相比,Phalcon Explorer 的资金流图中的每个地址唯一对应一个节点,使得识别地址之间的关系变得更加容易,从而提高了分析效率,尤其是在处理复杂的 Solana 交易时。

Solscan Fund Flow Diagram 如果您想对交易的资金流进行更深入的分析,例如用于事件响应或取证调查,您可以点击右上角的棕色图标进入 BlockSec 的高级链上分析工具MetaSleuth

探索 MetaSleuth 调查

追踪资金流并构建证据用于调查

立即免费试用

余额变化

Phalcon Explorer Balance Changes Section 余额变化部分清晰地显示了 Solana 交易完成后不同账户的代币变化。这种统一的视图是 Solana 交易分析的一大优势。

例如,交易的签名者 59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F 的三种代币发生了变化:原生代币 SOL、一种名为 61Hh8Udg7zruvG3BhyNiHF4UmULnC8reB9RBFtwi8uKp 的代币(可能是 SPL 代币)以及 Wrapped SOL 代币。

在余额变化中出现的每个账户地址都关联着一个或多个代币账户。通过点击相应的地址,您可以复制它或跳转到 Solscan 获取其他上下文。

Phalcon Explorer 在此视图中不区分 SOL 代币和其他 SPL 代币,这直接反映了给定账户所有代币的变化。这种统一的呈现方式使得可视化代币账户与其所有者之间的关系更加容易,从而为 Solana 交易中的资产流动提供了更完整的图景。

调用流

Phalcon Explorer Invocation Flow Section 调用流记录了交易指令的执行过程,每一行对应 Solana 交易中执行的一条指令。这一部分对于理解智能合约交互或程序调用中的精确操作顺序至关重要。

在这里,我们关注指令 2 和 4,它们涉及代币转账。

第二条指令调用 Raydium AMMswapBaseIn 来出售一种代币。展开此指令会发现它由两个 CPI(跨程序调用)指令组成,这些指令促进了 Raydium Authority V4 和交易签名者之间的代币转账。第四条指令是签名者向 Jito 支付小费的过程,证实了交易的 MEV 性质。

如下图所示,通过点击每条指令后的 Accounts 选项卡,我们可以查看该特定指令涉及的所有账户。与 Solscan 相比,这种显示方式更简洁,使分析人员能够专注于交易中更关键的信息,而不会被无关细节淹没。这种细粒度的视图对于深入的 Solana 交易分析和调试至关重要。

Phalcon Explorer Invocation Flow Accounts Tab
Phalcon Explorer Invocation Flow Accounts Tab

结论

在本文中,我们首先介绍了 Solana 代币的实现原理,涵盖了原生 SOL、代币程序、铸币账户和代币账户。然后,我们使用 Solscan 检查了特定交易的代币账户变化,并重点介绍了它的一些局限性。最后,我们使用 BlockSec 的 Phalcon Explorer 对同一笔 Solana 交易进行了更深入的分析,展示了其创新的功能,为 Solana 交易分析提供了卓越的清晰度和洞察力。

“Solana 简化”系列到此结束。我们希望它能帮助您理解 Solana 的核心概念和实际交易分析。如果您还有其他希望了解的主题,例如特定的安全事件、生态系统介绍或其他 BlockSec 产品,请随时发表评论!🫡

阅读本系列的其余文章:

Sign up for the latest updates
Newsletter - April 2026
Security Insights

Newsletter - April 2026

In April 2026, the DeFi ecosystem experienced three major security incidents. KelpDAO lost ~$290M due to an insecure 1-of-1 DVN bridge configuration exploited via RPC infrastructure compromise, Drift Protocol suffered ~$285M from a multisig governance takeover leveraging Solana's durable nonce mechanism, and Rhea Finance incurred ~$18.4M following a business logic flaw in its margin-trading module that allowed circular swap path manipulatio

~$7.04M Lost: GiddyDefi, Volo Vault & More | BlockSec Weekly
Security Insights

~$7.04M Lost: GiddyDefi, Volo Vault & More | BlockSec Weekly

This BlockSec weekly security report covers eight attack incidents detected between April 20 and April 26, 2026, across Ethereum, Avalanche, Sui, Base, HyperLiquid, and MegaETH, with total estimated losses of approximately $7.04M. The highlighted incident is the $1.3M GiddyDefi exploit, where the attacker did not break any cryptography or use a flash loan but simply replayed an existing on-chain EIP-712 signature with the unsigned `aggregator` and `fromToken` fields swapped out for a malicious contract, demonstrating how partial signature coverage turns any historical signature into a generic permit. Other incidents include a $3.5M Volo Vault operator key compromise on Sui, a $1.5M Purrlend privileged-role takeover, a $413K SingularityFinance oracle misconfiguration, a $142.7K Scallop cross-pool index injection, a $72.35K Kipseli Router decimal mismatch, a $50.7K REVLoans (Juicebox) accounting pollution, and a $64K Custom Rebalancer arbitrary-call exploit.

Weekly Web3 Security Incident Roundup | Apr 13 – Apr 19, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Apr 13 – Apr 19, 2026

This BlockSec weekly security report covers four attack incidents detected between April 13 and April 19, 2026, across multiple chains such as Ethereum, Unichain, Arbitrum, and NEAR, with total estimated losses of approximately $310M. The highlighted incident is the $290M KelpDAO rsETH bridge exploit, where an attacker poisoned the RPC infrastructure of the sole LayerZero DVN to fabricate a cross-chain message, triggering a cascading WETH freeze across five chains and an Arbitrum Security Council forced state transition that raises questions about the actual trust boundaries of decentralized systems. Other incidents include a $242K MMR proof forgery on Hyperbridge, a $1.5M signed integer abuse on Dango, and an $18.4M circular swap path exploit on Rhea Finance's Burrowland protocol.