솔리디티는 스마트 컨트랙트를 구현하는 언어이며, 스마트 컨트랙트는 블록체인에서 작동하는 프로그램이다. 『솔리디티 프로그래밍 완벽 가이드』는 블록체인의 기본적인 개념과 솔리디티로 스마트 컨트랙트를 개발하는 법을 자세히 알려준다. 이 책에서는 웹 브라우저 기반의 통합 개발 환경인 리믹스(Remix)를 이용해 솔리디티를 배운다. 즉, 솔리디티를 설치하거나 따로 추가적으로 설정할 필요가 없어 솔리디티를 간편하게 배울 수 있다. 최대한 현실에서 볼 수 있는 예를 들어서 솔리디티의 주요 개념을 설명하므로 개발 경험이 없어도 누구나 쉽게 이해할 수 있다. 각 개념에 관한 실습 예제를 제공하며, 각 예제마다 자세한 설명이 덧붙여져 있다. 결론적으로 실습 예제를 통해서 언제, 어떤 식으로 스마트 컨트랙트를 작성하는지 터득할 수 있다. 이 책을 읽은 후에는 스마트 컨트랙트를 작성 및 배포할 수 있으며, 더 나아가서 이더리움 암호화폐 지갑인 메타마스크를 통해 작성한 스마트 컨트랙트를 테스트넷 및 메인넷에 배포할 수 있다.
Contents
▣ 1장: 블록체인, 스마트 컨트랙트와 솔리디
1.1 블록체인이란
___1.1.1 블록체인 구조
___1.1.2 블록체인 특징
1.2 이더리움과 스마트 컨트랙트
___1.2.1 이더리움
___1.2.2 스마트 컨트랙트
___1.2.3 이더와 가스
___1.2.4 이더리움 네트워크
1.2.5 NFT
1.2.6 솔리디티
▣ 2장: 리믹스로 솔리디티 시작하기
2.1 리믹스 둘러보기
2.2 리믹스로 스마트 컨트랙트 작성, 컴파일, 배포
___2.2.1 워크스페이스 만들기
___2.2.2 불필요한 폴더와 파일 삭제
___2.2.3 실습 폴더와 파일 만들기
___2.2.4 코드 작성
___2.2.5 컴파일과 배포
2.3 Remixd로 스마트 컨트랙트를 저장하기
___2.3.1 Node.js 설치
___2.3.2 Remixd 설치
___2.3.3 연동할 폴더를 로컬 서버에 호스팅
___2.3.4 스마트 컨트랙트를 파일로 저장
2.4 스마트 컨트랙트의 기본 구조, 자료형, 연산
___2.4.1 스마트 컨트랙트의 기본 구조
___2.4.2 변수와 자료형
___2.4.3 연산자
___2.4.4 상수
2.5 개념 체크
2.6 연습 문제
▣ 3장: 가시성 지정자와 함수
3.1 가시성 지정자
3.2 함수의 개념과 정의 방법
___3.2.1 함수의 개념
___3.2.2 함수 정의
3.3 기본 모디파이어
___3.3.1 pure와 view의 비교
___3.3.2 함수에 모디파이어를 적용하는 방법
3.4 함수와 참조 타입
3.5 함수와 변수
3.6 함수와 가시성 지정자
3.7 개념 체크
3.8 연습 문제
▣ 4장: 조건문과 반복문
4.1 조건문
___4.1.1 조건문의 구조
___4.1.2 if 문의 예
___4.1.3 if와 else를 사용하는 조건문의 예
___4.1.4 if, else if, else를 사용하는 조건문의 예
___4.1.5 조건문 구조에 따른 차이
4.2 반복문
___4.2.1 3가지 반복문 구조
___4.2.2 for 문의 예
___4.2.3 while 문의 예
___4.2.4 do-while 문의 예
4.3 반복문 응용
___4.3.1 반복문과 조건문의 조합
___4.3.2 중첩 반복문
___4.3.3 반복문의 continue와 break
4.4 개념 체크
4.5 연습 문제
▣ 5장: 매핑, 배열, 구조체
5.1 매핑
___5.1.1 매핑 구문
___5.1.2 매핑에 키와 값을 추가
___5.1.3 매핑의 키와 값을 삭제
5.2 배열
___5.2.1 배열의 구조
___5.2.2 배열의 인덱스에 대응하는 값을 구하기
___5.2.3 배열에 값을 추가하고 변경
___5.2.4 배열의 값을 삭제
___5.2.5 순차 검색 알고리즘
5.3 구조체
___5.3.1 구조체 정의 및 반환의 예
___5.3.2 구조체를 적용한 배열과 매핑의 예
5.4 참조 타입의 데이터 저장 영역
___5.4.1 값 타입과 참조 타입의 데이터 저장 방법
___5.4.2 memory에 저장된 변수를 다른 memory 변수에 대입
___5.4.3 storage에 저장된 변수를 local storage 변수에 넣기
___5.4.4 storage에 저장된 변수를 memory 변수에 넣기
___5.4.5 그 외의 참조 타입 storage가 포함된 관계
5.5 개념 체크
5.6 연습 문제
▣ 6장: 객체 지향 프로그래밍
6.1 객체 지향 기본
___6.1.1 이벤트
___6.1.2 생성자
___6.1.3 객체 지향
___6.1.4 상속
___6.1.5 캡슐화
6.2 객체 지향 고급
___6.2.1 다형성
___6.2.2 다중 상속
___6.2.3 추상화
6.3 개념 체크
6.4 연습 문제
▣ 7장: 오류 및 예외 처리
7.1 assert/revert/require
___7.1.1 컴파일러 버전에 따른 assert 가스비 비교
___7.1.2 revert와 require 정의 방법
7.2 try/catch
___7.2.1 try/catch 구문
___7.2.2 try/catch 정의 방법
___7.2.3 인스턴스화에 try/catch 적용
___7.2.4 외부 함수에 try/catch 적용
___7.2.5 try/catch 블록의 try 블록에서 오류가 발생할 경우
7.3 개념 체크
7.4 연습 문제
▣ 8장: 모디파이어/이넘/임포트/라이브러리
8.1 모디파이어
___8.1.1 모디파이어의 개념과 정의 방법
___8.1.2 모디파이어 정의 예시
___8.1.3 모디파이어의 함수 실행 순서
8.2 이넘
___8.2.1 이넘의 정의 예시
8.3 임포트
___8.3.1 임포트 예제
___8.3.2 상위 폴더에 있는 파일을 임포트
8.4 라이브러리
___8.4.1 라이브러리의 특징
___8.4.2 라이브러리 정의
___8.4.3 라이브러리 사용
___8.4.4 실습: 오버플로를 막는 라이브러리
8.5 개념 체크
8.6 연습 문제
▣ 9장: 이더 송수신
9.1 이더 송수신 기본 개념: address/payable/msg.sender/msg.value
___9.1.1 address 자료형
___9.1.2 payable 키워드
___9.1.3 전역 변수 msg.sender와 msg.value
9.2 이더를 보내는 3가지 함수: send/call/transfer
9.3 함수 fallback과 receive
___9.3.1 함수 fallback의 기능
___9.3.2 솔리디티 버전 0.6 미만 fallback
___9.3.3 솔리디티 버전 0.6 이상 fallback과 receive
9.4 함수 call과 delegatecall
___9.4.1 함수 call
___9.4.2 함수 delegatecall
9.5 개념 체크
9.6 연습 문제
▣ 10장: 메타마스크를 활용한 배포
10.1 메타마스크
___10.1.1 메타마스크 설치
___10.1.2 메타마스크 테스트넷 추가
___10.1.3 메타마스크 계정 추가
___10.1.4 Rinkeby 테스트넷 이더 받기
___10.1.5 이더 보내기
10.2 블록 탐색기
10.3 스마트 컨트랙트 Random 게임 배포
___10.3.1 Random 게임 설명
___10.3.2 Random 게임 스마트 컨트랙트 작성
___10.3.3 컴파일
___10.3.4 배포
___10.3.5 이더스캔에서 기록 찾기
▣ 부록
DGIT로 깃허브에 스마트 컨트랙트 파일 저장
진법 변환
전역 변수
함수 스타일
___길이가 짧은 함수
___길이가 긴 함수
주소의 내장 변수 및 함수
Author
조대환
영국에 위치한 Newcastle University에서 Advanced Computer Science 석사 수료 이후 유튜브 [D_One]으로 활동을 시작했다. 유튜브 채널에서 [솔리디티 깨부수기]와 같은 솔리디티 관련 강의를 공유하고 있다. 현재는 NFT 관련 프로젝트에 참여하고 있다.
영국에 위치한 Newcastle University에서 Advanced Computer Science 석사 수료 이후 유튜브 [D_One]으로 활동을 시작했다. 유튜브 채널에서 [솔리디티 깨부수기]와 같은 솔리디티 관련 강의를 공유하고 있다. 현재는 NFT 관련 프로젝트에 참여하고 있다.