$30 off During Our Annual Pro Sale. View Details »

[마소콘2018] 프라이빗 블록체인 It-chain 개발기 - 이준범

[마소콘2018] 프라이빗 블록체인 It-chain 개발기 - 이준범

2018년 12월 15일 마이크로소프트웨어 콘퍼런스, 마소콘 2018
프라이빗 블록체인 It-chain 개발기 - 이준범

MICROSOFTWARE

December 17, 2018
Tweet

More Decks by MICROSOFTWARE

Other Decks in Programming

Transcript

  1. 프라이빗 블록체인 it-chain 개발기
    이준범
    1

    View Slide

  2. 소개
    2
    이준범
    • Kosslab 5기 전담 개발자
    • 관심 분야:
    소프트웨어 아키텍처, 머신러닝(딥러닝,NMT), 블록체인
    • Github:
    https://github.com/junbeomlee
    • 최근 진행중인 프로젝트
    koa: 스마트 컨트랙트 언어

    View Slide

  3. 목차
    3
    1. It-chain
    • It-chain 커뮤니티 소개
    • It-chain 아키텍처 및 구현
    • It-chain 합의 알고리즘
    • It-chain 스마트 컨트랙트
    2. 오픈소스 커미터로 블록체인 개발하기

    View Slide

  4. It-chain
    4

    View Slide

  5. It-chain 오픈소스 커뮤니티(De-labtory)
    5
    • 분산 플랫폼과 관련된 여러 프로젝트를 진행
    • 다양한 protocol 연구 및 개발

    View Slide

  6. It-chain
    6
    • Github: https://github.com/De-labtory/engine
    • 컨트리뷰터: 27명
    • Star: 130
    • Commit: +2200

    View Slide

  7. It-chain - 시작
    7
    Bitcoin
    Ethereum
    Solidity
    Hyperledger
    PoW
    MerkleTree
    Transaction
    Block
    PrivateKey
    Hash
    Signing

    View Slide

  8. It-chain - 목표
    8
    1. 블록체인 코어 공부
    2. 경량 맞춤형 블록체인 엔진
    • 핵심 서비스의 모듈화를 통해 목적에 맞게 쉽게 교체 가능 하도록 개발
    3. 국내 블록체인 오픈소스 활성화
    It-chain
    PBFT
    PoW
    IVM
    EVM

    View Slide

  9. It-chain ­ 요구사항
    9
    • 요구사항
    • 제3자가 손쉽게 수정/확장할 수 있으면 좋겠음
    • 오픈소스로 해야 하니까, 최대한 개발자들이 자기 영역에서 간섭받지 않고 개발을 진행할 수 있으면
    좋겠군
    • 중앙 관리자 없이 P2P구조를 가져야 할 것 같아
    • 기본적인 블록체인 기능들(블록저장, 합의, 인증)을 지원해야해
    • Consensus는 PBFT를 지원하면 좋겠어

    View Slide

  10. It-chain ­ 설계
    10
    • 아키텍처 설계
    • 제3자가 손쉽게 수정/확장할 수 있으면 좋겠음
    • 오픈소스로 해야 하니까, 최대한 개발자들이 자기 영역에서 간섭받지 않고 개발을 진행할 수
    있으면 좋겠군
    • 각 블록체인 기능을 지원하는 컴포넌트들을 독립적으로 구성
    • Event Driven 아키텍처 스타일 도입
    • 중앙 관리자 없이 P2P구조를 가져야 할 것 같아
    • P2P Network 구성
    • 기본적인 블록체인 기능들(블록저장, 합의, 인증)을 지원해야해
    • Block Storage 컴포넌트
    • Authentication 컴포넌트
    • Consensus 컴포넌트
    • Consensus는 PBFT를 지원하면 좋겠어
    • Transaction pool 컴포넌트, 리더 노드 개념 도입

    View Slide

  11. It-chain - 아키텍처
    11
    it-chain network는 it-chain node로 구성된 P2P network
    Leader와 Peer로 구성(PBFT)

    View Slide

  12. It-chain - 아키텍처
    12
    it-chain은 여러개의 독립적으로 동작하는 핵심 컴포넌트들로 구현되며
    각각은 AMQP(Asynchronous Message Queue Protocol)를 통해 커뮤니케이션한다.

    View Slide

  13. It-chain - 시나리오
    13
    • Network 구성
    • One leader

    View Slide

  14. It-chain
    14
    • Submit Transaction

    View Slide

  15. It-chain
    15
    • Forward to leader

    View Slide

  16. It-chain
    16
    • Create Block and Start Consensus
    • Simulate Transaction

    View Slide

  17. It-chain
    17
    • Add block and update state

    View Slide

  18. It-chain ­ 합의 알고리즘
    18
    It-chain Network
    • Permissioned P2P Network(Private Network)
    • 소수의 노드로 구성
    • 빠른 합의 속도
    è PBFT Consensus 알고리즘 사용

    View Slide

  19. It-chain ­ 합의 알고리즘
    19
    Consensus 알고리즘
    • 분산된 프로세스 또는 시스템간의 단일 데이터 값에 대한 합의를 달성하는데 사용되는
    알고리즘
    • 여러 개의 신뢰할 수 없는 노드가 포함된 네트워크에서 안정성을 달성하도록 설계
    • 비잔틴 장군 문제 해결

    View Slide

  20. It-chain ­ 합의 알고리즘
    20
    비잔틴 장군 문제
    • 5명중 3명 이상의 장군들이 같은 시각에 공격해야만 승리
    • 장군들 중에는 배신자가 있어서 서로 신뢰할 수 없음

    View Slide

  21. It-chain ­ 합의 알고리즘
    21
    PBFT
    • 1999년 Miguel Castro와 Barbara Riskop에 의해 도입 된 알고리즘
    • 네트워크의 모든 노드는 사전에 알고 있어야하며, 한 노드는 리더

    View Slide

  22. It-chain ­ 합의 알고리즘
    22
    PBFT(Tendermint)

    View Slide

  23. It-chain ­ 스마트 컨트랙트
    23
    • Docker 컨데이터 기반의 독립적인 환경 제공
    • SDK를 통해 다양한 General purpose 지원 가능(현재 go 지원)
    • 예제: https://github.com/junbeomlee/learn-icode

    View Slide

  24. It-chain ­ 스마트 컨트랙트
    24
    • Architecture
    • ICode는 self-contained
    • gRPC로 통신

    View Slide

  25. It-chain ­ 스마트 컨트랙트
    25
    • Deployment
    ./It-chain icode deploy github.com/junbeomlee/learn-icode ~/.ssh/id_rsa

    View Slide

  26. It-chain ­ 스마트 컨트랙트 SDK
    26
    • https://github.com/De-labtory/sdk
    • IVM에 올리기 위한 library제공
    • RequestHandler interface를 구현한 Handler를 작성

    View Slide

  27. It-chain ­ 스마트 컨트랙트 예제
    27

    View Slide

  28. 오픈소스 커미터로 블록체인 개발하기
    28

    View Slide

  29. 오픈소스 커미터로 블록체인 개발하기 -시작
    29

    View Slide

  30. 오픈소스 커미터로 블록체인 개발하기 ­팀구성
    30

    View Slide

  31. 오픈소스 커미터로 블록체인 개발하기 ­준비
    31
    • Coding Style
    • TDD
    • Documentation
    • Template
    • Issue
    • CI
    • Test Coverage

    View Slide

  32. 오픈소스 커미터로 블록체인 개발하기 ­개발
    32

    View Slide

  33. 오픈소스 커미터로 블록체인 개발하기 ­합숙
    33

    View Slide

  34. 오픈소스 커미터로 블록체인 개발하기 ­결과
    34

    View Slide

  35. 오픈소스 커미터로 블록체인 개발하기 ­즐거움
    35
    • 열정적인 팀원(매주 오프라인 미팅)들의 자극
    • 코드 리뷰를 통해 함께 성장
    • 독자를 고려한 코딩의 습관

    View Slide

  36. 36
    THANK YOU

    View Slide