> ## Documentation Index
> Fetch the complete documentation index at: https://docs.optimism.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 결함 증명 프로그램 개발

이 장에서는 [Kona][kona]가 지원하는 커스텀 FPVM 타깃 위에서 [결함 증명 프로그램(Fault Proof Program)](https://specs.optimism.io/fault-proof/index.html#fault-proof-program)을
개발하는 방법을 개괄적으로 설명합니다.

상위 수준에서 보면, 결함 증명 프로그램은 일반적인 `no_std` Rust 프로그램과 크게 다르지 않습니다. 커스텀 엔트리포인트가 제공되며, 프로그램은
커스텀 타깃으로 컴파일된 후 FPVM에서 실행됩니다.

결함 증명 프로그램은 3단계로 구성됩니다.

1. **프롤로그(Prologue)**: 프로그램이 메모리에 로드되고 초기 상태가 설정되는 부트스트래핑 단계입니다. 이 단계에서 프로그램의 초기
   상태가 FPVM의 메모리에 기록되고, 프로그램의 엔트리포인트가 설정됩니다.
2. **실행(Execution)**: 프로그램이 FPVM에서 실행되는 주요 실행 단계입니다. 이 단계에서 프로그램의 엔트리포인트가 호출되고,
   프로그램은 종료될 때까지 실행됩니다.
3. **에필로그(Epilogue)**: 프로그램의 최종 상태를 FPVM의 메모리에서 읽어 오는 마무리 단계입니다. 이 단계에서 프로그램의 최종 상태를
   검사하고 상태 전이의 속성을 검증합니다.

이어지는 섹션에서는 각 단계에 대한 보다 자세한 개요와 함께, 자체 결함 증명 프로그램을 개발하기 위해 Kona가 제공하는
도구와 추상화를 설명합니다.

[kona]: https://github.com/ethereum-optimism/optimism/tree/develop/rust/kona
