random_u32, random_u8_with_range, random_bool 같은 helper utilities를 사용하면 [u8; 32] 출력을 실사용 가능한 값으로 쉽게 변환할 수 있습니다. request와 consume 단계가 ephemeral execution window 내부에서 일어나므로, 사용자는 외부 서버에 의존하지 않고도 검증 가능한 공정성을 갖춘 실시간 결과를 얻을 수 있습니다.
흐름

- 여러분의 프로그램은 CPI로 MagicBlock VRF program을 호출하고 queue에 request를 추가합니다.
- 랜덤니스 request가 queue에 들어가면 oracle이 request를 처리하고 랜덤니스 계산을 수행합니다.
- 완료되면 결과와 proof를 MagicBlock VRF program에 반환합니다. proof를 검증한 뒤 VRF program은 사전 정의된 함수를 통해 여러분의 프로그램으로 callback하여 랜덤니스를 “consume”합니다.
MagicBlock의 VRF Program은 오픈소스이며 감사를 거쳤습니다. 제품 요약은 Solana VRF 개요를 참고하세요.
오라클 큐
모든 랜덤니스 request는 오라클 큐(oracle queue) 계정(RequestRandomnessParams 의 oracle_queue 필드)을 지정합니다. 모든 Solana 계정과 마찬가지로 이 큐도 Solana 에 존재하지만, 위임된(delegated) 큐는 ephemeral rollup 내부에서만 직접 쓸 수 있고 위임되지 않은 큐는 베이스 레이어에서 직접 쓸 수 있습니다. 트랜잭션이 실행되는 위치에 맞는 큐에서 랜덤니스를 요청하세요 — Solana 에서는 베이스 레이어 큐를, ephemeral rollup 내부에서는 위임된 큐를 사용합니다. 가능하면 주소를 하드코딩하지 말고 ephemeral_vrf_sdk::consts 의 상수를 참조하세요.
| 네트워크 | 베이스 레이어 큐 | 위임된 큐(ephemeral rollup) |
|---|---|---|
| Mainnet | DEFAULT_QUEUECuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh | DEFAULT_EPHEMERAL_QUEUE5hBR571xnXppuCPveTrctfTU7tJLSN94nq7kv7FRK5Tc |
| Devnet | DEFAULT_QUEUECuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh | DEFAULT_EPHEMERAL_QUEUE5hBR571xnXppuCPveTrctfTU7tJLSN94nq7kv7FRK5Tc |
| Localnet | DEFAULT_TEST_QUEUEGKE6d7iv8kCBrsxr78W3xVdjGLLLJnxsGiuzrsZCGEvb | DEFAULT_EPHEMERAL_TEST_QUEUESc9MJUngNbQXSXGP3F67KvKwVnhaYn6kcioxXNVowYT |
Mainnet 과 Devnet 은 동일한 기본 큐 주소를 사용합니다 — 연결하는 클러스터만 다릅니다. Localnet 은 로컬 검증자가 Devnet 에서 복제하는 전용 테스트 큐를 사용하며,
DEFAULT_TEST_QUEUE / DEFAULT_EPHEMERAL_TEST_QUEUE 상수는 VRF SDK 에 포함되어 있습니다.Audit
전체 감사 보고서 읽기
Quickstart
랜덤니스 기능 추가 방법 배우기

