Post

하이퍼레저 개요

블록체인 개념

하이퍼레저 개요

하이퍼레저 프로젝트

하이퍼레저 프로젝트는 리눅스 재단에서 주관하는 블록체인 오픈소스 프로젝트로 금융, IoT, 물류, 제조, 기술 산업 등 여러 산업에 걸쳐 응용 가능한 블록체인 기술을 만드는 것이 목표이다.

Hyperledger Fabric 아키텍처

Image

컴포넌트

  • **신원확인 (Identity) **
  • 원장 (Ledger)
  • 거래 / 트랜잭션 (Transaction)
  • 스마트 계약 / 체인 코드 (Smart Contract)

    핵심 용어

  • 채널
  • 조직
  • 피어노드
  • 오더링 서비스
  • MSP
  • CA ( Certification Autority)
    1. Application에서 스마트 컨트랙트를 위한 트랜잭션을 시작할 때, 먼저 트랜잭션 제안서를 엔도싱 피어 노드에게 보낸다. 트랜잭션 제안서에는 클라이언트 ID, 트랜잭션을 제출하는 클라이언트의 서명 등이 내용으로 포함돼 있다.
    2. 제안을 받은 엔도싱 피어노드는 보증 정책에 따라 트랜잭션 제안서가 잘 구성돼 있는지 확인하고 서명이 유효한지 체크한 후, 체인코드를 실행한다. 이후 RW(read&write)세트를 포함하는 트랙잭션 결과를 생성해 반환한다.
    3. 전체 엔도싱 피어 노드들로부터 반환된 보증 요청의 결과 값들이 동일함을 확인해 해당 트랜잭션의 신뢰성을 확보했으면, 클라이언트 애플케이션은 트랜잭션을 RW세트와 함께 엔도싱 피어 노드들의 서명, 채널 ID를 오더링 서비스 노드에 전송한다. 이미 앞에서 검증이 마무리 됐기 때문에 트랜잭션 수행을 위해 전체 내용을 검사하지 않고 트랜잭션이 들어오는 순서만 정렬한다.
    4. 오더링 서비스 노드에서 생성된 트랜잭션 블록을 엔도싱 피어노드와 커미팅 피어 노드에게 전달한다. 각피어 노드는 보증 정책이 충족됐는지 확인한 후에 원장 상태가 변경됐는지 확인한다.
    5. 엔도싱 피어 노드와 커미팅 피어 노드는 RW세트가 현재 월그 스테이트 상태와 여전히 일치하는지 확인해 트랜잭션의 유효성을 검사한다. 트랜잭션이 유효성 검사에 실패하면 피어노드는 RW세트가 현재 월드 스테이트 상태와 일치하지 않는다는 것을 알린다. 블록에 기록된 트랜잭션은 무효로 기록하고, 월드 스테이트를 업데이트하지 않는다.
    6. 유효성이 검증된 트랜잭션은 모든 피어 노드의 데이터베이스에 기록된다. 이후 트랜잭셔의 성공 또는 실패 이벤트를 클라이언트 애플리케이션에 알린다. 위와 같이 총 6단계를 거쳐 트랜잭션이 하이퍼레저 패브릭 네트워크 안의 전체 원장에 업데이트된다. 트랜잭션은 체인코드의 실행이며, 체인코드는 개발자가 특정 기능을 구현해 채널 안에 피어 노드에 설치된다. 이와 같은 체인 코드를 사용자 체인코드라 하는데, 체인코드는 크게 사용자와 시스템 2가지로 구분할 수 있다. 일반적으로 개발자가 다루는 체인코드가 사용자 체인코드이며, 이와 같은 체인코드가 실제로 동작될 수 있도록 처리 흐름을 제어하는 것이 시스템 체인코드이다. 시스템 체인코드는 개발자가 직접 다루지는 않고 하이퍼레저 패브릭 자체에서 제공하고 있지만, 체인 코드를 제대로 이해하기 위해서는 시스템 체인 코드가 무엇인지 이해해야 한다.

하이퍼레저 패브릭 시스템 체인코드

일반적인 체인코드와 동일한 프로그래밍 모델을 가지고 있지만, 별도의 격리된 컨테이너에서 실행되는 일반적인 코드와 달디 시스템 체인코드는 피어 노드 프로세스에서 실행된다. 따라서 시스템 체인코드는 피어 노드의 자원에 더 많은 접근이 가능하다.

패브릭은 5가지 시스템 체인 코드를 제공한다

  • LSCC (Lifecycle System ChainCode) - 라이프사이클을 돤리하는 체인코드
  • CSCC (Configuration System ChainCode) - 피어 노드 및 프로세스 채널 구성, 트랜잭션에 대한 채널 관련 정보를 관리하기 위해 사용한다.
  • QSCC (Query System ChainCode) - 블록 저장소에 저장된 블록 및 트랜잭션을 조회하기 위해 사용된다
  • ESCC (Endorser System ChainCode) - 트랜잭션을 실행한 후 트랜잭션 상태, 체인코드 이벤트, read/write set등 트랜잭션 결과를 포함한 응답 메세지에 서명을 넣기 위해 엔도싱 피어 노드에 의해 호출된다.
  • VSCC (VAlidation System ChainCode) - 커미팅 피어 노드에 의해 호출돼 보증 정책 및 다중 버전 동시성 제어 검사와 같은 트랜잭션 유효성 검사를 처리한다. → 유효성 검사를 진행하여 원장의 차이가 발생하지 않고록 하는 중요한 역할을 수행한다. 따라서 수정이나 교체할 때 특별한 주의가 필요하다

    참고 자료

  • 하이퍼레저 패브릭 실전 프로젝트 - 조문옥, 이진수 외 2명 (출판_에이콘)
This post is licensed under CC BY 4.0 by the author.