HOME / CATALOG / 해킹 & 보안
해킹 & 보안

솔리디티 프로그래밍 완벽 가이드

Solidity 기초 문법부터 디앱 개발과 배포까지, 한권으로 깨부수기
지은이 조대환
도서 정보
출간일
2022년 8월 2일
쪽수
488쪽
판형
188*240*20mm
ISBN
9791158393434
시리즈
해킹 & 보안 시리즈_024
정가
32,000원
난이도
도서 소개
저자 소개
목차
예제 코드
정오표

도서 소개

개발 경험이 없어도 쉽게 블록체인과 솔리디티를 이해할 수 있습니다!

솔리디티는 스마트 컨트랙트를 구현하는 언어이며, 스마트 컨트랙트는 블록체인에서 작동하는 프로그램이다. 《솔리디티 프로그래밍 완벽 가이드》는 블록체인의 기본적인 개념과 솔리디티로 스마트 컨트랙트를 개발하는 법을 자세히 알려준다.

이 책에서는 웹 브라우저 기반의 통합 개발 환경인 리믹스(Remix)를 이용해 솔리디티를 배운다. 즉, 솔리디티를 설치하거나 따로 추가적으로 설정할 필요가 없어 솔리디티를 간편하게 배울 수 있다. 최대한 현실에서 볼 수 있는 예를 들어서 솔리디티의 주요 개념을 설명하므로 개발 경험이 없어도 누구나 쉽게 이해할 수 있다. 각 개념에 관한 실습 예제를 제공하며, 각 예제마다 자세한 설명이 덧붙여져 있다. 결론적으로 실습 예제를 통해서 언제, 어떤 식으로 스마트 컨트랙트를 작성하는지 터득할 수 있다.

이 책을 읽은 후에는 스마트 컨트랙트를 작성 및 배포할 수 있으며, 더 나아가서 이더리움 암호화폐 지갑인 메타마스크를 통해 작성한 스마트 컨트랙트를 테스트넷 및 메인넷에 배포할 수 있다.

★ 이 책에서 다루는 내용 ★

  • 블록체인의 작동 방식
  • 솔리디티와 스마트 컨트랙트의 기본 개념
  • 리믹스 사용 방법
  • 스마트 컨트랙트의 기본 구조
  • 솔리디티의 주요 문법
  • 메타마스크 사용 및 테스트넷 배포

 

도서 상세 이미지

저자 소개

조대환

영국에 위치한 Newcastle University에서 Advanced Computer Science 석사 수료 이후 유튜브 'D_One'으로 활동을 시작했습니다. 유튜브 채널에서 '솔리디티 깨부수기'와 같은 솔리디티 관련 강의를 공유하고 있습니다. 현재는 NFT 관련 프로젝트에 참여하고 있습니다.

목차

  • ▣ 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로 깃허브에 스마트 컨트랙트 파일 저장
  • 진법 변환
  • 전역 변수
  • 함수 스타일
  • ___길이가 짧은 함수
  • ___길이가 긴 함수
  • 주소의 내장 변수 및 함수

예제 코드

정오표

  • 33쪽, 본문 9번째 줄

    이와 반대로 동적 크기 바이트 배열은 bytes라고 명시하며, 최대 바이트 크기인 32바이트까지 자유롭게 저장할 수 있다.

    ==>

    이와 반대로 동적 크기 바이트 배열은 bytes라고 명시하며, 동적 크기 바이트 배열은 고정 크기 바이트 배열과 다르게 특정한 사이즈가 미리 정의되지 않는다. 동적 크기 바이트는 사이즈를 줄이거나 늘릴 수 있으며, 32바이트 이상으로 저장이 가능하다.

  • 33쪽, 본문 15번째 줄

    또한, UTF-8의 크기가 동적 크기 바이트 배열의 최대 크기인 bytes32보다 크다.

    ==>

    그러나 문자열은 배열의 기본적인 기능인 길이와 인덱스를 제공하지 않는다.

  • 172쪽, 1번 정답

    1. 아니다

    ==>

    1. 이다
  • 179쪽, 그림 6.2

    MyEvent 하단의 '매개변수명'을 '이벤트'로 변경

  • 180쪽, 그림 6.4

    MyEvent 하단의 '매개변수명'을 '이벤트'로 변경

  • 347쪽, 본문 4번째 줄

    1 ether를 보낸다고 가정했을 때 1018

    ==>

    1 ether를 보낸다고 가정했을 때 1018

WHERE TO BUY · 정가 32,000원
WHERE TO BUY · 정가 32,000원