메인 콘텐츠로 건너뛰기

개요

이 가이드는 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의 핵심 로직은 다음과 같습니다.
핵심 포인트:
  • counter를 increment 하는 instruction을 생성합니다
  • 이를 MagicBlock용 ScheduleTask instruction으로 serialize 합니다
  • CPI(Cross-Program Invocation)를 사용해 MagicBlock program을 호출합니다
  • 실제 scheduling과 execution은 MagicBlock program이 처리합니다

스케줄 인자

ScheduleIncrement 컨텍스트

중요: CPI 호출 후 Anchor가 오래된 데이터를 다시 serialize 하지 않도록 Account<Counter> 대신 AccountInfo를 사용합니다.