본문 바로가기
카테고리 없음

비트코인은 총 몇 개?

by 3min⚡️bitcoin 2025. 12. 13.

비트코인은 2100만개로 공급이 한정되어있다고 알려져있다.

이 부분이 머니프린팅이 가능한 법정화폐와 다르고, 내가 처음 비트코인 입문할 때 매력을 느끼게 된 부분이다.

이는 2009년 사토시 나카모토가 비트코인을 처음 공개 했을때부터 정해져있었다.

 

그러면 이 2100만이란 숫자는 어떻게 나온 것인가?

사토시가 활동하던 시절 그가 남긴 글을 보면 그냥 사람이 인지하기 좋은 크기가 총량이 되길 원했던것 같다.

https://www.bitcoin.com/satoshi-archive/emails/mike-hearn/11/#selection-25.1427-25.1496

 

Re: More BitCoin questions

An archive of Satoshi Nakamoto’s writings.

www.bitcoin.com

I thought about 100 BTC and 42 million, but 42 million seemed high. 

 

그러면 이 2100만개는 소스코드에 어떻게 정의 되어있는지 같이 검증해보자.

Don't trust, Verify

진짜 2100만개 맞음?

아래는 validation.cpp 파일의 1942번째 라인이다. (bitcoin core 29.x 버전 기준)

 

nSubsidy >>= halvings 부분이 반감기를 표현하는 내용인데, 50부터 right shift 연산을 진행한다.

반감기란, 블록의 채굴량이 절반이 되는 기간을 뜻하고, 21만개 블록이 채굴될 때마다 반복된다.

 

정확히는 50BTC 기준이 아니라 50억 사토시를 2진수로 표현해서 반감기마다 오른쪽으로 한 칸씩 밀어내는 것이다.

50억 사토시는 이진수로 총 33비트이므로 반감기는 2136년쯤 채굴보상을 1sat을 지급하고 그 뒤는 아예 0이 된다.

0.5sat같은걸 지급하지 않는다. 하위 단위가 추가되어도 채굴보상은 그냥 0이 된다.

그래서 만약 무한히 반감되었다면 2100만개에 완전 수렴했겠지만, right shift 연산으로 인해 아예 보상이 뚝 끊키며 사라지는 구간이 있어서 실제 전체 비트코인의 총량은 2,099,999,997,690,000 sats다.

 

그래서 보통 아래 수식으로 많이 표현한다. 참고로 현재는 4번의 반감기가 지나서 3.125개의 기본 채굴 보상을 받는다.

https://x.com/cyp3er/status/1998917139886186926

제네시스 블록은 사용을 못한다던데?

비트코인 제네시스 블록의 보상은 사용하지 못하게 막혀있다.

validation.cpp 파일의 ConnectBlock 함수의 2487 번째 라인에 적혀있다.

 

ConnectBlock 함수는, 받은 블록의 트랜잭션을 검증하고, UTXO Set을 업데이트 하는 함수다.

UTXO Set은 사용가능한 모든 UTXO들의 집합이다.

검증 단계에서, 현재 블록의 해시값이 제네시스 블록과 동일하다면, 예외처리 되어 UTXO Set에 추가되지 않고 함수가 종료된다.

실제로 다른 블록의 경우 여기서 종료되지 않고 2716번 라인의 UpdateCoins함수에서 UTXO Set에 블록의 트랜잭션들이 업데이트 된다.

 

그래서 UTXO Set에 제네시스 블록의 coinbase 트랜잭션은 존재하지 않고, 이에 따라 사용할 수 없다.

참고문헌

https://www.youtube.com/watch?app=desktop&v=uts8J-rgy4c

 

위 영상 7분 22초부터 보면 사토시가 왜 50개부터 시작했는지 고민한 포인트를 알 수 있다.