$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. 소개 2 이준범 • Kosslab 5기 전담 개발자 • 관심

    분야: 소프트웨어 아키텍처, 머신러닝(딥러닝,NMT), 블록체인 • Github: https://github.com/junbeomlee • 최근 진행중인 프로젝트 koa: 스마트 컨트랙트 언어
  2. 목차 3 1. It-chain • It-chain 커뮤니티 소개 • It-chain

    아키텍처 및 구현 • It-chain 합의 알고리즘 • It-chain 스마트 컨트랙트 2. 오픈소스 커미터로 블록체인 개발하기
  3. It-chain - 목표 8 1. 블록체인 코어 공부 2. 경량

    맞춤형 블록체인 엔진 • 핵심 서비스의 모듈화를 통해 목적에 맞게 쉽게 교체 가능 하도록 개발 3. 국내 블록체인 오픈소스 활성화 It-chain PBFT PoW IVM EVM
  4. It-chain ­ 요구사항 9 • 요구사항 • 제3자가 손쉽게 수정/확장할

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

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

    구현되며 각각은 AMQP(Asynchronous Message Queue Protocol)를 통해 커뮤니케이션한다.
  7. It-chain ­ 합의 알고리즘 18 It-chain Network • Permissioned P2P

    Network(Private Network) • 소수의 노드로 구성 • 빠른 합의 속도 è PBFT Consensus 알고리즘 사용
  8. It-chain ­ 합의 알고리즘 19 Consensus 알고리즘 • 분산된 프로세스

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

    3명 이상의 장군들이 같은 시각에 공격해야만 승리 • 장군들 중에는 배신자가 있어서 서로 신뢰할 수 없음
  10. It-chain ­ 합의 알고리즘 21 PBFT • 1999년 Miguel Castro와

    Barbara Riskop에 의해 도입 된 알고리즘 • 네트워크의 모든 노드는 사전에 알고 있어야하며, 한 노드는 리더
  11. It-chain ­ 스마트 컨트랙트 23 • Docker 컨데이터 기반의 독립적인

    환경 제공 • SDK를 통해 다양한 General purpose 지원 가능(현재 go 지원) • 예제: https://github.com/junbeomlee/learn-icode
  12. It-chain ­ 스마트 컨트랙트 SDK 26 • https://github.com/De-labtory/sdk • IVM에

    올리기 위한 library제공 • RequestHandler interface를 구현한 Handler를 작성
  13. 오픈소스 커미터로 블록체인 개발하기 ­준비 31 • Coding Style •

    TDD • Documentation • Template • Issue • CI • Test Coverage
  14. 오픈소스 커미터로 블록체인 개발하기 ­즐거움 35 • 열정적인 팀원(매주 오프라인

    미팅)들의 자극 • 코드 리뷰를 통해 함께 성장 • 독자를 고려한 코딩의 습관