728x90

비트코인이라과 블록체인이라는 단어를 많이 들어보셨을텐데요.

사실 비트코인의 기반이 되는 것이 블록체인이라고 하는 기술인데요.

오늘은 이 블록체인이 대체 무엇인지 정리해 보도록 하겠습니다.



1. 블록체인?


블록체인은 모두에게 공유되는 분산 거래기록(장부)의 데이터베이스를 가르킵니다.

분산과 분산되지 않은 것은 무슨 차이가 있는 것일까요?


우리가 흔히 거래하는 시중은행을 기준으로 생각해 보도록 하겠습니다.

은행에서 거래를 하면, 은행의 중앙 컴퓨터(서버)에 모든 거래 내용이 들어가 있고,

그 기록을 기준으로 돈을 지급받거나 지불합니다.

만약 이 기록이 없어지면,

아주 큰 사고라고 할 수 있습니다.

예전에 은행 해킹사고가 있을 때,

큰 뉴스거리가 되고는 했었지요.


블록체인방식은 기존 은행의 방식과 다르게,

특정 컴퓨터에만 거래가 기록되지 않습니다.

거래기록이 분산되어 모두에게 공유되는 것이어서,

은행의 서버 역할이 애당초 없는 것이지요.


그런데 어떻게 서버가 없이 분산되어 공유되는 걸까요? 

게다가 은행과 같은 중개자가 없음에도, 높은 신뢰도를 보증해 준다고 하는데 말이지요.


아래에서 이것이 어떻게 작동하는지 원리에 대해 알아보도록 하겠습니다.



2. 블록체인의 원리


이제 블록체인에 대해서 좀 더 깊게 들어가 봐야하는데요.

여기서 잠시만 삼천포로 빠져야 합니다.

블록체인의 중요한 암호화 방법중 하나인 해쉬에 대해서 알아야 하기 때문인데요.


2-1. 해쉬?


블록체인의 근간을 이루는 암호화 방법인데요.

조금 어려운 부분이긴 하지만, 

간단히 정리해 보도록 하겠습니다.


해쉬함수를 사용하는 목적은, 값을 위조하기 어렵게 난독화(읽기 어렵게) 시키는데에 있습니다.

아무값이나 해쉬함수의 공식에 대입해 보면,

이해하기 어려운 바이너리 값이 나오게 되는데요.

이렇게 나온값을 해쉬라고 합니다.

이렇게 나온 해쉬값은 다시 원래 값으로 되돌릴 수 없다는 특징이 있는데요.

값의 경우의 수가 2의 256승이라는 엄청난 수로 되어있기 때문에,

하나하나 대조해 본다는 것 자체가 매우 어려운 일이기 때문입니다.



2-2. 분산회계장부와 디지털 서명


위에서 블록체인은 거래기록(장부)을 공유한다고 하였는데요.

그런데, 가짜로 기록을 보내버리면, 진위여부를 어떻게 가릴 수 있을까요?

거래를 할 때, 위조할 수 없는 디지털 서명을 추가함으로써 그것을 가능하게 하는 것 입니다.


여기서 전문용어를 하나더 알아야 하는데요.

바로 공개키와 비공개키 입니다.

단어 그자체에서 알 수 있듯이,

공개키는 모두에게 공개된 키이구요.

비공개키는 자신만 가지고 있는 비밀키입니다.

(공개키와 비공개키에 대한 더 구체적이고 기술적인 부분은 이글에서는 생략하겠습니다)


디지털 서명은 256개의 바이너리로 구성된 값인데요.

이중 하나의 값만 달라도 전혀 다른 서명이 되는 구조입니다.

생성될 수 있는 값의 경우의 수는 2의 256승이라는 엄청난 수로 되어있기 때문이지요.


디지털 서명값은 문서의 내용과 비밀키를 조합하는 함수로 만들어지는데요.

다른 사람이 서명값을 복사해도, 문서와 비밀키를 가지고 특정한 공식에 의해 생성된 서명값은,

다른 문서에 대해서는 사용할 수 없게 됩니다.


블록체인에서는 거래내역은 모두에게 사본이 전달되고,

구성원의 절반이상이 이것을 유효한 값인지 확인할 때,

유효하다고 판단하게 되는데요.


모두에게 공개된 공개키는 유효한 값인지 확인할 때 사용되어 집니다.

내용은 알 수 없지만, 진위여부를 확인할 때 사용하는 것이지요.

거래내역과, 디지털서명, 그리고 공개키를 가지고 공식에 집어넣어서,

이것이 비공개키를 이용한 것이라면 참을 아니면 거짓을 값으로 나오게 합니다.

이러한 방식으로 구성원 절반이상이 참이라고 판단한 값이 나오면,

그 값이 유효한 거래라고 판단하는 것이구요.


게다가 각 거래는 고유의 id를 가지게 되어서,

거래내용이 같다고 하더라도,

id가 달라서 서로 다른 디지털 서명을 해야하므로,

중복된 거래내역조차 존재하지 않게 되는 것입니다.



2-3. 블록의 유효성 확인


위에서 어떻게 하면 진위여부를 가린 거래내용을 공유받을 수 있을지에 대해서 정리해 보았습니다.

디지털 서명을 가짜로 만들어 내서, 진짜로 판단받을 수 있는 가능성은 거의 없다는 것도 알 수 있었구요.


하나의 블록에는 여러개의 거래가 순차적으로 기록이 되는데요.

그럼 여러개의 거래로 이루어진 블록이 유효한지의 확인은 어떻게 하면 될까요?


하나하나의 거래는 디지털 서명과 공개 및 비공개키를 이용해서 유효성을 확인했었는데 말이지요.

블록안에는 다양한 사람들의 거래가 기록되므로 특정인의 서명을 이용하기는 어렵습니다.


그래서, 블록에서는 특정한 값을 찾아서,

이 값을 거래의 마지막에 추가한 다음,

해쉬값으로 만들어 주는 방법을 취합니다.


이 때 사용한 특정한 값을 Proof of Work라고 하구요.

(거래에서의 디지털 서명의 역할을 하겠지요)



2-4. 블록 순서의 보장


블록체인은 각 블록이 연속적으로 이어져 있는 것인데요.

이 블록의 순서가 다르게 공유되면 않될텐데요.

어떻게 이것을 유지하는 것일까요?


각각의 블록은 자신보다 앞에 있는 블록의 해쉬값을 포함하게 구성해서

순서를 보장받도록 하는 것입니다.



2-5.블록의 구성요소


이제 하나의 블록이 어떻게 구성되어 있는지 알 수 있으실 텐데요.


블록체인을 구성하는 각각의 블록은

여러개의 거래와 Proof of Work라고 하는 해쉬값을 만들기 위한 특정한 값,

그리고 이전 블록의 해쉬값으로 구성되어 있습니다.



2-6. 블록 체인의 영구적 기록


만원이 있는 상태에서야 천원, 오천원을 이체할 수 있습니다.

이렇게 기존의 거래내역을 영구적으로 보존해야만,

돈이 0원인 사람이 5000만원을 지불한다하고,

무엇인가를 대가로 받게 되는 것과 같은 일을 막을 수 있는데요.


블록체인에서도 이러한 점을 알고,

거래내역을 영구적으로 보존하고 있습니다.


2009년에 첫번째 블록이 생성된 이래로,

비트코인의 거래내역은 블록체인안에 영구적으로 기록되어 집니다.



위에서 간단히 정리해 본, 

블록체인의 원리는 나카모토 사토시가 쓴 논문에도 잘 정리되어 있는데요.

영어로 되어있기는 하지만, 관심있는 분들은 아래링크를 참조해 주세요.

https://bitcoin.org/bitcoin.pdf



3. 블록체인과 채굴


비트코인은 기존 화폐와 화폐를 생산해내는 방법에서
큰 차이를 보여주는데요.

기존 화폐는 각 국가의 중앙은행에서 위조지폐방지기능을 넣은 지폐를 생산하는 반면,
비트코인과 같은 암호화폐는 채굴이라는 시스템을 사용합니다.
사실 화폐를 생산한다고 하기보다는,
블록을 유지시켜주고, 그 보상을 받는다고 하는게 맞을지도 모르겠습니다.

3-1. 블록 체인의 생성


위에서 블록의 유효성을 검증하기 위해서,
특정한 숫자 즉, Proof of Work를 사용한다고 하였는데요.
이 숫자는 어떻게 결정하는 것일가요?

거래가 이루어졌을때, 
네트워크상의 누구든지 거래정보를 접수하고,
거래정보를 모아서 블록을 만듭니다.

그 다음 컴퓨터를 이용해서 많은 양의 계산 작업을 하게되구요.
해당 블록의 해쉬값이 특정한 자리수의 0으로 시작하게 하는 최적의 특정한 값(Proof of Work) 찾아내서,
블록을 전송하면 블록의 생성자(채굴자)가 되는 것입니다.
(위에서 말한 특정한 자리수는 새블록을 생성하는데 10분정도가 소요되도록 주기적으로 변경되고 있는데요.
채굴자가 많아질수록, 0의 개수를 늘려서 더욱 이 값을 찾기 어렵게 만들고 있습니다.)

당연히도 블록의 생성자에게는 보상이 주어지는데요.
블록에 포함되는 거래의 맨 앞에,
생성자에게 얼마를 보상한다는 것을 포함하게 됩니다.

생성자에게 보상을 주는 주체가 존재하지 않으므로,
블록이 생성될 때마다, 블록체인 전체의 총액이 증가하게 됩니다.

위의 내용을 이해하셨다면,
채굴이라고 하는 과정이 중앙은행에서 돈을 찍고 그것을 유통시키는 것과는 많이 다르다는 것을 알 수 있습니다.
거래정보들을 전송받아서, 블록으로 생성시켜 다시 전송을 하고,
그로부터 보상을 받는 독특한 작업이라는 것을 알 수 있습니다.
이러한 작업을 채굴(Mining)이라고 하는데요.

채굴이라는 단어에서 마치 무언가를 캐낸다음, 그것을 유통시키는 처럼 보일 수 있지만,
거래 기록이 생기면 그것들을 블록 생성자들이 블록으로 만들어서 다시 전송시켜주고 보상받는 것이라는 것을
이제는 알 수 있습니다.


3-2. 채굴과 경쟁

위에서 채굴이라는 것이 어떤 것이라는 것을 알게 되었을텐데요.
이 채굴과정으로 보상을 받는 것은 그렇게 쉽지만은 않습니다.

거래기록이 있다는 것을 전송받고,
모든 채굴자들이 가장 빠르게 블록의 최적화된 특정값(Proof of Work)을 찾아서 경쟁하게 되기 때문인데요.
가장 먼저 찾아내는 한 사람(혹은 컴퓨터)만이 보상을 받게 됩니다.

이 경쟁이 너무나 심화되서,
이제는 개인이 가지고 있는 컴퓨터로는 몇년을 켜놓아도,
블록을 생성시키지 못하고 0BTC가 될 수 있습니다.

하드웨어적으로도,
이제는 ASIC(Application Specific Integrated Circuit)이라고 하는 채굴전용 회로판을 탑재한,
전용 채굴기까지 나와 있는 상태로,
아무리 좋은 그래픽카드를 병렬로 연결해도 경쟁이 않되는 실정입니다.

요즘은, MiningPool이라고 하는 연합을 이뤄서 채굴을 진행하게 추세인데요.
수익은 적지만, 개인이 채굴할 경우, 오랫동안 채굴을 시도해도 0비트코인을 받게되는 반면,
채굴된 비트코인을 기여도에 따라서 나누는 구조이므로,
0비트코인은 면할 수 있다고 할 수 있습니다.


아래는 전용 채굴기중 하나인 ANTMINER S9입니다.



블록을 생성하는 것도 쉽지 않아졌지만,
블록을 생성할 때 주어지는 보상도 시간이 갈수록 줄어들고 있는데요.
50비트였던 비트코인의 보상은 이제 4/1이 되어갑니다.
이것은 비트코인의 총개수가 2,100만개 이상이 되면, 보상액이 0이 되어서,
코인수가 늘어나지 않게 설계가 되어있기 때문입니다.

 2009-2012

 50 BTC 

 2012-2016

 25 BTC

 2016.1 - 2020.2

 12.5 BTC

 2020.2 - 2023.9

 6.25 BTC



https://tradeblock.com/bitcoin이나 blockexplorer.com 사이트에 방문해 보면 생성된 새로운 블록을 볼 수 있습니다.


여기서는 blockexplorer.com을 보도록 하겠습니다.
리스트에서 특정 블록을 선택하면, 
해당 블록의 내용을 볼 수 있는데요.
Block Reward를 보시면, 아래 이미지와 같이, 해당 블록이 보상을 얼마나 받았는지 알수 있습니다.
현재는 12.5비트코인을 받은 것을 알 수 있습니다.




그런데, 보상금액이 더이상 나오지 않으면 채굴자들이 모두 사라져 버릴까요?

그렇지는 않습니다.

채굴자들은 블록 보상외에도 거래 수수료를 챙길 수 있게 되어있습니다.


아래 이미지에서 거래내역을 보면,

첫번째는 보상금액에 대해서 나와있고,

두번째 거래내역부터는 fee 즉 수수료에 대해서 나와있습니다.

현재는 그렇게 큰 금액이 아닐수 있겠지만,

보상이 끝나는 2023년경에는 지금의 은행 수수료만큼의 수수료가 되지 않을까 합니다.


수수료는 꼭 지불해야하는 것은 아니지만, 수수료를 포함하게 되면, 

채굴자들이 수수료가 포함된 거래를 먼저 블록에 포함시키려 하기 때문에,

아무래도 해당 블록이 생성되는 속도가 빨라지겠습니다.


비트코인은 약 2,400개까지만 하나의 블록에 포함될 수 있도록 하고 있는데요.

이것때문에 알트코인이라고 불리는 다른 코인으로부터 공격을 받기도 하고 있습니다.





4. 위조된 블록체인의 판단

채굴을 하지 않는, 일반적인 사람들은 모든 거래정보를 수집하는 대신에,
채굴자가 전송하는 블록정보만을 수집해서 업데이트하게 되는데요.
만약 서로 다른 블록체인정보가 들어온 경우에는,
더 많은 계산작업이 포함되서 더욱 길어진 블록체인만을 유효한 것으로 받아들이게 됩니다.

예를 들어, A에게 K가 위조한 블록과 그체인이 전달되었다고 가정해 보겠습니다.
하지만 A에게는 다른 생성자들로부터 받은 다른 값의 블록체인이 하나 더 연결될 것이구요.
K가 계속해서 위조를 한 블럭을 생성해 내지 않는 한,
A가 다른 생성자들로부터 받은 다른 블록체인의 길이가 훨씬더 길어질 것입니다.
K가 혼자 생상해내는 블럭이, 블럭체인 네트워크내의 모든 생성자들이 생성하는 블록의 길이보다는
길어지기는 힘들다고 할 수 있습니다.
이렇게 되면, 특정 시간이 지나고 K가 만들어 낸 블록의 체인은 위조된 것으로 판명되게 됩니다.

물론 이러한 방법을 구현하려면,
채굴자가 생성해 낸 블록과 그체인을 바로 신뢰하면 않됩니다.
어느정도의 길이가 생기고 나서야, 가장 긴 블록체인을 보고 신뢰를 하면 되는 것이지요.


5. 아직은 변동성이 높은 비트코인


비트코인 같은 암호화폐는 아직 대중화되기에는,

변동성이 높은 것이 사실입니다.

달러대비 가치가 하루에도 수십% 올라갔다가 내려가기도 하기 때문입니다.


6. 오픈소스


블록체인을 이용한 암호화코인들은 오픈소스여서 코드가 공개되어 있는데요.

코드가 공개가 되어있다면, 해킹될 가능성이 크지 않을까 걱정될수도 있겠으나,

비트코인이 안전한 이유가 알고리즘때문이므로 공개여부가 보안상의 문제가 되지는 않습니다.


현재 개발자들이 하는 것보다 더 좋은 방법이 있다면,

Github라는 오픈소스 커뮤니티를 통해,

제안을 할 수 있고, 그것이 채택될 수 있는 구조입니다.


비트코인 개발자들에 대해서 알 수 있는 사이트도 있는데요.

아래 사이트를 참조하면 현재 개발에 기여하고 있는 개발자들을 볼 수 있습니다.

Pieter Wuille(@pwuille), Gavin Andresen(@gavinandresen ), John Newbery(@jfnewbery )
등등 많은 개발자들이 참여하고 있구요.
이들이 비트코인의 미래를 밝혀주고 있습니다.


7. 정리


비트코인의 근간을 이루고 있는 블록체인이라는 기술에 대해서 정리해 보았습니다.


탈중앙화를 표방하는 비트코인의 철학은 저에게 너무나도 멋져보였습니다.

자본주의 사회에서 국가나 단체가 컨트롤하는 것이 아닌,

모든 구성원들이 함께 지탱해나가고 유지해나가는 것이죠.


물론, Mining이라는 것이 비즈니스화 되어서,

거대 사업자들이 등장하였고 이들이 어느정도 영향을 끼칠 수 있게 되었지만,

비트코인 커뮤니티와 코어 개발자들이 건강하게 비트코인을 유지시킬 수 있을 것이라고 믿습니다.

+ Recent posts