본문 바로가기

Blockchain & Bitcoin

블록체인과 비트코인을 최소한으로 이해해보자

반응형

컴퓨터공학과 전공자이지만, 블록체인에 대해 제대로 공부해본적이 없어서 GPT 질문을 기반으로 공부해보았다. GPT 기반 공부법이라 정석적인? 순서가 아닐 수도 있다는 점 이해를 구한다.

블록체인이 무엇인지, 비트코인이란 무엇인지, 어떻게 거래되고 가치를 가지는지에 대해 탐색해보았다.

아래는 그 내용이다.

1. 블록체인

한마디로 말하자면 "여러 사람이 공유하는 분산형 장부 시스템" 이다.
거래 내역(데이터)을 블록 단위로 묶어서 체인처럼 연결하고, 그 내용을 여러 대의 컴퓨터(노드)에 복제해 저장하는 기술이다. 여러대의 노드에 복제되어 있기 때문에, 위변조를 할 경우 다른 노드에서 검증을 통해 바로 들통이 난다.

 

여기서 중요한건 "블록"이라고 할 수 있다.

1.1. 블록

일정 시간 동안 발생한 데이터를 묶어놓은 것으로, 한 블록은 이전 블록의 해시를 포함하고 있어서 조작이 불가능하고 이러한 특성을 이용해 현재 상태에 대한 검증이 가능하다. (과거에 +1, +2, -3, +5 라는 일이 있었다는게 확실하다면 현재에 +5 상태일게 당연하므로)

블록에 들어가는 정보는 다음과 같다.

  • 트랜잭션 리스트(=거래 내용들)
  • 이전 블록의 해시
  • 현재 블록의 해시
  • 시간 정보
  • 기타 데이터

해시(Hash): 어떤 입력에 대해 나온 정해진 출력을 의미한다. 이해하기 좀 더 쉽게 설명하자면, "초콜릿"이라는 단어를 해시 함수라는 것에 넣으면, "케퍼테" 뭐 이런 임의의 값이 나온다고 할때, 이 "케퍼테"라는 값이 "초콜릿"에 대한 해시값이고, "초콜릿"을 넣었을 때에 얻을 수 있는 값이다. 다른 값을 함수에 넣어서는 얻을 수 없으며, "케퍼테"라는 값으로부터 원래 값인 "초콜릿"을 도출해낼 수도 없다. 이러한 속성 때문에, 비밀번호 같이 보안이 중요한 사항을 저장할 때는 해시로 변환해서 저장해두곤 한다. (해시값은 유출되어도 원래 비밀번호를 알 수 없기 때문)

2. 비트코인

비트코인은 이런 블록체인을 최초로 실현한 사례이자, 블록체인의 대표적인 활용 예시이다. 탈중앙화에 큰 의의를 둔 재화로, 총 2100만 비트코인이라는 한정된 공급량을 가진다.

구분 블록체인 비트코인
정의 데이터를 안전하게 기록하고 공유하는 기술 블록체인 기술을 기반으로 만든 디지털 화폐(암호화폐)
용도 신뢰 기반의 데이터 저장 (암호화폐, 투표, 공급망 등) 탈중앙화된 전자화폐로서 가치 저장 및 전송
시작 개념은 1990년대, 본격적 실현은 2008년 비트코인 백서 2009년 사토시 나카모토가 오픈
기술 예시 분산 네트워크, 해시, 디지털 서명, Merkle Tree 등 블록체인 + 작업증명(PoW) + 제한된 공급량(21M개)

비트코인이 재화로써 가치를 가질 수 있는 건 결국 블록체인 기술의 특성상 누구나 검증 가능하므로 위변조가 안되는데(안전성), 거기에 제한된 공급량(희소성)을 가진다는 점 때문이다.

2.1. 채굴

Q) 비트코인 하면 떠오르는 키워드인 "채굴"이 궁금해져서 찾아보았다. 광산 채굴을 생각해보면, 채굴 됐을때 시장에 재화가 추가되는거 아닌가? 근데 제한된 공급량을 가졌다면서?

A) 채굴이란, 블록을 생성하고 보상을 받는 것을 말한다. 그 보상은 새롭게 추가되는 것이 아니라, 한정된 공급량 내에서 지급 되는것이다. 지구에 매장된 금은 정해져 있고, 그걸 캐낸 사람에게 뽀찌를 떼주는, 그런 느낌이라 채굴이라 명명한 듯하다.(마지막 줄은 뇌피셜)

 

Q) 블록은 그냥 기록들의 해시값이라며, 해시 함수에 넣으면 금방 만드는거 아니야? 그거 만드는 걸로 왜 보상을 줘?

A) 맞는데, 그 해시값에 꽤 맞추기 힘든 기준(해시 조건)이 정해져있고, 그 조건에 맞추려면 블록에 임의의 보정값(Nonce, 넌스)을 주면서 조건에 맞을 때까지 계속 돌려봐야되는데, 그 과정에서 엄청나게 많은 연산과 자원이 들어가기 때문에 보상을 주게 된다.

 

Q) 해시 조건은 누가 어떻게 정하지?

A) 난이도 조정에 따라 주기적으로 바뀐다. 블록체인 프로토콜이 목표 난이도를 계산해서 그에 맞는 해시 조건을 설정하게 된다. 난이도는 10분에 블록이 하나 생성될 수 있을 정도로 설정이 되며, 2016블록(2016 * 10분 = 2주)에 한 번 난이도 조정이 일어난다. 만일 2016블록이 만들어졌는데 2주가 안걸렸다면 난이도가 쉬운것이므로 더 어렵게 설정되고, 2주를 넘긴다면 어려운 것이므로 더 쉽게 설정되는 식이다.

+ 해시 조건은 "해시값이 목표값보다 작아야 한다"는 숫자 비교이다. 즉, 네트워크는 난이도에 따라 목표값을 정하고, (해쉬값 < 목표값) 이 조건을 만족하면 블록 채굴에 성공했다고 한다.

2.2 반감기

비트코인을 하다보면 반감기라는 용어를 볼 수 있다.

반감기는 채굴할 때 주는 보상이 반으로 줄어드는 이벤트로, 4년에 한 번 일어난다. 결국 블록 보상은 점점 작아지고, 2100만 개에 가까워지되 절대 도달은 안 하게 된다.

연도 보상 누적 발행량
2009 50 BTC 수백만 개
2012 25 BTC 10M BTC 초과
2016 12.5 BTC 15M BTC 초과
2020 6.25 BTC 18.5M BTC 이상
2024 3.125 BTC 계속 증가 중 (현재 약 19.7M BTC 이상)

이렇게 지금까지 풀린 비트코인은 1970만 비트코인 이상이지만, 약 300만~400만 BTC는 지갑 분실, 개인키 유실 등으로 영영 접근 불가하다고 한다.

2.2.1. 반감기 설정 이유

  • 인플레이션 방지
  • 공급량 예측 가능 → 희소성 부여
  • 채굴 보상이 줄면서 거래 수수료가 보상의 주 수입이 되도록 유도

2.3. 비트코인 블록

채굴자들은 메모리 풀(Mempool)에 잇는 거래 내용을 바탕으로 블록을 만든다. 블록의 크기는 기본적으로 약 1MB로 제한되어 있고 세그윗* 이후 논리적 제한은 약 4MB이므로, 거래 크기(250~500bytes)에 따라 2000~3000개 거래가 한 블록에 들어가게 된다. 그런데, 모두의 메모리 풀이 완벽히 일치하는 데이터를 갖고 있도록 (일관성을 유지하도록) 하는건 쉽지 않다. 이 때문에, 각자가 만드는 블록도 달라진다. 각자 블록을 만들기 때문에 생기는 문제점들과 해결 방안을 찾아보았다.

*세그윗 설명: https://www.banksalad.com/contents/%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85%ED%95%98%EB%8A%94-%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%EC%84%B8%EA%B7%B8%EC%9C%97-Segwit-%EC%9D%B4%EB%9E%80-9gjVA

2.3.1. 블록 후보

블록 후보는 채굴자가 블록체인에 연결하려고 직접 만든 블록 초안이다. 즉, “내가 이 거래들을 넣고 만든 블록이 정답이었으면 좋겠어!” 하고 만들어 놓는 샘플이다. 이 블록에 모든 채굴자가 동일한 거래를 넣는가하면, 그렇지 않다. 무슨 말이냐면, A, B, C, D, E 라는 거래가 일어났다고 할 때, 채굴자1은 A, B, C 를 넣어서 블록을 만들려고 할 수 있고, 채굴자2는 B, D, E를 넣어서 만들 수도 있다.

Q) 그럼 서로 다른걸 만들게 될텐데?

A) 맞다. 만일 채굴자2가 블록을 만들기 전에 채굴자1이 먼저 만들어서 네트워크에 전파하게 된다면, 채굴자2가 만들던 블록은 폐기된다.

Q) 혹시라도 동시에 만들게 되면?

둘이 만든것이 동시에 네트워크에 올라가게 되고, 다른 채굴자들 중 일부는 1이 만든 것을 기반으로 그 뒤에 이어서 만들게 되고, 다른 일부는 2가 만든 것을 기반으로 이어서 만들게 될 것이다. 그럼 두 체인이 존재하게 되는건데, 이 때 어느 한 체인에서 그 다음 블록이 먼저 완성되면, 그 체인이 정식 체인으로 채택되게 되며, 다른 한 체인은 폐기된다. 참고로 보상은 채택된 쪽에만 간다고 한다.

2.3.2. 메모리풀

각 노드(채굴자 포함)가 보유한 “거래 대기 목록”을 의미한다. 아직 블록에 포함되지 않았지만 네트워크에 전파된 상태인 거래들이 저장되어 있고, 채굴자는 이 목록에서 거래들을 골라 블록 후보를 생성한다.

새 블록이 만들어져 받게 되면, 블록의 유효성을 검증한 후 해당 블록에 포함된 거래들을 메모리풀에서 제거하게 된다.


지금까지 배운 내용에 의해, 비트코인 생태계가 굴러가는 사이클이 다음과 같음을 알 수 있다.

거래 발생 -> 거래 내용으로 블록 생성(=채굴) -> 얻은 비트코인으로 또 거래 -> 블록 생성(=채굴) -> ... 무한반복 ...

 

하지만 이것만으론 실제 비트코인 시장이 어떻게 굴러가는지(비트코인을 주고 받는 절차라든지, 거래소는 이 사이클에서 무슨 일을 담당하는 건지 등등) 감이 오지 않는다.

조금 더 현실적인 부분을 공부해보자.


2.4. 비트코인의 실제 거래

우리는 비트코인을 흔히 거래소를 통해 거래하고, 그 거래 과정에서 지갑이라는 단어를 흔히 볼 수 있다.

그 두 개념을 알아보자.

2.4.1. 거래소

거래소는 비트코인을 사고팔 수 있는 곳이고, 법정화폐(원화, 달러 등)과 비트코인을 바꿔주는 중개자 역할을 한다.

기능 설명
매매 중개 사용자들끼리 비트코인을 사고팔도록 주문을 매칭해줌
법정화폐 연동 원화, 달러 등 실물 화폐로 비트코인을 구매 가능하게 함
지갑 보관 대행 사용자의 코인을 대신 보관 (일종의 은행처럼 작동)
보안 및 인증 KYC, OTP, 이중 인증 등으로 자산을 보호
시장 정보 제공 실시간 시세, 차트, 주문 내역 등 제공

 

주의할 점은 거래소는 중앙화된 기관이고, 해킹/파산 가능성이 존재한다는 것이다.

Q) 코인은 탈중앙화가 특징인데, 어떻게 중앙화가 가능한걸까?

A) 거래소를 통해 거래를 하는 것은 사실 거래소의 지갑을 사용하는 것이고, 사용자 본인의 지갑을 사용하는게 아니기 때문이다. 자세한 내용은 지갑에 대해 더 공부해봐야 할듯하다.

2.4.2. 지갑

비트코인에서 말하는 지갑은 우리가 원래 알고있던 지갑의 개념과 다르다. 비트코인에서 지갑은 코인을 담고 있는 장소가 아니다. 정확히는, 내가 그 코인을 사용할 수 있다는 증거(개인키)를 보관하는 도구이다.

지갑의 구성 요소와 역할은 다음과 같다.

구성 요소 역할
개인키 (Private Key) 내 자산을 쓸 수 있게 해주는 권한 / 비밀번호보다 중요
공개키 (Public Key) 개인키로부터 수학적으로 유도 / 주소 생성에 사용
주소 (Address) 내가 코인을 받을 때 쓰는 식별자 (공개 가능)

개인키가 있으면 내 자산을 이용(송금)할 수 있게 되므로, 개인키는 반드시 지켜야하는 정보인 것이다.

지갑의 종류에는 핫 월렛(Hot Wallet)과 콜드 월렛(Cold Wallet)이 있다.

 

2.4.2.1. 핫 월렛

항상 인터넷과 연결되어 있는 지갑

✅ 장점 즉시 송금 가능 (모바일 앱처럼 사용)
초보자에게 접근 쉬움
❗ 단점 인터넷에 연결되어 있어 해킹 위험 존재
개인키가 온라인에 저장될 수 있음
예시 거래소 지갑 (예: 업비트, 코인베이스)
모바일 지갑 (Trust Wallet, Metamask)
데스크탑 지갑 (Exodus)

 

2.4.2.2. 콜드 월렛

인터넷에 연결되지 않는 상태에서 개인키를 보관하는 지갑

✅ 장점 해킹 위험 거의 없음
대규모 자산 보관에 적합
단점 사용하려면 장치 연결 & 조작 필요 (약간 불편)
분실 시 복구용 시드 없으면 복구 불가
예시 하드웨어 지갑 (Ledger, Trezor, SafePal)
종이 지갑 (주소 & 개인키를 종이에 출력해서 보관)
완전 오프라인 컴퓨터에서 만든 지갑

2.4.3. 거래소 해킹과 파산

다시 거래소 얘기로 돌아와서, 거래소는 사용자들의 지갑을 관리하는게 아니다. 거래소 고유의 지갑을 갖고 있고 사용자들이 얼마를 갖고 있는지 별도의 장부에 기록해두는 것이다. 그렇기 때문에 중앙화되었다고 하는 것이고, 해킹으로 거래소 지갑의 개인키가 털린다면, 거래소 지갑 내 모든 자산이 없어지는, 즉 파산이 일어날 수 있다.

이외에도, 운영에 실패하거나, 운영진이 사기/횡령하는 이유로 파산이 일어날 수도 있다. 따라서 거래소를 잘 알아보고 거래를 시작하는 것이 좋다. 일부 거래소는 보유 자산 증명 시스템(Proof of Reserve)를 제공하기도 한다고 하니 참고하자.

대표적인 예시는 다음과 같다.

1. Mt. Gox (2014)
일본 최대 거래소였지만 해킹으로 85만 BTC 유출, 사용자들 돈 대부분 증발
2. FTX (2022)
미국의 대형 거래소, 고객 자산을 몰래 다른 회사에 빌려줌 → 유동성 붕괴 → 파산, 최대 수십조 원 규모 손실

2.5. UTXO (Unspent Transaction Output)

이제 전체적인 그림이 어느 정도 이해가 됐는데, 궁금한게 생겼다.

지금까지 공부한 것에 의하면, 누군가가 비트코인을 얼마나 갖고 있는지 알기 위해서는 이전 블록의 거래 내역을 쭉 훑어봐야한다. 지갑은 단순히 내 자산을 사용할 권리를 제공할 뿐, 잔액을 제공하진 않기 때문이다. 만일 매번 거래를 할 때마다 내 잔액 확인을 위해 그동안 쌓인 어마어마한 데이터를 다 훑어보는건 엄청나게 오래걸리지 않을까? 심지어 이건 거래가 계속 될수록 점점 길어진다.

 

이를 해결하기 위해, 노드에는 UTXO 데이터베이스라는 것이 존재한다.

UTXO는 내가 아직 사용하지 않은 코인 조각들의 합을 의미한다. 누가 나한테 0.3 BTC, 0.7 BTC를 보냈고, 아직 안 썼다면, 이 두 개는 내 UTXO가 되는 것이고, 총 잔액은 0.3 + 0.7 = 1 BTC로 계산된다.

이 UTXO는 새 블록이 생길때마다 갱신됨으로써 최신 상태를 유지할 수 있다.

 

모든 노드(=풀 노드)는 모든 주소에 해당하는 UTXO 정보를 보유하고 있다. 즉, "누가 얼마를 쓸 수 있는지"에 대한 전체 그림을 모두가 항상 갖고 있는 셈이다. 지금까지 생성된 주소가 엄청 많기 때문에 2025년 기준 UTXO 집합은 5~10GB 정도나 된다고 한다. 다행히 인덱스 구조로 되어 있어서 조회에는 문제가 없다.

3. 정리

지금까지 배운 내용을 정리해서 거래가 일어나는 과정을 예시와 함께 순서대로 나열해보면 다음과 같다.

 

<0.3 BTC를 송금하는 과정>

 

1. 송금 요청 생성

상대의 비트코인 지갑 주소와 0.3 BTC를 입력하고 송금 버튼을 누른다.

 

2. 내 UTXO 중 필요한 금액만큼 선택

수수료까지 고려해서, 0.301 BTC가 필요하다면, 지갑은 자동으로 내 UTXO를 스캔해서 사용가능한 0.2 BTC와 0.15 BTC를 선택한다.

 

3. 거래 생성 및 서명

입력) 두 개의 UTXO (0.2 + 0.15)

출력) 상대방 주소로 0.3 BTC, 내 주소로 잔돈 0.049 BTC, 수수료는 채굴자에게 자동 할당

이 거래는 내 개인키로 디지털 서명된다.

 

4. 네트워크에 거래 내역 퍼뜨림

각 노드는 이를 받아서 메모리 풀에 저장한다.

 

5. 블록 생성

채굴자는 수수료가 높은 거래부터 모아 블록 후보를 생성한다. 채굴에 성공하면, 그 안에 내 거래도 포함되게 된다.

 

6. 블록체인에 연결

새 블록이 검증되고 블록체인에 추가된다. 다른 노드에 있는 메모리풀에서는 거래가 사라진다.

이 시점부터 거래가 확정되었다고 간주된다.

 

결과적으로, 내 이전 UTXO 2개는 소모되고, 상대방에게 0.3 BTC 짜리, 나에게는 0.049 BTC 짜리 UTXO가 생성된다. 이건 블록체인에 기록되었기 때문에 누구나 검증이 가능하다.


이렇게 비트코인 생태계와 전반적인 흐름을 알아보았다.

 

하지만 정리 중간에 지금까지 다루지 않았던 내용이 나왔다.

 

바로 수수료다.


4. 수수료

수수료는 내 거래가 블록에 포함된 것에 대해 블록을 만든 사람(채굴자)에게 챙겨주는 금액이다. 이 금액은 정해진 고정 값이 아니라, 사용자가 자발적으로 지정하고 채굴자가 선택해서 받아가는 자율 경매 구조이다. 이 거래가 더 빨리 블록에 포함되길 원한다면 높은 수수료를 주면 된다.

마음대로 설정할 수도 있지만 일반적으로 사용되는 공식이 있다.

총 수수료 (BTC) = 거래 크기(Byte) × 수수료율 (satoshi/byte)
// 수수료의 단위는 "사토시"로, 1 BTC는 100,000,000 satoshi이다.

비트코인은 용량 제한이 있는 블록에 거래를 넣는 구조이기 때문에, "블록 공간"이 곧 희소 자원이고, 채굴자는 이 공간을 비싸게 사는 거래를 선호하게 된다.

물론 이건 기준이 되는 금액이고, 거래가 많아 등록에 오래걸릴거 같다면 수수료를 더 높여도 되고, 굳이 빨리 등록하고 싶지 않다면 더 낮춰도 된다.

(이걸 보면서 미국의 팁 문화 같다는 생각을 했다 ㅋㅋㅋ)

하지만 수수료가 너무 낮아 계속 거래 확정이 미뤄진다면, 받는 쪽은 확정될 때까지 그 돈을 사용 못하는 것이 되므로 유의해야 한다.

4.1. 채굴 보상? 수수료?

앞서 채굴 이야기를 하면서 블록을 만든 보상으로 받는 금액(반감기가 있는 그 금액)이 정해져있는 것 처럼 이야기했다. 그러면 이 수수료는 뭘까? 정확히 말하면, 채굴을 하면 블록 보상(현재 3.125 BTC)과 수수료(블록 내 거래 수수료 총합)를 더해서 받게 되는 것이다.

블록 보상은 앞으로 계속 줄어들기 때문에, 채굴자의 수익은 수수료에 점점 더 의존하게 된다. 만약 거래량이 적고 수수료도 낮다면, 채굴 보상이 줄어든 미래에 채굴자들이 네트워크 유지에 의욕을 잃을 수 있다. 그래서 거래 수수료가 충분히 유지되도록 설계해야 하고, 블록 공간의 경쟁을 통해 수수료가 형성되도록 유도하고 있는 상황이라고 한다.

5. 양자컴퓨터의 영향

마지막으로 알아본 것은 양자컴퓨터가 코인에 끼칠 영향이다.

양자컴퓨터는 연산이 아주 빠르기 때문에, 상용화된다면 블록 채굴도 매우 빨리 끝날 것이고, 지갑의 이용 권리인 개인키의 보안마저도 심각하게 위협받는다. 그렇다면 사실상 망하는거 아닌가?

GPT에 의하면, 즉시 붕괴되지는 않지만 대응 없이는 위험하다는 게 중론이라고 한다.

5.1. 채굴 속도

비트코인의 채굴은 SHA-256 해시 퍼즐을 푸는 경쟁이다.

양자컴퓨터는 Grover’s Algorithm이라는 양자 알고리즘을 통해 이걸 √N 속도로 해결할 수 있다.

기존 컴퓨터가 N번 시도해야 할 것을 양자컴퓨터는 √N번만에 해결 가능하고, 속도는 대략 수천 배 빠르다.
양자컴퓨터를 가진 자가 채굴 경쟁에서 압도적인 우위를 가지면 사실상 중앙집중화되면서 네트워크 보안 붕괴의 위험이 있다.

5.2. 개인 지갑 해킹

비트코인 지갑은 보통 타원 곡선 암호(ECDSA) 기반의 개인키/공개키 구조이다.

거래를 할 때 공개키가 공개되는데, 양자컴퓨터는 Shor’s Algorithm으로 공개키에서 개인키로 역산이 가능하다고 한다.
즉, 이미 거래에 사용된 지갑의 공개키가 남아 있다면, 그 지갑은 양자컴퓨터에게 털릴 수 있다는 말이다.
장기 보유된 코인(예: 사토시 지갑)이나 잊힌 지갑이 위험하다는 말이 된다.

5.3. 대응

양자 내성 암호(Quantum-Resistant Cryptography)라는 대안이 존재한다.
SHA-256은 그 자체로는 완벽하진 않지만 비교적 양자에 강하다고 평가받는다.
지갑 체계(전자서명)만 바꾸면 어느 정도 보안은 유지 가능하므로 포스트-양자 비트코인으로 하드포크 또는 소프트포크 가능성이 논의되고 있다. 하지만 이걸 하기 전에 양자컴퓨터가 먼저 실용화되면 대응할 시간 없이 큰 피해를 입을 가능성도 있다.

5.4. 붕괴 시나리오

상황 결과
소수의 강력한 양자컴퓨터가 등장 채굴 독점 → 탈중앙성 상실 → 신뢰 하락
지갑 해킹이 실제로 일어남 “비트코인 안전하지 않다” → 가격 폭락 & 신뢰 붕괴
업계가 선제 대응에 실패함 프로토콜 전환 어려움 → 하드포크 분열 가능성

즉, 기술적으로 붕괴하지 않아도 사회적 신뢰가 무너지면 붕괴가 될 수 있으므로 선제적인 조치가 필요하다고 할 수 있다.

반응형