블록체인
데이터를 블록 단위로 묶어서 체인처럼 연결한 분산형 데이터베이스
모두가 공유하는 장부
핵심 개념
-
Block
- 거래나 기록을 담은 데이터 묶음
- 하나의 블록에는 다음과 같은 정보가 포함되어 있음
- 트랜젝션 정보
- 이전 블록 해시값
- 자기 해시값
- 시간 정보 등
-
Chain
- 각 블록이 이전 블록의 해시값을 포함하며 순차적으로 연결됨
- 이 연결 때문에 블록 조작 시 이후 모든 블록을 수정해야 하기에 변조가 어려움
-
Distributed Ledger (분산원장)
- 데이터를 한 곳에 저장하지 않고 여러 컴퓨터(노드)에 똑같이 저장함
- 한 곳이 공격당하거나 장애가 발생해도 전체 시스템이 유지될 수 있음
블록체인은 중앙기관 없이도 신뢰가 가능한 기술이다.
A가 B에게 1 코인을 전송할 때, 블록체인 이전에는 은행과 같은 중앙기관이 이를 인증해주었지만,
블록체인에서는 네트워크 참여자(노드)들이 합의 알고리즘에 의해 거래를 검증하기 때문이다.
특징
- 탈중앙화 : 중앙 기관 없이 운영됨
- 투명성 : 누구나 거래 내역을 열람할 수 있음
- 불변성 : 한 번 기록된 데이터는 변경이 매우 어려움
- 신뢰성 : 위변조가 어려워 신뢰할 수 있음
사용
- 암호화폐 (비트코인, 이더리움 등)
- 스마트 계약 (조건 충족 시 자동으로 거래 실행)
- 공공 기록 (등기부, 학위증명 등)
- 공급망 관리
- 디지털 신원 인증 (DID)
구조
1. Hash
- 어떤 데이터든 고정된 길이의 값으로 변환해주는 함수
ex) SHA-256 해시 함수: 입력이 어떤 값이든 256비트(64자리 16진수)로 변환
특징
- 단방향성 : 입력 -> 출력은 쉬우나, 출력 -> 입력은 불가능에 가까움
- 결정성 : 같은 입력이면 같은 해시값 출력
- 충돌회피성 : 서로 다른 입력이 같은 해시값을 갖는 것은 매우 어려움
- 민감성 : 입력을 자주 조금만 바꿔도 해시값은 완전 달라짐(눈사태 효과)
블록체인에서 해시의 역할
- 블록 고유 식별자
- 블록 간 연결고리
- 데이터 위변조 방지
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 | 조작 불가능한 구조 유지 |