개요
이 가이드는 Anchor 프레임워크와 MagicBlock의 Ephemeral Rollups(ER) 를 사용해 cranks를 구현하는 방법을 설명합니다. 전체 흐름은 다음과 같습니다.- Solana base layer에서 counter를 초기화합니다
- 더 빠른 실행을 위해 counter account를 Ephemeral Rollup에 delegate 합니다
- counter를 자동으로 increment 하는 crank task를 schedule 합니다
- 지정된 간격으로 crank를 자동 실행합니다
- 작업이 끝나면 account를 undelegate 하여 Solana base layer로 되돌립니다
실행 흐름
핵심 구성 요소
스케줄 대상 함수
예를 들어, counter에 대해 다음과 같은 단순한 increment instruction을 schedule 하고 싶다고 해보겠습니다.Increment 스케줄 함수
crank scheduling의 핵심 로직은 다음과 같습니다.- counter를 increment 하는 instruction을 생성합니다
- 이를 MagicBlock용
ScheduleTaskinstruction으로 serialize 합니다 - CPI(Cross-Program Invocation)를 사용해 MagicBlock program을 호출합니다
- 실제 scheduling과 execution은 MagicBlock program이 처리합니다
스케줄 인자
ScheduleIncrement 컨텍스트
Account<Counter> 대신 AccountInfo를 사용합니다.
