Skip to main content
QUICK REVIEW

[논문 리뷰] Truffle tests for free -- Replaying Ethereum smart contracts for transparency

Pieter Hartel, Mark van Staalduinen|arXiv (Cornell University)|2019. 07. 22.
Blockchain Technology Applications and Security참고 문헌 19인용 수 7
한 줄 요약

이 논문은 이더리움 스마트 컨트랙트 트랜잭션에서 재생 가능한 Truffle 테스트 스크립트를 생성하는 도구인 ContractVis를 제안한다. 이는 역사적 트랜잭션을 최소한의 테스트 환경에서 재생함으로써 투명성을 향상시키는 것이다. 재생 과정에서 숨겨진 종속성과 행동 불일치를 드러내었으며, 검증된 컨트랙트의 25%가 부족한 종속성으로 인해 실패함을 확인하여 Etherscan과 같은 블록체인 탐색기에서의 핵심적인 투명성 격차를 드러냈다.

ABSTRACT

The Ethereum blockchain is essentially a globally replicated public database. Programs called smart contracts can access this database. Over 10 million smart contracts have been deployed on the Ethereum blockchain. Executing a method of a smart contract generates a transaction that is also stored on the blockchain. There are over 1 billion Ethereum transactions to date. Smart contracts that are transparent about their function are more successful than opaque contracts. We have therefore developed a tool (ContractVis) to explore the transparency of smart contracts. The tool generates a replay script for the historic transactions of a smart contract. The script executes the transactions with the same arguments as recorded on the blockchain, but in a minimal test environment. Running a replay script provides insights into the contract, and insights into the blockchain explorer that was used to retrieve the contract and its history. We provide five concrete recommendations for blockchain explorers like Etherscan to improve the transparency of smart contracts.

연구 동기 및 목표

  • 역사적 트랜잭션을 최소한의 테스트 환경에서 재생할 수 있도록 함으로써 검증된 이더리움 스마트 컨트랙트의 투명성을 향상시키는 것.
  • 투명성을 떨어뜨리는 숨겨진 종속성과 행동 불일치를 식별하고 시각화하는 것.
  • Etherscan과 같은 블록체인 탐색기가 컨트랙트 검사 및 디버깅 지원을 향상시키기 위한 실질적인 권고 사항을 제공하는 것.
  • 정적 소스 코드 분석만으로는 부족하고, 실제 트랜잭션 입력을 재생하는 것이 더 직관적인 통찰을 제공할 수 있음을 보여주는 것.
  • 재생 중 환경 설정을 수정함으로써 개발자가 '만약에' 시나리오를 실험할 수 있도록 하는 것.

제안 방법

  • Etherscan과 같은 블록체인 탐색기에서 검증된 스마트 컨트랙트의 역사적 트랜잭션 데이터와 인수를 추출한다.
  • 원래의 입력 매개변수를 사용하여 고립된 최소한의 테스트 환경에서 트랜잭션을 재생하는 표준화된 Truffle 테스트 스크립트를 생성한다.
  • 재생 과정은 솔리디티 소스 코드와 표준 Truffle 도구를 사용하며, 역디컴파일링이나 형식적 검증에 의존하지 않는다.
  • 재생 중 실패를 식별하여 다른 컨트랙트나 블록체인 인프라에 대한 종속성을 탐지한다.
  • 환경 변수(예: 블록 타임스탬프)를 수정하여 다양한 조건에서 컨트랙트 동작을 탐색할 수 있도록 상호작용 가능한 실험을 가능하게 한다.
  • 온도도와 같은 시각화 기법을 사용하여 취약점을 직관적으로 시각화하며, 예를 들어 랜덤성 부족 문제를 드러내는 라이트 토너먼트 컨트랙트의 경우를 포함한다.

실험 결과

연구 질문

  • RQ1검증된 이더리움 스마트 컨트랙트 중 얼마나 많은 비율이 다른 컨트랙트나 블록체인 인프라의 종속성이 부족하여 고립된 환경에서 재생에 실패하는가?
  • RQ2블록 타임스탬프와 같은 환경 변수가 스마트 컨트랙트의 동작에 미치는 영향은 무엇이며, 이러한 영향을 재생을 통해 체계적으로 탐색할 수 있는가?
  • RQ3정적 소스 코드 분석과 비교했을 때, 실제 역사적 트랜잭션을 재생함으로써 컨트랙트의 투명성에 대해 어떤 통찰을 얻을 수 있는가?
  • RQ4Etherscan과 같은 현재의 블록체인 탐색기가 주소 인코딩과 오류 메시지 처리에서 투명성에 어떤 실패를 보이는가?
  • RQ5재생 기반 분석이 빈약한 랜덤성이나 상태 泄露 등의 설계 결함을 드러내는 데 있어 전통적인 코드 감사보다 뛰어나다고 할 수 있는가?

주요 결과

  • 테스트한 1,120개의 검증된 스마트 컨트랙트 중 약 25%가 다른 컨트랙트나 블록체인 인프라의 종속성이 부족하여 재생에 실패했다.
  • 샘플의 약 절반은 다양한 잠재적 동작을 유도하는 특수 변수를 사용하여 복잡성을 증가시키고 투명성을 감소시켰다.
  • 10% 이상의 컨트랙트가 블록체인 탐색기인 Etherscan에서 디코딩하지 못하는 특수 주소 인코딩을 사용하여 감사 가능성과 투명성이 감소했다.
  • 大多数의 컨트랙트가 require() 또는 assert() 문으로 실패했을 때도 설명성 있는 오류 메시지를 제공하지 않아 디버깅과 투명성을 제한했다.
  • 온도도와 같은 시각화 기법을 통해 라이트 토너먼트 컨트랙트에서 예측 가능한 랜덤성과 같은 심각한 결함을 직관적으로 탐지할 수 있었으며, 정적 코드 감사보다 명확성 면에서 뛰어났다.
  • 본 연구는 조차도 Etherscan에 검증된 컨트랙트가 예상보다 투명성이 떨어지며, 종속성 탐지 및 오류 메시지 처리 지원 측면에서 탐색기의 격차가 뚜렷하다는 것을 확인했다.

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

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

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

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