RAPO-Sol: 리포지토리 레벨 솔리디티 코드 생성을 위한 검색 증강 선호도 최적화
요약
본 논문은 스마트 계약의 보안성을 고려하여 리포지토리 레벨 솔리디티 코드 생성을 위한 RAPO-Sol 프레임워크를 제안합니다. 이 프레임워크는 검색 증강 미세 조정(RAFT)과 직접 선호도 최적화(DPO)라는 2단계 학습 방식을 결합했습니다. 실험 결과, RAFT와 SAP 기반 DPO의 조합이 기존 지도 미세 조정 방식보다 솔리디티 코드 생성에서 우수한 성능을 보였습니다.
핵심 포인트
- RAPO-Sol은 리포지토리 레벨 솔리디티 생성을 위한 2단계 학습 프레임워크입니다.
- RAFT는 검색 증강으로 패턴 학습을 돕고, 추론 시에는 검색 과정 없이 작동합니다.
- SAP 기반 DPO는 의미적으로 결함 있는 대안보다 참고 계약을 선호하도록 모델을 훈련시킵니다.
솔리디티(Solidity)로 작성된 스마트 계약은 자산, 권한 및 되돌릴 수 없는 상태 변경을 관리하므로, 코드 생성은 유용하면서도 보안적으로 매우 중요합니다. 리포지토리 레벨 솔리디티 생성이 어려운 이유는 모델이 상태 변수, 수정자(modifiers), 이벤트(events), 상속(inheritance), 외부 호출(external calls), 접근 제어 로직 전반에 걸쳐 일관성을 유지하며 완전한 계약이나 라이브러리를 합성해야 하기 때문입니다. 본 논문에서는 리포지토리 레벨 솔리디티 코드 생성을 위한 2단계 학습 프레임워크인 RAPO-Sol을 제시합니다. 첫째, 검색 증강 미세 조정(Retrieval-Augmented Fine-Tuning, RAFT)은 각 학습 입력에 유사한 솔리디티 예시를 추가하여 모델이 반복적인 계약 레벨 패턴을 학습하도록 돕는 동시에 추론 시점에는 검색 과정 없이 작동하게 합니다. 둘째, 직접 선호도 최적화(Direct Preference Optimization, DPO)는 모델이 참고 계약(reference contracts)을 유사하지만 의미적으로 결함이 있는 대안보다 더 선호하도록 훈련합니다. 우리는 솔리디티 의미-앵커 교란(Solidity Semantic-Anchor Perturbation, SAP)을 사용하여 거부된 샘플을 구성하는데, 이는 검증문(validation statements), 가시성 수정자(visibility modifiers), 데이터 위치 키워드(data-location keywords), 컨텍스트 변수(context variables), 결제 작업(payment operations), 그리고 저수준 호출(low-level calls)에 교란을 가합니다. CodeLlama-7B-Instruct, DeepSeek-Coder-6.7B-Instruct, Qwen2.5-Coder-7B-Instruct 모델을 사용하여 SolidityBench에서 수행된 실험 결과, RAFT가 지도 미세 조정(supervised fine-tuning)보다 일관되게 성능을 향상시켰으며, SAP 기반 DPO는 BLEU와 SolidityScore에서 추가적인 이점을 제공함을 보여줍니다. 전체 RAFT+DPO 파이프라인은 세 모델 모두에서 최고의 성능을 달성하여, 학습 중 검색의 상호 보완적 이점과 추론 시점에 검색 비용을 추가하지 않는 솔리디티 인식 선호도 최적화가 결합되었음을 입증합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv Codex (cs.SE)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기