[이론] 하이퍼레저페브릭 / DID

오미희·2021년 12월 11일
0

이론

목록 보기
2/6

하이퍼레저페브릭 (Hyperledger Fabric)

: 블록체인 솔루션과 응용 프로그램을 개발하기 위한 모듈형 아키텍쳐 플랫폼 / 블록체인 프레임워크로서 리눅스 환경에서 호스팅하는 프로그램

  • 합의 및 회원 서비스와 같은 구성 요소를 플러그 앤 플레이(Plug & Play) 방식으로 지원
  • 허가받은 사용자만 참여가능한 허가형블록체인으로 프라이빗 블록체인의 일종
  • 컨테이너 기술을 활용하여 체인코드라는 스마트계약을 호스팅함.
  • 멀티 블록체인 지원(채널별로 체인코드를 가지므로)
  • 최초의 분산원장 플랫폼
  • 암호화폐없이 합의프로토콜 활용 가능
  • 모든 노드가 동일한 원장으로 정보를 공유하며, 노드 간 별도의 원장을 생성하는 것도 가능.
    ( 즉 별도의 채널에서 별도의 원장을 생성하는 것이 가능 => 채널별 관리 )
  • 사용자의 권한 및 인증을 위해 MSP(Membership Service Provider) 인증관리시스템 사용.
    // CA : MSP를 발급하고 관리하는 역할을 하는 기관. (Fabric-CA)

** 하이퍼레저 : 프라이빗 블록체인 플랫폼

✔ 프라이빗 블록체인
기밀유지를 위해 허가 인증된 기관만 접근 가능한 블록체인
-- 보상수단으로 코인이 지급되지 않는 대신에 일반적인 퍼블릭 블록체인보다 더욱 빠른 네트워크 구성
✔ 퍼블릭 블록체인
누구나 블록체인에 참여하여 블록을 생산, 노드가 되거나 트랙잭션을 발생시키는 것이 가능.
ex) 이더리움 비트코인

하이퍼레저 네트워크 구성요소

  1. 분산원장
    : 복제, 공유 또는 동기화된 디지털 데이터에 대한 합의 기술
    L 원장 : 모든 변화된 데이터를 담고있는 기록. 각 원장이 채널에 의해 나뉨.
    // 각 채널에 접속가능한 사용자를 제한 => 기밀유지 가능
    L 월드스테이트(world state) : 현재의 상태를 담고 있는 기록.
    L 블록체인(blockchain) : 상태변화에 대한 모든 로그 기록이 저장된 것.

  2. 체인코드
    : 원장의 내용을 가져오거나 생성 또는 업데이트하기 위해 클라이언트가 어플리케이션을 통해 실행되도록 하는 코드.
    // 이더리움의 스마트 컨트랙트와 유사한 개념
    // 체인코드는 피어에 설치되고 채널에 배포되며 업그레이드되고 사용자는 체인코드 정보를 읽어옴.

  3. peer
    : 원장과 체인코드를 관리하며 패브릭 네트워크를 구성하는 노드
    // orderer가 만든 블럭을 검증하고 그 블록을 바탕으로 원장을 저장하고 유지.
    // 패브릭 네트워크 참여자들은 노드에 설치된 체인코드 실행 요청을 통해 peer에 저장된 원장의 데이터를 읽거나 쓰는 것이 가능.
    // 하이퍼레저페브릭에서 피어는 도커 컨테이너로 구성되어 있음.

  4. orderer
    : 체인코드 시뮬레이션을 통해 적절하다고 판단된 트랜잭션을 모아 정렬 후 실제 블록을 생성하는 노드
    // 패브릭 네트워크 내에서 블록내의 트랜잭션 순서를 결정하는 역할
    !! 블럭은 피어노드가 아닌 orderer노드에서 만들어짐
    **트랜잭션의 순서를 정렬하는 방법
    -- solo
    -- kafka

✔ 스마트컨트랙트

서로 다른 비즈니스 객체의 상태를 정의하고 다른 상태로의 변화를 담당하는 코드.
거래 당사자 간 모든 상호작용을 관리하는 비즈니스 모델 제시.
서로 다른 조직간의 규칙을 정의하고 애플리케이션에서 스마트 컨트랙트를 
호출하는 트랜잭션을 요청하여 그 결과를 원장에 기록.

✔ 체인코드

정의한 트랜잭션 논리를 패키징하여 블록체인 네트워크에 배포.
스마트 컨트랙트 배포를 위해 패키지화되는 방식을 관리하는 역할.
체인코드 내에 여러 스마트컨트랙트가 정의될 수 있으며, 
체인코드가 배포되면 해당 체인코드 내의 모든 스마트컨트랙트가 애플리케이션에 
제공된다.

체인코드란?

😃 체인코드 인터페이스
1. init method
- instantiate나 upgrade시 호출됨.
2. invoke method
- invoke 트랜잭션 요청을 받을 때 호출됨
😃 체인코드 구분
1. 사용자체인코드
2. 시스템체인코드
- 사용자 체인코드가 실제로 동작하는 처리흐름을 제어한 것.

체인코드 실행 요청에 의한 트랜잭션 발생시 과정

: 아래의 3단계를 거쳐 내용이 원장에 기록되고 사용자에게 결과 반환

1. execution

: 체인코드 실행

2. ordering

: 어플리케이션에서 전달받은 보증허가된 트랜잭션만을 모아 블럭 생성하고 전달.

3. validation

: 생성된 블럭을 전달받은 피어들은 블럭 안의 트랜잭션에 대해 유효성 검사 후 해당 트랜잭션이 유효하면 원장에 추가.

peer 종류

1. Endorsing peer : 사용자가 피어에 연동시 사용자 인증 역할을 하는 피어 
// executtion에 해당
2. Committing peer : 
// validation에 해당
3. Anchor peer
4. Leador Peer

Q

1. 하이퍼레저 패브릭에서 합의알고리즘을 사용하지 않는 이유?
=> 허가받은 사용자만 참여가능한 프라이빗 블록체인의 특성상 모든 노드들은 이미 신뢰된 노드이므로 퍼블릭 블록체인에서와 같이 노드를 검증하기 위해 복잡한 합의알고리즘을 사용하지 않아도 상관없다.
// 합의알고리즘 선택적 사용 가능
2. Raft
: 전체 노드 중 리더 노드를 선출하여 1개의 노드만 블록을 생성하는 방식(즉 권한을 가진 노드만 블록 생성 가능)
// 리더가 문제가 있을 경우 리더선출프로토콜에 따라 새롭게 리더 선출
3. Apache Kafka
: 대용량, 대규모 메시지 데이터를 빠르게 처리하도록 개발된 메시징 플랫폼

 플러그 앤 플레이(Plug & Play)
 : 꽃으면 실행된다는 의미로, 하드웨어 연결시 별도의 사용자 조작이나 추가적인 
 프로그램 설치없이 바로 사용할 수 있다는 의미.
 
 체인코드(chain code)
 : 하이퍼레저페브릭 네트워크 상 실행되는 비즈니스 로직을 구현한 프로그램 
 // 퍼블릭 블럭체인에서 스마트컨트랙트와 같은 역할
 // 체인코드는 별도의 도커컨테이너에서 실행됨
 // Go,node.js,Java 언어로 체인코드 구현 가능
 
 분산원장기술(DLT)
 : 중앙서버나 중앙관리자의 제어없이 분산화된 네트워크의 각 노드들이 데이터베이스를 
 공유하고 동기화하는 기술. 
 
 합의 
 : 체인코드 실행을 요청하는 트랜잭션부터 원장에 기록되는 모든 과정. 

참고
하이퍼레저페브릭이란?
하이퍼레저페브릭이란2?
Node.js로 체인코드 작성하기
Kafka?

✔ 마이데이터
내 데이터의 주인은 나!
: 개인이 데이터를 주체적으로 관리하는 것을 넘어 능동적으로 활용하는 일련의 과정.
ex) 신용정보법 개정안에 따른 개인신용정보 전송요구권

  • 마이데이터 도입으로 개인으로부터 정보를 받은 제 3자가 데이터를 관리하고 이를 바탕으로 분석 추천이 가능해짐.
  • 마이데이터의 도입으로 DID에 대한 관심도 증가.

마이데이터?

탈중앙화신원증명(=분산신원증명)

(= DID : Decentralized Identifier)

: 블럭체인 기반의 탈중앙화 신원증명으로, 개인정보를 사용자의 단말기에 저장해 개인 정보 인증 시 필요한 정보만 골라서 제출할 수 있도록 해주는 전자신원증명 기술.

출처 : 금융보안원
  • 블럭체인을 통해 분산된 시스템을 구축하여 특정 기관에 사용자의 정보가 종속되지 않고, 사용자가 자신의 정보를 관리할 수 있는 환경 구축.

DID란?

profile
안녕하세요

0개의 댓글