概览
本指南演示如何在 Anchor 框架下,借助 MagicBlock 的 Ephemeral Rollups(ER) 实现 crank。整体流程如下:- 在 Solana 基础层初始化 counter
- 将 counter account 委托到 Ephemeral Rollup 以获得更快执行
- 调度一个自动递增 counter 的 crank 任务
- 按指定间隔自动执行 crank
- 完成后将 account 取消委托并提交回 Solana 基础层
执行流程
核心组成部分
被调度的函数
假设你想为一个 counter 调度下面这个简单的递增指令。调度递增函数
核心的 crank 调度逻辑如下:- 创建一个用于递增 counter 的指令
- 将其序列化为发送给 MagicBlock 的
ScheduleTask指令 - 使用 CPI(Cross-Program Invocation)调用 MagicBlock program
- 由 MagicBlock program 负责实际的调度与执行
调度参数
ScheduleIncrement 上下文
AccountInfo 而不是 Account<Counter>,以避免 Anchor 在 CPI 调用后重新序列化过期数据。
