『Mastering Ethereum』 chapter7 스마트 컨트랙트와 솔리디티 파트를 공부했다.
이미 여러번 언급했듯 이더리움에는 외부 소유 계정(EOA)과 컨트랙트 계정이 있고 EOA는 이더리움 플랫폼의 외부에 있는 지갑 애플리케이션 같은 소프트웨어를 통해 사용자가 제어한다. 반대로, 컨트랙트 계정은 이더리움 가상 머신에 의해 실행되틑 프로그램 코드(스마트 컨트랙트)가 제어한다.
책에서는 스마트 컨트랙트를 다음과 같이 정의한다.
스마트 컨트랙트란 불별적인(immutable) 컴퓨터 프로그램을 지칭하는데, 이 프로그램은 이더리움 네트워크 프로토콜(즉, 탈중앙화된 이더리움 월드 컴퓨터)의 일부인 이더리움 가상 머신의 컨텍스트 상에서 결정론적으로(deterministically)작동한다.
말이 참 어렵다. 내가 이해하고 있는 스마트 컨트랙트는 미리 정의된 조건이 충족되면 블록체인 안에 저장된 프로그램이 작동하는 것 정도이다.
컨트랙트는 트랜잭션에 의해 호출된 경우에만 실행된다.
이더리움의 모든 스마트 컨트랙트는 EOA에서 시작된 트랜잭션으로 인해 실행된다. 컨트랙트는 다른 컨트랙트를 호출할 수 있고 그 컨트랙트는 또 다른 컨트랙트를 호출할 수 있지만, 이러한 체인에서 첫번째 컨트랙트 실행은 항상 EOA로부터 트랜잭션에 의해 호출된다.
트랜잭션은 원자성(atomic)
의 특성을 지니기 때문에 모든 실행이 성공적으로 종료된 경우에만 글로벌 상태(컨트랙트, 계정 등)의 모든 변경사항이 기록되고 전체가 실행된다. 오류로 인해 실행이 실패하면 모든 변경은 트랜잭션이 실행되지 않은 것처럼 롤백(rool back)된다.
스마트 컨트랙트는 일반적으로 솔리디티 같은 고급 언어로 작성된다. 이 책에서도 솔리디티로 스마트 컨트랙트 작성 실습이 진행된다. 예전에 cryptozombies로 솔리디티를 학습한 적이 있지만 기억이 잘 안나기 때문에 복습할겸 솔리디티 문법을 다시 공부했다.
junylee님이 저번에 알려주셨던 youtube 채널 D_one에서 솔리디티 문법 강의를 봤다. 이번주차는 크리스마스도 껴있고 다른 할일도 많아서 강의는 2개밖에 못 들었다. 강의를 들으면서 공부한 내용은 Github에 계속 업데이트할 예정이다.
『Mastering Ethereum』 chapter7 정리한 글
솔리디티 문법 강의 링크
솔리디티 문법 정리해서 업로드 할 Github