Skip to main content

快速访问

binary-prediction

端到端 eATA 托管

rewards-delegated-vrf

Base-layer 提交后付款

spl-tokens

非托管转账
本指南面向持有用户资金,并以 Ephemeral Rollup 速度转移资金的链上程序,例如 DEX、AMM、预测市场、托管合约或游戏。核心模式是:将一个归程序所有的 账户委托给 ER,并由你的程序以 PDA 身份签署 token 转账。
需要从客户端而非链上转移 token?请参阅 快速入门

两种托管模型

下面的演练介绍 eATA 托管;post-commit 变体则位于高级代码片段中。

分步指南

让你的程序获得 eATA 的 authority,将其委托,在 ER 上通过 PDA 签名转移资金,然后结算回 Solana:
1

让程序支持 ER

添加 #[ephemeral] 属性并导入 SDK helper。
2

创建托管 PDA 和 eATA

通过你的托管 PDA 拥有 Ephemeral SPL Token 程序下的 eATA。
3

委托 eATA

通过 CPI 调用 Ephemeral SPL Token 程序,将 eATA 委托给 ER。
4

通过 PDA 签名转移 token

在 rollup 内以托管 PDA 身份签署转账。
5

提交并取消委托

将账户返回 base layer。

托管示例

你可能需要以下软件包,其他版本也可能兼容:

代码片段

  1. 支持 ER 的程序

#[program] 外添加 #[ephemeral],并导入所需的 SDK helper。
⬆️ 返回顶部

  1. 创建 eATA

你的程序拥有一个状态 PDA(例如 Pool),它是资金的 authority。ER 上的托管使用由该 PDA 拥有的 ephemeral ATA(eATA);它在 Ephemeral SPL Token 程序 (SPLxh1LVZzEkX99H6rqYizhytLWPZVV296zyYDPagv2)下由 [owner, mint] 派生。
⬆️ 返回顶部

  1. 委托 eATA

通过 CPI 调用 Ephemeral SPL Token 程序来委托 eATA(DelegateEphemeralAta, discriminator 4)。
不支持将归普通 PDA 所有的 ATA 直接委托给 ER;ER 上的 token 托管必须通过 eATA。 如需委托程序状态(而非 token account),请改用 SDK 的 #[delegate] 宏。
⬆️ 返回顶部

  1. PDA 签名转账

委托 eATA 后,通过 CpiContext::new_with_signer 使用由托管 PDA 签名的 SPL Token CPI 在 rollup 内转移 token。signer seed 为 [POOL_SEED, bump];程序自行授权付款,无需用户签名。
⬆️ 返回顶部

  1. 提交并取消委托

使用 MagicIntentBundleBuilder 提交 ER 状态,并将账户返回 base layer。
⬆️ 返回顶部

高级代码片段

如果你的程序不托管资金,而只是代表用户在两个已委托账户之间转移 token,则无需 PDA signer。 authority 是用户的 Signer,并使用普通的 CpiContext::new
⬆️ 返回顶部

Solana 浏览器

查看你在 Solana 上的交易和账户详情:

Solana 浏览器

官方 Solana 浏览器

Solscan

浏览 Solana 区块链

Solana RPC 提供商

通过现有 RPC 提供商发送交易和请求:

Solana

Free Public Nodes

Helius

Free Shared Nodes

Triton

Dedicated High-Performance Nodes

Solana 验证器仪表盘

查看 Solana 验证器基础设施的实时更新:

Solana Beach

Get Validator Insights

Validators App

Discover Validator Metrics

服务状态

订阅 Solana 与 MagicBlock 的服务状态:

Solana Status

Subscribe to Solana Server Updates

MagicBlock Status

Subscribe to MagicBlock Server Status