블록체인의 개념과 구조

MONA·2025년 7월 25일

나혼공

목록 보기
82/92

블록체인

데이터를 블록 단위로 묶어서 체인처럼 연결한 분산형 데이터베이스
모두가 공유하는 장부

핵심 개념

  1. Block

    • 거래나 기록을 담은 데이터 묶음
    • 하나의 블록에는 다음과 같은 정보가 포함되어 있음
      • 트랜젝션 정보
      • 이전 블록 해시값
      • 자기 해시값
      • 시간 정보 등
  2. Chain

    • 각 블록이 이전 블록의 해시값을 포함하며 순차적으로 연결됨
    • 이 연결 때문에 블록 조작 시 이후 모든 블록을 수정해야 하기에 변조가 어려움
  3. Distributed Ledger (분산원장)

    • 데이터를 한 곳에 저장하지 않고 여러 컴퓨터(노드)에 똑같이 저장함
    • 한 곳이 공격당하거나 장애가 발생해도 전체 시스템이 유지될 수 있음

블록체인은 중앙기관 없이도 신뢰가 가능한 기술이다.
A가 B에게 1 코인을 전송할 때, 블록체인 이전에는 은행과 같은 중앙기관이 이를 인증해주었지만,
블록체인에서는 네트워크 참여자(노드)들이 합의 알고리즘에 의해 거래를 검증하기 때문이다.

특징

  1. 탈중앙화 : 중앙 기관 없이 운영됨
  2. 투명성 : 누구나 거래 내역을 열람할 수 있음
  3. 불변성 : 한 번 기록된 데이터는 변경이 매우 어려움
  4. 신뢰성 : 위변조가 어려워 신뢰할 수 있음

사용

  1. 암호화폐 (비트코인, 이더리움 등)
  2. 스마트 계약 (조건 충족 시 자동으로 거래 실행)
  3. 공공 기록 (등기부, 학위증명 등)
  4. 공급망 관리
  5. 디지털 신원 인증 (DID)

구조

1. Hash

  • 어떤 데이터든 고정된 길이의 값으로 변환해주는 함수
    ex) SHA-256 해시 함수: 입력이 어떤 값이든 256비트(64자리 16진수)로 변환

특징

  1. 단방향성 : 입력 -> 출력은 쉬우나, 출력 -> 입력은 불가능에 가까움
  2. 결정성 : 같은 입력이면 같은 해시값 출력
  3. 충돌회피성 : 서로 다른 입력이 같은 해시값을 갖는 것은 매우 어려움
  4. 민감성 : 입력을 자주 조금만 바꿔도 해시값은 완전 달라짐(눈사태 효과)

블록체인에서 해시의 역할

  • 블록 고유 식별자
  • 블록 간 연결고리
  • 데이터 위변조 방지

2. Merkle Tree

  • 다수의 트랜젝션을 요약하기 위해 사용하는 트리 형태의 해시 구조
  • 모든 트랜젝션의 해시값을 결합해 하나의 최상위 루트 해시(Merkle Root)를 생성

구조 예시

   Merkle Root
      /    \
  H12      H34
 /  \      /  \
H1  H2   H3  H4
  • H1 ~ H4 : 각각의 트랜젝션을 해시한 값
  • H12 = Hash(H1 + H2), H34 = Hash(H3 + H4)
  • Merkle Root = Hash(H12 + H34)

필요성

  • 대용량 트랜젝션을 요약해서 블록 헤더에 기록 가능
  • 특정 트랜젝션의 포함 여부를 빠르게 증명 (Merkle Proof)
  • 블록체인의 데이터 무결성을 유지하면서도 효율성을 확보

3. 블록의 구조(Block Structure)

  • 블록은 블록 헤더와 블록 바디로 나뉜다.
  • 블록 헤더 : 블록의 메타정보 요약본
    • 주요 필드
      - 이전 블록 해시 (Previous Hash)
      - Merkle Root
      - Timestamp
      - Difficulty
      - Nonce (채굴을 위한 값)
  • 블록 바디 : 블록에 포함된 트랜젝션 목록

4. 체인 연결 방식 (Hash Chain)

  • 각 블록은 이전 블록의 해시값을 포함하고 있음
  • 이 구조 덕분에 하나의 블록만 수정해도 전체 연결이 깨짐
    -> 불변성(immutability) 확보 가능
Block 1: 해시 = A  
Block 2: 이전 해시 = A, 해시 = B  
Block 3: 이전 해시 = B, 해시 = C

-> Block 1의 데이터 변경 시 A값이 변함 -> B, C도 모두 변경되어야 하므로 조작이 사실상 불가능함

요약

구성 요소역할
Hash데이터 요약, 무결성 보장
Merkle Tree트랜잭션 요약, 검색 효율화
Block Header블록 메타정보 저장
Hash Chain조작 불가능한 구조 유지
profile
고민고민고민

0개의 댓글