마스터링 이더리움(Mastering Ethereum) 8장 - 스마트 컨트랙트와 바이퍼

JinJinJJara·2021년 1월 15일
0

Mastering_Ethereum

목록 보기
4/11

스크립토 6기 하진원입니다.
스크립토 방학 스터디로 마스터링 이더리움 공부하고 있습니다.

바이퍼(vyper)란?

바이퍼는 EVM을 위한 프로그래밍 언어로 개발자가 읽기 쉽고 안전한 코드를 작성하기 위해 만들어졌다.

솔리디티와 비교

솔리디티의 기능들을 생략하여 안전성을 도모하였다.
(자유도를 낮추고 보안도를 높였다.)

변경자

변경자에서 다른 함수를 호출하는 경우 해당 함수를 파악하기가 힘들기 때문에 생략하였다.

클래스 상속

인라인 어셈블리

인라인 어셈블리는 개발자가EVM에 직접적으로 접근할 수 있게 해준다.

3 0x80 mload add 0x80 mstore

가독성이 떨어지기 때문에 지원하지 않는다.

함수 오버로딩

함수 오버로딩을 통해 개발자는 여러 함수를 같은 이름으로 작성할 수 있게 하고 인수를 통해 구분하게 한다.
동일한 함수를 사용하는 것은 혼란스럽기 때문에 지원하지 않는다.

변수 형변환

암시적 형변환을 허용하지 않고 명시적 형변환을 위한 convert 함수를 제공한다.
이를 통해 정보 손실을 없애고 개발자에게 책임을 부여한다.

전제조건과 사후 조건

전제 조건, 사후 조건, 상태 변경을 명시적으로 처리한다.
이에 따라 개발자는 세가지를 고려해야 한다.

  • 조건
    이더리움 상태 변수의 현재 상태
  • 효과
    코드 실행 결과 상태 변수에 영향이 있는가?
  • 상호작용
    코드 실행

이 결과 코드의 가독성이 높아진다.

장식자

장식자는 각 함수의 시작 부분에 사용한다.
@private, @public, @constant, @payable가 있다.

  • @private
    컨트랙트 외부에서 함수에 접근하지 못한다.(비공개 함수)
  • @public
    함수를 공개적으로 볼 수 있고 실행할 수 있다.(공개 함수)
  • @contant
    상태 변수를 변경할 수 없다.
  • @payable
    값을 전송할 수 있다.

함수, 변수 순서

함수에 의해 호출되기 이전에 호출되는 함수와 변수를 미리 선언해야 한다.

결론

바이퍼는 유연성, 자유도를 제한하는 반면에 정확성, 보안성을 강조하는 언어이다. 이로써 개발자는 더 안전한 스마트 컨트랙트를 작성할 수 있다.

profile
갈팡질팡 공부하는 중입니다

0개의 댓글