Skip to main content
QUICK REVIEW

[논문 리뷰] Deductive Proof of Ethereum Smart Contracts Using Why3

Zeinab Nehaï, François Bobot|arXiv (Cornell University)|2019. 04. 25.
Blockchain Technology Applications and Security참고 문헌 13인용 수 12
한 줄 요약

이 논문은 Why3라는 추론 검증 도구를 사용하여 산업용 이더리움 스마트 계약에 대한 형식적 검증 프레임워크를 제안한다. Solidity 계약을 WhyML로 인코딩하고, 안전성 성질(예: 런타임 오류 부재 및 정확한 토큰 이전)을 명시한 후 자동 정리 증명기로 검증하며, 기계어 코드로 컴파일하면서 가스 소비량을 추정한다. 주요 기여는 복잡한 실제 스마트 계약에 대해 형식적 보장을 제공하는 Why3의 타당성을 입증하는 데 있다.

ABSTRACT

A bug or error is a common problem that any software or computer program may encounter. It can occur from badly writing the program, a typing error or bad memory management. However, errors can become a significant issue if the unsafe program is used for critical systems. Therefore, formal methods for these kinds of systems are greatly required. In this paper, we use a formal language that performs deductive verification on an Ethereum Blockchain application based on smart contracts, which are self-executing digital contracts. Blockchain systems manipulate cryptocurrency and transaction information. Therefore , if a bug occurs in the blockchain, serious consequences such as a loss of money can happen. Thus, the aim of this paper is to propose a language dedicated to deductive verification, called Why3, as a new language for writing formal and verified smart contracts, thereby avoiding attacks exploiting such contract execution vulnerabilities. We first write a Why3 smart contracts program; next we formulate specifications to be proved as absence of RunTime Error properties and functional properties, then we verify the behavior of the program using the Why3 system. Finally we compile the Why3 contracts to the Ethereum Virtual Machine (EVM). Moreover, we give a set of generic mathematical statements that allows verifying functional properties suited to any type of smart contracts holding cryptocurrency, showing that Why3 can be a suitable language to write smart contracts. To illustrate our approach, we describe its application to a realistic industrial use case.

연구 동기 및 목표

  • 스마트 계약의 버그로 인한 재정적 손실과 같은 임계적인 보안 위험을 해결하기 위해 형식적 검증을 적용한다.
  • Why3라는 추론 검증 플랫폼이 복잡한 스마트 계약의 명세, 검증, 컴파일에 효과적으로 사용될 수 있는지 평가한다.
  • 간단한 계약을 넘어서 다수의 데이터 유형(예: 토큰, 주소, 잔액)과 복잡한 논리를 포함하는 기능적 성질을 포함한 형식적 검증을 확장한다.
  • 형식적 검증 파이프라인 내에서 실행 비용과의 연계를 고려한 가스 소비 추정 메커니즘을 제공한다.

제안 방법

  • Why3 내부의 고수준 형식 언어인 WhyML로 블록체인 에너지 마켓플레이스(BEMP) 애플리케이션의 기존 Solidity 기반 스마트 계약을 인코딩한다.
  • 예외 없는 런타임 오류, 유효한 거래 조건, 정확한 잔액 이전과 같은 기능적 성질을 사전 조건, 사후 조건 및 관계 불변식을 사용하여 명시한다.
  • Why3의 통합 정리 증명기(예: Alt-ergo, Z3, CVC4)를 사용하여 정확성과 안전성에 대한 증명 의무를 자동으로 해소한다.
  • 함수에 `@evm:gas_checking` 애너테이션을 사용하여 검증 중에 계산 비용을 추정하는 가스 비용 주석을 삽입한다.
  • Why3의 코드 생성 파이프라인을 사용하여 검증된 Why3 계약을 EVM 호환 바이트코드로 컴파일한다.
  • 각 연산의 가스 사용량을 추적하고 함수 호출 간에 누적하는 커스터마이징된 가스 비용 모델을 통합한다.

실험 결과

연구 질문

  • RQ1Why3는 복잡한 논리와 다수의 데이터 유형을 포함한 산업 규모의 이더리움 스마트 계약을 효과적으로 형식적으로 검증하는 데 사용될 수 있는가?
  • RQ2스마트 계약을 위한 추론 검증 프레임워크 내에서 가스 소비는 얼마나 정확하게 추정될 수 있는가?
  • RQ3Why3를 사용한 형식적 검증이 실제 애플리케이션(예: BEMP)에서 런타임 오류를 방지하고 기능 정확성을 보장할 수 있는가?
  • RQ4Solidity에 비해 WhyML에서 복잡한 성질(예: 주문 매칭, 잔액 이전)을 명시할 때의 오버헤드와 표현력은 어떠한가?
  • RQ5Why3 파이프라인은 명세에서 EVM 컴파일에 이르기까지 엔드 투 엔드 검증을 어느 정도 지원할 수 있는가?

주요 결과

  • Why3 프레임워크는 BEMP 애플리케이션의 복잡한 거래 계약을 성공적으로 검증하였으며, 잔액 처리, 토큰 이전, 주문 매칭을 정확히 처리하는 데 성공했다.
  • 형식적 명세는 배열 인덱스 초과 접근 및 0으로 나누기 등의 런타임 오류 부재를 성공적으로 입증하였다.
  • 시스템은 마켓 참가자 간의 이더 및 그린 토큰 이전과 같은 기능적 성질을 정확히 검증하였다.
  • 주석 기반 비용 모델을 사용하여 가스 소비를 정확하게 추정하였으며, 각 연산의 가스 비용(예: 128은 목록 순회, 185는 할당)이 검증 과정에 통합되었다.
  • 검증된 계약은 성공적으로 EVM 바이트코드로 컴파일되어 명세에서 배포에 이르기까지의 전 과정에서 신뢰성 있는 흐름을 입증하였다.
  • 이러한 접근은 다수의 사용자와 참가자가 참여하는 에너지 거래 시스템에 대해 확장 가능성을 입증하였으며, 단순한 계약을 넘어서는 적용 가능성을 보여주었다.

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

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

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

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