블록체인과 하이퍼레저 패브릭 - 서중원 박사과정 연구원

강의 기간: 2019.12.27 ~ 2019.12.28



블록체인?


  • 금융: 돈이 된다 (암호화폐)

  • 사회: 신뢰를 보장하는 기술, 평등한 세상, 동등한 기회

  • 기술


여러가지 기술이 융합되어 탄생한 것


  • 블록체인의 뚜렷한 정의는 때로 말하기 어렵다.

  • 신뢰를 만드는 기계

  • 분산 디지털 원장 또는 여러가지 기술의 집합체



블록체인의 역사


  • 사이버펑크 운동
    • 무정부주의로 온라인으로만 가보자!

  • 데이터 위조 방지 기술

  • 스마트 컨트랙트 - 이미 이전에 제안된 기술이지만 이더리움에 의해 잘 알려지게 되었다.

  • 근황: 다양한 분야(교통, 이력, 헬스케어, 유통, 보험, 은행 등)에서 쓰일 수 있음에도 암호화폐로 인해 투기 목적이 대부분일 것이라는 의견이 강해지면서 기대치가 바닥까지 내려온 상태



블록체인의 기술적 요소


  • P2P Network
    • 일반적인 P2P 다운로드 서비스
    • 점점 더 큰 파일을 어떻게 빠르게 전송할까 고민하다가 발전됨

  • Hash Algorithm

  • Consensus Algorithm

  • Key

  • Smart Contract



클라이언트 & 서버 vs P2P


[클라이언트 & 서버]

  • 서버를 통해 모든 통신이 이루어진다.

  • 유지보수가 쉽다.

  • 보안 유지가 쉽다.


[P2P]

  • 트래픽이 분산된다.

  • 업데이트가 어렵다.





P2P의 종류


[Pure P2P]

  • 실질적으로는 이론상으로만 존재

  • 모든 노드가 동등한 입장

  • 새로운 노드의 추가가 쉬움

  • 근처에 있는 노드의 아이디를 모르면 쓰기 어렵다.

    • 전 세계를 대상으로 할 때는 어려움이 더 크다.



[Hybrid P2P]

  • 시드 노드가 모든 노드들의 IP를 가지고, 새로운 접근이 생길 때마다 IP를 제공받아야 한다. 하지만 서버와 같은 느낌이기 때문에 어떻게 신뢰하고 보안을 유지할 것인가가 관건이다.

  • 각 노드들의 정보가 인덱스 서버에 기록된다.

  • 노드 간의 데이터는 P2P 통신으로 이루어지나 탐색 및 발견은 인덱스 서버를 통해 이루어진다.



해시 알고리즘


  • 데이터를 지키기 위한 중요 알고리즘

  • 최근 양자 컴퓨터가 이를 위협하고 있다.

  • 하나의 데이터를 해시 함수를 통해 변환하여 결과적으로 작은 크기의 파일과 유니크한 아이디를 갖는다.

  • 임의의 길이를 갖는 데이터를 고정된 길이를 가진 해시 값으로 바꿔주는 함수이다.


  • Collision-free: 해시 값이 서로 충돌할 일이 무시 가능할 정도로 낮다.

  • Hiding: 해시 값으로 기존 데이터 유추가 사실상 불가능하다.

  • Puzzle-friendly: 데이터의 일부를 찾기가 어렵다.


  • 데이터의 무결성을 검증하는 데 사용하며, Proof of Work에 사용한다.



합의 알고리즘


  • 블록체인의 꽃

  • 클라이언트 & 서버 구조는 서버에 의해 결정이 되지만, P2P Network에서는 반대하는 의견이 있을 수 있다.

  • 모든 노드가 참여하여 리더를 투표를 통해 선출한다. 대표자는 블록을 생성한다.



[PoW - Proof of Work, 작업 증명]

  • 특정 Hash 함수를 주고 Input 값을 맞추는 과정



[PoS - Proof of Stake, 지분 증명]

  • 작업 증명의 한계를 해결하기 위해 만들어졌다.

  • 지분이 많은 사람에게 쉬운 난이도를 제공한다.

  • 대부분이 Coinage 방식을 사용하며, 다른 것(Casper, Klaytn)과 융합하여 사용한다.

  • 블록 생성의 중앙화 문제가 있다.

  • 지분이 많은 사람이 네트워크에 참여하지 않으면 처리 방식에 문제가 생기기도 한다.



[BFT - Byzantine Fault Tolerance, 비잔틴 장애 허용]

  • 전체 인원의 2/3가 배신자가 아니라면 목적을 이룰 수 있다.

  • 분산된 환경에서 누가 배신자인가? 어떻게 찾아낼 수 있는가?

  • 모든 인원이 다 투표를 해야 한다는 단점이 있다.



[PBFT - Practical BFT, 실용적 비잔틴 장애 허용]

  • 동기식: 줄을 쭉 서있는 형태 (순번표 X)

  • 비동기식: 순번표가 있는 형태


  • 클라이언트가 블록을 제시하고 해당 블록에 대해 매번 투표를 진행한다.

  • 데이터의 안정성을 보장한다.

  • 노드 수가 많을수록 합의 도달 시간이 오래 걸린다.



[DPoS - Delegated PoS]

  • 모든 노드가 믿을만한 대표인단을 뽑는다. (미국 선거인단 제도와 유사)



[Tendermint]

  • 코스모스에서 이용되고 있는 블록체인 엔진

  • DPoS와 PBFT 개념을 섞어 만든 합의 알고리즘

  • DPoS 방식과 유사하게 검증인 집단을 투표로 뽑는다.

  • 검증인 집단에서 리더를 선출하고 리더가 블록 생성을 Propose 한다.



[Libra Blockchain]

  • Multi-Thread 방식의 합의 진행

  • Hot stuff

  • 한 번에 블록 5개의 합의가 가능하다고 주장

  • Finalizing 과정을 한 번 더 거친다.



Key 사용의 필요성


  • 데이터를 전달하는 과정에서 공격받아 위·변조될 가능성이 있다.

  • 데이터의 출처를 밝히기 위해 사용한다.


  • 대칭키: 하나의 키로 암호화, 복호화 진행/속도가 빠르다.

  • 비대칭키: Public Key와 Private Key가 존재한다.



스마트 컨트랙트


  • 1994년 Nick Szabo가 제시

  • 코드의 조각, 블록체인과 상호작용하는 인터페이스

  • 디지털화된 계약서가 해킹된 경우 문제가 발생할 수 있다.

  • 이더리움을 통해 스마트 컨트랙트가 제대로 사용되었다.



스마트 컨트랙트 생성 과정


  • 스마트 컨트랙트 생성 - (컴파일) - 바이트코드 변환 - (트랜잭션) - 블록에 저장 - (배포) - 블록체인에 저장

  • 사용자 주소 + 스마트 컨트랙트 주소 + 매개변수 - (트랜잭션) - 블록에 저장 - (실행) - 블록체인에 실행결과 저장



퍼블릭 블록체인 vs 프라이빗 블록체인


[퍼블릭 블록체인]

  • 네트워크 상에서 누구나 참여 가능

  • 리더 선출 합의 알고리즘 선호

  • 실질적으로 사용하기 위해 불편한 요소들이 많음



[프라이빗 블록체인]

  • 허가받은 사용자만 참여 가능

  • 투표 방식의 합의 알고리즘 선호

  • 점점 대세가 기울어 가는 중



하이퍼레저 패브릭


  • IBM이 주도하는 프로젝트

  • 프라이빗 블록체인에서 가장 유명하고 허가된 사람만 참여하는 구조

  • 처음 구성 시 IP 주소를 제공해야 하며, 전 데이터 모두 저장 후 네트워크를 새로 구축

  • 완전한 P2P Network 구조는 아니며, 접근 통제 기능을 제공



[처리과정]

  1. 트랜잭션 실행(Execute) 후 결과 값 검증

  2. 검증이 끝난 트랜잭션 취합 후 순서에 맞게 정렬(Order) 후 블록 생성

  3. 블록에 포함된 모든 트랜잭션에 대한 검증(Validation) 수행 후 최신 블록 업데이트



하이퍼레저 패브릭 구성요소


[채널]

  • Peer들은 조직으로 묶어 채널로 분류 (ex. 부서)

  • 다른 부서에서 보기 어렵게도 할 수 있음



[체인코드]

  • 스마트 컨트랙트와 유사

  • 사용자가 데이터를 보내면 체인코드를 통해 데이터를 읽고 쓴다.

  • 원장과 1:1로 연결되어 있다.

  • 시스템 체인코드: 패브릭의 시스템 설정이 필요할 때 사용되며, 전반적인 관리를 담당한다.



[피어]

  • 모든 노드는 General peer이면서 다른 peer의 역할은 일부가 한다.

  • 오더러와 CA는 분산원장을 가지지 않는다.

  • DB를 peer라고 생각할 수 있다.

  • Endorse 피어가 유저가 진행한 트랜잭션에 가중치로 점수를 매겨 검증한다.



[원장 - Ledger]

  • World State: 패브릭 데이터의 현재 상태

  • 블록체인: 합의 이후에 기록된 히스토리



[CA 노드]

  • 무조건 존재해야 한다.

  • 인증서 (MSP) 발급

  • 모든 노드의 인증서와 네트워크 접속 관리를 맡고 있다.

  • 노드가 등록을 하고자 하는 경우 CA를 거쳐야 한다.

  • 외부에서 들어오는 노드의 접근을 차단한다.



[MSP - Membership Service Provider]

  • 패브릭의 멤버십 관리 기술

  • Local MSP와 Channel MSP


  • 패브릭은 MSP, 채널링 그리고 오더링이 주를 이룬다.



[오더러]

  • 패브릭에서 합의를 진행하는 역할

  • 없으면 네트워크가 구동이 되지 않을 정도로 중요하다.

  • 트랜잭션을 쌓아두다가 리더 피어에게 전달하거나 대부분의 동작들을 담당한다.

  • 전체 패브릭 네트워크에서 최소 하나 이상만 있으면 되며, 속도를 높이려면 여러 개가 필요하다.


  • 오더링을 위해 LinkedIn에서 개발한 Kafka 시스템을 사용한다.





하이퍼레저 패브릭 구축 과정


  • CA - 오더러에 의해 채널 생성 - 제네시스 블록 생성 - 리더 피어에 의해 체인 코드 배포 - SDK 설정 - 사용자 연결



관련 기술 및 용어 정리


  • 비트코인: 순수한 P2P 기반의 전자화폐는 금융기관 없이 인터넷으로 결제 및 거래를 할 수 있다.

  • 현재는 중앙 서버를 통해 운영하는 회사와 P2P 네트워크 또는 DLT를 사용하는 회사가 대립하는 경쟁시대이다.


  • Sawtooth: 인텔(Intel)이 주도하는 프로젝트이며, IoT 환경에서의 블록체인이다.

  • 메타데이터: 트랜잭션 리스트를 나열한 것

  • 가십 프로토콜: 뒷담화하듯 가장 가까운 원하는 사람에게 데이터 전달

  • SDK: 사용자와 패브릭 네트워크를 연결시켜 주기 위한 요소


  • 우분투 터미널에서 sudo -i (root 확인) - (Go 언어 설치)
    • wget https://dl.google.com/go/go1.12.1.linux-amd64.tar.gz
    • tar -xvf go1.12.1

  • First-network 종료 부분에서 ./byfn.sh down으로 종료하지 않으면 백그라운드에서 계속 돌아간다.



기타 전문가 의견


  • 블록체인 추천 공부 순서
    • 비트코인 (바이블) - 이더리움 (활용) - 하이퍼레저 패브릭 +a (클레이튼, 리브라)



블록체인과 하이퍼레저 패브릭 - 서중원 박사과정 연구원

https://y8ncastle.world/2020/01/12/education/hyperledger/sogang-hyperledger/

Author

Alec J

Posted on

2020-01-12

Updated on

2021-02-09

Licensed under