while(1) work();
article thumbnail
반응형

안녕하세요.

 

오늘은, 일단, 비트코인의 기본적 개념인 지갑, 거래, 채굴 에 대해서 알아보고,

더 나아가서 오후에 작성할 3편에서는 해쉬 함수에 대해 알아보고 실제 거래를 시연해보고자 합니다.

 

 

 

[6] 지갑이란?

비트코인에서 지갑(wallet)은 현실 세계에서의 계좌와 동일합니다.

현실에서 계좌가 현금을 보관하듯이, 비트코인의 지갑은 비트코인을 보관합니다.

 

비트코인에서 지갑은 "주소"(address)로 표현을 합니다.

"XX은행 111-222-42124 로 3000만원만 보내줘~" 라고 말하는 것 처럼

비트코인에서도 "1HB5XMLmzFVj8ALj6mfBsbifRoD4miY36v로 2.1489271 비트코인을 보내줘~" 라고 표현합니다.

(위 지갑 주소는 제 주소가 아닙니다. 단순 사례입니다.)


여기서 알 수 있는 사실은 두 가지입니다.

 

먼저 비트코인은 주식처럼 1주, 2주, 3주 딱딱 떨어지는것이 아니라, 소숫점을 허용한다(2.1489271비트코인 처럼)는 점이 눈에 띕니다.

비트코인은 현재 통상적으로 소숫점 8자리까지 사용을 합니다. (더 낮은 자릿수도 사용이 가능하긴 합니다)

이 때 0.00000001 비트코인을 특별히, 1 사토시라고 부릅니다. 

0.01달러를 1 센트라고 부르는 것과 같은 이치입니다.

1 비트코인의 가치가 대략 천오백만원정도이므로, 지금 시점을 기준으로 1 사토시는 약 0.15원의 가치를 가집니다.

 

또 다른 사실은, 지갑의 주소가 1HB5XMLmzFVj8ALj6mfBsbifRoD4miY36v 와 같이 숫자+문자로 표현된다는 점입니다.

비트코인의 주소는 본래 1과 0으로 표현된 160자리의 이진수입니다만, "10111011......1011로 비트를 보내줘"라고 표현하기가 어렵기 때문에

이진수를 58개의 숫자와 문자로 변환해서 표현을 합니다. (숫자, 대문자, 소문자를 합치면 62자이지만, 햇갈리기 쉬운 I, O 등의 문자가 제외되었습니다)

 

일상적으로 지갑을 만든다는 표현을 많이 쓰지만, 이는 사실 정확한 표현은 아닙니다.

지갑을 생성하는 명령은 비트코인상에 존재하지 않습니다.

 

지갑을 관리할 수 있는 마스터키인 private key(address처럼 숫자와 문자로 표현가능)를 무작위로 생성을 하면 수학적으로 그에 따라 "어떤 지갑"을 관리할 수 있는 권한이 생기는 것입니다.

집을 골라서 구매하는것이 아니라, 내가 무작위로 모양을 정한 열쇠를 만들면, 그 열쇠에 맞는 집을 관리할 수 있다는 얘기입니다.

 

자세한건 타원 곡선 알고리즘과 해쉬 함수를 먼저 다루어야 설명드릴 수 있어서, 일단 넘어가볼까요?^^

 

S200201N038_IMG_01.jpg

(타원 곡선 알고리즘을 설명하기 위한 그림.... 보기만 해도 어렵다.)

 

지갑을 가질 수 있는 방법은 크게 세 가지로 나누어 볼 수 있습니다.

첫 번째는 지갑 프로그램을 사용하는 방법이고, 두 번째는 지갑 사이트를 이용하는 방법이며, 세 번째는 하드웨어 오프라인 지갑을 사용하는 방법입니다.

 

사실 어떤 방식을 사용하셔도, private key를 생성해서 지갑을 관리하는 방식은 똑같기 때문에, 내 지갑의 private key만 잘 저장해두면 상호간의 전환이 가능합니다. 지갑 사이트를 사용하다가 지갑 프로그램으로 옮길 수도 있다는 말씀입니다.

 

대표적인 지갑 프로그램은 Bitcoin Core (65기가에 달하는 모든 블록체인을 내려받습니다. 약 2~3주 소요됩니다.)가 있고, 지갑 사이트로는 blockchain info에서 제공하는 wallet이 있습니다. 하드웨어 지갑은 외국 쇼핑몰을 잘 찾아보시면 구하실 수 있습니다.

Bitcoin core : https://bitcoin.org/ko/download

Blochchain wallet : https://blockchain.info/ko/wallet/#/

 

온라인 지갑을 사용하게 되면, 어디서나 접근이 가능하다는 장점이 있지만, 사이트가 해킹당하면 private key를 도난당할 위험이 있으므로 큰 금액을 관리하는 경우 적절치 않습니다. 반면 하드웨어 지갑의 경우 해킹으로부터 비교적 안전하기 때문에 큰 금액 관리에 적합하지만, 관리에 불편함이 따릅니다.

 

우선, blockchain wallet을 이용해 각자 지갑 하나씩 만들어보시는 것을 추천드립니다. 물론, 공짜입니다!

 


 

 

[7] 거래와 채굴
비트코인 거래라고 말씀을 드리면 아마 대부분 거래소에서 비트코인을 사고파는 장면을 생각하실지도 모르겠습니다.

하지만 거래소에서의 거래는 비트코인 블록체인에 기록되지 않는 가상의(?) 거래입니다. 어찌 된 일인지 한번 살펴볼까요?

 

먼저 비트코인에서 거래(transaction)란 지갑간에 비트코인을 주고받는 행위를 의미합니다.

제가 제 지갑에 있는 비트코인 하나를 다른 지갑으로 보내고 싶다면, 제 지갑의 private key와 받는 사람의 지갑 주소를 이용해 서명을 만들고 비트코인을 전송하겠다는 거래를 생성하게 됩니다.

(비트코인을 보내기 위해서는 private key가 필요하기 때문에 지갑의 주인만이 비트코인을 보낼 수 있습니다. 이는 타원 곡선 암호화 알고리즘 등에 의해 보증되며, 이건 기회가 되면 다루도록 하겠습니다) 

 

거래가 생성되면, 생성된 거래는 거래 대기열에 올라갑니다. 하지만 안타깝게도 아직 거래가 성립된 것이 아닙니다. 채굴자는 거래 대기열에 올라간 거래들 중에 자기 마음대로 블록 크기(최대 1MB)만큼의 거래를 골라서 블록에 기록하고 채굴을 시작합니다. 채굴자가 채굴에 성공하면 비로소 블록이 완성되어 나의 거래가 비트코인 블록체인에 올라가게 됩니다.

 

여기서 채굴자의 중요한 역할이 나타납니다. 채굴자는 단순히 수학 문제를 풀어서(푼다기보다는... 노가다지만) 블록을 생성하고 이어주는 역할만을 하는 것이 아니라, 거래들이 정상적인 거래인지(특히, 입금자의 지갑에 돈을 보내기에 충분한 잔액이 있는지) 확인하고 블록에 기록하는 역할을 합니다.

이 때 입금자는 채굴자에게 소정의 수수료를 자발적으로 지급하게 됩니다. 물론 수수료를 지급하지 않을 수 도 있습니다만, 채굴자 입장에서는 더 많은 수수료를 주겠다는 거래들만을 블록에 올리고 싶어하기 때문에, 수수료를 높게 책정할수록 블록에 포함될 확률이 높아지게 됩니다. 

 


 

(가장 최근에 채굴된 블록입니다. 채굴자가 12.5BTC의 보상 뿐만 아니라 약 1.56BTC의 거래 수수료까지 얻었음을 확인할 수 있습니다.)

 

즉, 비트코인을 거래하기 위해서는 수수료와 시간이 필요합니다. 운이 좋게 거래를 생성하자마자 블록에 올라가서 기록될 가능성도 있지만, 최악의 경우 수 시간을 기다려야 블록에 올라가는 경우도 있습니다. 따라서 실시간 거래가 중요한 거래소에서는 이러한 방식을 사용할 수 없습니다. 또한 거래소의 주 목적은 비트코인과 다른 화폐(KRW, USD, 혹은 ETH 등)간의 거래이므로 이러한 비트코인간 전송과는 맞지 않습니다. 

 

그래서 거래소에서는 실제 비트코인의 transaction을 사용하는 것이 아니라, 거래소 내부의 가상 머니를 사용합니다. 제가 거래소에서 한화로 비트코인을 구매했다고 해서 실제 내 지갑에 비트코인이 저장되는 것이 아니라, 단순히 3.00000000만큼의 포인트를 가상으로 지급하고, 그 포인트를 나중에 비트코인과 등가교환해주겠다는 암묵적인 약속을 하는것이지요. (11번가에 충전해놓은 예치금이 실제 돈은 아니지만 현금과 동일한 가치로서 물건을 구매할 수 있는것처럼요.)

 

 

 


[8] 거래 확인(confirm transaction)
지난 글에서 설명드렸던 바와 같이, 비트코인은 공개된(public) 블록체인이기 때문에 누구나 장부를 열람해볼 수 있습니다. 블록체인을 쉽게 열람할 수 있도록 도와주는 사이트를 이용해 실제 거래를 조회해볼까요?

 

아까 예로 들었던 1HB5XMLmzFVj8ALj6mfBsbifRoD4miY36v 지갑을 열람해볼까요? 수 많은 코인들이 이 지갑에 입금되어지고 있는 것을 확인하실 수 있습니다. 사실 이 지갑은 Wikileaks의 후원 지갑입니다. 많은 사람들에 의해 후원이 이루어지고 있음을 투명하게(?) 확인할 수 있습니다.

 


https://blockchain.info/address/1HB5XMLmzFVj8ALj6mfBsbifRoD4miY36v

 

사진을 잘 보시면 일부 거래 내역에 미 승인된 거래 라는 붉은 딱지가 붙은 것을 확인하실 수 있습니다.  이는 거래가 거래 대기열에만 올라가 있고 아직 블록에 포함되지 않았다는 의미입니다. 다음 채굴되는 블록에는 포함되기를 바라는 수 밖에 없습니다. 직접 채굴을 할 수는 없으니깐요 ㅎ

또 다른 사진을 볼까요?

 



https://blockchain.info/ko/address/1H6ZZpRmMnrw8ytepV3BYwMjYYnEkWDqVP

 

이번엔 승인(confirmed)이라고 적힌 파란 딱지가 보입니다. 1승인(confirmed one time) 이라는 것은 이제야 비로소 최근 블록에 거래가 올라갔음을 의미합니다. 즉 앞으로 10분이 지나서 다음 블록이 채굴되면 해당 거래는 “2승인”이 될 것이며, 60분이 더 지나면 “8승인” 상태가 될 것입니다. 일반적으로 비트코인 거래는 6승인 이상이 되어야 안전하게 송금되었음을 보장할 수 있다고 말합니다. 하지만 이렇게되면 너무 송금시간이 오래걸리기 때문에, 많은 비트코인 거래에서 3승인을 기준으로 사용합니다. 

 

사실 승인은 한번만 이루어져도 블록체인에 기록되기 때문에 아무 문제가 없습니다. 하지만 아주 적은 확률로 다음 블록이 두 채굴자에 의해 동시에 채굴이 되어서 블록체인이 두 개로 쪼개지는 경우가 생길 수도 있습니다. 이럴 경우에는 쪼개진 블록들의 다음 블록이 먼저 채굴되는 쪽을 주 체인으로 인정합니다. 즉 일부 블록에 포함된 거래가 소실될 수 있다는 말입니다. 

 

일반적으로 이러한 일은 잘 발생하지 않고, 발생하더라도 한 블록만 고아 블록이 되는 경우가 많습니다. 하지만 과거에 아주 이례적으로 체인이 나뉘고 나서 6개까지 이어진 경우가 있었습니다. 그래서 안전함의 기준이 6번의 confirm이 되어 지금까지 이어져 오고 있는 것입니다. 

 

ㅁ—-ㅁ—-ㅁ—-ㅁ—-ㅁ—-ㅁ—-ㅁ—-ㅁ—-ㅁ (주 체인)
          └-ㅁ—-ㅁ—-ㅁ—-ㅁ—-ㅁ—-ㅁ       (고아 블록)

 

 

 


[9] 질문과 답변
잠시 뒤에 올릴 다음 글에서는 좀 더 이론적인 내용을 다룰 계획이라, 쉬어가는 의미에서 지난 글에 달아주셨던 질문들에 대한 답을 드릴까 합니다. 

 

Q. 비트코인의 채굴 시간이 10분으로 조정된다는데, 이게 어떻게 이루어지나요? (성스러운곰탱이님, 立派なものですね님)


A. 10분이라는 시간은 "난이도 조절 알고리즘"에 의해 조절됩니다.
최근 2016개(개당 10분이라고 치면, 정확히 14일)의 블록을 분석해서 평균 채굴 시간이 14일보다 길면(채굴이 어려웠다면) 다음 블록의 채굴 난이도를 낮추고 평균 채굴 시간이 14일보다 짧으면(채굴이 쉬웠다면) 다음 블록의 채굴 난이도를 높입니다.

일반적으로 hash rate가 높아져서 연산 량이 많아진다면, 채굴은 빨리 이루어지기 때문에 난이도가 높아집니다. 초창기 hash rate가 낮을땐 채굴이 쉬웠던 이유가 바로 이 이유입니다.
비트코인은 중앙에서 관리하는 시스템이 아닙니다. 따라서  난이도 조절은 자동으로 이루어집니다. 
채굴자가 문제를 풀면 다른 노드들에게 검사를 받아야 하는데, 이 때 난이도가 맞지 않으면 다른 노드들이 "안돼, 너무 쉬운 문제야. 돌아가!"를 시전합니다.


Q. 블록체인을 조작하면 지갑에 있는 잔액을 조작할 수도 있지 않나요? (立派なものですね님)


A. 누구나 자기 컴퓨터에 있는 장부를 조작할 수는 있습니다. 예를들어서 제가 제 지갑에 있는 코인의 수를 0개에서 100개로 늘릴 수는 있습니다. 

다만 자신을 제외한 모든 컴퓨터(노드 라고 부릅니다)들은 제 지갑의 코인을 0개라고 인식하고 있고, 따라서 제가 제 코인을 다른 지갑으로 보내는 거래를 생성하게 되면, 부적절한 거래로 인식해 거래가 이루어지지 않습니다. 

이를 뚫기 위한 유일한 방법은 전세계 노드들의 과반 이상을 해킹해서 장부를 동시에 조작하는 방법입니다만, 수십만 수백만대의 컴퓨터를 일일히 해킹하는 것은 불가능합니다. 


Q. 그럼 private key를 무작위로 알아내서 돈을 빼오는게 채굴에 비해 더 쉽지 않나요? (옆집ㅊㅈ님)

A. private key는 256비트로 이루어져 있습니다. 즉 private key를 찍어서 맞출 수 있는 확률은 1/(2의 256승) 입니다.

http://m.wolframalpha.com/input/?i=1%2F2%5E256
이 정도로 작은 숫자이고, 로또 1등에 연속으로 10번 당첨될 확률입니다.

채굴의 경우에도 비슷한 과정으로 이루어지지만, 정답을 정확히 맞출 필요는 없고, 정답과 유사한 답을 찾으면 채굴이 되기 때문에 채굴의 난이도가 훨씬 쉽습니다.

 

Q. 과정에 상관없이 문제를 맞춘 사람만 보상을 다 가져간다면 억울한 상황이 많이 생기지 않을까요? (이게다야당때문이다! 님)

A. 맞습니다. 문제를 맞춘 사람만이 보상을 다 가져갑니다. 

초기에 채굴 보상은 50BTC였지만, 보상은 4년마다 절반으로 줄어들어서 지금은 12.5BTC를 얻습니다. 

사실 그런 이유로, 일반인이 혼자 채굴하는것은 불가능합니다. 그래서 일반적으로, 대형 채굴연합(마이닝 풀)에게 pc 컴퓨팅 능력을 제공하고, 그에 따른 fee를 나누어 받는식의 채굴을 합니다.

 

초당 천만기가의 해쉬율을 가진 그룹과, 초당 1기가의 해쉬율을 가진 개인이 동시에 채굴을 한다면
채굴이 이루어질 가능성은 10000000:1 이 됩니다. 
그래서 마이닝풀의 해쉬 점유율이 곧 그 마이닝풀이 채굴에 성공할 가능성이 됩니다. 
해쉬 점유율이 20프로라면, 통계적으로 5 블록 중 하나는 그 마이닝풀이 캔다는 의미입니다

 

Q. 비트코인이 실제로 어떻게 사용될 수 있고 어떠한 가치를 가지나요? ((˛¸人˛¸)잇힝님, 글랫이님, 

가장 쉽게 떠오르는건 결제의 수단으로서의 사용입니다. 이미 일부 온라인 사이트나 오프라인 상점에서는 비트코인으로 거래가 이루어지고 있습니다.  물론 아직 해결해야할 문제점도 많지만요. 

더 나아가서는 여러가지 분산 플랫폼으로서의 역할도 할 수 있습니다. 비트코인으로는 아직 구현이 어렵지만 이더리움을 사용하면, 투표 시스템과 같은 앱을 이더리움 플랫폼 상에서 코딩을 통해 구현할 수 있습니다.

 

비트코인이 실제로 가치를 가지는지에 대한 부분은 아직까지도 상당한 논쟁거리입니다. 
비트코인이 가치가 전혀 없는 일련의 데이터라고 주장하는 사람도 있고
비트코인은 수량이 한정되어있어 희소성을 가지고, 화폐로서의 기능을 할 수 있게 되면 가치를 가진다고 보는 사람도 있습니다. 

 

따라서 더 이상 비트코인이 실질적 가치를 가지는지에 대해서는 언급하지 않고자 합니다.

이는 기술적인 분석과는 거리가 있는 내용이고 개인의 가치관에 따라 다르게 여겨질 수 있습니다.

 

 

 

[10] 마무리
 

사실 더 많은 내용을 쓰고 싶었는데, 이제 내용이 슬슬 어려워져서 끊어서 올립니다.

이따가 올릴 3편에서는 해쉬에 대한 내용을 다루어볼까 합니다.

 

지난번 글을 올리고 나서, 좋은 말씀들도 많이 해주셨지만 일부 비판자분들께서 비판적인 말씀들도 많이 해주셨습니다.

 

비트코인이 실질적 가치를 가지는지는 증명되지 않았고 화폐에 대한 기능이 이루어지고 있는지 의문이라는 말씀이 가장 많았습니다.

 

이 부분에 대해서는 아직까지도 명확히 말할 수 없는 논쟁거리임을 잘 알고 있습니다.

저는 비트코인이 화폐다, 혹은 비트코인을 사라! 라는 것을 주장하기 위해 이 글을 쓰는것이 아닙니다.

 

단지 비트코인에 대해 알고싶으셨던 분들, 비트코인을 거래하는데 뭔지는 알고 거래해야겠다 싶으신 분들, 혹은 비트코인에 대해 연구하고자 하시는 분들께 입문서가 되었으면 하는 바람에서 작성하고 있습니다.

 

글을 하나 쓰는데 두 시간이 넘게 걸린다는것도 이번에 처음 알았네요.

이런 글을 볼때마다 감사한 마음으로 봐야겠다는 것을 깨달았습니다 하하...

 

식사는 다들 맛있게 하셨나요?

잠시 후 저녁때 3편으로 찾아뵙겠습니다.

 

지난번과 마찬가지로 질문, 반박 등 댓글 모두 환영합니다~


반응형
profile

while(1) work();

@유호건

❤️댓글은 언제나 힘이 됩니다❤️ 궁금한 점이나 잘못된 내용이 있다면 댓글로 남겨주세요.

검색 태그