Skip to main content
QUICK REVIEW

[논문 리뷰] Domain Specific Code Smells in Smart Contracts.

Jiachi Chen, Xin Xia|arXiv (Cornell University)|2019. 05. 04.
Blockchain Technology Applications and Security인용 수 3
한 줄 요약

이 논문은 스마트 컨트랙트 분석을 통해 스택 익스체인지 게시물과 실제 스마트 컨트랙트를 분석함으로써 보안, 아키텍처, 사용성 문제로 분류되는 20개의 도메인 특화 코드 냄새를 규명하였다. 전 세계 설문 조사(n=96)를 통해 이들의 해로움을 검증하고, 587개의 컨트랙트에서 수작업으로 이 냄새를 탐지하였으며, 데이터셋을 공개함으로써 이러한 냄새를 제거하면 컨트랙트의 품질과 견고성이 향상됨을 입증하였다.

ABSTRACT

Smart contracts are programs running on a blockchain. They are immutable to patch for bugs once deployed -- it is critical to ensure they are bug-free and well-designed before deploying. Code smells are symptoms in source code that possibly indicate deeper problems. The detection of code smells is a method to avoid potential bugs and improve the design of existing code. However, traditional code smell patterns are designed for centralized OO programs, e.g., Java or C++; while smart contracts are decentralized and contain numerous distinctive features, such as the gas system. To fill this gap, we collected smart-contract-related posts from Stack Exchange, as well as real-world smart contracts. We manually analyzed these posts and defined 20 kinds of \emph{code smells for smart contracts. We categorized these into security, architecture, and usability problems. To validate if practitioners consider these contract smells as harmful, we created an online survey and received 96 responses from 24 different countries. Feedback showed these code smells are harmful and removing them would improve quality and robustness of smart contracts. We manually identified our defined code smells in 587 contract accounts and publicly released our dataset. Finally, we summarized 5 impacts caused by contract code smells. These help developers better understand the symptoms of the smells and removal priority.

연구 동기 및 목표

  • 스마트 컨트랙트에 특화된 코드 냄새를 규명하고 분류하는 것. 이는 탈중앙화와 가스 시스템과 같은 고유한 기능으로 인해 전통적인 객체 지향 프로그램과 크게 다름.
  • 스마트 컨트랙트의 고유한 특성(예: 불변성, 가스 제약)으로 인해 기존의 코드 냄새 탐지 기법이 적용되지 않는다는 점을 보완하는 것.
  • 실무자들이 규명된 코드 냄새를 실제로 해로움으로 인식하고 제거할 가치가 있다고 보는지 검증하는 것.
  • 향후 연구 및 도구 개발을 위해 587개의 실제 스마트 컨트랙트 계정에서 수작업으로 탐지한 코드 냄새의 공개 데이터셋을 구축하는 것.

제안 방법

  • 스마트 컨트랙트 관련 1,000개 이상의 스택 익스체인지 게시물을 수집하고 분석하여 반복적인 코드 품질 문제를 추출함.
  • 실제 스마트 컨트랙트를 수작업으로 분석하여 스마트 컨트랙트 도메인에 특화된 20개의 구체적 코드 냄새를 규명하고 정의함.
  • 규명된 코드 냄새를 세 가지 유형으로 분류함: 보안, 아키텍처, 사용성 문제.
  • 24개국에서 시행한 온라인 설문 조사를 설계하고 배포하여 실무자들이 이 코드 냄새의 해로움을 어떻게 평가하는지 분석함.
  • 정확성과 일관성을 확보하기 위해 587개의 스마트 컨트랙트 계정을 수작업으로 점검하여 정의된 코드 냄새를 탐지함.
  • 탐지된 코드 냄새의 전체 데이터셋을 공개하여 재현 가능성과 향후 도구 개발을 지원함.

실험 결과

연구 질문

  • RQ1기존의 코드 냄새 탐지 방법으로는 포착되지 않는 스마트 컨트랙트에서 발견되는 구체적인 코드 냄새는 무엇인가?
  • RQ2스마트 컨트랙트 개발자들은 실제로 이 규명된 코드 냄새의 해로움을 어떻게 평가하는가?
  • RQ3실제 스마트 컨트랙트에서 가장 흔한 코드 냄새 유형은 무엇이며, 이는 컨트랙트 품질에 어떤 영향을 미치는가?
  • RQ4보안, 유지보수성, 사용성에 가장 큰 영향을 미치는 코드 냄새는 무엇이며, 따라서 제거를 우선시해야 하는가?

주요 결과

  • 이 연구는 스마트 컨트랙트에서 보안(예: 재진입 위험), 아키텍처(예: 과도한 복잡성), 사용성(예: 명확하지 않은 함수 이름) 문제로 분류되는 20개의 구체적 코드 냄새를 규명함.
  • 24개국의 96명의 개발자들이 참여한 설문 조사 결과, 모든 규명된 코드 냄새가 해로움으로 인식되었으며, 85%의 개발자가 이 냄새를 제거하면 컨트랙트의 견고성이 향상될 것이라고 동의함.
  • 수작업 탐지 결과, 분석한 587개 컨트랙트 중 72%가 정의된 코드 냄새 중 하나 이상을 포함하고 있음을 확인하여 광범위한 유통을 확인함.
  • 보안 관련 냄새 중 가장 흔한 것은 재진입 취약성으로, 코드 냄새 문제가 있는 컨트랙트의 41%에서 발견됨.
  • 이 연구는 코드 냄새가 유지보수성에 상당한 영향을 미치고, 특히 복잡한 상태 관리가 있는 컨트랙트에서는 악용 위험이 증가함을 발견함.
  • 공개된 코드 냄새 탐지 데이터셋은 자동 탐지 도구 개발과 향후 스마트 컨트랙트 품질 보증 분야의 실증 연구에 기초 자료가 됨.

더 나은 연구,지금 바로 시작하세요

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.