책 소개
어느새 '블록체인'이라는 용어가 낯설지 않을 정도로 점점 대중화되고 있다. 하지만 실제 블록체인을 활용해 개발 업무를 시작하려면 어디서부터 시작해야 할지 막막할 것이다. 이 책은 블록체인의 전반적인 개념을 설명하고, 그중 이더리움을 활용하여 다양한 프로젝트를 구축할 수 있도록 예시를 들어 쉽게 설명하고 있다. 이더리움을 활용한 개발업무를 고민 중인 독자에게 입문서로 추천한다.
★ 이 책에서 다루는 내용 ★
■ 블록체인 기술의 기본 개요
■ 블록체인 기술 및 기능 구현과 이를 통해 달성 가능한 것들
■ 솔리디티 및 Web3.js를 활용한 DApp 구축
■ geth 명령어와 암호화에 대한 이해
■ 이더리움 지갑 생성
■ 컨소시엄 블록체인에 대한 탐색
★ 이 책의 대상 독자 ★
이 책은 블록체인과 이더리움을 사용해 변조 방지 데이터(그리고 트랜잭션) 애플리케이션을 만들고자 하는 자바스크립트 개발자를 대상으로 한다. 암호 화폐 및 이를 가능케 하는 로직과 데이터베이스에 관심 있는 사람에게 매우 유용하다.
★ 이 책의 구성 ★
1장. '탈중앙화 애플리케이션의 이해'에서는 DApp의 개념을 설명하고, 동작 방식에 대한 개요를 제공한다.
2장. '이더리움 동작 방식의 이해'에서는 이더리움 동작 방식을 설명한다.
3장. 스마트 컨트랙트 작성'에서는 스마트 컨트랙트 작성 방법과 geth의 대화형 콘솔에서 web3.js를 활용한 트랜잭션 배포 및 브로드캐스팅 방법을 보여준다.
4장. 'web3.js 시작하기'에서는 web3.js에 대한 소개 및 임포트 방법, geth와 연결하는 방법, Node.js 또는 클라이언트 측 자바스크립트 내에서 사용하는 방법을 설명한다.
5장. '지갑 서비스 구축'에서는 사용자들이 오프라인 상태더라도 이더리움 지갑을 쉽게 생성하고 관리할 수 있는 지갑 서비스 구축 방법을 설명한다. 이를 위해 특별히 LightWallet 라이브러리를 사용할 것이다.
6장. '스마트 컨트랙트 배포 플랫폼 구축'에서는 web3.js를 사용한 스마트 컨트랙트 컴파일, web3.js와 EthereumJS를 사용한 배포 방법을 보여준다.
7장. '베팅 애플리케이션 구축'에서는 이더리움 스마트 컨트랙트로부터 월드 와이드 웹의 데이터에 접근하기 위해 Oraclize를 사용한 HTTP 요청 생성 방법을 설명한다. 또한 IPFS 내에 저장된 파일에 대한 접근 방법, 문자열을 다루기 위한 strings 라이브러리 사용법도 배울 것이다.
8장. '엔터프라이즈 수준의 스마트 컨트랙트 구축'에서는 엔터프라이즈 수준의 DApp 작성을 쉽게 해주는 트러플(Truffle)의 사용법을 설명한다. 알트코인(altcoin)을 구축하면서 트러플에 대해 배워볼 것이다.
9장. '컨소시엄 블록체인 구축'에서는 컨소시엄 블록체인에 대해 논의할 것이다.
작가 소개
지은이 : 나라얀 프루스티
5년 차 풀 스택 개발자다. 블록체인 및 자바스크립트를 전문적으로 다루며, 인도, 싱가포르, 미국, 아랍에미리트의 스타트업, 정부, 기업 대상으로 확장 가능한 제품을 구축하는 데 핵심적인 역할을 했다. 탈중앙화된 애플리케이션을 구축하기 위해 이더리움, 비트코인, Hyperledger, IPFS, 리플 등을 정기적으로 사용한다. 현재 두바이 에미리트 국립 은행의 블록체인 관련 주제별 전문가(SME, Subject-Matter Expert)로 근무하고 있다.
자바스크립트에 관한 『ECMAScript 6 길들이기』(에이콘, 2016)와 『Modern JavaScript Applications』(packt, 2016)를 저술했다.
실제 업무의 문제를 해결해주는 흥미로운 일이라면 즉시 작업을 시작한다. 18세의 나이에 MP3 검색 엔진을 개발했으며, 그 이후에는 전 세계 사람들이 사용하는 다양한 애플리케이션을 개발했다. 확장 가능한 애플리케이션을 상단부터 하단까지 개발할 수 있는 능력이 그를 특별하게 만드는 요인이다.
현재 블록체인 기술을 활용해 작업을 더 쉽고, 더 빠르고, 더 적은 비용으로 수행하는 임무를 맡고 있다. 또한 블록체인 기술을 활용해 부패 방지, 사기 방지, 투명성 확보 등을 실현하는 가능성에 대해서도 검토하고 있다.
옮긴이 : 천민욱
소프트웨어 개발 업무에서 축적한 경험을 바탕으로 현재 보안 소프트웨어 회사에서 엔터프라이즈 고객들을 대상으로 프리미엄 기술 지원 및 컨설팅 업무를 수행하고 있다. 리눅스, 웹, 파이썬을 좋아하며, 매일 점심으로 무엇을 먹을지 고민하는 평범한 엔지니어다.
목 차
1장. 탈중앙화 애플리케이션의 이해
__탈중앙화 애플리케이션이란 무엇인가?
____탈중앙화 애플리케이션의 장점
____탈중앙화 애플리케이션의 단점
__탈중앙화 자율 조직
__DApp 내에서 사용자 ID
__DApp의 사용자 계정
__중앙 집중화 애플리케이션에 대한 접근
__DApp 내에서의 내부 화폐
____DApp 내부 화폐의 단점
__승인이 필요한 DApp은 무엇인가?
__대중적인 DApp
____비트코인
____이더리움
____Hyperledger 프로젝트
____IPFS
____네임코인
____대시
____BigChainDB
____OpenBazaar
____리플
__요약
2장. 이더리움 동작 방식의 이해
__이더리움의 개요
__이더리움 계정
__트랜잭션
__합의
__타임스탬프
__논스
__블록 시간
__포크
__창조 블록
__이더 액면가
__이더리움 가상 머신
__가스
__피어 검색
__위스퍼와 스웜
__geth
____geth 설치
____JSON-RPC 및 자바스크립트 콘솔
____하위 명령어 및 옵션
____계정 생성
__이더리움 지갑
__미스트
__약점
____시빌 공격
____51% 공격
__세레니티
____지불 및 상태 채널
____지분 증명 및 캐스퍼
____샤딩
__요약
3장. 스마트 컨트랙트 작성
__솔리디티 소스 파일
__스마트 컨트랙트 구조
__데이터 위치
__다른 데이터 유형은 무엇인가?
____배열
____문자열
____구조체
____열거형
____매핑
____delete 연산자
____기본 유형 간의 변환
____var 사용
__제어 구조
__new 연산자를 사용해 컨트랙트 생성
__예외
__외부 함수 호출
__컨트랙트의 특징
____가시성
____함수 변경자
____폴백 함수
____상속
__라이브러리
____for 사용
__다수의 값 리턴
__다른 솔리디티 소스 파일 가져오기
__전역적으로 사용 가능한 변수
____블록 및 트랜잭션 속성
____주소 유형 관련
____컨트랙트 관련
__이더 단위
__존재, 무결성, 소유권 증명
__컨트랙트 컴파일 및 배포
__요약
4장. web3.js 시작하기
__web3.js 소개
____web3.js 불러오기
____노드에 연결
____API 구조
____BigNumber.js
____단위 변환
____가스 가격, 잔액, 트랜잭션 상세 정보 검색
____이더 송금
____컨트랙트 작업
____컨트랙트 이벤트 검색 및 리스닝
__소유권 컨트랙트를 위한 클라이언트 구축
____프로젝트 구조
____백엔드 구축
____프론트엔드 구축
____클라이언트 테스트
__요약
5장. 지갑 서비스 구축
__온라인 지갑과 오프라인 지갑의 차이
__hooked-web3-provider 및 ethereumjs-tx 라이브러리
__계층적인 결정적 지갑은 무엇인가?
__키 유도 함수 소개
__LightWallet 소개
____HD 유도 경로
__지갑 서비스 구축
____사전 필요조건
____프로젝트 구조
____백엔드 구축
____프론트엔드 구축
____테스트
__요약
6장. 스마트 컨트랙트 배포 플랫폼 구축
__트랜잭션 논스 계산
__solcjs 소개
____solcjs 설치
____solcjs API
__컨트랙트 배포 플랫폼 구축
____프로젝트 구조
____백엔드 구축
____프론트엔드 구축
____테스트
__요약
7장. 베팅 애플리케이션 구축
__Oraclize 소개
____어떻게 동작하는가?
____데이터 원본
____진위 증명
____가격
____Oraclize API 시작하기
____쿼리 암호화
____Oraclize 웹 통합 개발 환경
__문자열 작업
__베팅 컨트랙트 구축
__베팅 컨트랙트 클라이언트 구축
____프로젝트 구조
____백엔드 구축
____프론트엔드 구축
____클라이언트 테스트
__요약
8장. 엔터프라이즈 수준의 스마트 컨트랙트 구축
__ethereumjs-testrpc 탐색
____설치 및 사용법
____사용 가능한 RPC 메소드
__이벤트 토픽은 무엇인가?
__trufflecontract 시작하기
____truffle-contract 설치 및 임포트
____테스트 환경 설정
____tffltt API
__트러플 소개
____트러플 설치
____트러플 초기화
____컨트랙트 컴파일
____설정 파일
____컨트랙트 배포
____단위 테스트 컨트랙트
____패키지 관리
____트러플 콘솔 사용
____트러플 컨텍스트 내에서 외부 스크립트 실행
____트러플 빌드 파이프라인
____트러플 서버
__요약
9장. 컨소시엄 블록체인 구축
__컨소시엄 블록체인은 무엇인가?
__진위 증명 합의 프로토콜은 무엇인가?
__패리티 소개
____Aura 동작 방식에 대한 이해
____패리티 실행
____프라이빗 네트워크 생성
____권한 및 개인정보 보호
__요약
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
| 반품사유 | 반품 배송비 부담자 |
|---|---|
| 단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
| 고객 부담이 아닙니다. |
| 진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
|---|---|---|---|
| 어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
| 환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
| 결제수단 | 환불시점 | 환불방법 |
|---|---|---|
| 신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
| 계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
| 휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
| 포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
| 상품군 | 취소/반품 불가사유 |
|---|---|
| 의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
| 계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
| 가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
| 자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
| CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
| 상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
| 노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |










