본문 바로가기

Dot ./끄적끄적

[Bitcoin] 비트코인 구조 이해하기

    비트코인 기본 배경 지식

    비트코인의 기본 단위는 블록이다.

     

    블록

    블록은 해시퍼즐을 풀어야만 만들어 낼 수 있다. 그렇게 블록이 만들어지면 그 안에 트랜잭션이 담긴다.

     

    트랜잭션

    본디 트랜잭션(transaction)은 금융 거래, 업무 처리 단위를 뜻한다.

    비트코인에서의 트랜잭션은 비트코인의 이동, 즉 영수증과 같은 거래를 나타내는 데이터이다.

     

    하나의 블록은 1MB까지 트랜잭션을 담을 수 있는데 하나의 트랜잭션이 약 0.3kb이므로, 한 블록에 3천개의 거래를 담을 수 있다.

     

    Blockchain Explorer 사이트를 이용하면, 최근에 만들어진 블록에 몇 개의 데이터가 담겼는지 확인할 수 있다.

     

    Blockchain Explorer

    → 2021년 7월 2일 20:42에 생성된 블록에 트랜잭션 2,169개가 포함된 것을 확인할 수 있다.

     

     

    작업증명 방식

    비트코인은 기본적으로 블록에 뭔가를 기록하려면 어마어마한 자원(연산력)을 쓰도록 하는 작업증명 방식을 택하고 있다. 자원의 관점에서 바라보면 굉장히 비효율적인 방식이며, 이 작업증명(Proof-of-work, PoW)중에서도 해시퍼즐을 사용하고 있다.

     

     

    SHA-256

    비트코인이 사용하는 해시함수는 SHA-256(Secure Hash Algorithm)으로 입력값을 256bit로 변경해주는 함수이다.

    * 해시함수는 임의의 데이터를 고정된 길이의 데이터로 바꾸어주는 함수이다.

     

    SHA-256은 우리가 입력하는 데이터를 16진수, 64자리로 바꿔준다. 그리고 어떤 값을 입력하든지 간에 항상 256비트의 고정된 출력값을 내놓기 때문에 SHA-256이라 이름 붙여진 것이다. 

     

    예를 들어, '비트코인'을 SHA-256 함수를 이용해 해시값을 생성해보면 64자리의 16진수로 변환되어 나온다. (링크)

    41A50AAA9061C4C79D9450C470B149578A943D40A65E174AB1DA276E22D932E6

     

    '비트코인,'을 SHA-256으로 변환시키면 다음과 같은 해시값이 나온다.

    30A52BA38F39ECB2B3B5DF943048AC82CBD451C64BE3EB8BC93AEC3145DE971C

     

    → 단 하나, 쉼표를 더 입력했을 뿐인데 두 해시값은 공통값을 발견할 수 없을 정도로 완전히 다른 값이 된다.

     

     

    해시충돌 가능성

    만일 '비트코인'을 입력한 해시값과 '비트코인,' 를 입력한 해시값이 같다면 이를 해시충돌이라 부르고 이 해시함수는 더 이상 안전하지 않은 것으로 치부된다. 해시충돌은 입력값이 다른데도 같은 해시값을 가리킨다면 보안 체계가 무너져버리기 때문이다.

     

    하지만 생각해보면, 해시충돌은 확률상 반드시 존재할 수 밖에 없다. 

     

    해시함수에 입력할 수 있는 데이터는 그야말로 무궁무진한데에 비해 출력값인 해시값은 64자리의 16진수로 그 수가 한정되어있기 때문이다. SHA-256 함수가 만들어내는 해시값 총 경우의 수는 2^256가지이며 대략 2^130개 정도를 입력하게되면 해시충돌을 발견할 가능성이 99.8%라고 알려져있다.

     

     

    현재 연산속도에 따르면 이 필연적인 해시충돌까지 앞으로 얼마나 남았을까?

     

     

    비트코인 연산속도의 척도인 Hash rate를 살펴보면 2021년 1분기에 큰 상승장을 이어와 평균 160~170M TH/s를 이어왔지만 그 이후로 비트코인 가격 하락과 중국 정부의 비트코인 채굴 규제로 인해 현재 2021년 7월 2일 기준 89.18M TH/s까지 떨어진 상황이다. 2021년 상반기 상승장일 때의 평균 hash rate를 기준으로 계산을 해보면 다음과 같다. M은 백만, 1TH/s는 초당 1조번의 연산을 한다는 뜻이다. 그러면 165M TH/s는 초당 약 1억 6천5백만 * 1조 씩 연산을 한다는 뜻이다.

     

    비트코인 hash rate [출처: https://ycharts.com/indicators/bitcoin_network_hash_rate]

     

     

    비트메인사의 ASIC 채굴기 최신 모델 S19 pro가 한 대당 110TH/s의 속도를 보이기 때문에 1분기 비트코인 블록체인 네트워크 상에 S19 pro와 같은 최신 채굴기가 약 150만대 투입이 되었었다는 뜻이다. 지금은 약 81만대로 줄어있다.

     

    비트코인 채굴기 최신 모델 S19 pro

     

    Hash rate는 전체 블록체인 네트워크가 초당 몇 번 연산하고 있는지를 나타내는 전체 값이기 때문에 Hash rate가 높아진다는 것의 의미는 비트코인 채굴 경쟁이 더욱 치열해지고 있다는 뜻이다. 반대로 낮아지면 경쟁이 약화되고 있다고 보면 된다. 그래서 현재 비트코인 채굴자에게는 중국의 규제로 인해 수많은 경쟁자들이 사라졌으니 호재로 작용하고 있는 것이다.

     

    불과 2019년 하반기만 하더라도 비트메인 사의 당시 최신 채굴기 앤트마이너의 S17이 세계적으로 120만대 가량 투입된 정도 였는데 2021년 상반기에는 그보다 2배 빠른 최신 채굴기가 150만대 이상 투입되었고 다소 경쟁이 완화된 지금도 81만대 이상이 투입되고 있다. 성능이 2배가 되었다는 점을 고려하면 거의 1.35~2.5배가 늘은 상태이다. 

     

    비트코인 연산력 변화에 따른 채굴 현황

     

    그럼 다시 원래 이야기로 돌아와서 99.8%의 확률로 충돌값을 발견할 수 있는 2^130개 해시를 계산하려면 2021년 상반기 Hash rate인 160M TH/s 연산속도로 보수적으로 계산해봐도 약 0.2806x10^12년이 걸린다. 이는 우주 나이의 20배, 태양 나이의 60배나 되는 기간이다.

     

    현재 연산속도로 2^130회 입력에 도달하는데 걸리는 시간

     

    그렇기 때문에 현재까지 SHA-256 해시함수를 쓰는 비트코인이 보안상 위협받기는 어렵다고 이야기한다.

     

     

    단, 양자 컴퓨터가 개발되기 전까지는 말이다.

     

    양자 컴퓨터

    기존의 슈퍼컴퓨터가 10억년 이상 걸리는 연산을 단 100초만에 해결하는 양자컴퓨터는 인류가 반드시 도달하게 될 차세대 컴퓨터이다. 현재 컴퓨터와 반도체는 갈수록 그 회로 크기를 줄이고 있는데 회로의 선 폭이 10nm아래로 내려가면서 그 폭이 원자 몇 개 수준으로 아주 좁아지면 양자 터널링 현상이 일어나게 된다.

     

    양자 터널링 현상

     

    양자 터널링 현상이란 전자는 입자의 성질 뿐 아니라 파동의 성질도 갖고 있는데 '벽'에 해당하는 회로의 두께가 갈수록 얇아져 전자가 '벽'을 그냥 통과해버리는 믿기 힘든 일이 일어나는 현상이다. 회로의 두께가 갈수록 얇아져 벽의 기능을 하지 못하는 것이다. 즉 기존의 방식대로는 전자가 회로 구상대로 움직이지 않는 양자터널링 현상으로 한계에 부딪힐 수 밖에 없다. 이런 문제를 극복하기 위해 다양한 연구들이 진행되고 있고 그 중 대표적인 연구가 바로 양자컴퓨터이다. 이 양자컴퓨터가 주류가 되기까지 10년, 20년, 혹은 그 이상이 걸릴지 현재까진 알 수 없으나 발전속도는 계속해서 빨라지고 있다.

     

     

    비트코인의 해시함수 SHA-256은 양자컴퓨터 앞에서는 너무나도 무력해보이는데, 이 리스크는 어떻게 관리하고 있을까?

     

     

    포크

    비트코인은 이미 포크로 대응할 수 있도록 준비되어 있다. '포크'란 시스템의 규칙을 수정하는 것을 의미한다.

     

    하드 포크소프트 포크로 나눠어져 있다. 비트코인은 시스템과 그 규칙을 수정해나갈 수 있다는 뜻이다.

    Fork

    양자 컴퓨터의 발전이 급속도로 빨라진다면 그 연산능력에 맞게 포크로 대응한다면 되는 문제이다. 이미 양자 컴퓨터의 공격으로부터 안전하다고 여겨지는 암호화 알고리즘, 포스트 양자 암호화(post quantum cyrptography) 아이디어들은 아래의 6가지 방식에 초점을 맞춰 연구가 진행 중에 있다.

     

    1. 격자 기반 암호화
    2. 다변량 암호화
    3. 해시 기반 암호화
    4. 코드 기반 암호화
    5. Supersingular elliptic curve isogeny cryptography
    6. 대칭 키 양자저항

     

    양자 컴퓨터가 예상보다 빠른 속도로 개발된다면 비트코인 네트워크는 합의를 통해 가장 적합하도 생각하다고 생각되는 포스트 양자 암호화 기술을 선택해 시스템을 변경하는 포크를 진행하면 어느정도 대응이 가능하다. 그리고 사실상 SHA-256 알고리즘은 비트코인에만 국한되어 적용되어 있는 것이 아니라 구글, 네이버, 카카오와 같은 우리가 실생활에 사용하는 서비스 대부분의 암호는 SHA-256과 같은 해싱 알고리즘이 적용되어 있다. 포스트 양자 암호화가 체계화 되어있지 않은 상태에서 양자 컴퓨터가 나오게 된다면 전세계 모든 시스템들의 보안이 다 녹아버릴 것이기 때문에 인류가 양자 컴퓨터를 개발하기 전에 필수적으로 대응을 해야 할 부분이다. 그래서 개인적으로 양자 컴퓨터의 실용화가 크립토의 보안체계 약점이라고 생각하기보다는 인류 네트워크 시스템의 약점이라고 더 크게 보고 생각하는 것이 더 맞다고 생각한다.

     

    비트코인 내부 구조

    비트코인의 블록은 크게 블록헤더와 블록바디로 나뉘어진다.

    • 블록헤더 : 블록을 만들때 블록에 대한 정보를 저장하는 부분
    • 블록바디 : 비트코인의 거래정보, 트랜잭션을 담는 부분

     

    1. 블록헤더

    블록 헤더는 블록의 데이터를 요약하고 있기 때문에 매우 중요한 부분이다.

    비트코인 구조

     

    이전 블록해시

    비트코인이 블록체인이라 불리는 이유는 블록들이 서로 연결되어 블록체인이라 하는 것인데 블록헤더의 '이전 블록해시'가 이전의 블록에 연결된 형태를 띈다. 1,2,3번 블록이 있다고 해보자. 가운데의 2번 블록 데이터가 변경되면 2번 블록과 3번 블록의 블록헤더 '이전 블록해시'와 연결이 끊긴다. 

     

    앞서 SHA-256에서 살펴본 것처럼 '비트코인'에서 '비트코인,' 콤마 하나 삽입한 것만으로도 완전히 다른 해시값을 나타내기 때문에 2번 블록이 아주 조금이라도 변경되면 3번 블록의 '이전 블록해시'와 완전히 다른 값이 되기 때문에 연결은 끊길 수 밖에 없다.

     

    → 즉 블록헤더의 이전 블록해시블록과 블록을 연결해주는 역할을 하는 것이다.

     

    머클트리 루트해시

    블록헤더의 머클트리 루트해시는 1979년 랄프 머클에 의해 개발된 데이터 구조인데 블록 내 저장된 트랜잭션들을 둘둘씩 짝지어 하나의 해시값을 도출해내는 과정을 의미한다. 머글트리는 이진트리이기 때문에 트랜잭션의 수가 홀수라면 마지막 트랜잭션을 한 번 더 반복하는 형태로 작업한다. 이 머글트리의 의의는 트랜잭션이 변조되면 반드시 그것을 알아차릴 수 있게 하는 장치인 것이다.

     

     

    한 비트코인 블록바디에 저장된 트랜잭션이 3천개 가량이라면 이 모든 트랜잭션을 둘둘씩 짝지어 SHA-256 해시함수를 적용시킨다. 그 결과 단 32바이트로 블록바디의 모든 트랜잭션의 변화를 알아차릴 수 있게 된다.

     

    위에서 알아본 것 처럼 이 해시값은 입력값이 아주 조금만 바뀌어도 전혀 다른 값이 나오기 때문에 블록바디의 2~3천개 트랜잭션 중 단 하나라도 변조되었다면 완전히 다른 머클트리 루트해시값이 된다. 즉 비트코인은 위변조를 선제적으로 막는 기술이라기보다 위변조 되었다면 반드시 알아차릴 수 있는 구조를 갖고 있다고 보면된다.

     

    타임 스탬프

    타임스탬프는 블록이 생성된 시각을 기록한 것이며 이 시각은 그 지역의 '로컬 표준 시간대'가 기준이기 때문에 한 두 시간 정도의 오차는 발생할 수 있다.

     

     

    타깃 난이도 비트

    블록을 생성하기 위한 난이도 정보를 담는 부분이다. 비트코인이 시작된, 처음 사토시 나카모토가 채굴한 최초의 블록을 제네시스 블록이라 하는데 이 블록을 채굴하는데 필요한 해시함수 계산 요구량은 약 2^32회 였다.

    제네시스 블록

     

    이 2^32을 '1'로 환산하고 제네시스 블록을 채굴하는데 필요한 연산보다 128배 더 많은 계산이 필요하다면 난이도를 128로 둔다. 실제 계산은 1을 다시 2^32로 환산하면 128*2^32 = 2^39번의 연산이 필요하다고 보면 된다. 현재 2021년 비트코인의 난이도는 21조에 달하는데 이 값은 21조*2^32번 연산을 해야한다는 것을 의미하며 이는 블록 하나를 생성하기 위해선 약 2^77회 계산해야 한다는 뜻이다. 일반 컴퓨터로는 1억년 이상 계산해야하는 연산량이지만 채굴 전문 ASIC 칩을 사용하는 업자들은 이 계산을 10분에 하나씩 해내고 있다.

    현재 채굴된 비트코인

     

    난스

    블록헤더가 해시값을 도출하게 되면 이 값의 끝에 숫자를 붙인다. 그럼 해시값 뒤에 0이 붙은 '해시값0'과 같은 형태가 되는데 이 수를 SHA-256 함수에 두번 적용시킨다. 그 결과 나온 해시값이 목표 해시값보다 낮은 수가 나올때까지 이 행위를 반복한다. 목표 해시값은 방금 전 다룬, 타깃 난이도 비트에 따라 결정되며 블록헤더 해시값0 다음에는 해시값1, 해시값2 식으로 뒤에 덧붙이는 숫자는 0부터 하나씩 증가시키는 방식으로 진행된다. 이 연산이 현재는 2^77번 반복된다고 보면 된다. 결국 이렇게 타깃 해시값보다 낮은 해시값이 나오게 되면 블록헤더 해시값 뒤에 덧붙인 숫자가 바로 난스가 되고 이 난스는 해당 블록의 '답'이 된다.

     

     

    2. 블록 Body

    블록 Body에는 영수증, 트랜잭션으로 가득 차 있다. 블록헤더의 해시값들도 근본적으로는 바디에 있는 트랜잭션을 기반으로 하고있다.

    블록바디

     

    따라서, 블록 Body에 거래 정보가 기록되기 때문에 실질적으로 블록은 검증된 거래정보들의 집합이라고 볼 수 있다. 하나의 블록에는 여러 개의 거래 정보가 들어가며 거래 정보가 가득 차면 새로운 블록을 추가하여 다시 거래 정보를 넣는 방식으로 DB가 구축된다. 블록체인 참여자들(peer)은 해시값을 통해 해당 데이터를 검증할 수 있다.

     

    비트코인 구조 정리 (블록 Header, 블록 Body)

    블록체인 전체 구조(블록헤더, 블록바디)

     

    N번째 블록을 보면 4개의 거래 기록(TX0, TX1, TX2, TX3)이 담긴 블록이다. 각각의 거래 데이터는 해시값으로 변경되어 모든 거래가 합쳐진 하나의 해시값인 루트 해시값이 된다. 그리고 블록 헤더는 이전 블록 해시, 루트 해시, 난스로 구성되어 이 세 값이 합쳐져 다시 해시값을 계산하고 이게 블록의 해시값이 되는 것이다.

     

    블록 해시값 도출 과정

     

    한마디로 말하면 비트코인의 구성품은 비트코인의 소유자들의 거래내역, 영수증이라고 보면 된다. 비교대상으로 여겨지는 금과는 달리 아무런 형체도 없으며 '나의 영수증'으로 가득차 있는 데이터에 불과하다. 더욱 이해하기 어려운 것은 과거에는 중앙은행이 중앙서버를 통해 하던 화폐 거래내역을 적는 작업을 이제는 블록체인 시스템 상 모든 노드(참여자)가 그 화폐 거래내역을 각자 적고 있다. 효율성 측면에서 따져보면 총 1부터 10까지 작업의 정도가 있다고 했을 때 각자의 노드가 그 작업을 분담해 나누어 진행하는 것이 아니라 그 노드 모두가 1부터 10까지 각자 작업한다.

    비효율적인 작업 분담 방식

     

    작업과정만 봐도 얼마나 비효율적이며 연산력과 전력이 낭비되는 시스템인지 알 수 있다. 심지어 2^77회 연산하다고 해서 블록을 기록하는 것이 아니다. 그 연산을 가장 빠르게 한 노드만이 그 권리를 수여받는 것이다. 그 연산을 마쳤다 하더라도 그 노드의 순번이 2,3등 이라면 그들의 연산은 아무런 의미도 없는 채로 버려진다.

     

    이는 무의미한 계산을 반복하면서 기후변화의 중대한 기로에 놓인 인류의 상황은 무시한 채 전력을 낭비하는 기술로 보이며 막상 그 안에는 실질적인 가치는 없고 다른 사람들의 영수증만이 가득 차 있는 시스템에 불과해 보인다.

     

    왜 이러한 시스템이 세계 금융의 중심 월가, 엔터 산업, 개발자, 수많은 시장참여자들로부터 각광을 받고 있는 것일까?

     

    시사점 : 세계의 거인들이 비트코인을 주목하는 이유

    미국이 세계화에 돌입한지 30년이 흘러 2021년이 된 지금 2차 산업혁명의 주 동력이었던 석유는 점점 몰락하고 새롭게 전기의 시대가 도래하고 있다. 과학의 발전으로 만들어낸 여러 물품이나 서비스는 서서히 모습을 감추고있다. 비행기를 타고 대면으로 진행했던 비즈니스 미팅은 이젠 각자 집에서 줌으로 소통이 가능하고 스마트폰 보급은 TV, MP3, PMP, 네비게이션, 녹음기 등 많은 기기들을 대체했다.

     

    이렇게 20세기 초반 무에서 유를 만들어 경제의 싸이클을 이루는 재고가 21세기 초 새로운 변화의 흐름을 맞이하면서 다시 무로 돌아가고 있는 중이다.

     

     타이거자산운용 오종태 이사님은 이러한 변화의 흐름을 "모든건 성숙하면서 모습을 감춘다. 기술의 발전으로 싸이클이 없는 새로운 경제의 흐름이 다가오고 있다." 라고 말했다. 이 흐름의 중심에는 딥러닝이 자리하고 있는데, 혁신적인 AI 자연어처리(NLP) 모델 'GPT-3' 공개한 Open AI의 CEO는 딥러닝의 발전은 5년 이내 수많은 노동의 비용이 '0'으로 떨어지게 할 것이라고 예측했다. 만약 그렇게 된다면 세계 시장의 유효수요 부족 현상으로 이어질 것이고 기존 화폐체계는 큰 파도를 맞이하게 될 것이다. 파도 속에 암호화폐가 떠밀려 들어올 지는 아무도 모르는 일이고 아니라고는 누구도 말할 수 없다.

     

    암호화폐 시장에서 40%의 비중을 지니고 대장이라고 불리고 있는 비트코인이 지금 떠오르는 것은 우연이 아닌 필연이며 막을 수 없는 거대한 시대 변화의 흐름이다. 오늘은 여기까지만 공부하고 다음 글에서 더 자세히 이 부분에 대해 다뤄보도록 하자.

     

     

    [세계의 거인들이 비트코인 사는 이유] #1 화폐의 역사

    [세계의 거인들이 비트코인 사는 이유] #2 비트코인 장점


    ※ 공부에 참고한 자료

    백색나무 - 비트코인 구조 이해

    머클트리 루트해시 설명

    [암호화폐 스터디] hash function

    [심층 인터뷰] 경제를 바라보는 새로운 시각... 양자 물리학 원리로 보자 f.타이거자산 운용 오종태 투자전략이사