일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 이더리움
- 스마트컨트랙트
- 마스터링비트코인
- 비트코인
- 주소
- 공개키
- keras
- 마스터링 이더리움
- javascript
- 암호화폐
- 솔리디티
- 마스터링 비트코인
- 레디스
- node js
- 블록체인
- smart contract
- python
- 백서
- Redis
- 개인키
- DAPP
- js
- pythonic
- 문자열
- 알고리즘
- 개발
- solidity
- 블록체인개발
- 파이썬
- Ethereum
- Today
- Total
개발이야기
[마스터링 이더리움] Mastering Ethereum - What is Ethereum 본문
What is Ethereum?(이더리움은 무엇인가?)
이더리움은 세계의 컴퓨터(the World Computer) 라고 불려집니다. 이더리움을 두 가지 관점으로 설명할 수 있습니다.
컴퓨터공학 관점(computer science-focused) : 결정론적, ‘접근 가능 개체 + 가상 머신’ 두 가지 기능을 기반으로 한 무한한 상태 기계
실용적 관점(practical analysis) : 오픈 소스, 스마트 컨트랙트를 실행하는 탈중앙화된 기반 시스템
비트코인과 비교(Compared to Bitcoin)
비트코인 : 비트코인 코어(Bitcoin Core) 오픈 소스에 의해 개발됨(참조 구현), 튜링불완전
이더리움 : 자체적인 튜링 완전언어(Solidity), 프로그래밍 가능, 높은 자유도와 효율성
블록체인의 구성 요소
- P2P(peer-to-peer) 네트워크 : “gossip” 프로토콜 기반으로 거래 진행, 검증, 참여자들 연결
- 메시지(message) : 거래의 형태, 상태 변환 표현
- 상태 기계(state machine) : 합의 규칙에 의해 거래를 진행시키는 것
- 암호화된 블록의 체인
- 합의 알고리즘(consensus algorithm) : 블록체인을 탈 중앙화해주고, 참여자들을 합의 알고리즘에 협조하게 해준다
- 게임이론을 기반으로 만들어진 시스템 : 개방된 환경에서 경제적으로 상태 기계를 보안
- 오픈 소스 소프트웨어(open-source software)
이더리움의 개발 4단계
이더리움 개발은 크게 4단계로 구성되어있다: 프론티어(Frontier), 홈스테드(Homestead)
메트로폴리스(Metropolis), 세레니티(Serenity)
블록 #0
프론티어 - 이더리움의 초기단계, 2015년 7월 ~ 2016년 3월
블록 #200,000
아이스에이지 - 난이도 증가에 의한 하드포크
블록 #1,150,000
홈스테드 - 이더리움의 두 번째 단계, 2016년 3월 런치
블록 #1,192,000
DAO - DAO contract 해킹으로 이더리움과 이더리움 클래식으로 나뉘어짐
블록 #2,463,000
Tangerine Whistle- 수수료인 가스 계산을 위한 하드포크, 상태 정리
블록 #2,675,000
Spurious Dragon
블록 #4,370,000
메트로폴리스 비잔티움 - 2017년 10월에 런치, 메트로폴리스의 첫 하드포크
현재는 메트로폴리스 단계, 비잔티움(2017년 10월)과 콘스탄틴노플(2018년 중반)로 하드포크 계획 중
콘스탄틴노플 - PoW와 PoS를 합친 하이브리드 합의 알고리즘으로 변경
세레니티 - 이더리움의 4번째 단계, 아직 계획 없음
이더리움 : 범용 블록체인(Ethereum : A general purpose blockchain)
일반적인 블록체인(ex.비트코인 블록체인) : 비트코인의 상태와 소유권 추적
이더리움 : 범용 데이터 저장소의 상태 변환 추적, 데이터를 키-값 튜플로 표현 가능, 범용 컴퓨터와 같이 메모리를 가지고 있으며 코드를 불러올 수 있고 실행시킬 수 있다.
ex)키-값 튜플 참조 : “Mastering Ethereum”은 값, “책 제목”이라는 키에 의해 참조
이더리움의 구성요소
- P2P네트워크 : ‘이더리움 메인 네트워크’에서 실행(TCP 포트 30303)
- 합의 규칙 : yellowpaper 참조 명시에서 정의
- 트랜잭션 : 네트워크 메시지(송신자, 수신자, 값, 데이터 페이로드 포함)
- 상태 기계 : 이더리움 가상 머신(EVM)에 의해 이더리움 상태 변환 진행, EVM 프로그램은 ‘스마트 컨트랙트’라고 불리며 고레벨 언어(Solidity)로 작성되었으며, EVM에서 바이트 코드 형태로 실행됨
- 자료 구조 : 머클트리의 형태로 직렬화된 거래와 시스템 상태가 각 노드 데이터베이스에 저장되어 있다
- 합의 알고리즘 : PoW를 사용했지만, Casper라고 불리는 PoS 합의 알고리즘 사용할 예정
- 경제적 보안 : 최근에는 Ethash라는 PoW알고리즘을 사용하였지만, PoS로 바꿀 예정
- 클라이언트 : Geth나 Parity과 같은 클라이언트 소프트웨어 존재
범용 블록체인에서 탈중앙화된 어플리케이션까지 (DApps)
이더리움은 프로그래밍 가능한 탈중앙화 어플리케이션 플랫폼 서비스가 있는 것으로 확대되었다.
DApp은 스마트 컨트랙트이며 웹 사용자 인터페이스이다. 또한, 탈중앙화되고, P2P 기초로 되어있는 웹 어플리케이션이다.
DApp의 구성 : 스마트 컨트랙트 + 웹 프론트엔드 사용자 인터페이스, P2P 저장, 메시징 프로토콜과 플랫폼
인터넷의 제 3시대
Web 2.0은 사용자 콘텐츠와 즉각적인 인터페이스를 지향하는 진화 . DApp은 P2P 프로토콜
기반인 탈중앙화를 포함한다. 이를 Web의 세 번째 버전인 Web 3에서 개발된다. Web 3는 중앙에서 어플리케이션을 관리하는 것이 아니라 탈중앙화된 프로토콜 기반으로 만들어진 것이다.
web3.js 자바스크립트 기반 프로그램이 이더리움 노드와 통신을 가능하게 해주는 라이브러리
이더리움의 개발 문화
비트코인 : 보수적인 개발 문화, 모든 변화는 주의 깊게 연구됨
이더리움 : 급진적인 개발 문화, 나중에는 개발이 천천히 진행될 것이며 인터페이스는 고정될 것이다.
Ethereum Basics
통제와 책임(Control and Responsibility)
스마트 컨트랙트와 자금에 접근하는 것을 “계정” 또는 “지갑”이라고 부른다
책임감을 관리하는 여러가지 팁 :
- 즉흥적인 안전성보다 tried-and-tested 접근을 하여라
- 중요한 계정일수록, 더 높은 보안으로 관리하라
- 너의 개인 키를 일반적인 형태로 저장하지 마라
- 비밀번호를 강력하게 하며, 공유하지 마라
- 비밀번호를 디지털 형태로 저장하기 보다는 펜이나 종이를 이용하라
- 큰 거래를 하기 전에, 시험으로 조그만 거래를 먼저 해보라
이더 화폐 단위
이더리움의 화폐 단위는 ether, ETH라고 불리며, Ξ라는 단위를 쓴다. 가장 작은 단위는 wei로
1 ether는 1 * 10^18 wei이다.
이더리움 지갑 고르기
지갑(wallet) : 이더리움 계정을 관리하도록 해주는 소프트웨어 어플리케이션
지갑의 세 가지 형태 : 모바일, 데스크톱, 웹 기반 지갑
지갑 종류 :
- MetaMask : 브라우저 확장 지갑, 사용하기 쉽고 편하며 이더리움 노드와 테스트 블록체인에 연결 할 수 있다. 웹 기반 지갑
- Jaxx : 멀티 플랫폼, 멀티 화폐 지갑(안드로이드, iOS, Windows, Mac, Linux), 사용하기 쉽고 간단
모바일 & 데스크톱 지갑
- MyEtherWallet(MEW) : 웹 기반 지갑, 모든 브라우저 실행 가능
- Emerald Wallet : 이더리움 클래식 블록체인 설계, 다른 이더리움과도 연동 가능, 오픈 소스 데스크톱 어플리케이션, 풀노드나 라이트노드에서 실행 가능
네트워크 종류
- Main Ethereum Network : 메인 공용 이더리움 블록체인이며, ETH의 가치가 있다.
- Ropsten Test Network : 이더리움 공용 테스트 블록체인 네트워크이다. ETH에는 가치가 없다.
- Kovan Test Network : 이더리움 공용 테스트 블록체인 네트워크이며 PoA(Proof-of-Authority)와 “Aura” 합의 프로토콜 사용. ETH에는 가치가 없다. “Parity”에 의해 제공되는 테스트 네트워크이다.
- Rinkeby Test Network : 이더리움 공용 테스트 블록체인 네트워크이며 “Clique” 합의 프로토콜과 PoA사용. ETH에는 가치가 없다.
- Localhost 8545, Custom RPC