: 블록체인 솔루션과 응용 프로그램을 개발하기 위한 모듈형 아키텍쳐 플랫폼 / 블록체인 프레임워크로서 리눅스 환경에서 호스팅하는 프로그램
** 하이퍼레저 : 프라이빗 블록체인 플랫폼
✔ 프라이빗 블록체인
기밀유지를 위해 허가 인증된 기관만 접근 가능한 블록체인
-- 보상수단으로 코인이 지급되지 않는 대신에 일반적인 퍼블릭 블록체인보다 더욱 빠른 네트워크 구성
✔ 퍼블릭 블록체인
누구나 블록체인에 참여하여 블록을 생산, 노드가 되거나 트랙잭션을 발생시키는 것이 가능.
ex) 이더리움 비트코인
분산원장
: 복제, 공유 또는 동기화된 디지털 데이터에 대한 합의 기술
L 원장 : 모든 변화된 데이터를 담고있는 기록. 각 원장이 채널에 의해 나뉨.
// 각 채널에 접속가능한 사용자를 제한 => 기밀유지 가능
L 월드스테이트(world state) : 현재의 상태를 담고 있는 기록.
L 블록체인(blockchain) : 상태변화에 대한 모든 로그 기록이 저장된 것.
체인코드
: 원장의 내용을 가져오거나 생성 또는 업데이트하기 위해 클라이언트가 어플리케이션을 통해 실행되도록 하는 코드.
// 이더리움의 스마트 컨트랙트와 유사한 개념
// 체인코드는 피어에 설치되고 채널에 배포되며 업그레이드되고 사용자는 체인코드 정보를 읽어옴.
peer
: 원장과 체인코드를 관리하며 패브릭 네트워크를 구성하는 노드
// orderer가 만든 블럭을 검증하고 그 블록을 바탕으로 원장을 저장하고 유지.
// 패브릭 네트워크 참여자들은 노드에 설치된 체인코드 실행 요청을 통해 peer에 저장된 원장의 데이터를 읽거나 쓰는 것이 가능.
// 하이퍼레저페브릭에서 피어는 도커 컨테이너로 구성되어 있음.
orderer
: 체인코드 시뮬레이션을 통해 적절하다고 판단된 트랜잭션을 모아 정렬 후 실제 블록을 생성하는 노드
// 패브릭 네트워크 내에서 블록내의 트랜잭션 순서를 결정하는 역할
!! 블럭은 피어노드가 아닌 orderer노드에서 만들어짐
**트랜잭션의 순서를 정렬하는 방법
-- solo
-- kafka
✔ 스마트컨트랙트
서로 다른 비즈니스 객체의 상태를 정의하고 다른 상태로의 변화를 담당하는 코드. 거래 당사자 간 모든 상호작용을 관리하는 비즈니스 모델 제시. 서로 다른 조직간의 규칙을 정의하고 애플리케이션에서 스마트 컨트랙트를 호출하는 트랜잭션을 요청하여 그 결과를 원장에 기록.
✔ 체인코드
정의한 트랜잭션 논리를 패키징하여 블록체인 네트워크에 배포. 스마트 컨트랙트 배포를 위해 패키지화되는 방식을 관리하는 역할. 체인코드 내에 여러 스마트컨트랙트가 정의될 수 있으며, 체인코드가 배포되면 해당 체인코드 내의 모든 스마트컨트랙트가 애플리케이션에 제공된다.
😃 체인코드 인터페이스
1. init method
- instantiate나 upgrade시 호출됨.
2. invoke method
- invoke 트랜잭션 요청을 받을 때 호출됨
😃 체인코드 구분
1. 사용자체인코드
2. 시스템체인코드
- 사용자 체인코드가 실제로 동작하는 처리흐름을 제어한 것.
: 아래의 3단계를 거쳐 내용이 원장에 기록되고 사용자에게 결과 반환
: 체인코드 실행
: 어플리케이션에서 전달받은 보증허가된 트랜잭션만을 모아 블럭 생성하고 전달.
: 생성된 블럭을 전달받은 피어들은 블럭 안의 트랜잭션에 대해 유효성 검사 후 해당 트랜잭션이 유효하면 원장에 추가.
peer 종류
1. Endorsing peer : 사용자가 피어에 연동시 사용자 인증 역할을 하는 피어 // executtion에 해당 2. Committing peer : // validation에 해당 3. Anchor peer 4. Leador Peer
1. 하이퍼레저 패브릭에서 합의알고리즘을 사용하지 않는 이유?
=> 허가받은 사용자만 참여가능한 프라이빗 블록체인의 특성상 모든 노드들은 이미 신뢰된 노드이므로 퍼블릭 블록체인에서와 같이 노드를 검증하기 위해 복잡한 합의알고리즘을 사용하지 않아도 상관없다.
// 합의알고리즘 선택적 사용 가능
2. Raft
: 전체 노드 중 리더 노드를 선출하여 1개의 노드만 블록을 생성하는 방식(즉 권한을 가진 노드만 블록 생성 가능)
// 리더가 문제가 있을 경우 리더선출프로토콜에 따라 새롭게 리더 선출
3. Apache Kafka
: 대용량, 대규모 메시지 데이터를 빠르게 처리하도록 개발된 메시징 플랫폼
플러그 앤 플레이(Plug & Play)
: 꽃으면 실행된다는 의미로, 하드웨어 연결시 별도의 사용자 조작이나 추가적인
프로그램 설치없이 바로 사용할 수 있다는 의미.
체인코드(chain code)
: 하이퍼레저페브릭 네트워크 상 실행되는 비즈니스 로직을 구현한 프로그램
// 퍼블릭 블럭체인에서 스마트컨트랙트와 같은 역할
// 체인코드는 별도의 도커컨테이너에서 실행됨
// Go,node.js,Java 언어로 체인코드 구현 가능
분산원장기술(DLT)
: 중앙서버나 중앙관리자의 제어없이 분산화된 네트워크의 각 노드들이 데이터베이스를
공유하고 동기화하는 기술.
합의
: 체인코드 실행을 요청하는 트랜잭션부터 원장에 기록되는 모든 과정.
참고
하이퍼레저페브릭이란?
하이퍼레저페브릭이란2?
Node.js로 체인코드 작성하기
Kafka?
✔ 마이데이터
내 데이터의 주인은 나!
: 개인이 데이터를 주체적으로 관리하는 것을 넘어 능동적으로 활용하는 일련의 과정.
ex) 신용정보법 개정안에 따른 개인신용정보 전송요구권
- 마이데이터 도입으로 개인으로부터 정보를 받은 제 3자가 데이터를 관리하고 이를 바탕으로 분석 추천이 가능해짐.
- 마이데이터의 도입으로 DID에 대한 관심도 증가.
: 블럭체인 기반의 탈중앙화 신원증명으로, 개인정보를 사용자의 단말기에 저장해 개인 정보 인증 시 필요한 정보만 골라서 제출할 수 있도록 해주는 전자신원증명 기술.
출처 : 금융보안원