블록체인 애플리케이션 개발 실전 입문

Solidity를 이용한 이더리움 스마트 계약 구현

인터넷상의 최고의 발명이라고 일컬어지는 블록체인. 이 책은 엔지니어를 위한 블록체인 애플리케이션 개발 지침서입니다. 블록체인을 활용한 시스템을 개발하기 위해 엔지니어가 구체적으로 무엇을 하면 좋을지를 스마트 계약과 관련한 3가지 예제을 사용하여 알기 쉽게 설명합니다.

개발 방법은 이더리움(Ethereum)이라는 블록체인에서 작동하는 스마트 계약을 사용합니다. 스마트 계약 개발 언어 중 가장 이용자가 많은 솔리더티(Solidity)를 채용하여 실무에서도 사용할 수 있는 소스 코드도 아낌없이 공개합니다. 이 책을 읽고 나면 구체적으로 무엇을 하면 좋을지, 어떻게 하면 효율적으로 개발할 수 있는지를 익힐 수 있습니다.

이 책은 이더리움으로 스마트 계약을 구현하고자 하는 모든 엔지니어를 대상으로 하며, 앞으로 스마트 계약을 개발할 개발자는 물론, 블록체인에 대해 조사하는 컨설턴트, 새로운 비즈니즈 아이템을 찾는 정보 시스템 사업 부서에서도 이 책을 통해 블록체인의 기초부터 스마트 계약의 개요, 실무에 적용 가능한 코드와 구체적인 개발 방법까지 폭넓게 배울 수 있습니다.

 

도서 상세 이미지

와타나베 아츠시(2, 3, 4장 담당)

(주)울 시스템즈 소속. 2015년까지 근무했던 SI 업체에서 철도 지진 방재 시스템을 개발했다. 플레잉 매니저로 시작부터 설계, 개발, 테스트, 운영까지 모두 참여했다. 현재는 울 시스템즈 Fintech 추진실에서 블록 체인 기술, 고속 분산 처리 및 클라우드 활용 안건 관련 업무를 수행하고 있다.

마츠모토 유타(5장 담당)

현재는 모 SI 기업의 시스템 엔지니어. 학창 시절 웹 관련 회사를 창업하고 SI 기업에 입사한 후 금융 시스템 엔지니어를 거쳐 최근에는 AI, 블록체인 등 비교적 새로운 서비스, 기술과 관련된 일을 하고 있다.

니시무라 요시카즈(6장 담당)

(주)콘프스 정보기술 연구사 대표. 자연어 처리·기계 학습 등 학술계 안건의 개발·컨설팅 업무를 하고 있으며 최근에는 블록체인 기술에 힘쓰고 있다. Global Blockchain Summit 2016에서 블록체인 기술을 통한 위치정보 플랫폼을 제안해 Best Innovation Award를 수상했다.

시미즈 토시야(1장 담당)

후지쯔 연구소 보안 연구소 소속. 학창 시절에는 정수론을 중심으로 하는 수학을 전공했다. 현재는 보안 연구소에서 블록체인 보안 기술 및 암호 기술을 연구하고 있다.

양현

경희대학교 지리학과를 졸업하고 웹 개발자로 근무하다 보안 업무에 뛰어들었다. SK인포섹에서 소스 취약점 분석, 모의해킹, 서버 취약점 분석 업무로 본격적인 보안 실무 경험을 쌓고, 일본 NHN-Techorus에서 앱(웹/모바일) 진단 및 교육을 담당하고 있다. 번역한 책으로는 『블록체인 구조와 이론』 『CTF 정보보안 콘테스트 챌린지 북』 『알기 쉽게 설명한 VMware NSX』 『리눅스 서버 보안』 『취약점 진단 스타트 가이드』가 있다.

감수

김응수

와세다 대학과 토호쿠(東北)대학에서 수학하였고, RIKEN(이화학연구소)과 KGU(구마모토 가쿠인)대학 교환교수 당시 AI에 관한 연구를 수행하였다. 전자통신연구원(ETRI)에서 뉴로 컴퓨터 개발에 관한 연구를 수행하다가 선문대학교를 거쳐 대전대학교 전자정보통신공학과에 재직 중이며, IoT 및 블록체인에 관한 연구에 몰두하고 있다. 최근의 번역한 책으로는 『IoT 비즈니스 모델 혁명』 『블록체인의 충격』 등이 있다.

  • [1부] 기초편
    • ▣ 1장: 블록체인 기초
      • 1.1 블록체인이란?
        • 1.1.1 블록체인 기술이란?
        • 1.1.2 블록체인을 지원하는 기술
        • 1.1.3 스마트 계약과 블록체인
      • 1.2 블록체인의 가치
        • 1.2.1 블록체인으로 가능한 것
      • 1.3 블록체인에서 응용 프로그램 개발
        • 1.3.1 이더리움
        • 1.3.2 이더리움으로 응용 프로그램 개발
    •  
    • ▣ 2장: 이더리움
      • 2.1 이더리움 개요
        • 2.1.1 이더리움 클라이언트 소개
        • 2.1.2 네트워크
        • 2.1.3 Ether
        • 2.1.4 Gas
      • 2.2 Geth 설치
      • 2.3 테스트 네트워크에서 Geth 기동
      • 2.4 테스트 네트워크에서 Ether 송금
        • 2.4.1 계정 생성
        • 2.4.2 채굴
        • 2.4.3 Ether 송금
        • 2.4.4 트랜잭션 수수료
        • 2.4.5 백그라운드로 Geth 기동
        • 2.4.6 JSON-RPC
        • 2.4.7 Geth 기동 시 계정 잠금 해제
    •  
    • ▣ 3장: 스마트 계약 입문
      • 3.1 스마트 계약 개요
        • 3.1.1 스마트 계약 개발
        • 3.1.2 스마트 계약 개발용 프로그래밍 언어
        • 3.1.3 컴파일러 설치
      • 3.2 콘솔에서 계약 만들기
        • 3.2.1 Hello World
        • 3.2.2 컴파일러 준비
        • 3.2.3 컴파일
        • 3.2.4 계약 배포
        • 3.2.5 계약 동작시키기
        • 3.2.6 기존 계약에 접근
      • 3.3 계약 개발 환경
        • 3.3.1 개발 환경
        • 3.3.2 Browser-Solidity 설치
        • 3.3.3 Browser-Solidity 에서 Hello World
        • 3.3.4 기존 계약에 접근
        • 3.3.5 기존 계약에 접근 2
        • 3.3.6 Browser-Solidity에서 송금
        • 3.3.7 조작 계정 전환
      • 3.4 계약 개발
        • 3.4.1 Solidity 데이터 형식
        • 3.4.2 계약 상속
        • 3.4.3 다른 계약의 메서드 실행
        • 3.4.4 계약 파기
    •  
  • [02부] 실전편
    • ▣ 4장: 가상 화폐 계약
      • 4.1 기본적인 가상 화폐 계약
        • 4.1.1 계약 개요
        • 4.1.2 계약 생성
        • 4.1.3 계약 실행
      • 4.2 추가 기능 1: ‘블랙리스트’
        • 4.2.1 계약 개요
        • 4.2.2 계약 작성
        • 4.2.3 계약 실행
      • 4.3 추가 기능 2: 캐시백
        • 4.3.1 계약 개요
        • 4.3.2 계약 작성
        • 4.3.3 계약의 실행
      • 4.4 추가 기능 3: 회원 관리
        • 4.4.1 계약 개요
        • 4.4.2 계약 작성
        • 4.4.3 계약 실행
      • 4.5 토큰 크라우드 세일
        • 4.5.1 계약 개요
        • 4.5.2 계약 생성
        • 4.5.3 계약 실행
      • 4.6 토큰과 Ether 에스크로
        • 4.6.1 계약 개요
        • 4.6.2 계약 생성
        • 4.6.3 계약 실행
    •  
    • ▣ 5장: 존재 증명 계약
      • 5.1 존재 증명이란?
        • 5.1.1 존재 증명 개요
        • 5.1.2 존재 증명에 블록체인을 사용하는 의의
      • 5.2 문자열 저장 계약
        • 5.2.1 데이터 저장소
        • 5.2.2 데이터 저장 방법
        • 5.2.3 문자열 저장 계약 설명
        • 5.2.4 문자열 저장 계약 실행
      • 5.3 계약 생성 관련 팁
        • 5.3.1 개인정보 취급
        • 5.3.2 버그 해결
        • 5.3.3 확인 처리
        • 5.3.4 등록 가능한 데이터량
      • 5.4 본인 확인 서비스
        • 5.4.1 개요
        • 5.4.2 계약 시나리오
        • 5.4.3 본인 확인 계약 설명
        • 5.4.4 본인 확인 계약을 실행하기 전 준비할 사항
        • 5.4.5 본인 인증 계약 실행
    •  
    • ▣ 6장: 난수 생성 계약
      • 6.1 난수 생성 계약의 필요성
        • 6.1.1 난수가 사용되는 부분
        • 6.1.2 서비스에서의 난수 생성 과제
        • 6.1.3 기존 방법을 사용한 공정성 담보
        • 6.1.4 난수 생성을 할 때 블록체인의 유용성
      • 6.2 난수 생성 계약 작성
        • 6.2.1 구조에 대한 고려
        • 6.2.2 구현
        • 6.2.3 고찰
      • 6.3 예측 곤란성 확보하기
        • 6.3.1 구조에 대한 고려
        • 6.3.2 구현
        • 6.3.3 고찰
      • 6.4 난수로서의 균일성 확보하기
        • 6.4.1 구조에 대한 고려
        • 6.4.2 구현
        • 6.4.3 고찰
      • 6.5 외부 정보를 참조하는 방법
        • 6.5.1 준비
        • 6.5.2 구현
        • 6.5.3 고찰
    •  
    • ▣ 부록 A
    • A.1 Geth 설치(우분투 / 맥 OS X / 윈도우)
    • ___A.1.1 우분투에 PPA로 설치
    • ___A.1.2 맥 OS X에 설치
    • ___A.1.3 윈도우에 설치
    • A.2 라이브 네트워크에 연결
    • A.3 API 레퍼런스
  • 21쪽, 그림 1-7의 검증 파트

    공개키로 암호화 ==> 공개키로 복호화

  • 46쪽, 본문 밑에서 2번째 줄

    =1,000,000,000,000,000,000,000 wei

    ==>

    =1,000,000,000,000,000,000 wei

  • 46쪽, 각주 19번

    ‘3.1e+21’처럼

    ==>

    ‘3.1e+20’처럼

  • 223쪽, 예제 코드 7번째 줄

    public{

    ==>

    public {

  • 223쪽, 예제 코드 12번째 줄

    constant

    ==>

    public constant

  • 223쪽, 예제 코드 13번째 줄

    public

    ==>

    삭제