[비트코인 시리즈 칼럼] (1) 비트코인의 기본 – 블록체인, 해싱과 마이닝

in #kr7 years ago (edited)

비트코인은 지금 아주 중요한 갈림길에 서있습니다.

최근 비트코인은 하드/소프트 포크에 대한 걱정이 확산되며 가격 급등락을 반복하고 있습니다.

본 시리즈 칼럼은 이 이야기가 어디서 나온 것인지, 포크(Fork)가 왜 필요한 것인지를 다룹니다.

궁극적으로 이것이 제 2의 '이더리움 클래식 사태'를 발생시킬지에 대해 논합니다.

0.

안녕하세요. 저는 현재 서울대학교에서 경영학과 컴퓨터 공학을 복수전공하고 있습니다.

CoinPresso의 영미권 서비스를 담당하고 있는 동시에, 해외 토픽들을 최대한 빠르게 수집하고 정리해 배포하는 일을 하고 있습니다.

이번에는 코앞으로 다가온 비트코인의 포크(Fork) 문제에 관한 칼럼을 작성합니다.

시장에서 굉장히 뜨거운 논란거리이지만,  기술적 어려움에 가려져 온갖 유언비어가 난무하고 있는 상황입니다.

이해하지 못할 어렵고, 주관적인 정보는 일반 투자자분들께 독이 될 수 있습니다.

바닥부터 차근차근 여러 개의 칼럼에 걸쳐 이해하기 쉽게 설명해드리고자 합니다. 

작성자 : 김현빈 (CoinPresso VP / hbk960709@naver.com) 

최종 편집 : 정동건 (CoinPresso CEO / ceo.jdg@gmail.com)

1. 기초가 중요

흔히 투자를 할 때에는 신념이 있어야 한다고 합니다.

여기서 신념이란 자기 자신에 대한 믿음이 아닌 객관적 투자 대상의 가치에 대한 신념을 의미하죠.

 “매수점에서 10% 떨어지면 매도 후 관망한다.”와 같이 타인이 임의적으로 정해준 기준이 아닌, 본인의 신념을 기반으로 한 본인만의 규칙이 있어야 손해가 최소화되고 이익이 극대화됩니다.

그렇다면 신념은 어떻게 가질 수 있을까요?

마음가짐을 바꾸면 되는 것일까요? 

아닙니다. 신념은 정보로부터 발생합니다. 

UASF가 무엇인지도 모르는 상황에서, 비트코인이 포크를 한다는 이야기를 듣게 되면 마음이 갈대처럼 흔들립니다.

무언가 부정적으로 느껴지고, 실제로 이더리움이 포크를 겪으면서 큰 타격을 입기도 했었구요.

정보가 부족해 갈대처럼 흔들리는 투자자는 고점에서 매수하고 저점에서 매도하기 마련이죠. 

그러기에 결론부터 말씀드릴 수도 있겠지만, 이론부터 정리하며 바닥부터 시작합니다.

여러분이 스스로 정보를 읽고, 분석하고, 판단할 기회를 드리기 전에 제 주관적 생각을 말씀 드리는 것은 저희의 경영 철학과도 어긋나기 때문이죠.

2. 대충은 아는데...

저는 저희 대표님의 소개로 가상화폐 시장에 발을 들이게 되었습니다.

주변 사람들에게 비트코인같은 가상화폐에 투자한다고 하면, 걱정어린 시선과 함께 비트코인이 무엇이고, 그것이 어떻게 화폐로서 작용하는지 물어보기 마련입니다. 

아마 이런 질문을 들으신 대다수의 투자자분들의 대답은 비슷할 겁니다.

대충은 아는데 자세히는 모르겠다.

블록체인이라는 새로운 시스템이 등장했고, 이게 일종의 기록장치로 작용해서 우리의 거래 내용을 저장하는데, 탈중앙화적인 성격으로 인해 조작이 (거의) 불가능하다.

그러나 정말 이 정도로 충분할까요?

마이닝이 무엇인지, 해싱이 뭔지, 비트코인에 일종의 버그가 있다는데 그러면 비트코인의 가치가 훼손되는 것은 아닌지, 하드포크를 하면 비트코인 클래식이 생기는 것인지, 궁금증이 생기지 않으셨나요?

많은 입문자분들은 이러한 두려움을 갖고 계시나, 정확히 이해할만한 글을 찾기 힘든 것이 현실입니다.

3. 실물도 없는 너, 왜 가치가 있니?

먼저 우리는 비트코인이 어떻게 해서 화폐성을 가지게 되는 것인지 자세히 알아봐야 합니다.

실물화폐의 경우 공통적으로 가져야만 하는 성질이 크게 6개 있습니다. 

내구성, 휴대성, 가분성, 균일성, 유한성, 그리고 범용성이죠.

이 중 내구성, 휴대성, 그리고 가분성은 가상화폐의 특성상 저절로 보장이 됩니다.

디지털 코드는 오래 되었다고 닳아 없어지지 않습니다. (내구성)

또한 네트워크만 연결되는 곳이면 항상 들고 다닐 수 있습니다. (휴대성)

가상적인 숫자(비트코인은 사토시라는 아주 작은 단위로 쪼개질 수 있습니다)이기에 나누는 데에도 큰 문제가 없기 때문이죠. (가분성)

반면, 균일성, 유한성, 그리고 범용성은 개발자, 정확히는 그가 개발한 알고리즘이 보장해줘야 하는 특성들입니다.

나의 1 코인과 타인의 1 코인이 같은 값어치를 가져야 함은 코인을 여러 번 쓰는 사태를 방지해야 보장이 됩니다. (균일성)

전체 화폐의 수는 유한, 혹은 무한하더라도 유한과 유사한 속성을 가져야 한다는 명제는 채굴로 인해 발행될 수 있는 코인의 양을 제한해야 성립합니다. (유한성)

또한 가상화폐 시장 개발자와 대형 투자자는 광범위한 유통을 위해 노력해야 합니다. (범용성)

비트코인의 블록체인, 해싱, 마이닝 등의 복잡한 제도적인 절차들은 모두 이를 보장해주기 위해 존재하는, 일종의 논리적 규약이자 장치입니다.

이러한 전제들이 성립함으로서, 실물도 없는 비트코인이 개당 300만원에 육박하는 가치를 지닐 수 있게 되었습니다.

4. 블록체인, 블록과 사슬

비트코인을 비롯한 여러 가상화폐의 기술적 핵심인 블록체인부터 살펴보죠.

A. 블록

블록체인은 일종의 '거래원장'이라고 불립니다.

이름에서 알 수 있듯이 연속적인 블록의 사슬로 이루어져 있으며, 각 블록에는 최근 10분간 네트워크에서 발생한 모든 거래의 기록이 저장되어 있죠.

그림으로 쉽게 설명하면 이런 모양입니다.

블록체인은 공공성과 불변성이라는 특성을 지니고 있습니다. 

과거 칼럼(https://steemit.com/blockchain/@coinpressokr/dwgtw)을 읽으신 분들이라면 아시겠지만, 가상화폐의 가장 큰 특징이자 이념은 가상성이 아닌, 탈중앙성입니다.

모두가 화폐의 유지에 기여하는 시스템이기에, 블록체인은 모두가 열람할 수 있는 공공성을 지녀야 하는 것이죠.

또한 블록체인은 변조되어서는 안됩니다.

거래가 발생했음에도 이후에 거래 내역이 바뀌면 화폐의 균일성이 보장될 수 없죠.

흔히 말하는 'double spending', 즉 코인의 소모 내역을 삭제하며 같은 코인을 여러 번 소비하는 상황이 발생할 수 있기 때문입니다.

B. 체인

여기서 블록을 연결하는 '사슬'의 개념이 들어옵니다.

유저들이 블록체인 중간에 있는 블록을 바꿀 수 없게 하기 위해 비트코인의 개발자들은 각 블록을 만들 때 직전 블록의 정보를 포함하게 해뒀습니다.

중간의 블록이 바뀌어 버리면 뒤따라오는 모든 블럭들이 잘못된 것으로 판별되기 때문에, 문제가 발생하였음을 알 수 있고, 공개된 정보를 이용해 문제가 생긴 위치 또한 바로 찾아낼 수 있는 것이죠.

정리하자면, 블록에 거래내역을 저장하고, 이 블록들을 체인으로 연결해 유효한 거래내역인지를 검증하며 이 것을 이어나갑니다.

5. 해싱, 간결하게 정리하기

“직전 블록의 정보를 포함한다”라는 말을 다시 생각해보겠습니다.

직전 블록의 정보를 만약에 그대로 가져오게 되면 블록은 계속 2배로 커지게 될 것이고, 아마 비트코인은 탄생할 수 없었을 것입니다.

블록이 늘어나면 늘어날수록, 용량이 커지게 되고, 특히 최근과 같이 거래가 활발한 시점에는 기하급수적으로 블록체인이 길어지게 될 것이기 때문이죠.

이 크기 문제를 해결하기 위해서 “해싱 알고리즘”이라는 개념이 도입됩니다.

해싱 알고리즘은 다양한 종류의 정보를 하나의 출력으로 묶어 (짧게 만드는) 함수의 통칭입니다.

이 함수에 입력되는 값은 문자일 수도, 숫자일 수도, 10개일 수도, 100개일 수도 있으며, 출력되는 값은 보통 적당한 길이의 문자열입니다.

A. 해싱의 원리

거래 내역을 예시로 들어서 설명해보겠습니다.

2017.6.28. 13:50 / HBK의 지갑(주소)으로부터 / 1 BTC / JDG의 지갑(주소)으로

해시값 : 1kn23934b1o239j9dwn91b9b8b3

해싱 알고리즘은 위와 같이 다양한 종류의 긴 데이터를 합쳐, 하나의 무의미해 보이는 문자열로 전환해줍니다.

자, 이제 다른 예시를 보곘습니다.

2017.6.28. 13:52 / HBK의 지갑(주소)으로부터 / 2 BTC / JDG의 지갑(주소)으로

해시값 : as89d7a89sd7as90dh12jknmnijb2

해시는 원 정보가 살짝만 바뀌어도 전혀 다른 결과값을 출력한다는 성질을 지니고 있습니다.

또한, 해시는 유일하여 입력이 달라지면 출력이 달라집니다.

이 알고리즘은 결과 해시로부터 원 정보를 유추해내기 굉장히 어렵습니다.

(다시 말해, 역함수를 찾아서 조작 등의 행위를 하기가 거의 불가능합니다)

그렇기 때문에 해시값을 예측하거나 조작하여 원하는 블록을 생성해 블록체인을 속이기란 불가능하다고 봐도 무방하죠.

엄밀히 말하면, 조작이 이론적으로 불가능한 일은 아니지만, 얻는 이득보다 조작을 하기 위해 드는 비용이 월등히 큰 구조입니다.

B. 블록체인 해싱하기

다시 블록체인을 떠올려 보겠습니다.

'직전 블록의 정보'란 직전 블록의 해시값을 말합니다.

이 값, 그리고 10분간 요청된 수많은 거래의 정보들이 모이고 모여 다음 블록의 해시를 계산해내는 것이죠.

(이 계산은 아주 복잡한 컴퓨터 연산을 필요로 합니다)

이렇게 일단 한 번의 사이클이 마무리가 됩니다.

그 다음, 다음 블록의, 또는 특정 거래의 타당성을 체크하는 과정입니다.

새로운 정보들을 다시 모아 함수에 집어넣어 해싱을 하고, 이 결과값과 이전의 값을 비교해 보기만 하면 체인의 조작 여부, 즉 유효성을 검증할 수 있죠.

다시 말해, 블록체인은 해싱이라는 복잡한 함수를 이용해 압축된 데이터를 (엄청난 연산 파워를 이용해) 비교하며 새로운 거래의 유효성을 판단함으로서 유지되고 길어집니다.

6. 마이닝

최근 가상화폐 붐이 불면서 채굴 목적의 중고 그래픽카드의 가격이 폭등하고 있습니다.

어떤 PC방은 폐업을 하고 채굴장으로 변신하기도 할 정도니까요.

이렇게 수많은 컴퓨터들이 모여서 채굴하는 행위는, 이 해싱을 하는 것입니다.

A. 마이닝이 이뤄지는 과정

채굴자들은 블록을 생성하는 작업을 통해 비트코인 거래를 가능케 해줌과 동시에 새로운 비트코인의 발행을 도맡습니다. 

A의 지갑에서 지갑 B로 n개의 비트코인을 전송하는 경우를 생각해보죠.

현재 블록체인의 가장 끝에는 Z라는 해시값을 가진 블록이 붙어있습니다.

최근 10분간 이 거래 외의 거래는 없었다고 가정할 때, 채굴자들은 A, B, n, Z라는 4개의 변수를 이용해 해시값을 계산합니다.

그 중 가장 빨리 계산한 사람은 거래수수료를 수령함과 동시에 정해진 개수의 새로이 발행된 비트코인을 얻습니다. 

여기서 문제는 해싱 알고리즘이 (잘 만들었기 때문에) 굉장히 빠르다는 데에 있습니다.

게다가 현대의 컴퓨터는 점점 빨라지고 있죠.

따라서 저 과정을 그대로 따른다면 비트코인은 순식간에 엄청난 개수가 발행될 것이고, 유한성이 지켜지지 못하면서 화폐의 값어치는 곤두박질치게 될 것입니다. 

또한, 해싱이 너무 빠르다면 블록을 조작하는것 또한 쉬워집니다.

거대한 컴퓨터를 이용해 모든 값을 다시 다 계산해서 대체한 뒤 블록체인에 붙여버리면 되기 때문이죠.

때문에 블록체인은 해싱 알고리즘의 수행시간를 아주 길게 할 필요가 있습니다. 

그러기에 비트코인(그리고 수많은 가상화폐)에는 PoW(Proof of Work)라는 알고리즘이 도입되어있습니다.

(흔히 이더리움이 PoW에서 PoS로 전환한다는 소식에서 이 용어를 접해보셨을 텐데, PoS에 대해서는 다음 기회에 다뤄보도록 하고, 이번에는 PoW만 설명하겠습니다)

B. Work 어렵게 하기

PoW라는 단어의 무서운 생김새에 겁을 먹으실 수 있지만, 이해하기는 생각보다 쉽습니다.

비트코인은 단순히 거래값을 검증하는 것 이외에도 속도 조절을 위해 쓸데없는 연산을 시킵니다.

예시로 든 거래를 해싱할 때, 채굴자에게 A, B, n, Z에 덧붙여 X라는 무의미한 데이터를 넣게 합니다.

(다시 말해, 변수 4개로는 조건을 충족시킬 수 없게 만들어 새로운 변수를 추가하게끔 유도합니다)

그리고 블록체인은 다음 블록의 해시에 제한조건을 부여합니다.

“다음 블록이 승인되기 위해 그 블록의 해시는 첫 세자리가 0이어야 한다.”등의 조건을 부여할 수 있겠죠. 

그러면 채굴자들은 조건을 맞출 수 있는 X를 찾기 위해 그 값을 끊임없이 바꿔나가면서 해싱을 시도합니다.

위에서 말했듯이 X값이 조금만 달라져도 해시는 완전 다른 값으로 바뀌며, 이 조건의 난이도는 굉장히 높기 때문에 어떤 채굴자가 먼저 X를 찾는 것에 성공할지 전혀 예측할 수 없습니다.

이러한 무작위성이 채굴자들 간의 공평성을 보장할 수 있는 것이죠.

이 제한조건은 블록에 맞는 해시값을 찾는데 10분 정도의 시간이 걸리도록 끊임없이 난이도가 조절됩니다.

예를 들면 세 자리가 0인 제한조건이 네 자리가 되는 식으로 X를 찾는 과정을 복잡하게 만듭니다.

때문에 모든 블록의 해시를 조건에 맞춰 다시 계산해 블록체인을 새로 써서 조작하는 것을 방지할 수 있게 됩니다.

동시에 성공적인 해시값 계산으로 새롭게 발행되어 채굴자에게 제공되는 비트코인의 수는 꾸준히 감소하도록 설계가 되어 있어 총 발행될 비트코인의 수는 2100만개(개인적으로는 이 희소성을 장기투자 매력포인트로 봅니다)를 넘지 못합니다. 

7. 완벽한 시스템?

간단하게 살펴본 블록체인의 시스템은 생각보다 직관적이고, 대략이나마 연산이 이뤄지는 과정도 합리적입니다.

그러나, 생각치도 못한 문제들이 발생합니다.

블록체인의 기술적인 면에 대해 아직 다루지 못한 이야기도 많습니다.

서로 다른 결과를 가진 블록이 블록체인에 동시에 붙으면 어떻게 되는지, 블록의 승인여부에 체인의 일원들이 동의하지 않으면 어떻게 되는지 등의 질문들이 많이 남아있지만, 일단 비트코인을 가능케 한 가장 기본적인 기술들을 다루자는 생각에 시작한 글이기에, 여기서 한 박자 쉬는게 좋겠다고 생각합니다.

가장 중요한 것은 비트코인, 그리고 블록체인은 탈중앙화 되어있기 때문에 거기에 속한 '참여자들의 선택'으로 이어져 나간다는 점입니다.

카드결제처럼 결제를 하면 어느 대형 기업의 중앙서버에서 이를 확인하고 돈을 옮기는 방식이 아닌, 구성원들의 합의와 동의로 이 과정이 이루어진다는 점이죠.

비트코인은 카드사처럼 닫힌 문과 높은 방화벽 뒤에서 서버를 운영하는 것이 아닙니다.

또한 이를 책임지는 주체도 없습니다.

알고리즘을 기반으로 한 사용자들간의 신뢰가 깨지면 모두가 큰 피해를 본다는 것이 최대의 약점입니다.

때문에 그만큼 보안이 잘 지켜져야 합니다. 

모두가 볼 수 있되, 아무도 건드릴 수 없는 시스템을 만들어야 하는 것이 비트코인, 그리고 모든 블록체인 기반 가상화폐의 의무입니다.

만약 한 정보에 대해 해시값이 여러 개가 가능해 블록체인의 조작이 가능하다면?

블록에 악성 정보를 담아 서비스를 마비시킬 수 있다면?

또는 모든 네트워크 서비스의 영원한 고충인 주문 폭주가 발생할 때 시스템(이더리움에서 심각한 전송 문제가 최근 발생했습니다. 그리고 최근 비트코인의 전송속도가 아주 느려지고 있죠)이 해결하지 못하면 비트코인은 값어치를 잃어버리고 말 것입니다.

모든 장치들이 기어처럼 맞물려 돌아가고 있는 것처럼 보여지고 있었습니다.

한동안은요.

하지만 언제나 그렇듯이, 현실은 그리 녹록지 않아서 우리를 배신하려 합니다.


다음 화에 이어집니다.

https://steemit.com/kr/@coinpressokr/2

Sort:  

Congratulations @coinpressokr! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes received

Click on any badge to view your own Board of Honnor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

좋은 글 잘 봤습니다. 제가 이해가 부족해서 궁금한 점이 있습니다.
비트코인이 프로그래밍으로 탄생한 것이라면, 프로그래밍을 통해 변조하는 것은 불가능한건가요? 이미 탄생한 후로는 변화를 주기 위해선 채굴자들의 동의가 필요한 것인지 궁금합니다. 그 동의가 51%가 필요한건지 아니면 100% 혹은 어느수준 이상이어야 되는지도 궁금하구요.
또 작업의 증명을 채굴자들만 하는 것인지와 그렇다면 거대 채굴풀들이 연합해서 조작할 가능성은 없는지도 궁금합니다.

좋은 질문입니다. 편집자 답변입니다.

  • 블록을 위조하기 위해서는 말씀하신대로 50프로 초과랑을 조작하셔야 합니다.
  • 채굴풀들이 (아직은) 그렇게 하는 것이 손해이기 때문에 (말씀하신 것은 하드포크와 비슷한 맥락의 행위입니다) 그렇게 하더라도 시장으로부터 인정받는 가치가 하락하기에 그와 같은 행동을 하지 않습니다.

집단의 위조는 일종의 눈치게임이죠.

좋은 글 감사드립니다.

정말 좋은 정보 공유 감사합니다.
잘 보고 갑니다.

다음화도 기대됩니다.

저 같은 초보자들에게 큰 도움이 되는 글이네요.
봇&팔로우 하고 갑니다^^
다음 글도 기다릴게요!

좋은 글 감사합니다!
지금까지 이해가 잘 안되던 부분들도 이해가 잘 되었습니다.

와우 정말 좋은 글 이네요.
도움이 많이 됩니다 :)
팔로 보팅 하고 가요!

다음 화 기대하겠습니다~

영양가 넘치는 글이네요. 두고두고 다시 정독해볼만한 글인 것 같습니다 :)
팔로했어요!

비트코인 블록체인에 관심이 많은데 아직 어렵네요 몇번 더 읽어보고 정리를 해봐야겠어요 좋은 포스팅 감사합니다~ 팔로우도 신청하고 갈께요~^^

혹시 추가적으로 설명이 더 필요한 토픽은 말씀해주시면 다음 시리즈 작성 때 참고하도록 하겠습니다 :)

좋은글 감사합니다

감사합니다