Skip to main content
QUICK REVIEW

[논문 리뷰] Under-Optimized Smart Contracts Devour Your Money

Ting Chen, Xiaoqi Li|arXiv (Cornell University)|2017. 03. 11.
Blockchain Technology Applications and Security참고 문헌 9인용 수 17
한 줄 요약

이 논문은 이더리움 스마트 컨트랙트의 주요 컴파일러인 솔리디티가 최적화되지 않은 프로그래밍 패턴으로 인해 불필요한 금전적 비용을 유발하는 가스 비효율적인 바이트코드를 생성한다는 점을 규명한다. 저자들은 심볼릭 실행 기반의 도구인 GASPER를 제안하여 세 가지 주요 가스 비용이 큰 패턴—불필요한 코드, 투명한 조건문, 루프 내 반복적인 SLOAD/SSTORE—를 자동으로 탐지한다. 분석한 스마트 컨트랙트의 93.5%, 90.1%, 80%가 각각 이러한 문제를 앓고 있음을 발견하였다.

ABSTRACT

Smart contracts are full-fledged programs that run on blockchains (e.g., Ethereum, one of the most popular blockchains). In Ethereum, gas (in Ether, a cryptographic currency like Bitcoin) is the execution fee compensating the computing resources of miners for running smart contracts. However, we find that under-optimized smart contracts cost more gas than necessary, and therefore the creators or users will be overcharged. In this work, we conduct the first investigation on Solidity, the recommended compiler, and reveal that it fails to optimize gas-costly programming patterns. In particular, we identify 7 gas-costly patterns and group them to 2 categories. Then, we propose and develop GASPER, a new tool for automatically locating gas-costly patterns by analyzing smart contracts' bytecodes. The preliminary results on discovering 3 representative patterns from 4,240 real smart contracts show that 93.5%, 90.1% and 80% contracts suffer from these 3 patterns, respectively.

연구 동기 및 목표

  • 가스 효율적인 프로그래밍 방법론이 존재하는 바에도 불구하고 이더리움 스마트 컨트랙트가 불필요하게 높은 가스 비용을 지불하는 이유를 조사하기 위해.
  • 권장 컴파일러를 사용하고 있음에도 불구하고 과도한 가스 소비를 유발하는 솔리디티 내 공통된 프로그래밍 패턴을 특정하기 위해.
  • 소스 코드 접근 없이도 실제 스마트 컨트랙트에서 이러한 가스 비용이 큰 패턴을 자동으로 탐지할 수 있는 도구를 개발하기 위해.
  • 이러한 비효율성의 보편성을 이더리움 생태계 전반에 걸쳐 측정하여 재정적 낭비의 규모를 입증하기 위해.

제안 방법

  • 소스 코드가 필요 없이 심볼릭 실행을 사용하여 솔리디티가 생성한 바이트코드를 분석하여 가스 비효율적인 패턴을 탐지한다.
  • 7개의 가스 비용이 큰 프로그래밍 패턴을 두 그룹으로 분류한다: 불필요한 코드 관련 패턴과 루프 관련 패턴.
  • 심볼릭 실행을 활용하여 컴iles된 바이트코드에서 세 가지 대표적인 가스 비용이 큰 패턴을 자동으로 탐지하는 GASPER 도구를 구현한다.
  • 2016년 11월 5일까지 배포된 4,240개의 실제 스마트 컨트랙트 데이터셋에 GASPER를 적용하여 패턴의 보편성을 측정한다.
  • 정적 분석과 심볼릭 실행을 사용하여 루프 내 불필요한 코드, 투명한 조건문, 반복적인 SLOAD/SSTORE 연산의 존재를 확인한다.
  • 실제 사례 연구를 통해 오픈소스 컨트랙트(예: FirstContract 및 Ballot)에 대한 검증을 통해 탐지 가능한 가스 절감 효과를 입증한다.

실험 결과

연구 질문

  • RQ1솔리디티로 컴iles된 스마트 컨트랙트가 얼마나 많은 가스 비효율적인 바이트코드 패턴을 포함하고 있으며, 이로 인해 거래 및 배포 비용이 증가하는가?
  • RQ2솔리디티 내 어떤 특정 프로그래밍 패턴이 과도한 가스 소비를 유발하며, 컴iles된 바이트코드에서 어떻게 자동으로 탐지할 수 있는가?
  • RQ3이러한 가스 비용이 큰 패턴은 이더리움 스마트 컨트랙트 생태계 전반에서 얼마나 보편적인가?
  • RQ4소스 코드 접근 없이도 심볼릭 실행을 효과적으로 사용하여 바이트코드 내 가스 비효율적인 패턴을 탐지할 수 있는가?
  • RQ5실제 컨트랙트에서 이러한 패턴을 최적화할 경우 재정적 영향은 어느 정도일 수 있는가?

주요 결과

  • 분석한 4,240개 스마트 컨트랙트 중 93.5%가 불필요한 코드 또는 투명한 조건문(패턴 1 및 2)을 포함하여 솔리디티 컴파일된 코드에서 광범위한 비효율성이 존재함을 시사한다.
  • 90.1%의 컨트랙트가 루프 내에서 반복적인 SLOAD 연산을 포함하고 있으며, 이는 SLOAD을 루프 외부로 이동시켜 가스 사용량을 줄일 수 있음을 의미한다.
  • 80%의 컨트랙트가 루프 내에서 반복적인 SSTORE 연산을 보이며, 이는 스택 변수에 값을 캐시함으로써 최적화할 수 있다.
  • Ballot에 대한 사례 연구에서는 단일 SLOAD 연산을 루프 외부로 이동시킴으로써 반복당 가스 소비를 20회에서 1회로 줄여 상당한 절감 효과를 얻을 수 있었다.
  • 조언된 솔리디티 컴파일러를 사용하고 있음에도 불구하고 스마트 컨트랙트의 상당 부분이 가스 효율성 측면에서 최적화되어 있지 않아 사용자 및 개발자에게 피할 수 없는 재정적 손실을 초래하고 있음을 드러냈다.
  • 이러한 패턴이 이더리움 생태계 전반에 널리 퍼져 있음을 고려할 때, 컴파일러 및 개발 도구 수준에서 체계적인 최적화 노력이 필요하다.

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

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

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

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