CS/블록체인

[블록체인] 블록체인 구조와 네트워크

yo0oni 2023. 10. 5. 10:24

수업 내용을 정리한 글입니다.

잘못된 내용은 알려주시면 감사하겠습니다.

 


 

블록체인 구조

블록체인을 구성하는 블록의 구조

https://www.codestates.com/blog/content/%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%EA%B0%9C%EB%85%90

  • 블록은 헤더와 바디로 구성되어 있다.
  • 블록의 식별자는 블록의 해시 값

 

블록체인이란

  • 각 블록들의 식별자인 블록 해시값으로 연결되어 만들어진 블록 집합체
  • 이때 해시 값은 블록 헤더의 정보를 SHA-256으로 2번 해싱한 32 바이트 값 (해시 알고리즘)

 

블록 바디 정보

  • 블록 바디는 트랜잭션 카운터와 트랜잭션 집합으로 구성
구성 설명
Transaction Count 블록 바디에 기록된 트랜잭션의 개수
Transaction 첫 번째 나타나는 코인베이스 트랜잭션 거래 내용
이 트랜잭션은 채굴자에 의해 선택되어 블록체인에 포함되어야 한다.

 

블록 헤더 정보

  • 블록 헤더는 앞에 연결된 블록의 해시 값에 대한 정보를 가지고 있다.
  • 즉, 앞 블록의 해시 값으로 블록들이 연결된다.
구성 요소 Byte 설명
Block Version 4 블록을 생성한 소프트웨어 프로토콜 버전
Merkle root hash 32  해시 트리로서, 모든 트랜잭션 해시 값으로 머클 트리의 루트 노트 값
Timestamp 4 해당 블록의 채굴 시간
Bits 4 해시 값의 난이도 조절을 위한 수
Nonce 4 블록 해시 값을 구할 때 사용되는 입력 값
Previous hash 32 이전 블록의 해시 값 (블록 간의 연결 역할)

 

블록 헤더 - Merkle root hash

  • 블록에 있는 모든 트랜잭션 데이터의 해시 값을 이진트리로 요약한 것
  • 특정 트랜잭션의 일부 내용이 바뀌면 머클 루트의 값도 바뀐다.

 

블록 헤더 - Preious hash

  • 이전 블록의 해시 값
  • 블록 헤더가 이전 블록의 해시 값을 가짐으로써 블록들을 체인으로 연결 가능
    → 블록 안에 있는 트랜잭션의 값이 바뀌면, 블록 해시 값 역시 바뀌기 때문에 블록을 찾을 수 없게 되어 연결이 끊어진다.
  • 한 번 체인으로 연결된 블록들은 그 내용을 바꿀 수 없어 데이터가 안전하게 유지된다.

 

블록 헤더 - Bits & Nonce

  • Bits는 채굴 난이도에 따라 결정되는 목푯 값
  • 임의의 Nonce 값을 헤더에 넣은 상태에서 헤더의 해시를 계산할 경우, 이 해시 값이 Bits 값보다 작아야 채굴 성공
    → 해시 값은 반드시!!! Bits 값보다 작아야 한다.
  • Nonce는 채굴에 성공하기 위해 반복적으로 바꿔서 대입하는 임의의 값
  • 비트코인의 경우 채굴 시간이 10분 정도 걸리도록 Bits 값이 조절된다.

 

비트코인 채굴 시 풀어야 할 문제

  • 채굴이란, 암호화폐의 거래내역을 기록한 블록을 생성하고, 그 대가로 암호화폐를 얻는 행위
  • 연산 문제를 풀어 블록 해시 값을 먼저 발견해야 블록을 생성할 수 있다.
  • 만약 두 명 이상의 사람이 블록을 동시에 발견할 경우, 기존 블록의 길이가 긴 사람이 생성하게 된다.

 

 

블록체인 네트워크

P2P(Peer to Peer) 네트워크

  • 중앙 서버 없이 각 노드들이 직접 통신하는 구조 (탈중앙화)
  • 모든 노드는 클라이언트 기능과 서버 기능을 모두 수행

 

클라이언트 서버 구조 동작 방식

  • 클라이언트 서버 구조는 중앙화된 컴퓨팅 방식을 사용
  • 중앙 서버가 필수며, 모든 클라이언트는 서비스 사용을 위해 중앙 서버에 연결
  • 중앙 서버 오류로 인해 전체 장애 발생 가능성이 높아 대비가 필요

 

P2P 네트워크 장점

  • 일부 노드가 고장 나더라도, 전체 시스템이 멈출 위험이 낮아 안정적으로 운영
  • 노트들 자원과 네트워크 회선을 이용하여 부하를 분산시켜 높은 확장성 제공
  • 일부 노드만 특별한 역할을 주지 않기 때문에 단일 장애점이 없음

 

P2P 네트워크 단점

  • 노드들 간의 효율적인 통신 경로 설정이 필요
  • 노드 수가 늘어나면 버킷 릴레이 양이 많아져 성능 저하
  • 네트워크 구간 별 전송 시간 차이로 인한 노드들 간의 정보 불일치 발생 가능성
  • 문제가 발생해도 시스템을 쉽게 중지시킬 수 없음

 

P2P 네트워크 설계

퓨어 P2P (No 인덱스 서버)

  • 인덱스 서버 없이 자신이 원하는 데이터를 검색하는 기능도 노드 자율적으로 수행

하이브리드 P2P (Yes 인덱스 서버)

  • 노드 탐색을 위해 인덱스 서버를 사용

 

1. 퓨어 P2P 네트워크 특성

  • 모든 노드가 동등하게 연결
  • 확장성과 내결함성은 높지만, 시스템 전반의 설계와 관리가 어려움
  • 다른 노드들을 탐색할 수 있는 알고리즘 요구
  • ex) 비트코인, 이더리움

 

2. 하이브리드 P2P 네트워크 특성

  • 노드 정보들이 인덱스 서버에 기록
  • 노드의 검색 요청은 클라이언트 서버 형태로, 인덱스 서버에서 이루어짐
    → 서버에 의존하기 때문에 순수한 P2P 방식이라고 보기는 어려움
  • 클라이언트 서버 구조처럼 설계와 관리가 용이하지만 확장성이 떨어짐

 

네트워크 전파 방식

네트워크의 모든 노드에 데이터를 보낼 수 있는 방법

1. Broadcast

  • 데이터를 수신한 특정 노드들이 모든 노드들에게 데이터를 전송
  • 트래픽 증가로 인한 대역폭 낭비

2. Multicast

  • 데이터를 수신한 특정 노드들이 선택한 노드 그룹에게 데이터를 전송
  • 가장 효과적인 방법
  • 가십(Gossip) 프로토콜

3. Unicast

  • 개별적으로 각 노드에게 전공
  • 시간이 많이 걸려 비효율적

 

가십 프로토콜

  • 노드들 간의 데이터를 공유하기 위한 프로토콜
  • 소문이 퍼지는 것처럼 결국 모든 노드에게 데이터가 전달되는 구조
  • 전체 노드에 메시지를 확산하는데 필요한 시간복잡도 = O(log N)

 

노드

  • (네트워크) 연결 포인트 혹은 데이터 전송의 종점
  • (블록체인) 네트워크에 참여하는 개개인의 서버

 

노드의 기능

Wallet 지갑

  • 사용자의 개인키와 공개키를 관리하고 거래에 사용되는 주소를 생성하는 기능

Miner 채굴

  • 합의 알고리즘을 사용하여 유효한 거래를 포함한 새로운 블록을 생성하는 기능

Full Blockchain

  • 블록체인 데이터베이스
  • 제네시스 블록부터 가장  최신의 블록까지 완전한 복사본을 저장

Network Routing

  • P2P 네트워크 전송 기능을 담당
  • 거래와 블록을 검증하고 전파

 

노드의 종류

Reference Client

  • 완전한 형태의 노드

Full Blockchain Node

  • 네트워크 라우팅 기능과 모든 블록체인 데이터를 가진 형태

Solo Miner

  • 채굴에 특화된 형태의 노드 (지갑 기능 제외)

Lightweight wallet

  • 거래와 유효성 검증만 가능한 스마트폰에 설치된 지갑 형태 노드
노드 Wallet Miner Full Blockchain Network Routing
Reference Client O O O O
Full Blockchain Node     O O
Solo Miner   O O O
Lightweight wallet O     O

 

 

블록체인 네트워크 유형

퍼블릭 블록체인

  • 누구나 거래를 생성하고 블록을 검증하며, 거래 내역을 확인할 수 있는 개방형
  • 퓨어 P2P

프라이빗 블록체인

  • 허가된 조직이나 개인만 참여할 수 있는 폐쇄형
  • 서버가 존재하는 하이브리드 P2P

컨소시엄 블록체인

  • 같은 목적을 갖는 여러 기관이 컨소시엄을 구성하여 공정성과 확장성을 보안
  • ex) 금융 기관

 

1. 퍼블릭 블록체인

  • 참여자의 제한이 없음
  • 합의과정에 누구나 참여할 수 있으며, 참여자의 합의에 따라 거래가 승인
  • 암호화폐를 인센티브로 지급하여 네트워크 참여의 동기 부여 및 네트워크 유지
  • 단, 참여자 간 상호 검증을 거치기 때문에 거래 속도가 느림
  • ex) 비트코인, 이더리움

 

2. 프라이빗 블록체인

  • 한 기업이 모든 통제 권한을 가지고 있는 기업형 블록체인
  • 중앙관리 방식의 문제점인 보안성과 프로세스 처리의 한계 등을 해결하기 위한 목적
  • 처리속도가 빠르나, 중앙결정화 되어 있기 때문에 공정성과 투명성이 떨어질 수 있음
  • 블록체인의 순수한 특성 "누구나 참여할 수 있다"가 무너지지만, 보안성이 뛰어남

 

3. 컨소시엄 블록체인

  • 퍼블릭 블록체인과 프라이빗 블록체인의 중간 형태
  • 여러 기관 또는 기업이 하나의 그룹으로 연합하여 네트워크를 구성하는 구조
  • 여러 기관이 하나의 컨소시엄을 구성하기 때문에 공정성과 확장성을 확보 (private 블록체인 단점 극복)