メインコンテンツへスキップ

概要

このガイドでは、Anchor フレームワークと MagicBlock の Ephemeral Rollups(ER) を使って cranks を実装する方法を説明します。流れは次のとおりです。
  1. Solana base layer 上で counter を初期化する
  2. 高速実行のため counter account を Ephemeral Rollup に delegate する
  3. counter を自動 increment する crank task を schedule する
  4. 指定間隔で crank を自動実行する
  5. 完了後に account を undelegate して Solana base layer に戻す

実行フロー

コアコンポーネント

スケジュール対象の関数

たとえば、counter に対して次のような単純な increment instruction を schedule したいとします。

Increment をスケジュールする関数

crank scheduling の中心となるロジックは次のとおりです。
Key Points:
  • counter を increment する instruction を作成する
  • それを MagicBlock 向けの ScheduleTask instruction に serialize する
  • CPI(Cross-Program Invocation)で MagicBlock program を呼び出す
  • 実際の scheduling と execution は MagicBlock program が担当する

スケジュール引数

ScheduleIncrement の Context

重要: CPI 呼び出し後に Anchor が古いデータを再 serialize しないよう、Account<Counter> ではなく AccountInfo を使っています。