모든 것을 알아야 진정한 관리자이다
많은 분들이
비트코인이 무엇인지는
알겠는데,
잘 모르겠다고 한다.
당연한 말이다.
애초에 비트코인은
일반인이 깊게 이해하기 어려운
분야의 컴퓨팅 기술이었고
해킹, 암호학 커뮤니티에서
시작된 프로그램이니까.
하지만 비트코인은
놀랍도록 명료하고
또 그래야만 한다.
읽으면 읽을 수록
저절로 비트코인이
이해되도록 서술해보겠다.

우선 알아야 할 것은
공개 장부(Public Ledger)의 개념이다.
비트코인은
거래 기록이 담긴 장부가
실시간으로 유지되고
모든 사람들이 들여다 볼 수 있다.
물론 '영희 -> 철수, 50개'
이렇게 기록되는 것은 아니고
efwf23f2 -> 22fwsg, 50btc.
이런식의 난수로 기록된다.
장부가 한 페이지 추가될 때
장부를 쓴 사람에 대해
보상*으로 비트코인이 지급된다. (수고비)
*장부를 쓰는 채굴자에게 주는 이 신규 비트코인 보상은 약 4년마다 절반으로 줄이는데, 이것을 반감기(Halving)라고 합니다. 기술이 발달함에 따라 채굴속도가 빨라지므로 공급 증가 속도를 조절하기 위함이죠. 채굴자들이 10분에 한 번 꼴로 채굴에 성공하도록 프로그램에 의해 난이도가 조절되고 있습니다.
그리고 이 보상도 물론
공개 장부에 기록되고
공개된다.
2009년 비트코인 탄생 이래
현재까지 체인으로 이어진
장부의 장수
즉, 블록-체인의 총 갯수는
약 948,000 여 개이다.
2009년부터 약 17년 동안
평균 10분당 1 블록이 추가된 셈이다.
2026년 5월 기준으로
약 1,980만 개 이상이 유통중이고
이는 전체 비트코인의
약 94~95% 수준이다.
비트코인은 최종적으로
총 2100만개만 채굴되어 유통된다.
이렇게 유통되는 비트코인 갯수
블록체인의 갯수
최종 비트코인의 갯수 등
모든 것이 이미
그렇게 프로그램 되어 있어
임의적으로 바꿀 수 없다.
거래 요청이 일어난다.
그리고 그 요청이
비트코인 네트워크 전체에
즉시 전파된다.
그러면
비트코인 프로그램이 깔린
전 세계 수만 대의 컴퓨터(노드)들이
전파된 그 거래 기록을
검증**해서 자신의 하드에 업데이트한다.
노드(Node)란
인터넷에 연결된 동등한
컴퓨터들을 일컫는다.
비트코인의 핵심 문구 중 하나
"Don’t trust, verify."
(믿지 말고 직접 검증하라.)
를 충실히 따르고 있는 것이다.
이들이 바로 비트코인의
네트워크를 지키는 자들이다.
전세계의 노드들이
다 꺼지면 어떡하지?
라는 걱정도 해보았지만
이미 수 많은 기업들과 거래소가
자체 노드를 운영중이어서
안심했다.
프로그램만 깔면 누구든
노드를 운영할 수 있기 때문에
참여하기도 쉽다.
각각의 노드는
모든 거래의 역사를 기록한
단 하나의 장부만을 꾸준히
업데이트 하고 있고
누군가가 채굴에 성공하면
사토시가 채굴한 제네시스 블록부터
그동안의 모든 거래 기록을 포함한 상태로
새로운 거래들과 보상이 담긴
하나의 새로운 장부를
기존 장부들 끝에 연결한다.
그래서 블록+체인 이다.
그 어떤 누구도
이 장부의 내용을 토씨 하나
바꾸지 못한다.
하나라도 바뀌는 순간
해시값이 바뀌면서
그 장부는 노드들이 인정하지 않는
폐기물이 된다.
(뒤에서 자세히 다루기로 하자.)
이것이 관리자가 없이도
서로가 서로를 감시하는
탈중앙화(Decentralization)의
본질이다.
그럼 본격적으로
그 규칙과 원리를
하나씩 파헤쳐보겠다.
**어떤 것을 검증할까? 1) 비트코인 주인의 진짜 서명이 맞는가? 2) 보내는 계좌의 잔액이 충분한가? 3) 이미 보낸 비트코인을 또 보내는 것은 아닌가? 를 전체 노드들이 모두 승낙할 때 검증 완료됩니다.
거래 요청이 된 이야기로
다시 돌아가자.
당신이 필자에게
100 비트코인을 보냈다고
가정해보자.
(필자는 아마 강하게
거부하는 척 할것이다.)
하지만 아쉽게도
100 비트코인이 즉시
필자의 지갑에 들어오는 것은 아니다.
우선 비트코인의 거래(Transaction)가
요청되고
일정 시간 동안 발생한
다수의 거래 요청들이 모인다.
그 거래들이
즉시 실행되는 것은 아니고
1) 우선 그 거래가 정상적임을
모든 노드가 인정해야 하고
2) 새로운 장부에 그 거래가 쓰여져야만
그때 비로소 필자의 지갑 주소로
비트코인이 들어온다.
그렇다면 새로운 장부에
내 거래가 어떻게 쓰여질까?
그럼 이제 필자가
비트코인 100개를 받아
부자 행세를 하기 위한
프로세스를 알아보자.
요즈음 채굴자들은
싼 전기로 거대한 장비를 운영하는
데이터센터 사업자들이다.
어느 한 채굴자가 떠돌아다니는
거래 요청들을 하나로 묶는다.
이때 어떤 거래들을 묶을지는
채굴자가 결정한다.
채굴자는 블록 추가에 대한
시스템 보상과
수수료까지 동시에 받기 때문에
채굴자는 아마 수수료 높은 거래부터
가져오려 할 것이다.
그렇게 채굴자는
수백에서 수천 건의 거래를 묶어
새로운 장부 내용(블록)에 추가한다.
그리고 채굴자의 컴퓨터는
그 장부를 무한하게 '해시화' 한다.
하나뿐인 열쇠를 쥐기 위한
여정을 시작하는 것이다.
무슨 말일까?
그렇다면 장부를 왜 해시화 하는것일까?
우선 장부의 구성은 이렇다.
1) 장부 요약집(겉 표지)
2) 수천개의 거래내역들 (A->B, 얼마, 서명)
노드들이 요약집만 보면
장부의 진위를
판단할 수 있도록 해놓은 것이다.
요약집에 들어가는 내용은 이렇다.
- 이전 블록의 해시값
- 새로운 거래들의 해시값(이를 머글루트라고 한다)
- 채굴 당시 시간
- 채굴 난이도
- nonce 숫자
여기서 해시값이란 무엇일까?
사토시가 장부의 진위를 판별하기 위한
방법을 고민하다가
SHA-256이라는 당시의 암호방식을
사용한 것에서 시작한다.
이는 미국 국가안보국(NSA)이 설계한
공식 암호체계로
256은 암호화 결과의 길이를 의미한다.
즉, 암호화를 거친 결과값은
0, 1로 이루어진 256 개의 수이므로
가능한 결과 수가 2^{256} 가지나 된다.
= 우주에 존재하는 원자들의 개수 (10^80)
모든 전자 파일은
SHA-256 를 통해
해시화가 가능하다.
pdf, jpg,hwp 할 것 없이
모든 파일에 해시화(암호화)를 적용하면
그만의 해시값이 만들어진다.
즉, 파일이 SHA-256 을 거치면
해당 파일만이 갖는
결과값(해시값)이 생성되는 것이다.
그렇다면 이 암호화 기술은
무엇을 위해 개발되었을까?
hwp 한글 파일을 예로 들면
파일을 열어 글자 한 토시나
띄어쓰기를 한 개라도 바꾸면
해시값이 아예 바뀌어버린다.
비슷함 조차 없다.***
***이를 눈사태 효과(Avalanche Effect)라 합니다.
그래서 노드가 해시값을 비교해보면
그 파일의 변조 여부를
평가할 수 있는 것이다.
사토시는 이 암호체계를
채굴 과정의 핵심 메커니즘을
구성하는 필수 요소로
비트코인에 넣었다.
그렇다면 장부를 왜 계속
무한하게 해시화 해야 할까?
쉽게 이야기 하면
장부를 무한하게 해시화하여
정해진 해시값(마치 로또번호)을
맞추기 위해서이다.
비트코인 프로그램이
'다음 해시번호는~~' 하고 타겟을 정한다.
그걸 맞추는 채굴자만이
새로운 장부를
쓸 권리를 가진다.
정확히 말하면 로또는
'프로그램이 설정한 타겟 해시값'
이하 일 때 당첨이다.
즉, 프로그램은
채굴 난이도를
이 타겟 높낮이를
조절하여 결정한다.
10분에 한 번
채굴자가 나오는
기준으로 말이다.
장부의 요약집엔
다음 내용이 들어간다고 했다.
- 이전 블록의 해시값
- 새로운 거래들의 해시값(머글루트)
- 채굴 당시 시간
- 채굴 난이도
- nonce 숫자
노드는 우선 자신이 갖고있던
장부체인들과
새로운 장부를 비교한다.
일단 이전 블록들의 해시값이
새로운 장부와 한 글자라도
틀리면 거절된다.
새로운 거래들 중 한 개라도
다른 이미 장부에 쓰였다면
거절된다.
그렇다면 통과되기 힘든 이 복잡한 장부는
누가 어떻게 왜 쓰는 것일까?
1) 누가 쓰는가?
만약 누구든 자유롭게
블록을 추가할 수 있다면
악의를 갖고
허위 거래를 포함한
블록을 삽입하거나
기존 기록을 변조 할 수도 있다.
많은 인터넷 화폐들이
중앙 관리자가 없는 시스템에서
실패한 이유였다.
사토시는 이 문제에 대해
매우 독창적인 해법을 제시했다.
비유를 하자면
로또 1등, 그 중 한 명에게만
장부를 쓸 권리를 주는 것이다.
새로운 블록을 장부에
추가하고자 하는 자(채굴자)는
로또 1등을 맞출때 까지
반복해서 사야하고
여러 명의 1등 중에서도
무결성을 가장 인정받은 한명이다.
이 과정을 위해
막대한 컴퓨팅 자원과
전력을 소모해야 하는데
만약 악의적인 공격자가
시스템을 변조하려면
일반적인 참여자들보다
훨씬 더 많은 자원을
투입해야 하기에
비용 대비 이득이 떨어진다.
즉, 로또 1등이 당첨 후
바로 다음, 다음 회차에서 계속
1등이 당첨되어야만
그나마 변조가 가능하다.
내가 변조한 장부를
내가 다음 장부에서 인정하고
또 인정하는
블럭을 계속 달아야만 하는데
결국 오래가지 못할 것이다.
2) 왜 하는가?
장부를 썼을 때 나오는
비트코인 보상과
거래 수수료 때문이다.
따라서 이 보상이 반감기에 따라
적어질수록
채굴량도 점점 줄어들 것이다.
금을 채굴하는 행위에서 유래한
은유적 표현으로
채굴자(Miner)는 먼저
네트워크에있는
아직 승인되지 않은 거래들을 모아
예비 블록을 구성한다.
그 다음 이 블록의 데이터를
SHA-256 해시 함수에 입력하여
해시 결과값을 계산한다.
계산된 해시값이
특정 목표값(Target)보다
작아야만 당첨이다.
즉 완전하게 무작위인 해시값 앞부분에
일정 개수 이상의 0이
연속으로 나타나야 한다.
예를 들어
"000000000000000000a1b2c3d4..."
처럼 앞에 0이 매우 많이
붙어야 하는 것이다.
당연히 이 조건을 만족하는
해시값이 나올 확률은
극히 낮을 것이다.
따라서 채굴자는 수조 번의
암호화를 반복해야만
조건을 만족하는
해시값을 겨우 찾을 수 있다.
그렇다면 채굴자는 어떻게
매번 다른 해시값을 얻을까?
블록 헤더(요약본)에
바로 논스(Nonce)라는
특별한 필드가 포함되어 있다.
"Number used ONCE"의 약자로
이는 변경 가능한 32비트 정수값이다.
채굴자는 이 논스 값을 0, 1, 2, 3, ...
무작위로 계속 변경해보고
이때마다 매번
아예 다른 해시값이 나온다.
로또에 비유하자면
여섯 숫자를 하나하나
바꿔가며
복권을 사는 것이다.
장부의 다른 내용은
모두 같지만
nonce 번호만 계속 바꾸며
당첨 번호가 나올 때까지
시도하는 것이다.
물론 이 작업은
채굴자의 장비가 수행하며
현대의 비트코인 채굴 장비(ASIC)는
즉 초당 수백, 수 조 번의
SHA-256 계산을 수행할 수 있다.
이 엄청난
계산 속도에도 불구하고
전체 네트워크에서
평균 10분에 한 번
블록을 생성하도록
난이도가 자동으로 조절되는데
난이도 조절 메커니즘은
약 2,016블록(약 2주)마다 바뀐다.
즉, 채굴 속도에 따라
타겟을 높이거나 낮추는 것이다.
어떤 채굴자가 마침내
조건을 만족하는 해시값을 발견하면
그는 자신이 구성한
블록과 함께 해당 논스 값을
네트워크 전체에 즉시 전파한다.
이때 다른 노드들은
이 블록의 유효성을 검증한다.
이 과정은 빠르고 매우 쉽다.
이 때의 검증 과정에는
다음 항목들이 포함된다
1) 블록에 포함된 모든 거래가 유효한지(이중 지불 여부, 서명 검증 등)
2) 제시된 해시값이 실제로 타겟을 충족하는지
3) 채굴자가 블록의 구조를 규칙에 맞게 잘 썼는지
4) 이전 블록과의 연결이 올바른지
검증까지 마친 이 채굴 과정을
작업증명**** 과정이라 하는데
작업증명은 극도로 어렵지만
그 결과를 검증하는 것은
매우 쉽고 빠르다.
즉, 논스 값이 주어지면
누구든 단 한 번의 SHA-256 계산으로
해당 블록의 해시값이 조건을 만족하는지
즉시 확인할 수 있다.
이 비대칭성이
작업증명 시스템의
핵심적 우아함이다.
“속이는 건 매우 어렵고,
확인은 매우 쉽다."
공격 비용은 매우 크고
검증 비용은 매우 작다.
이것이 비트코인 시스템이
안정적인 비결이다.
검증을 통과한 블록은
모든 노드에 의해
공식 장부의 일부로 인정되고
각 노드는
자신의 블록체인 사본에
이 새로운 블록을 추가할 것이다.
자 이제 겨우 하나의 경쟁이 끝났다.
그리고 모든 채굴자는
다음 블록을 쓰기 위한
새로운 경쟁을 시작한다.
**** "나는 이 블록을 생성하기 위해 막대한 계산 작업을 수행했다"는 것을 증명하는 것입니다. 힘든 과정을 통과해 화폐로써의 합의를 받았다는 것을 증명하는 것으로, 탈중앙화된 환경에서 비트코인의 보안을 담보하는 기둥이다.