이더리움과 솔리디티 입문

이더리움을 이용한 블록체인과 암호화폐 개발 이론과 실무

솔리디티 사용법을 익히고 이더리움 프로젝트를 시작해 보자!

전세계가 블록체인 프로토콜을 주목하는 가운데, 비트코인에 이어 암호화폐 시가 총액 2위를 기록하고 있는 이더리움은 튜링 완전성을 지닌 스크립트 언어인 솔리디티를 통해 블록체인 프로토콜의 선두 주자가 되었다. 이 책은 블록체인에 대한 전반적인 설명에 덧붙여, 비트코인이 개척한 세상에서 이더리움이 가지는 지위를 함께 다룬다.

전문가, 비전문가 여부를 떠나 많은 사람이 스마트 계약 패턴 및 분산 애플리케이션 개발 기술을 연마하는 이유를 알아보고, 새로운 암호 경제학 분야에 대한 소개와 함께 프로그래밍 및 네트워킹의 기본 개념을 살펴본다. 이어서, 자신만의 스마트 계약을 배포하고 이 스마트 계약이 웹에서 자바스크립트 및 HTML 애플리케이션의 백엔드 역할을 수행하게 하는 방법을 알아본다.

오늘날 많은 솔리디티 지도서에는 공통된 문제가 있다. 개발 경험이 있는 상태에서 블록체인 환경으로 옮겨가고자 하는 ‘고급’ 자바스크립트 개발자를 위해 쓰였기 때문이다. 이 책은 기술적인 경험에 관계없이 전문가로부터 이더리움의 열성 팬까지 누구나 읽을 수 있도록 쓰였으며, 학계와 기업 모두에서 현실 자산에 적용될 수 있는 흥미로운 샘플 코드를 수록하고 있다. 이 책은 창의적인 다양한 독자들에게 이더리움 세계의 개념부터 배포에 이르는 진입로 역할을 해 줄 것이다.

★ 책에서 다루는 내용 ★

  • 이더리움과 그 밖의 암호화폐의 작동 원리
  • 분산 애플리케이션과 웹 애플리케이션의 비교
  • 솔리디티로 이더리움 스마트 계약을 작성하는 방법
  • 이더리움 스마트 계약과 HTML/CSS/자바스크립트 웹 애플리케이션의 연결
  • 자신만의 앱, 코인, 블록체인을 배포하기
  • 기본 스마트 계약 및 중급 스마트 계약 다루기

★ 대상 독자 ★

  • 이더리움에 대해 알고 싶거나, 컴퓨터 과학에 익숙한 독자
  • 제품 관리자, 기술 부문 경영진, 또는 숙련된 자바스크립트 개발자
  • 솔리디티의 잠재력을 극대화할 수 있는 고급 샘플 프로젝트를 필요로 하는 전문가

크리스 다넨(Chris Dannen)

크리스 다넨은 암호화폐 거래 및 시드 단계의 벤처 투자에 전문화된 하이브리드 투자 펀드인 이터레이티브 인스팅트(Iterative Instinct)의 파트너이자 설립자이다. 채굴자로서 비트코인 및 이더리움과 관련된 일을 시작하였고, 이후 소프트웨어를 하는 스마트 계약이 사업 계약을 자동화하고 새로운 종류의 경험을 창출하는 데 이용되는 방식에 점점 더 매료되었다. 포춘 지 선정 500대 기업의 전략기획 업무 경력이 있으며, Objective-C와 자바스크립트를 독학으로 익힌 프로그래머로서 컴퓨터 하드웨어 특허도 보유하고 있다. 이 책은 저자가 네 번째로 쓴 책이다. 크리스는 20여개국을 여행했고, 자전거를 타고 로마에서 바르셀로나까지 30일 만에 이동하고, 6시간 만에 후지산 정상까지 등반한 열정 넘치는 여행자이기도 하다. 패스트 컴퍼니(Fast Company)의 수석 편집자였으며 오늘 쿼츠(Quartz) 및 블룸버그(Bloomberg)와 같은 주요 출판사의 기술 콘텐츠를 감수하고 있다. 버지니아 대학교를 졸업하고 현재 뉴욕 시에 거주하고 있다.

임지순 ([email protected])

블록체인 에반젤리스트. 하드웨어 엔지니어로 커리어를 시작하여 소프트웨어 엔지니어, 프로젝트 매니저를 거쳐 현재는 블록체인 사업개발 영역을 개척하고 있으며, 암호경제학과 IP의 연결고리에 깊은 관심을 가지고 있다. 번역한 책으로는 《라즈베리 파이로 배우는 컴퓨터 아키텍처》(위키북스)가 있다.

  • ▣ 01장: 블록체인 개론
    • 블록체인이 지배하리라!
    • 이더리움의 역할
    • 블록체인의 3요소
      • 이더리움의 다중 체인
      • 이것도 비트코인 같은 구라 아냐?
    • 화폐가 아닌 재화인 이더
      • 그레샴의 법칙
      • 돈의 미래를 향해
      • 암호화폐 경제와 증권
      • 옛 영광의 재현
      • 암호화폐의 춘추전국시대
    • 프로토콜의 위력
      • 신뢰불요 시스템 개발 가능
    • 스마트 계약의 진짜 역할
      • 가치의 객체와 메소드
      • 결제 시스템에 응용하기
      • 콘텐츠 생성
    • 데이터는 어디에?
      • 채굴이란?
      • 채굴과 전기세
    • EVM 둘러보기
      • 미스트 브라우저
      • 브라우저 대 지갑(키체인)
      • 솔리디티, 자바스크립트랑 비슷하긴 한데…
    • 이더리움의 용도
      • 비판적 관점
      • 스마트 계약 개발의 현재
      • 카피캣 코인
      • 프로젝트 자금 조달
    • 자신만의 블록체인 포지션을 찾아 보자
      • 프로그래밍 입문자를 위한 조언
      • 오픈소스, 무료 소프트웨어로써의 이더리움
    • EVM의 현재
      • 지금 당장 만들 수 있는 것
      • 프라이빗 체인과 퍼블릭 체인
      • 이더 전송 및 수신
      • 스마트 계약 작성
      • 공정한 애플리케이션 개발
      • 이더 기반의 토큰 생성
      • 탈중앙화 데이터베이스의 미래
      • 일의 문화가 바뀐다
    • 요약
    •  
  • ▣ 02장: 미스트 브라우저
    • 지갑은 왜 지갑인가?
      • 그래서 주소가 뭐라고?
      • 내 이더는 어디에?
    • 출납원의 비유
      • 암호화폐의 잔고는 각자의 손에 있다
      • 이더리움 트랜잭션의 시각화
    • 은행의 역사를 파괴한다
      • 암호화를 통한 신뢰
    • 시스템 요구 사양
    • Eth.guide와 이 책에 대해
      • 개발자를 위한 도구
      • CLI 노드
    • 패리티와 Geth의 혼용
    • 마침내 미스트 속으로!
      • 미스트를 내려받아 설치하기
      • 미스트 설정
      • 새 주소 찾기
      • 이더 주고받기
      • 이더리움 계정 종류 이해하기
      • 키 백업 및 복구
      • 종이 지갑 사용
      • 모바일 지갑 사용
      • 메시지와 트랜잭션
    • 그래서 결론적으로, 블록체인이 뭔데?
      • 트랜잭션 비용의 지불
      • 단위의 이해
      • 이더 확보하기
    • 암호화폐의 익명성
      • 블록체인 탐색기
    • 요약
    •  
  • ▣ 03장: EVM
    • 기존의 중앙 은행 네트워크
    • 가상 머신이란?
      • 은행에서 이더리움 프로토콜의 역할
      • 누구나 은행 플랫폼을 만들 수 있다
    • EVM의 역할
    • 스마트 계약은 곧 EVM 애플리케이션
      • ‘스마트 계약’이라는 이름
      • EVM과 바이트코드
    • 상태 기계의 이해
      • 디지털과 아날로그
      • 상태 언급(state-ments), 즉 문장
      • 상태에 대한 데이터의 역할
    • EVM 내부의 작동 원리
      • EVM의 지속적인 트랜잭션 확인
      • 상태 기계의 진술
      • 암호화 해싱
      • 해시 함수(해시 알고리즘)의 역할
    • 블록: 상태 변화의 기록
      • 블록 시간의 이해
      • 짧은 블록 주기의 문제점
      • ‘단일 노드’ 블록체인
      • 분산된 보안
    • 상태 전이 함수에서 채굴의 위치
    • EVM상의 시간 대여
      • 가스
      • 가스가 중요한 이유는?
      • 왜 이더 대신에 가스를 쓰는가?
      • 규제를 위한 수수료
    • 가스 다루기
      • 가스의 특성
      • 시스템의 확장성과 가스
    • 계정, 트랜잭션, 메시지
      • 외부 소유 계정
      • 계약 계정
    • 트랜잭션과 메시지
      • 트랜잭션의 특성
      • 메시지의 특성
    • 가스 수수료 계산하기
    • EVM의 연산 코드
    • 요약
    •  
  • ▣ 04장: 솔리디티 프로그래밍
    • 들어가며
    • 글로벌 은행의 현실화
      • 초대형 인프라
      • 세계적 통화?
    • 대안 화폐
      • 솔리디티의 장점
      • 브라우저 컴파일러
    • EVM 프로그래밍 배우기
      • 손쉬운 배포
      • 솔리디티에서의 비즈니스 논리 구축
      • 코드, 배포, 휴식
    • 이론적 설계
      • 솔리디티의 반복문
      • 표현성과 보안
    • 형식 검증의 중요성
      • 전역 공유 자원의 역사적 효과
      • 공격자가 커뮤니티를 무너뜨리는 방법
      • 솔리디티 코드에 대한 가상 공격
    • 구조를 위한 자동화된 증명?
      • 실질적인 결정론
      • 번역으로 인한 유실
    • 끝없는 테스트
      • 커맨드 라인으로!
    • 솔리디티 파일
    • 코드 해석을 위한 팁
    • 솔리디티의 명령문과 표현식
      • 표현식이란?
      • 문장이란?
      • 퍼블릭, 프라이빗 함수
      • 자료형
      • 부호 있는 정수 및 부호 없는 정수
      • 주소
      • 주소의 멤버
      • 주소 연관 키워드
      • 그 밖의 자료형
      • 복합(참조) 자료형
    • 전역 특수 변수, 단위 및 함수
      • 블록과 트랜잭션 속성
      • 연산자 목록
      • 전역 함수
      • 예외와 상속
    • 요약
    •  
  • ▣ 05장: 스마트 계약과 토큰
    • 백엔드로써의 EVM
      • 스마트 계약에서 댑까지
    • 모든 것에 의해 가격이 결정되는 자산
      • 법정화폐 기반 물물교환
      • 유리 구슬 대신 이더
    • 시간을 측정하는 암호화폐
      • 자산 소유권, 그리고 문명
      • 소장품으로써의 코인
    • 사회에서 소장품의 기능
      • 초기의 위조 지폐
      • 귀금속과 예술, 그리고 돈
      • 은행권의 등장
    • 고부가가치 디지털 소장품의 플랫폼
    • 토큰은 스마트 계약의 일종
      • 토큰 스마트 계약
      • 토큰은 훌륭한 첫 번째 애플리케이션
    • 테스트넷에서 토큰 만들기
      • 수도꼭지에서 이더 받기
      • 토큰 등록
    • 첫 계약 배포
    • 계약과 인터페이스하기
    • 요약
    •  
  • ▣ 06장: 이더 채굴
    • 채굴의 요점
    • 이더의 근원
    • 채굴의 정의
    • 진실의 버전
      • 난이도, 자율 규제, 채산성 경쟁
      • 작업 증명과 블록 시간 규율
    • DAG와 논스
    • 빠른 블록 시간을 위한 접근
      • 빠른 블록을 가능하게 하려면
    • 이더리움의 실효 블록 활용
      • 엉클 블록 규칙과 보상
    • 난이도 폭탄
      • 채굴 승자의 보상 구조
      • 계통의 한계
      • 블록 처리 과정
    • 트랜잭션과 블록 계통 평가
    • 이더리움과 비트코인이 트리를 활용하는 방법
      • 머클-패트리샤 트리
      • 이더리움 블록 헤더의 내용
    • 포크
    • 채굴 지도서
      • 맥OS에서 Geth 설치하기
      • 윈도우에서 Geth 설치하기
      • 커맨드 라인에 익숙해지기
      • 우분투 14.04에서 Geth 설치하기
      • Geth 콘솔을 통해 EVM에 명령 실행하기
    • 플래그로 Geth 시작하기
    • 채굴기 가동!
    • 테스트넷에서 채굴하기
    • GPU 채굴 릭
    • 다중 GPU로 채굴 풀 구성하기
    • 요약
    •  
  • ▣ 07장: 암호경제학
    • 어쩌다 여기까지 왔나
      • 새로운 기술이 만드는 새로운 경제
      • 게임의 규칙
    • 암호경제학이 왜 유용한가?
      • 해시와 암호화의 이해
      • 암호화
      • 해시
    • 블록 속도가 중요한 이유
    • 이더 발행 계획
    • 일반적인 공격 시나리오
      • 기계 간의 사회적 증거
      • 네트워크의 확장에 따른 보안
    • 그 이상의 암호경제학
    • 요약
    •  
  • ▣ 08장: 댑 배포
    • 스마트 계약에 접근하는 7가지 방법
    • 댑 계약의 데이터 모델
    • EVM 백엔드와 JS 프런트엔드의 대화
      • JSON-RPC
    • Web3의 (거의) 모든 것
    • 자바스크립트 API 실험
      • Geth로 Dapp 개발하기
    • EVM과 미티어의 혼용
      • Web.js 설치 및 이더리움 웹 앱 개발
    • 콘솔에서 스마트 계약 실행하기
      • 스마트 계약은 어떻게 인터페이스를 노출하는가?
    • 프로토타입 개발 방법
    • 서드파티 배포 라이브러리
    • 요약
    •  
  • ▣ 09장: 프라이빗 체인 만들기
    • 프라이빗 체인과 허가형 체인
      • 로컬 프라이빗 체인 설정
      • 새로운 체인과 함께 사용할 수 있는 옵션
    • 프라이빗 블록체인의 생산적 활용
    • 요약
    •  
  • ▣ 10장: 용례
    • 모든 곳에 체인이
    • 이더리움 인터넷
    • 소매업과 전자 상거래
    • 정부 및 공동체 자금 조달
    • 인사 및 조직 관리
    • 금융 및 보험에 응용
    • 재고 관리 및 회계 시스템
    • 소프트웨어 개발
    • 게임, 도박, 투자
    • 요약
    •  
  • ▣ 11장: 고급 개념
    • 탈중앙화를 이끄는 소프트웨어 개발자는 누구인가?
      • 주목할 만한 비탈릭의 블로그 포스팅
    • 이더리움 출시 일정
      • 위스퍼(메시징)
      • 스웜(콘텐츠 주소 지정)
    • 미래에 있을 것
    • 그 밖의 혁신
    • 전체 이더리움 로드맵
      • 프런티어(2015)
      • 홈스테드(2016)
      • 메트로폴리스(2017)
      • 서레너티(2018)
    • 요약
  • 53쪽, 밑에서 6~7번째 줄 인쇄 불량

    아마 몇 년 또는 그 이상의 기간 동안은 사람들이 암호화폐 지갑과 전통적인 은행 계좌를 모두 가지는 과도기적 기간이 될 것이다.

  • 53쪽, 밑에서 4번째 줄

    요약하자면, 당신의 개인키를 들어있는 지갑이나 온라인 서비스를 사용해서는 안 된다.

    ==>

    개인키를 사용자에게 노출시키지 않고 자체적으로 보관하는 지갑이나 온라인 서비스를 사용해서는 안 된다.

  • 75쪽, 밑에서 12번째 줄

    트랜잭션 송신자는 트랜잭션 실행되기

    ==>

    트랜잭션 송신자는 트랜잭션 실행되기

  • 76쪽, 2번째 줄

    서로 다른 명징을 가진다.

    ==>

    서로 다른 명칭을 가진다.