Mastering ethereum
비트코인과 이더리움 기술을 중심으로
비트코인부터 해야 하나?
• 비트코인은 어렵습니다.

• 이더리움은… 비트코인은 그나마 쉬웠습니다.

• 비트코인 80% + X배 더 추가

• 귀찮으니 같이 할게요. (갑자기 넘어가는건 끊고 질문하기)
비트코인과 이더리움의 차이
• 비트코인

• 최초의 블록체인. Cryptocurrency POC. 최소한의 구현

• P2P, POW, Signature, Hash, …

• 이더리움

• 디지털 통화 지불 네트워크… 아님!

• But, 블록체인 재발명… 역시 아님!
블록 체인의 구성 요소
• 네트워크 - P2P

• 메시지 - 트랜잭션 메시지 (상태 전이)

• 상태 시스템 - 트랜잭션을 처리하는 시스템

• 블록 체인 - 트랜잭션 (상태 전이)들을 기록

• 합의 규칙 & 알고리즘 - 전이와 유효성 관리, 분권화

• 인센티브 제도 - 상태 시스템을 안정적으로 보장하기 위한 게임이론

• 이 모든 것들을 위한 소프트웨어 구현체들
Decentralized System
• 변경 내역을 어떻게 기록 하고 보관하는가?

• 모두 똑같이 중복 기록 ⇨ 어떻게 동기화 하지?

• BlockChain
비밀키와 주소
• 비밀키: 굉장히 큰 무작위 난수 (2^256)

• 공개키: 비밀키를 이용하여 생성

• 주소: 공개키의 해시 중 일부 (일부라고 해도 매우 큼)
계정
• 비트코인의 주소 개념에서 확장

• 외부 주소 (EOA - External owned address)

• 비트코인의 주소와 동일

• 비밀키, 주소, 서명 등등…

• 계약

• No 비밀키 (외부 소유자 없음)

• 주소는 있으나 서명은 하지 못 함
지갑
• 키 생성과 관리

• Nondeterministic (Random) Wallets

• 무작위로 여러 key 생성

• Deterministic (Seeded) Wallets

• 하나의 seed -> 여러 key 생성
트랜잭션
• Turing-complete Computation

• 가스 비용 한도 내에서 유효성 검증이 가능한 상태 변화

• Value 와 Data 로 구분

• 둘 다 있을 수도, 하나만 있을 수도, 둘 다 없을 수도

• Value: src 에서 dst 로 보내는 이더
Transaction Nonce
• 비트코인에는 없는 개념

• 계정 별 트랜잭션을 직렬화 하는 목적으로 사용

• 무작위 값이 아닌 1씩 증가
Contract
• 실행 가능한 코드

• Immutable, Deterministic, EVM context

• 변경 불가

• 결정적으로 재생 가능한 상태 변화를 발생

• 자체적으로 Ether, data (그 외 다른 것들도) 소유할 수 있음

• 작동은 언제나 EOA 에서 시작

• 절대 스스로 동작하지 않음 (백그라운드 프로세스? 그런거 없다)
Solidity vs Viper
• Solidity (Java 같은 느낌)

• Viper (Scala 같은 느낌. 본질적으로 계약 구현에 유리함)

• 익숙해지려면 시간이 필요… ㅠㅠ
Tokens
• 비트코인에는 없는 개념

• ColoredCoin 이라는 기술이 있었음 (비공식, 사장된 기술)

• 대체 가능성 (Fungible)

• “대체 가능 토큰”과 “대체 불가능 토큰” 생성 가능
토큰의 종류
• ERC 20

• 초기의 토큰. 쉽고 간단하고 많지만 별 볼일 없음

• ERC 223, ERC 777

• 거의 안 쓰이거나 별로 볼 일 없음

• ERC 721

• 고유 (Non-fungible, 대체불가) 토큰

• 기존 사례들을 많이 찾아서 연구해야 함
ERC 1155
• 새로운 제안 (마스터링 이더리움에는 없음 ㅠㅠ)

• Fungible + Non-fungible

• 아직은 널리 받아들여지지 않고 있음
신탁 (Oracle)
• 이 책을 꼭 읽어야 했던 가장 큰 이유 (읽고 나서야 깨달음)

• 저작권 등록 구현은 매우 쉽다는 것을 깨달음

• 그래서 너무 늦었을 수도 있음… (늦었다고 생각할 때가…)
분산 응용 프로그램
• DApps = Web3

• 이더리움의 원대한 꿈

• Back-end: 스마트 계약

• Front-end: 웹 기반 UI

• Storage: DB 같은 것

Mastering ethereum

  • 1.
  • 2.
    비트코인부터 해야 하나? •비트코인은 어렵습니다. • 이더리움은… 비트코인은 그나마 쉬웠습니다. • 비트코인 80% + X배 더 추가 • 귀찮으니 같이 할게요. (갑자기 넘어가는건 끊고 질문하기)
  • 3.
    비트코인과 이더리움의 차이 •비트코인 • 최초의 블록체인. Cryptocurrency POC. 최소한의 구현 • P2P, POW, Signature, Hash, … • 이더리움 • 디지털 통화 지불 네트워크… 아님! • But, 블록체인 재발명… 역시 아님!
  • 4.
    블록 체인의 구성요소 • 네트워크 - P2P • 메시지 - 트랜잭션 메시지 (상태 전이) • 상태 시스템 - 트랜잭션을 처리하는 시스템 • 블록 체인 - 트랜잭션 (상태 전이)들을 기록 • 합의 규칙 & 알고리즘 - 전이와 유효성 관리, 분권화 • 인센티브 제도 - 상태 시스템을 안정적으로 보장하기 위한 게임이론 • 이 모든 것들을 위한 소프트웨어 구현체들
  • 5.
    Decentralized System • 변경내역을 어떻게 기록 하고 보관하는가? • 모두 똑같이 중복 기록 ⇨ 어떻게 동기화 하지? • BlockChain
  • 6.
    비밀키와 주소 • 비밀키:굉장히 큰 무작위 난수 (2^256) • 공개키: 비밀키를 이용하여 생성 • 주소: 공개키의 해시 중 일부 (일부라고 해도 매우 큼)
  • 7.
    계정 • 비트코인의 주소개념에서 확장 • 외부 주소 (EOA - External owned address) • 비트코인의 주소와 동일 • 비밀키, 주소, 서명 등등… • 계약 • No 비밀키 (외부 소유자 없음) • 주소는 있으나 서명은 하지 못 함
  • 8.
    지갑 • 키 생성과관리 • Nondeterministic (Random) Wallets • 무작위로 여러 key 생성 • Deterministic (Seeded) Wallets • 하나의 seed -> 여러 key 생성
  • 9.
    트랜잭션 • Turing-complete Computation •가스 비용 한도 내에서 유효성 검증이 가능한 상태 변화 • Value 와 Data 로 구분 • 둘 다 있을 수도, 하나만 있을 수도, 둘 다 없을 수도 • Value: src 에서 dst 로 보내는 이더
  • 10.
    Transaction Nonce • 비트코인에는없는 개념 • 계정 별 트랜잭션을 직렬화 하는 목적으로 사용 • 무작위 값이 아닌 1씩 증가
  • 11.
    Contract • 실행 가능한코드 • Immutable, Deterministic, EVM context • 변경 불가 • 결정적으로 재생 가능한 상태 변화를 발생 • 자체적으로 Ether, data (그 외 다른 것들도) 소유할 수 있음 • 작동은 언제나 EOA 에서 시작 • 절대 스스로 동작하지 않음 (백그라운드 프로세스? 그런거 없다)
  • 12.
    Solidity vs Viper •Solidity (Java 같은 느낌) • Viper (Scala 같은 느낌. 본질적으로 계약 구현에 유리함) • 익숙해지려면 시간이 필요… ㅠㅠ
  • 13.
    Tokens • 비트코인에는 없는개념 • ColoredCoin 이라는 기술이 있었음 (비공식, 사장된 기술) • 대체 가능성 (Fungible) • “대체 가능 토큰”과 “대체 불가능 토큰” 생성 가능
  • 14.
    토큰의 종류 • ERC20 • 초기의 토큰. 쉽고 간단하고 많지만 별 볼일 없음 • ERC 223, ERC 777 • 거의 안 쓰이거나 별로 볼 일 없음 • ERC 721 • 고유 (Non-fungible, 대체불가) 토큰 • 기존 사례들을 많이 찾아서 연구해야 함
  • 15.
    ERC 1155 • 새로운제안 (마스터링 이더리움에는 없음 ㅠㅠ) • Fungible + Non-fungible • 아직은 널리 받아들여지지 않고 있음
  • 16.
    신탁 (Oracle) • 이책을 꼭 읽어야 했던 가장 큰 이유 (읽고 나서야 깨달음) • 저작권 등록 구현은 매우 쉽다는 것을 깨달음 • 그래서 너무 늦었을 수도 있음… (늦었다고 생각할 때가…)
  • 17.
    분산 응용 프로그램 •DApps = Web3 • 이더리움의 원대한 꿈 • Back-end: 스마트 계약 • Front-end: 웹 기반 UI • Storage: DB 같은 것