BlockChain Project Requirement

blockchain1

Posted by 동식이 블로그 on August 19, 2019

블록체인 프로젝트개요

  • 블록체인 기반 P2P 경매시스템 개발

  • 퍼블릭 블록체인인 이더리움과 프라이빗 블록체인인 하이퍼레저 패브릭의 네트워크를 구축

  • P2P경매 시스템은 사용자가 시스템에 등록한 자산인 디지털 작품을 경매를 통해 판매 / 소유권 이전

    • 서버를 거치지 않고 이더리움 스마트 컨트랙트를 통해 경매를 직접 진행
    • 디지털 작품의 소유권읠 프라이빗, 허가형 블록체인의 대표인 하이퍼레저 패브릭에 기록하는 기능
    • 시스템을 통한 작품등록, 삭제, 경매 완료 등 소유권에 변경이 발생하는 이벤트가 있을 때 체인코드를 호출하여 소유권 이력을 기록하게 된다.

1.1. 이더리움 프로젝트 개요

  • 블록체인 2.0으로 지칭되는 이더리움(Ethererum)의 블록체인 익스플로러를 제작

이더리움 블록체인의 특징

  • 스마트 컨트랙트(Smart Contract)의 기능을 새롭게 확장해 적용한 블록체인 플랫폼
  • 스마트 컨트랙트만을 위한 언어(Solidity, LLL등)를 개발하고 이를 실행시키기 위한 가상머신(EVM, Ethereum Virtual Machine)제작
  • 반복문을 포함, 좀 더 복잡한 로직을 구현할 수 있는 튜링 완전 언어
  • 비트코인과의 차이점
    • 해시함수
      • ASIC 저항성을 향상하고 채굴의 중앙화를 해소하기 위해 Ethash라는 KECCACK 기반의 해시 알고리즘을 개발하여 사용
    • MPT(Modified Merkle Patricia Trie)
      • 트랜잭션 데이터의 위변조 감지 및 스마트 컨트랙트 관련 상태정보를 저장, 관리하기 위한 기술
      • 머클트리를 Patricia Trie와 접목시킨 MPT를 사용해 상태정보를 key-value 형식으로 저장하여 관리
    • 암호화폐의 관리 기술
      • 사용자 계정에 기반하여 암호화폐를 관리
      • 사용자 중심의 관리

프로젝트에서 사용하는 기술 스택 / 툴

VirtualBox

  • 가상화를 위한 소프트웨어
  • 소프트웨어를 하드웨어로부터 독립시켜 구동할 수 있는 기술
  • 이번 실습에서는 하드웨어 가상화(구체적으로는 Hypervisor를 이용한 하드웨어 가상화)에 해당

Oracle VM VirtualBox 설치

Vagrant

  • 가상머신 프로비저닝 도구
  • 간단한 스크립트 작성을 통해 다양한 가상머신을 쉽게 생성, 수정, 삭제등을 관리
  • 프로비저닝
    • 사용자의 요구에 맞게 미리 시스템 자원을 정의하고 할당 및 배포하였다가 필요 시 시스템을 즉시 사용할 수 있도록 준비해두는것
    • 서버, 운영체제 및 소프트웨어를 비롯해 사용자 계정 프로비저닝 등 그 영역이 다양

vagrant설치

Geth

  • Go 언어로 개발된 이더리움 클라이언트
  • 이더리움에서 제공하는 다양한 API를 사용해 볼 수 있으며 메인넷, 테스트넷 등과의 연동을 쉽게 할 수 있도록 많은 편의성을 제공
  • 가장 널리 사용되는 이더리움 클라이언트

geth설치

Solidity

  • 이더리움에서 개발한 스마트 컨트랙트 개발 언어
  • 컴파일러를 통해 바이트코드로 변환되어 이더리움 가상 머신 위에서 동작하게 됨
  • 튜링완전(Turing-complete)
    • 어떤 프로그래밍 언어나 추상 기계가 튜링 기계와 동일한 계산 능력을 가진다는 의미

VSCode

  • VSCode

Remix

  • 별도의 설치없이 브라우저 상에서 이용가능한 이더리움 스마트 컨트랙트 개발 도구
  • 테스트넷과의 연동을 통한 배포 및 호출등을 쉽게 진행 가능
  • 스마트 컨트랙트에 소요되는 Gas를 미리 예상해 볼 수 있고 UI를 통한 손쉬운 호출로 이더리움 스마트 컨트랙트를 개발하기에 좋은 도구

https://remix.ethereum.org/

Metamask

  • 이더리움 지갑 프로그램

1.2. 하이퍼레저 패브릭 프로젝트 개요

  • 기업 간 시너지를 이끌어내기 위한 블록체인 인프라
  • 완벽한 탈중앙화에 목적이 있는 것이 아닌 기업 주도 하에 시장 및 비용의 효 율성을 창출하는데 초점을 맞춘 블록체인 기술
  • 따라서 참여자간 완전한 분산, 분권화를 지향하는 비허가형 블록체인과는 구성 및 동작 방식이 다소 상이
  • 비허가형 블록체인
    • 불특정 다수가 자유롭게 네트워크에 참여하여 블록체인을 구성
  • 허가형 블록체인
    • 비독점적인 이해 당사자들이 모여 하나의 컨소시엄을 구성
    • 네트워크에 진입하기 위한 다양한 인증절차가 존재하며 이를 통과한 참여자만이 허가형 블록체인에 참여할 수 있다.
    • 이렇게 인증절차를 통해 구성된 네트워크를 패브릭에서는 비즈니스 네트워크라고 한다
    • 인증절차에 의해 신뢰가 보장된 구성원을 가지기 때문에 비허가형 블록체인과 같이 리소스 소모를 요구하는 합의과정을 다소 축소하여 적용
  • 패브릭에서의 합의과정
    • 정렬 서비스라고 지칭하며 빠른 거래 검증 및 블록 생성을 지원하고 있다.

프로젝트에서 사용하는 기술 스택 / 툴

카프카(Kafka)

  • LinkedIn에서 공개한 분산 메시징, 메시지 큐 기술의 일종
  • 패브릭 네트워크에서는 오더링 서비스에 적용하여 사용
  • 발행-구독(Publish-Subscribe) 모델을 사용하여 분산 메시징 서비스를 제공
    • 발행-구독 모델은 메시지를 특정 수신자에게 직접 보내는 것이 아니라 발행자가 메시지 큐에 메시지를 기록하면 이를 구독하는 참여자는 큐에서 메시지를 가져오는 방식
  • 카프카 내부에서는 발행-구독 모델에 기반하여 주제(Topic) 별로 메시지를 분류한다.
  • 주제 별로 분류된 메시지는 다시 파티션(Partition)으로 쪼개어 관리하는 특직을 가짐

자세한 내용 : https://en.wikipedia.org/wiki/Apache_Kafka

Docker, Docker-compose

  • 도커는 소프트웨어 컨테이너 기술을 기반으로 하는 OS수준 가상화 프로그램
  • 가상화로 동작하는 소프트웨어의 프로세스를 OS 및 다른 어플리케이션으로부터 격리시켜 구동
  • 도커에서는 구동하는 프로그램이 요하는 수준의 리소스만을 할당하고, 이후 구동이 시작되면 도커는 독립적으로 구동되기 때문에 성능적으로 손실이 발생하지 않는다는 특징을 가짐
  • Docker-compose는 다중 도커 컨테이너를 실행하고 관리하기 위한 도구이다
  • YAML 설정파일을 이용하여 구동할 도커 어플리케이션들의 설정을 정의할 수 있으며, 하나의 명령어로 다수의 도커 어플리케이션을 관리할 수 있다.

자세한 내용 : https://www.docker.com/, https://en.wikipedia.org/wiki/Docker_(software)