[책소개] 이더리움과 솔리디티 입문

비트코인이나 이더리움 같은 가상화폐를 실제 만들어 보려면 보통 3가지 방법(나만의 코인 어떻게 만드나)이 있고, 그 과정 중에 솔리디티라는 이더리움 전용 언어(Language)가 있다는 것을 알게 되면서 보게 된 책이 ‘이더리움과 솔리디티 입문’이다.

원서로는 솔리디티 관련 서적들이 몇권 있지만, 국내에서 출간된 책은 아직은 이 책이 유일하다. 기존의 프로그래밍 언어를 몰라도 쉽게 배울 수 있다는 말에 덜컥 관심을 갖게 된 것이 이 책과의 인연이다.

자 그럼 책의 내용을 잠시 살펴 보자.

이더리움의 장시자 비탈릭 부테린은 “이더리움은 비트코인과 동일한 데이터 구조를 가지고 작동하지만, 프로그래밍 언어를 내장하고 있다는 점이 가장 큰 차이점입니다” 라고 언급했다. 이는 솔리디티란 언어를 내장하고 있어 스마트 계약을 가능하게 하는 상태(state)를 저장할 수 있는 능력이 있다는 것이 비트코인과의 차이다. 그리고 이것이 무한한 확장의 길을 열어 놓은 셈이다.

이더리움으로 무엇을 만들지는 이용자가 결정해야 한다는 점은 참 매력적인 유혹으로 다가온다.

본문을 보면 이더리움 네트워크는 프로그램을 엄격하게 실행하는 하나의 대형 컴퓨터와도 같다. 여러 기계의 네트워크에 의해 ‘가상화’된 하나의 기계인 셈이다. 많은 사설 컴퓨터들로 구성되는 이더리움 가상 머신(Ethereum Virtual Machine, EVM) 자체는 소유자가 없는 공유 컴퓨터라고 할 수 있다고 서술되어 있다.

얼핏보면 소유자가 없어 무한 자유가 주어질 것 같지만 사실 EVM의 변경은 하드포크(Hard forking)를 통해 이루어지고, 커뮤니티 전체를 설득해야 업그레이드가 가능하다. 심지어 핵심 개발팀일지라도 네트워크 변경을 쉽게 추진할 수 없다. 네트워크 변경에는 설명과 설득이라는 정치적 과정이 수반된다고 설명했다.

외형적 모습은 자유방임이지만, 실질적으로는 ‘합의’에 의해 네트워크가 운영될 수 있다는 점이 단단한 구속력을 주는 것이 아닌가 싶다.

이더리움을 통해 실제 무엇을 할 수 있는지 직접 해볼 수는 없을까? 이를 가능하게 하는 것이 있다. 솔리디티 스크립트만으로 간단한 스마트 계약 프로토타입을 만드는 것을 가능하게 하는 것이 미스트(Mist)라는 이름의 네이티브 이더리움 브라우저다.

나만의 코인 만들기 체험을 할 수 있었던 것에 이 책이 큰 도움이 됐음을 밝힌다.

[체험기] 나만의 코인 만들기 ① 이더리움 지갑 설치
[체험기] 나만의 코인 만들기 ② 코인 발행하기
[체험기] 나만의 코인 만들기③ 내가 만든 코인 거래하기

보다 자세한 내용은 직접 살펴보는 즐거움을 위해 여기서 맺을까 한다.

맺으며

시작은 솔리디티에 대한 관심으로 시작됐지만, 마지막엔 이더리움의 가능성에 더 많은 인상이 남았다. 간혹 사람들이 다른 가상화폐가 사라지더라도 이더리움은 남을 것이라고 말한 이유를 알 것 같다.

비트코인이 탈중앙화를 내세우며 시작된 블록체인이라면, 이더리움은 스마트 컨트랙트라는 개념이 추가되며 확장성을 얻게 된다. 여기에 수많은 가능성을 품었다는 것이 이더리움의 미래에 기대를 갖게 한다.

블록체인이 탈중앙화를 하면서 일정한 서버나 데이타베이스에 의존하지 않고, 네트워크에 분산해 놓은 것은 다들 아는 사실이다. 네트워크 구성이라는 것이 블록체인의 핵심이다. 이더리움이 그 핵심을 쥐고 있다. 비트코인을 제외한 다양한 코인들이 이더리움 네트워크 위에 올라가 있으며, 그 코인들이 생성될 때 이더를 지불한다. 또한 코인 전송과 같은 트랜잭션이 이뤄질 때도 이더를 지불한다. 큰 비용은 아니지만 이더를 지불해야만 코인의 생태계가 유지된다는 점이 흥미로웠다.

그리고 무엇보다 중요한 것이 이더리움은 완성된 것이 아니라 장기 로드맵을 가지고 꾸준히 발전해 나간다는 사실이다. 그것이 이더리움의 저력이 아닌가 싶다. 이더리움은 오늘도 변화하고 있다.

저자 : 크리스 다넨 (Chris Dannen)

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

역자 : 임지순

블록체인 에반젤리스트. 하드웨어 엔지니어로 커리어를 시작하여 소프트웨어 엔지니어, 프로젝트 매니저를 거쳐 현재는 블록체인 사업개발 영역을 개척하고 있으며, 암호경제학과 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)
요약