블록체인은 피어-투-피어 네트워크 위에서 사용자 간의 거래를 기록하는 분산 원장이다. 그중에서도 이더리움(Ethereum)은 가장 널리 사용되는 범용 플랫폼이며, 스마트 컨트랙트의 지원으로 인해 탈중앙화 애플리케이션(decentralized applications, DApps)이라 불리는 새로운 형태의 응용이 등장하였다. 전형적인 DApp은 오프체인 프런트엔드와 온체인 백엔드의 아키텍처를 가지며, 프런트엔드는 예컨대 체인 데이터를 획득하거나 트랜잭션을 수행하는 등 백엔드 네트워크와의 상호작용이 필요하다. 따라서 이더리움 노드는 공식 RPC 사양을 구현하고, 프런트엔드에 대해 일관된 일련의 RPC 메서드를 제공한다. 그러나 해당 사양은 두 가지 점에서 충분하지 않다. (1) 비결정적 이벤트 처리에 대한 명확화가 부족하고, (2) 잘못된 인자에 대한 사양이 결여되어 있다. 이러한 불충분으로 인해 발생하는 어떤 편차도 효과적으로 드러내기 위해, 본 논문은 RPC 서비스 관점에서 네 가지 주요 노드 구현에 대해 자동으로 차등(differential) 테스트를 수행하는 EtherDiffer를 제안한다. EtherDiffer는 먼저 다중 동시 트랜잭션과 전파 지연을 통해 비결정적 체인을 생성한다. 그다음, 속성 기반 생성(property-based generation)과 타입 보존 변이(type-preserving mutation)라는 핵심 기법을 적용하여 의미적으로는 유효하면서도, 동시에 의미적으로는 무효이지만 실행 가능한 테스트 케이스를 모두 생성한다. EtherDiffer는 목표 노드에서 테스트 케이스를 실행하고 오류 처리나 반환 값에서의 어떠한 편차도 보고한다. 평가는 테스트 케이스 생성 기법의 유효성을 입증하였으며, 각각의 성공 비율은 98.8%와 95.4%로 나타났다. 또한 EtherDiffer는 충돌 및 서비스 거부(denial-of-service) 버그와 같은 11개의 구현 버그를 포함하여 48개의 서로 다른 편차 유형을 탐지하였다. 우리는 탐지된 44개 유형을 사양 및 노드 개발자에게 보고하였고, 이에 대한 승인 및 버그 패치를 받았다. 마지막으로 EtherDiffer는 모든 기술적 측면에서 공식 노드 테스트 도구보다 유의미하게 우수하였다. 우리는 본 연구 결과가 노드 간 불일치를 감소시켜 보다 안정적인 DApp 생태계에 기여할 수 있다고 믿는다.
*본 초록은 AI를 통해 원문을 번역한 내용입니다. 정확한 내용은 하기 원문에서 확인해주세요.