블록체인 대충 정리
by 너나나
블록체인
블록체인: 여러 기업, 단체(=참가자)가 원장(거래 데이터 장부)을 공유하고 합의를 통해 신뢰할 수 있는 제 3자에게 의존하지 않고 원장을 갱신하고 유지하는 것이 가능
블록체인은 원장 분산돼 있음 -> 일관성 어떻게 유지?
=> '합의'라는 구조를 사용해 분산된 원장의 일관성 유지
합의: 어떤 거래(트랜잭션)가 발생하면 그 거래를 원장에 기록해도 될 지를 블록체인 참가자가 검증하고 문제가 없다면 해당 거래 데이터를 블록체인에 저장!
검증된 트랜잭션을 '블록'이라고 하는 데이터의 집합으로 만들어 기록을 저장한다! 이때 각 블록에는 트랜잭션 데이터에 바로 직전에 생성된 블록의 '해시 값'을 추가해서 저장 -> 각 블록은 해시 값을 통해 이전 블록과 연결된 형태
=> 블록체인!!!!
스마트계약: 블록체인 위에서 동작하는 프로그램. 다양한 처리 내용을 프로그램으로 구현할 수 있어 자산의 이동과 계약 집행, 비즈니스 프로세스 처리 등 다양한 업무를 블록체인으로 처리할 수 있다!
블록체인 위에서 스마트 계약이 실행되면 그 결과는 변조가 불가능한 형태로 블록체인 원장에 기록됨 -> 신뢰할 수 있는 제3자에게 보증 받을 필요 없이 프로그램 실행 가능 => 시간과 비용 절감
블록체인 원리
일반적인 블록체인 네트워크를 구성하는 시스템 구성 요소는 노드와 클라이언트 2가지다.
- 노드: 트랜잭션 내역 보관, 트랜잭션 승인, 분산 합의
- 클라이언트: 트랜잭션 생성, 거래 내역 확인(지갑)
사용자 관점에서 블록체인 노드는 일반적인 서비스의 백엔드 역할, 블록체인 클라이언트는 클라이언트 역할을 한다.
클라이언트가 새로운 트랜잭션을 발생시키면 노드들은 분산합의 과정을 통해 트랜잭션을 공유하고 트랜잭션을 실행하며 클라이언트는 트랜잭션의 결과를 확인 할 수 있다.
새로운 블록을 블록체인에 추가하려면, 새로운 블록의 볼륵 해시를 계산해야 하고 블록해시를 계산하려면 블록의 블록 헤더 정보 중 하나인 논스 값을 구해야 한다 => 이 논스 값을 구하는 것이 작업 증명
블록의 구성
블록 해시
블록 헤더
거래 정보
퍼블릭형 블록체인
: 불특정 다수의 참가자가 거래를 검증할 수 있음(ex 비트코인, 이더리움)
블록체인 참가자가 특정되지 않은 누구나 참가 가능한 블록체인
막대한 계산 처리를 거쳐 블록을 추가하는 작업을 '작업 증명(Proof of Work: PoW)'이라고 함
-> 불특정 다수가 참가할 수 있기 때문에 악의적인 참가자가 존재할 수 있다는 것을 전제로 함
-> 참가자들은 방대한 계산을 해야 하는 구조를 도입
=> 채굴(Mining): 특정 조건을 만족하는 값을 가장 먼저 발견한 참가자가 트랜잭션의 정당성을 검토하고 블록을 추가할 수 있는 권리와 그에 따른 보상인 가상화폐를 받게 됨
=>불특정 다수의 참가자가 거래의 검증 작업을 수행하기 때문에 일부 개인이나 조직에 의한 임의 조작과 변조가 매우 어려움
프라이빗
: 익명성을 제공했던 퍼블릭 블록체인과 달리 주체를 식별할 수 있음.
거래의 처리속도가 빠르고 네트워크 확장이 용이해 사용자가 원하는 대로 커스터마이징할 수 있기 때문에 최근기업과 은행권의 관심!!! 원하는 참여자를 네트워크에 등록 또는 제외할 수 있으며, 각 참여자 별로 권한설정을 할 수 있음, 서로 다른 블록체인 네트워크를 연결하거나 새롭게 구성할 수 있음
컨소시엄형
: 특정 기업이나 조직만이 거래를 검증할 수 있음
공동 사업체에 참가하는 기업이나 조직만이 사용하는 블록체인 (ex 복수의 금융 기관에서 결제용 블록체인을 구축하거나 유통망에서 상품 추적을 위한 블록체인으로 사용)
-> 공동 사업체를 구성하는 신뢰할 수있는 기업이 블록체인에 참가하기 때문에 불특정 다수가 참가하는 퍼블릭형 블록체인보다 분산화를 통한 장점은 적다는 단점!!
but 특정 기업, 조직의 참가를 전제로 해서 PoW와는 다른 경량 합의 방식을 사용하기 때문에 거래 검증 속도를 크게 높일 수 있음, 또 거래 검증을 위한 인센티브(채굴 보상)가 필요없음
요소 | 퍼블릭 블록체인 | 프라이빗 블록체인 | 컨소시엄 블록체인 |
관리주체 | 모든 거래 참여자(탈중앙화) | 중앙기관이 모든 권한 보유 | 컨소시엄에 소속된 참여자 |
거버넌스(관리 방식..?) | 한 번 정해지면 변경이 어려움 | 중앙기관의 의사결정에 따라 유연하게 변경 가능 | 컨소시엄 참여자들의 합의에 따라 유연하게 변경 가능 |
거래속도 | 일반적으로 네트워크 확장이 어렵고 거래속도가 느림 | 네트워크 확장이 쉽고 거래속도가 빠름 | 네트워크 확장이 쉽고 거래속도가 빠름 |
데이터 접근 | 네트워크 참여자 누구나 가능 | 허가 받은 사용자만 가능 | 허가 받은 사용자만 가능 |
식별성 | 익명성 | 식별 가능 | 식별 가능 |
주요 합의 알고리즘 | PoW(Proof-of-Work) PoS(Proof0of-Stake) DPoS(Delegated PoS) |
오더링 서비스를 통한 합의 시스템 표현(SOLO, Kafka) | 포크(fork)를 허용하지 않는 BFT 계열의 합의 알고리즘 |
예시 | 비트코인, 이더리움, 이오스 | 하이퍼레저 패브릭, EEA | R3CEV, CASPER |
하이퍼레저 패브릭(Hyperledger Fabric)
: 블록체인을 활용한 다양한 업무 시스템을 구축하고 운영하기 위한 소프트웨어 플랫폼. 분산 원장과 합의(Consensus)를 비롯해 사용자 ID 발행과 인증, 스마트 계약의 개발과 실행, 기밀성 등의 기능을 제공
컨테이너 기술을 활용해 시스템의 애플리케이션 로직을 구성할 수 있도록 체인코드라는 서비스를 제공. 일반 개발자는 이 체인코드를 구현해 원하는 응용 블록체인 프로그램을 만들 수 있음. 즉 체인코드는 이더리움의 스마트 컨트랙트와 같은 역할을 한다고 이해!!
하이퍼레저 패브릭 프로젝트의 목표
- 허가된 참여자를 대상으로 하는 비즈니스 응용 환경에 맞는 블록체인
- 다양한 요구사항을 가진 분산 응용 서비스를 효율적으로 지원할 수 있는 개발 플랫폼
- 모듈러 아키텍처 기반 분산 응용 플랫폼
하이퍼레저 패브릭 프로젝트의 특징
- 컨소시엄형 참가 방식: 컨소시엄형은 각 조직 내의 사용자와 노드를 독립적으로 관리하고, 블록체인 네트워크에는 허가를 받은 뒤에 참가하는 구조로 돼 있음 => 이를 통해 여러 조직에서 공동으로 운영하는 신뢰성 높은 블록체인 네트워크를 형성할 수 있음
- 가볍고 빠른 합의 방식: 각 참가 조직이 보유하고 있는 분산 원장을 갱신하기 위해서는 '합의'와 '파이널리티'가 필요! 합의란 분산 원장의 갱신과 트랜잭션의 기록에 대해 합의하는 것, 트랜잭션의 정당성과 동일성을 확보하는 역할을 함, 파이널리티란 블록의 정당성을 최종 확인한 상태! 하이퍼레저 패브릭은 특정 조직만 참가할 수 있는 블록체인 네트워크를 형성하기 때문에 각 참여 기관이 가볍고 빠르게 파이널리티를 확보할 수 있는 합의 방식을 채용
- 다양한 업무 처리 구현: 하이퍼레저 페브릭은 스마트 계약을 '체인 코드(Chaincode)'라는 프로그램을 통해 구현해 자신만의 업무 로직을 만들고 실행할 수 있음
- 트랜잭션 실행 직후의 상태 보존: 하이퍼레저 패브릭은 'State DB'라는 데이터 저장소에 트랜잭션을 실행한 직후의 상태(물류의 경우에는 운송 기록 등)를 저장 -> 이를 통해 사용자는 모든 블록을 참조할 필요 없이 해당 시점의 상태를 바로 확인할 수 있음
- 채널을 사용한 블록체인 네트워크의 논리적 분할: 하이퍼레저 패브릭은 하나의 블록체인 네트워크를 논리적으로 독립된 여러 네트워크로 분할할 수 있음. 이렇게 분할된 네트워크를 '채널(Channel)'이라고 함, 분리된 채널 간에는 체인 코드와 분산 원장이 공유되지 않음
참고 문헌
[1] 시미즈 토모노리 외, 하이퍼레저 패브릭 철저 입문, 위키북스, 2019.
[2] 조문옥, 이진수, 조성완, 반장현, 하이퍼레저 패브릭 실전 프로젝트, 에이콘, 2020.
'2022 > 블록체인' 카테고리의 다른 글
하이퍼레저 패브릭 - 4: Fabric Application 실행 (1) | 2022.01.11 |
---|---|
하이퍼레저 패브릭 - 3: 채널에 스마트 계약 배포하기 - 2 (0) | 2022.01.08 |
하이퍼레저 패브릭 - 3: 채널에 스마트 계약 배포하기 - 1 (0) | 2022.01.06 |
하이퍼레저 패브릭 실습 - 2: test network (2) | 2022.01.05 |
하이퍼레저 패브릭 실습 - 1: 초기 환경 설정 (3) | 2022.01.04 |
블로그의 정보
공부 기록
너나나