솔리디티 프로그래밍 에센셜

이더리움과 블록체인을 위한 스마트 계약 프로그래밍 입문

스마트 계약을 작성하는 가장 강력하고 으뜸가는 프로그래밍 언어인 솔리디티를 배우고 이더리움에서 스마트 계약을 작성, 배포, 테스트하자!

솔리디티는 계약 기반 언어로서 자바스크립트의 영향을 많이 받은 구문을 사용하며, EVM(이더리움 가상 머신)을 위한 코드를 컴파일하도록 설계됐다. 《솔리디티 프로그래밍 에센셜》은 솔리디티로 이더리움을 위한 스마트 계약을 작성하는 법과 블록체인에 대해 차근차근 알려준다.

이 책에서는 블록체인과 이더리움의 주요 개념과 구성 요소를 살펴본다. 이더리움에서 솔리디티 계약을 작성, 테스트, 디버그하는 데 필요한 도구를 설치하는 법을 배우고 솔리디티 소스 파일의 레이아웃과 여러 가지 자료형을 살펴본다. 스마트 계약을 작성하는 데 도움이 되는 연산자, 제어 구조, 자료형을 비롯해 솔리디티의 함수 호출, 반환 타입, 함수 수정자, 객체지향 프로그래밍에 대해 살펴본다. 이벤트 로깅과 예외 처리, 스마트 계약의 테스트와 디버깅 방법도 배운다.

이 책을 읽은 후에는 이더리움에서 스마트 계약을 작성, 배포, 테스트할 수 있게 될 것이다. 이 책은 솔리디티를 가지고 계약을 작성하는 것의 요점을 추려서 빠른 시간 내에 독자의 솔리디티 실력을 높여줄 것이다.

★ 이 책에서 다루는 내용 ★

  • 솔리디티와 이더리움의 기본 개념
  • 솔리디티 언어의 특징
  • 계정을 생성하고 블록체인에 거래를 제출
  • 스마트 계약을 작성하는 데 필요한 언어의 세부사항
  • 스마트 계약을 개발·배포하는 데 사용되는 주요 도구
  • 예외 처리와 오류 확인을 통해 방어적인 코드 작성하기
  • 트러플 기초와 디버그 절차

리테시 모디 (Ritesh Modi)

리테시 모디는 마이크로소프트에서 시니어 기술 에반젤리스트와 지사장을 역임했다. 그는 이더리움과 솔리디티 관련 업무를 통해 기업들을 돕고 조언을 해왔다. 리테시는 컨퍼런스 및 지역 모임에서 블록체인과 솔리디티에 관해 강연한다. 그는 블록체인, 데이터 센터, 애저 봇, 인지 서비스, 데브옵스, 인공지능, 자동화 등의 분야에서 아키텍트, 에반젤리스트, 강연자로 활동하며 공헌함으로써 유명한 리더로 자리매김했다. 그는 다섯 권의 책을 저술했다.

최용

한국방송통신대학교에서 컴퓨터과학을 전공하고, 은행 전산실 운영과 배치 작업 자동화(Workload Automation)를 지원하는 기술자로 일했다. 번역한 책으로는 『익스플로링 라즈베리 파이』(위키북스)가 있다.

  • ▣ 01장: 블록체인, 이더리움, 스마트 계약
    • 블록체인이란 무엇인가?
    • 왜 블록체인인가?
    • 암호화
      • 대칭 암호화 및 복호화
      • 비대칭 암호화 및 복호화
      • 해싱
      • 디지털 서명
    • 이더
    • 가스
    • 블록체인과 이더리움 아키텍처
      • 블록의 연결
      • 거래와 블록의 관계
    • 이더리움 노드
      • EVM
      • 이더리움 채굴 노드
      • 채굴은 어떻게 이뤄지는가?
    • 이더리움 계정
      • 외부 소유 계정
      • 계약 계정
    • 거래
    • 블록
    • 거래의 흐름
    • 계약이란 무엇인가?
    • 스마트 계약이란 무엇인가?
      • 어떻게 스마트 계약을 기록하는가?
    • 계약을 어떻게 배포하는가?
    • 정리
    •  
  • ▣ 02장: 이더리움과 솔리디티 설치
    • 이더리움 네트워크
      • 주 네트워크
      • 테스트 네트워크
      • 사설 네트워크
      • 컨소시엄 네트워크
    • 게스(Geth)
      • 윈도우에 게스 설치하기
    • 사설 네트워크 생성
    • 가나슈 명령행 인터페이스(ganache-cli)
    • 솔리디티 컴파일러
    • web3 자바스크립트 라이브러리
    • 미스트 지갑
    • 메타마스크(MetaMask)
    • 정리
    •  
  • ▣ 03장: 솔리디티 소개
    • 이더리움 가상 머신
    • 솔리디티와 솔리디티 파일
      • 프라그마(pragma)
      • 주석
      • import 문
      • 계약
    • 계약의 구조
      • 상태 변수
      • 구조체(struct)
      • 수정자(modifier)
      • 이벤트(event)
      • 열거형(enum)
      • 함수(function)
    • 솔리디티의 자료형
      • 값 타입
      • 참조 타입
    • 스토리지 및 메모리 데이터 위치
      • 규칙 1
      • 규칙 2
      • 규칙 3
      • 규칙 4
      • 규칙 5
      • 규칙 6
      • 규칙 7
      • 규칙 8
    • 리터럴
    • 정수
    • 불린
    • 바이트 자료형
    • 배열
      • 고정 배열
      • 동적 배열
      • 특수 배열
      • 배열 속성
    • 배열의 구조체
    • 열거형
    • 주소
    • 매핑
    • 정리
    •  
  • ▣ 04장: 전역 변수와 함수
    • var 타입 변수
    • 변수 호이스팅
    • 변수 스코프
    • 형 변환
      • 묵시적 변환
      • 명시적 변환
    • 블록 및 거래 글로벌 변수
      • 거래 및 메시지 글로벌 변수
      • tx.origin과 msg.sender의 차이점
    • 암호화 함수
    • 주소 전역 변수
    • 계약 전역 변수
    • 정리
    •  
  • ▣ 05장: 표현식과 제어 구조
    • 솔리디티 표현식
    • if 제어 구조
    • while 루프
    • for 루프
    • do...while 루프
    • break 문
    • continue 문
    • return 문
    • 정리
    •  
  • ▣ 06장: 스마트 계약 작성하기
    • 스마트 계약
    • 간단한 계약 작성하기
    • 계약 생성하기
      • new 키워드 사용하기
      • 계약의 주소 사용하기
    • 생성자
    • 계약 합성
    • 상속
      • 단일 상속
      • 다단계 상속
      • 계층적 상속
      • 다중 상속
    • 캡슐화
    • 다형성
      • 함수 다형성
      • 계약 다형성
    • 메서드 오버라이딩
    • 추상 계약
    • 인터페이스
    • 정리
    •  
  • ▣ 07장: 함수, 수정자, 폴백
    • 함수 입력과 출력
    • 수정자
    • 뷰, 상수, 순수 함수
    • 주소 함수
      • send 메서드
      • transfer 메서드
      • call 메서드
      • callcode 메서드
      • delegatecall 메서드
    • 폴백 함수
    • 정리
    •  
  • ▣ 08장: 예외, 이벤트, 로깅
    • 오류 처리
      • require 문
      • assert 문
      • revert 문
    • 이벤트와 로깅
    • 정리
    •  
  • ▣ 09장: 트러플 기초와 단위 테스팅
    • 애플리케이션 개발 생명주기 관리
    • 트러플
    • 트러플을 가지고 개발하기
    • 트러플을 가지고 테스트하기
    • 정리
    •  
  • ▣ 10장: 계약
    • 디버깅
      • 리믹스 편집기
      • 이벤트 사용하기
    • 블록 탐색기 사용하기
    • 정리