Post

블록체인 기초

블록체인에 대한 이해

블록체인 기초

블록체인

여러 참여자가 동일한 거래 장부를 공유하고 검증하는 분산 원장 기술(Distributed Ledger Technology)

1. 등장 배경

블록체인의 철학적 뿌리는 사이버펑크 운동이다. 1990년대부터 암호학자와 개발자들은 아래를 주장했다.

  • 개인정보는 국가가 아닌 개인의 것
  • 인터넷에서 익명성이 필요
  • 중앙 권력에 의존하지 말자
  • 암호학으로 자유를 보장하자

사실 비트코인이 최초의 디지털 화폐는 아니다. DigiCash, b-money, Bit Gold 등이 있었지만 모두 “중앙 서버 없이 누가 거래를 검증할 것인가”의 문제를 해결하지 못했다.

그러다 2008년 사토시 나카모토의 Bitcoin: A Peer-to-Peer Electronic Cash System 백서가 공개된다. 백서의 핵심은 단 하나였다. “신뢰할 수 없는 참여자들끼리도 합의할 수 있다.” 이를 위해 아래의 개념을 하나로 결합했다.

  • 해시 체인
  • 공개키 암호화
  • 디지털 서명
  • 작업증명(PoW)
  • 분산 네트워크

개별 기술은 이미 존재했지만 이들을 조합해 실제 동작하는 분산 화폐 시스템을 만든 것이 혁신이었다.

1.1 비트코인이 해결한 가장 중요한 문제

“여러 서버가 있을 때 일부가 거짓말을 해도 전체가 동일한 결론에 도달할 수 있는가?”의 문제를 비트코인은 PoW를 통해 이를 현실적으로 해결했다. 컴퓨터공학에서는 이를 Byzantine Generals Problem(비잔틴 장군 문제) 라고 부른다.

PoW는 블록체인 네트워크에서 누가 다음 블록을 생성할 권리를 가질 것인지 결정하는 합의 알고리즘이다. 쉽게 말하면 “컴퓨팅 자원을 사용해 어려운 문제를 먼저 푼 사람이 블록 생성 권한을 얻는다.”

PoW가 안전한 이유는 공격자가 거래를 조작하려고 한다고 가정하자 그러면 아래의 과정을 통해서 조작을 해야한다.

  1. 해당 블록 해시 변경
  2. 이후 블록 해시 전부 변경
  3. 다시 PoW 수행

문제는 블럭체인은 previous hash를 저장하고 있기 때문에 전체 체인을 돌면서 모든 해시를 수정해야하는데 이렇게 될 경우 공격자의 해시 파워가 나머지 정직한 네트워크의 해시 파워보다 커야 한다.(공격자 해시파워 > 50%)

엄밀히는 아래의 3가지가 중요한데

  • Hash Chain (Previous Hash) : 수정 시 연쇄 붕괴 발생
  • PoW : 다시 만드는 비용을 극단적으로 높임
  • 분산 네트워크 : 정상 체인을 따라잡아야 함(공격자가 다시 계산하는 동안 다른 채굴자들도 계속 블록을 만들고 있다는 점)

이를 요약하자면 “거짓말의 비용이 정직함의 이익보다 훨씬 크도록 만든 것”이 핵심이다.

2. 블럭이란

거래(Transaction)들을 묶어놓은 데이터 덩어리

예를 들어 아래와 같은 거래가 있다고 하자.

1
2
3
A → B 1 BTC
B → C 0.5 BTC
D → E 3 BTC

채굴자는 이 거래들을 모은다.

1
2
3
4
5
Block #100

A → B 1 BTC
B → C 0.5 BTC
D → E 3 BTC

이렇게 하나의 블록이 생성된다.(실제 블럭은 Header와 Body로 구성되어 있다,)

2.1 Header

블록의 메타데이터

비트코인 기준 아래의 데이터가 담겨있다.

  1. Version
  2. Previous Block Hash : 이전 블록의 해시
    • 이것 때문에 체인이 만들어진다.
  3. Merkle Root : 모든 거래(Transaction)를 대표하는 단 하나의 해시값
    • 각 거래를 해시하고 두개씩 묶어서 해시하고 다시… 해서 맨 위의 Merkle Root를 생성
  4. Difficulty Target
  5. Timestamp : 생성 시각
  6. Nonce : PoW 수행 시 계속 변경하는 값

2.2 Block Body

실제 거래 데이터(일정 시간 동안 거래를 모아서 하나의 블럭을 만들게 된다.)

블럭은 단순한 거래 묶음이 아니다. 블록 자체도 해시를 가진다. 만약 위변조에 따라 거래 내용이 바뀌면 Merkle Root를 활용해서 위변조를 감지할 수 있다.

This post is licensed under CC BY 4.0 by the author.