비트코인 사용원리

마지막 업데이트: 2022년 1월 24일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기

비트코인 사용원리

2017. 11. 28. 22:30

    본문 폰트 크기 조정 본문 폰트 크기 작게 보기 본문 폰트 크기 크게 보기 가

우리는 물건을 사고 팔거나 할 때 화폐라는 수단을 통해 거래를 수행합니다. 그런데 이 화폐라는 것이 대부분 나라의 중앙은행에서 발행되며 통제됩니다. 참고로 미국 달러를 발행하는 미국의 중앙은행 역 할 을 하 는 연방준비제도(Federal Reserve System)는 국가 소유가 아니라 사금융이라는 사실이 새삼 놀랍기도 합니다. 아무튼 화폐발행에 대한 통제권은 보통 국가의 중앙은행이 가지고 있습니다.

그런데 비트코인은 인터넷으로 연결된 세상에서 자유롭게 사용할 수 있는 가상화폐를 구현하고자 하는 노력에서 생겨났으며, 화폐발행 ( 즉 비트코인 발행 ) 은 중앙은행처럼 특정 기관에서 발행하는 것이 아니라 정해진 알고리즘과 규칙에 따라 비트코인 네트워크에 참여하고 있는 어느 누구라도 발행할 수 있도록 한 것이 가장 큰 특징이라 할 수 있습니다.

즉, 비트코인 시스템은 비트코인을 발행하고 발행된 비트코인을 거래 수단으로 사용하며 관련된 거래 기록을 비트코인 시스템에 참여한 모든 사람들에게 동일하게 공유하는 것이 핵심입니다.

​ 그리고,, 요즘 비트코인(Bitcoin) 열풍으로 인해 가상화폐나 블록체인(Blockchain) 기술에 대한 관심이 뜨겁습니다. 2017년 11월 28일자로 1비트코인의 거래가격이 1천만원에 육박하고 있다고 합니다. 대단합니다.

혹자들은 온라인 쇼핑몰이나 기업에서 주는 포인트와 비스므리한 돈같지도 않은 비트코인 사용원리 비트코인 사용원리 가상화폐 한개에 천만원씩이나 하냐고 기가 막혀하고 혀를 찰지도 모르지만, 다르게 생각해보면 그럴만한 가치가 있어 보이기도 합니다.

경제적 관점에서 희소성이란 가치(value) 상승과 비례한다고 생각합니다. 희소성이 있으면 경제적으로 가치가 있는 것이고 많은 비용을 지불해야 가질 수 있으며, 흔하디 흔하면 경제적으로 가치가 없으며 누구도 관심을 가지지도 않습니다.

OK캐쉬백 포인트나 싸이월드의 도토리와 같은 사이버 머니는 그것을 제공하는 기업이 원하면 언제든지 발행할 수 비트코인 사용원리 있습니다. 예전 SK계열사에 재직중에 받은 도토리를 아직도 1000개 이상 가지고 있는데, 이 도토리는 당시 매달 저에게 그냥 무상으로 기업에서 제공한 것을 모은 것일 뿐입니다.

이러한 맥락에서 볼 때, 기업에서 제공하는 포인트나 사이버 머니는 발행하는데 제약이 없고, 마음만 먹으면 기업이 손해를 감수하고서라도 포인트를 무상으로 사용자에게 제공할 수도 있어, 희소성이 크다고 볼 수도 없고, 심지어 해당 기업이 도산하게 되면 그 포인트를 사용할 방법도 마땅치 않게 됩니다.

하지만 비트코인의 경우, 일정한 시간(보통 10분)마다 일정한 양만큼(2017년 현재 기준 12.5비트코인) 비트코인이라는 가상화폐가 발행되는데, 이 비트코인을 발행하기 위해서는 엄청난 컴퓨팅 파워가 필요합니다. 이 말의 의미는 비트코인을 발행하기 위해서는 엄청난 전력이 소비되어야 한다는 이야기이며, 아마도 지금 현재 비트코인을 발행하기 위해 사용되는 전력 비용이 발행되는 비트코인의 가치보다 더 클 수도 있습니다.

또한 비트코인의 알고리즘에 의해 발행되는 비트코인은 점차로 줄어들게 되어, 결국은 발행되는 비트코인의 양이 한계점에 도달하게 되고 더 이상 비트코인을 채굴할 수 없게 되어 있습니다. 실제 채굴할 수 있는 비트코인의 총 개수는 2,100만개입니다.

그리고 발행된 비트코인은 비트코인 네트워크에 참여한 모든 컴퓨터가 모두 동시에 망가지지 않는 한 사라지지도 않습니다.

따라서, 비트코인은 여타 다른 포인트와는 달리 경제적 관점에서 볼 때, 발행하는 것 자체가 어렵기 때문에 희소성이 충분히 있으며, 이 희소성은 시간이 지나면 지날수록 더 커지게 될 것 같고, 비트코인을 담고 있는 지갑의 ID와 패스워드만 잊어먹지 않는다면 그 비트코인을 사용하기 전까지는 대대손손 남아 있을 겁니다.

아.. 물론 이는 순전히 제 개인적인 생각이므로, 이에 동의하지 않는 분들은 그냥 콧방귀 뀌시고 스트레스는 받지 마시기 바랍니다.

아, 그럼 비트코인을 다 채굴하면 그 이후 채굴자는 뭐로 보상을 받을까요? 결론부터 말하면 거래 수수료를 챙김으로써 보상을 받게 됩니다. 지금도 채굴자는 보상으로 일정량의 비트코인과 거래 수수료를 몽땅 가져가고 있습니다. 이에 대한 자세한 내용은 다음 포스팅에서 다루겠습니다.

참고로 비트코인 창시자로 알려져 있는 사토시 나카모토는 약 100만개의 비트코인을 보유하고 있다고 알려져 있으며, 비트코인이 등장한 초창기에 채굴해서 보상으로 받은 비트코인 중 많은 양(추정치로 현재까지 채굴한 비트코인의 10%)이 저장된 비트코인 사용원리 하드디스크를 분실(?)했거나 지갑 ID와 패스워드를 기억하지 못해 주인없이 남아있다는 것인데, 이 비트코인은 어느 누구도 가져갈 수 없다는 아쉬움이 많습니다.

자, 가상화폐로서의 비트코인 이야기는 이정도에서 끝내고, 이제 본격적인 이야기를 해보겠습니다.

이번 포스팅에서는 비트코인의 기반 기술인 블록체인에 대해 가볍게 살펴보도록 하겠습니다.

블록체인 이해하기

그렇다면 블록체인은 무엇이고 이 녀석이 도대체 어떤 역할을 하는 것일까요? 블록체인에 대해 살펴보기 전에 먼저 원장(ledger)이라는 것에 대해 알아 봅니다.

원장이란 어떤 거래(transaction)를 기록하고, 계산하기 위한 장부를 말합니다. 예를 들어 우리는 돈을 거래할 때 보통 은행이라는 금융 기관을 활용합니다. 은행은 우리가 받아야 하거나 줘야 할 돈을 수취하거나 송금해주며, 이렇게 거래되는 모든 거래 내용을 담은 원장을 데이터베이스에 보관하고 있습니다. 저같은 경우 우리은행에 급여 계좌가 있고 우리 회사는 월급날이 되면 우리은행에 돈을 입금하고 그 돈이 나의 것임을 증명할 수 있도록 나의 급여 계좌에 얼마의 돈이 들어왔는지 기록합니다. 월급날에 제 급여 계좌의 거래내역을 보면 우리 회사가 월급을 얼만큼 주었다는 기록을 볼 수가 있지요.

회사가 나에게 준 돈은 내가 가지고 있지 않고 은행이 가지고 있지만, 대신 은행이 관리하는 나의 계좌에 해당 금액이 들어왔음을 기록하고 이를 은행이 보증해주는 것입니다.

마찬가지로 회사의 은행 계좌에는 나에게 송금했다는 비트코인 사용원리 기록을 남기게 됩니다.

얼마 후 신용카드 회사에서 내 월급 계좌에서 지난 한달간 사용한 신용카드 사용금액을 인출해갑니다. 이 거래 내용도 급여 계좌의 거래 기록을 살펴보면 볼 수 있죠.

우리 회사가 월급을 나에게 주었다는 거래 기록이 나의 급여 계좌에 기록되어 있고, 신용카드 회사가 내가 사용한 금액을 인출했다는 거래 기록도 나의 급여 계좌에 기록되어 있습니다. 이 급여 계좌가 바로 원장이며, 내가 관리하는 것이 아니라 우리은행이라는 제3자가 관리하고, 나는 이 은행을 믿고 모든 거래 내용을 기록한 나의 원장을 위탁하고 있는 샘입니다.

만약 어떤 해커가 우리은행을 해킹하여 내 원장에 있는 거래 기록을 임의로 바꾸게 되면 어떻게 될까요? 아마 난 은행에 땡전 한푼 없는 처지가 되어 있거나 수백억이 들어와 있거나. 아무튼 심각한 상황을 맞이하게 될 겁니다.

​아무튼 위에서 말한 예처럼 우리는 금융 거래를 기록한 원장을 우리가 보관하고 있는 것이 아니라 은행에 보관되어 있습니다. 그리고 은행은 이 원장에 기록된 거래 내용에 대해 보증을 하고 우리는 은행이 보증하는 이 원장을 신뢰합니다.

그런데, 이 원장을 은행과 같은 특정한 기관에 보관하지 않고 거래 당사자들이나 개개인들이 각자 가지고 있다면 어떨까요?

우리회사와 나와의 거래를 기록한 원장을 우리회사와 내가 각자 보관하고 관리한다고 가정해봅니다 . 회사가 월급날이 되어 월급을 나에게 직접 전달하고 회사가 보관하고 있는 원장과 내가 가지고 있는 원장에 이 거래 내용을 각각 기록합니다 . 물론 영수증으로 내가 돈을 받았다고 할 수도 있지만 이 경우는 생각하지 말기로 하죠 ( 거래 대상자가 불특정 다수가 되는 경우에는 영수증으로는 감당이 안되기도 하고 영수증을 잃어버리면 매우 곤란한 상황에 처할 수 있지요 .)

​ 이 경우 , 각자 보관하고 있는 원장을 서로가 신뢰해야 합니다 . 회사는 내가 보관하고 있는 원장을 신뢰해야 하고 , 나는 회사가 보관하고 있는 원장을 신뢰해야 합니다 . 만약 회사나 내가 자기가 보관하고 있는 원장을 위조하거나 변조하면 어느 것이 진본인지도 알 수 없게 됩니다

좀 더 확장해서 이제 내가 거래하는 모든 대상자와도 각자 원장을 관리하고 보관한다고 생각해봅니다 . A 라는 대상자와의 거래를 기록한 원장을 원장 A, B 라는 대상자와의 거래를 기록한 원장을 원장 B 등과 같이 원장들을 만들고 이를 각 대상자와 관리하고 보관한다고 하면 어떨까요 ?

이 경우에도 서로의 원장에 대한 신뢰가 확보되어야 할 것이고 , 개별적으로 관리하는 원장의 개수가 많아지면 원장의 관리를 잘해야 할 겁니다 . 아. 뭔가 복잡하고 믿을 수 없습니다 . 무엇보다 각자 보관하고 있는 원장을 도대체 어떻게 믿을 수가 있다는 말입니까 ?

위에서 서술한 것과 같이 원장 관리를 수행하는 제3의 기관이 필요없이 거래 당사자들이 각자 관리하고 보관하고 있는 원장을 동일한 거래 내용이 되도록 동기화하고 이를 모든 거래 당사자들의 합의하에 신뢰할 수 있도록 해주는 기술을 분산원장 (Distributed Ledger) 기술이라 합니다 .

블록체인이라는 기술은 분산원장을 구현할 수 있는 가장 인기있고 광범위하게 활용되는 기술이며 , 비트코인은 블록체인 기술을 활용한 분산원장에 모든 거래를 기록하고 있고 , 거래 당사자들의 모든 합의를 위해 채굴 (mining) 이라는 방법을 도입했으며 , 채굴의 보상으로 발행되는 것이 비트코인이라는 가상화폐입니다 . 비트코인에 대한 구체적인 내용과 원리는 다음 포스팅에서 다룹니다 .

이제 블록체인에 대해 살포시 살펴봅니다.

블록체인은 단어 그대로 해석해보면 블록이 서로 연결되어 있다라는 의미입니다 . 블록에는 블록체인 네트워크에 참여한 거래 당사자들의 거래 내용을 담고 있으며 일정한 크기와 일정한 시간이 지나면 하나의 블록을 완성시키고, 다음 블록에 새로운 거래 내용을 기록합니다 .

​ 다음 블록에는 이전 블록들의 모든 정보들을 담아 두는데 이는 해쉬 (hash) 라는 복호화가 불가능한 불가역적 암호화 방법을 이용합니다 . 블록체인에 사용되는 해쉬는 SHA256 이라는 방법을 활용하며 , SHA256은 어떤 크기의 문자열을 입력받더라도 256 비트 크기의 해쉬 문자열을 출력해줍니다. 해쉬에 대한 자세한 내용은 패스하겠습니다 . (이에 대한 내용은 비트코인 원리를 살펴볼 때 다룰 예정이며, 참고로 암호화 / 복호화 / 해쉬에 대한 기초와 구현은 저의 첫 번째 책 암호와 해킹에 자세하게 소개되어 있습니다 ^^)

​ ​ ​ ​ ​ ​ ​ 이런 식으로 거래 내용을 블록에 기록하고 블록들을 주기적으로 생성하고 , 생성된 새로운 블록에 이전에 생성된 모든 블록들의 정보를 담은 해쉬값을 기록함으로써 블록에 기록된 거래 내용을 해킹하여 위조 또는 변조하기 매우 어렵게 만든 것이 블록체인의 핵심이라 볼 수 있습니다 .

아래 그림은 일반적인 블록체인의 구조를 나타낸 것입니다. ​

블록체인은 각 블록들이 이전 블록들과 연결되어 있는데, 1번 블록은 연결할 비트코인 사용원리 이전 블록이 없습니다. 따라서 1번 블록은 이전 블록없이 시작하게 되는 태초의 블록이라 하여 제네시스 블록(Genesis block)이라 부릅니다.

모든 블록체인 시스템은 이 제네시스 블록에서 시작하게 되며, 이 후 완성되는 블록들을 이어 붙이게 됩니다.

비트코인의 제네시스 블록에는 1개의 거래가 있고, 이 거래는 비트코인 창시자인 사토시 나카모토에게 최초로 발행된 50 비트코인을 지급하는 것으로 되어 있습니다.

아래 그림은 비트코인에서 적용하고 있는 블록체인의 개략적인 모습입니다. 이에 대한 자세한 내용은 비트코인 원리에 대한 포스팅에서 다루기로 합니다.

블록체인은 결국 데이터를 저장하고 있는 DB 로 볼 수 있으며, 저장된 내용의 위조나 변조가 거의 불가능에 가까운 구조로 되어 있습니다 . 또한 블록체인은 참여하는 수많은 노드로 네트워크를 이루고 있기 때문에 거시적인 관점에서는 하나의 신뢰 네트워크로 볼 수 있습니다 .

퍼블릭 블록체인 (Public Blockchain) 과 프라이빗 블록체인 (Private Blockchain)

​ ​ ​ 블록체인 네트워크에 별다른 인증과정 없이 누구라도 참여할 수 있는 블록체인을 퍼블릭 블록체인 또는 Permissionless 블록체인이라 하며 , 이와는 다르게 블록체인 네트워크에 참여하기 위해서는 사용자 인증을 거쳐야 하고 , 권한에 따라 수행할 수 있는 행위가 제한되는 블록체인을 프라이빗 블록체인 또는 Permissioned 블록체인이라 합니다 .

퍼블릭 블록체인과 프라이빗 블록체인은 그 탄생 배경 자체가 다르기 때문에 아키텍처라든가 거래간의 합의를 위한 알고리즘 등 많은 부분이 상이합니다 .

​ ​ 대표적인 퍼블릭 블록체인이 바로 비트코인이며 , 요즘 뜨고있는 이더리움 (ethereum) 이 있습니다. 그리고 대표적인 프라이빗 블록체인으로는 하이퍼레져 패브릭 (Hyperledger Fabric) 이 있습니다 .

블록체인에 대한 개략적인 내용은 이정도로 하고, 다음 포스팅에서는 비트코인의 동작 원리를 살펴보고 블록체인이 구체적으로 어떻게 활용되고 있는지 알아봅니다. 그리고 비트코인이 발행되는 채굴과 관련된 부분은 실제 파이썬 코드를 이용해 이해해 보도록 하겠습니다 . ​

비트코인에 대한 모든 것

베일에 쌓인 창시자인 사토시 나카모토가 원했던 바대로, 비트코인는 탈중앙화된 특성을 가지기 때문에 어느 한 객체가 네트워크에 대한 액세스를 통제하거나 막거나 제한할 수 없습니다. 또한 그러한 특성으로 인해 훨씬 더 많은 결과가 도출됩니다.

비트코인은 여러 핵심적인 속성이 고유한 방식으로 결합되어 기존의 화폐나 다른 재산과는 차별적입니다. 이제 간단하면서도 기억하기 쉽게 그 속성에 대해 설명해 드리도록 하겠습니다. 좀 구태의연하지만 효과 만점인 약어를 사용해서 말이죠.

준비되셨나요? 그러면 시작해 볼까요…!

나만의 은행이 되어 보세요(Be your own bank).

비트코인은 완전한 P2P 네트워크를 성공적으로 제시한 최초의 금융 시스템입니다. 블록체인 기술 덕분에 그때까지 해결이 불가능했던 이중 지불 문제를 극복한 최초의 암호화폐인 것입니다. 즉, BTC를 비롯한 일반적인 암호화폐를 사용하면 돈이나 트랜잭션에 있어 은행이나 다른 기관을 신뢰할 필요가 없습니다. 전 세계의 누구와도 자유롭게 직접 거래할 수 있습니다.

해킹이 불가능합니다(Impossible to hack).

탈중앙화는 블록체인 네트워크와 블록체인의 자율성에 필수적인 요소입니다. 왜냐하면 탈중앙화로 인해 보안이 강화되고 간섭의 영향도 어느 정도 차단되기 때문입니다.

예를 들어 보겠습니다. 은행이나 준비금과 같은 중앙화된 환경에서는, 컴퓨터가 해킹되는 경우, 모든 것이 끝입니다. 시스템상 중앙의 핵심부에 중요한 정보가 저장되어 관리되고 있기 때문입니다.

그러나 블록체인과 같은 탈중앙화된 네트워크에서는 전 세계에 분산되어 있는 수천개의 노드가 네트워크를 제어하고 있으며 네트워크에 영향을 미치려면 그 중 51% 이상을 손아귀에 넣어야 합니다. 해커가 통제권을 손에 넣으려면 수없이 많은 다양한 컴퓨터를 공격해야 하기 때문에 사실상 이는 불가능에 가깝습니다. 모든 트랜잭션이 커뮤니티 네트워크에 의해 검증되기 때문에 사기가 있을 수 없습니다. 가짜 트랜잭션은 거부됩니다. 그렇기 때문에 자금 이체가 안전하게 이루어질 것이라고 확신할 수 있습니다. 간단히 말해서 해킹은 불가능합니다.

폭넓고 빠른 거래(Thick & fast)

비트코인 트랜잭션은 국경에 구애를 받지 않고 전 세계 어디에서나 거의 즉각적으로 전송이 이루어집니다. 국내 트랜젝션과 국제 트랜잭션에 소요되는 시간과 수수료가 동일합니다. 또한 기존의 국제 트랜잭션이 근무일 기준 1~4일이 소요되는 반면 BTC 트랜잭션은 완료까지 대략 10분이 소요됩니다.

크리스탈처럼 투명한 거래(Crystal clear)

비트코인은 완벽한 오픈 소스 기반이기 때문에 투명성이 무기가 됩니다. 이는 모든 사람이 코드를 면밀히 드려다 볼 수 있고 그 작동 방식을 확인할 수 있다는 의미입니다. 또한 모든 트랜잭션이 블록체인에 공개되어 비트코인 계정 및 잔액과 관련해 개인이 모든 데이터를 확인할 수 있습니다.

자산에 대한 소유권을 되찾아 줍니다(Own your money).

비트코인에는 여러분의 돈을 가지고 이래라 저래라하는 중앙 기관이 없습니다. 금융기관에 맡긴 자산과는 다르게 비트코인의 경우 본인이 본인의 자산에 대한 완벽한 제어 권한을 가지며 동시에 완벽한 소유권도 유지합니다. 따라서 권력 남용의 위험이 없습니다. 또한 신탁 위반도 발생할 수 없습니다.

익명성(INCOGNITO)

비트코인의 트랜잭션은 완벽히 공개되지만, 트랜잭션 수행 시 사용자는 익명을 사용할 수 있습니다. 비트코인에서 사용되는 주소는 문자열로써, 그 자체로는 어느 한 개인을 특정할 수 없습니다. 처음 암호화폐 구매 시에는 보통 실제 신분증을 제시해야 하며, 이 신분증은 이론상 최초 지갑에서 발생하는 트랜잭션과 사용자를 연결짓는 데 사용될 수 있습니다. 그러나 블록체인 그 자체에서는 개인정보를 전혀 제시하지 않고도 자유롭게 거래할 수 있습니다.

투기 그 이상의 의미(Not only for speculation)

비트코인은 단순한 투기성 자산이 아닙니다. 비트코인은 처음에 “디지털 캐시”처럼 결제 수단으로 설계되었습니다. 비트코인의 인기에 힘입어 도입률과 이용 사례가 증가하게 되었습니다. 예를 들면 피자에서부터 람보르기니에 이르기까지 다양한 재화를 구매할 수 있게 된 것입니다. 비트코인으로 이루어진 최초의 구매는 피자 두 판이었습니다. 그 당시 그 피자 두 판 가격을 달러로 환산하면 대략 40달러 정도였습니다. 이는 오늘날 2억 달러가 넘습니다.

2017년에 “비트코인 람보(Bitcoin Lambo)”라는 문구가 일반적인 유행어가 되었습니다: 이는 그 당시에 비트코인 가격이 천정부지로 치솟게 되자 소유한 비트코인으로 언제쯤 람보르기니를 살 수 있을까를 궁리하는 사람들을 일컫는 속어였습니다. 같은 맥락에서 “웬 람보(When Lambo)”라는 암호화폐 세계의 속어도 있었습니다.

이제는 비트코인으로 고급 주택이나 우주여행 티켓도 구매가 가능하며, 이는 거액의 트랜잭션과 투자의 결재 수단으로 비트코인이 통용되고 있음을 잘 보여주는 예입니다. 이러한 추세가 아직은 모든 사람에게 통용되는 것은 아니지만 비트코인이 이렇게 점진적으로 주류 세계로 편입되고 있다는 사실은 그 미래가 밝다는 것을 의미합니다.

비트코인의 실제 활용 시, 그 작동 방식

이전에 블록체인 트랜잭션의 원리를 설명해 드린 바 있습니다. 외부 기관의 통제로부터 분리되어 투명하고, 안전하며 익명의 P2P 가치 교환이 가능하죠. 비트코인, 즉 BTC도 이와 같은 원리입니다. 그 단계를 다시 살펴 볼까요:

BTC 트랜잭션의 원리는?

아직까지는 다 아는 내용일 것입니다. 그러나 비트코인에 대해 완벽하게 이해하려면 작업증명, 즉 비트코인 네트워크가 트랜잭션을 확인하고 검증하는 데 사용하는 프로세스, 또는 프로토콜인 작업증명을 알아야 합니다. 이 프로토콜은 해당 블록체인의 규칙에 따라 암호화폐마다 상이합니다.

작업증명의 개념 설명

작업증명 시스템의 트랜잭션 검증 방식은 채굴자로 하여금 마치 거대한 스도쿠와 같은 엄청나게 복잡한 퍼즐을 푸는 방식으로 블록을 검증한 후 해당 트랜잭션을 블록체인에 추가하도록 동기를 부여하는 형태입니다. 퍼즐을 가장 빨리 푸는 채굴자가 새로운 블록을 체인에 추가하게 되고 그 대가로 일정 액수의 BTC를 보상으로 받게 됩니다. 이러한 프로세스를 채굴이라고 부릅니다.

그렇다면 이런 경쟁 시스템을 이용하는 이유는 무엇일까요? 그 이유는 새로운 블록을 풀기 위해 경쟁하는 과정에서 채굴자들의 연산 능력이 비트코인 네트워크에 하나로 결집해 안정성, 보안성 및 탈중화가 가능해지기 때문입니다. 실제로 한 명의 채굴자가 악의적으로 행동하거나, 위태로운 상황에 놓이게 되는 경우에도 네트워크의 나머지 모든 참가자들은 트랜잭션의 정확성을 확인하고 정확한 블록만 체인에 추가되도록 할 것입니다. 해커가 이 합의를 중단시키기 위해 네트워크의 50% 이상을 장악하는 것은 거의 불가능합니다. 바로 이것이 작업증명의 핵심입니다.

이제 기초를 학습했으니… 더 깊게 들어가 봅시다!

네, 지금까지 비트코인의 기초에 관한 속성 과정을 성공적으로 마치셨습니다! 물론 전체 내용을 마스터한 것은 아니지만, 심화 과정으로 넘어가거나 약간의 비트코인 투자도 시작해 볼 법한 수준으로 학습하셨습니다. 또한 이제 다른 암호화폐와의 여정도 생각해 볼 수 있는 단계라고 할 수 있습니다! 물론 Ledger 아카데미가 앞의로의 여정도 함께 할 것입니다.

아는 것이 힘이다.

또한 끊임없이 학습하세요! 암호화폐와 블록체인에 대한 학습이 즐거우셨다면 School of Block을 통해 비트코인이 그렇게 많은 사람들의 입에 오르 내리는 이유를 알아 보세요.

비트코인 사용원리

최근 뉴스, 기사 등을 통해 심심치 않게 비트코인을 접한다.

비트코인은 중앙의 통제없이 P2P 네트워크를 이용해 거래를 가능하게 하는 가상화폐를 의미하며,

송금자(송신자)의 서명과 소유자(수신자)의 정보를 가지고 있어, 수표에 이름과 전화번호(또는 주민번호)를 기재했었던 것 처럼, 신뢰성을 확보하고 있다.

비트코인 이전에도 가상화폐는 있었지만, 실제 가상화폐로 사용되기에는 동시 거래 문제 등의 많은 문제점을 가지고 있었다. 비트코인의 등장은 이전의 가상화폐가 해결하지 못했던 문제점들을 해결하였고, 다음의 특성을 제공함으로써 실생활에서도 사용 가능하도록 하였다.

- 탈중앙화 : 중앙의 통제없이 P2P시스템을 이용하여 거래 가능
- 투명성 : 거래내역을 모든 참여자가 공유
- 익명성 : 공유되는 거래에 대해서는 참여자의 익명성을 보장
- 신뢰성 : 위변조에 대한 검증 및 합의를 통해 신뢰성 확보

비트코인 지갑

비트코인을 송수금 하려면 클라이언트 측면의 소프트웨어가 필요하다. 이러한 소프트웨어로 비트코인 지갑이라는 것이 있으며, 비트코인의 키와 주소를 관리하고 거래를 가능하게 해준다.
(이 비트코인 지갑은 실제로 비트코인을 보관하는 지갑은 아니고, 비트코인의 거래 내역을 보관하고, 송수금 할 수 있는 권한을 부여해 준다.)

비트코인 지갑을 만들면 개인키와 공개키가 생성되고, 비트코인 주소가 만들어진다. 비트코인 주소는 은행 계좌와 같은 역할을 하는데, 비트코인 주소가 생성되는 과정을 조금 더 자세히 들여다보면 다음과 같다.

1. 먼저 개인키와 공개키 쌍을 만든다.
(개인키를 만들면, 개인키로부터 공개키가 만들어 진다. 비트코인에서는 공개키 쌍을 만들기 위해 타원곡선 암호화 알고리즘을 사용한다.)

2. 공개키를 해시함수에 통과시켜 비트코인 주소를 만든다.
(공개키에 SHA-256를 적용하고, 그 결과값에 RIPEMD160를 적용하면, 160비트의 문자가 생성된다.그리고 이 문자의 앞뒤에 각각 1Byte의 버전 프리픽스와 4Byte 체크섬을 추가한 후, Base58로 인코딩하면 비트코인 주소가 생성된다.)


비트코인 거래과정

비트코인 지갑을 이용하면 비트코인의 송수금이 가능하다.
A가 B에게 송금하고, B가 C에게 송금하는 절차를 살펴보면 다음과 같다.

이 그림은 아주 많이 접해본 그림일 것이다.
그럼에도 한번 더 보도록 하자.

A에게 송금 되어진 비트코인이 있다.
그 비트코인의 마지막 트랜잭션은 A의 주소(공개키)와 A에게 보내는 거래 정보의 해시값을 가지고 있다.
A가 이 비트코인을 사용하기 위해서는 자신의 개인키를 이용하여 소유자가 본인임을 서명하여야 한다. 그리고 B에게 송금하기 위해 B의 공개키로 거래 정보를 암호화하여 브로드캐스트한다.
(송금자는 비트코인에 전자서명을 하여 소유권을 넘기게 되는데, 이 때, 수금자의 계좌 정보를 이용해 수금자의 공개키로 암호화하여 전달한다.)
그리고 B 역시 자신의 개인키로 서명함으로써 비트코인을 소유하게 되고, 다음 거래를 할 수 있게 된다.

이 부분을 조금 더 자세히 살펴보겠다.

간만에 사람을 등장시켜야 하는데, 우리 가족이 좋아하는 에이핑크가 조금 수고해 주어야 할 것같다.

* 예로 들려는 사례는 보미가 나은에게 4.5 BTC를 보내고, 나은이 초롱에게 4.0 BTC를 보내는 사례이다.(수수료는 0.5 BTC로 가정한다.)

비트코인의 소유권이 자신에게 있음을 증명하기 위해 자신의 개인키로 서명을 하고,
나은의 주소로 4.5 BTC 보낼 것임을 기입한다.

2) 블록체인 인프라가 하는 일

블록체인 내 데이터에 공개된 나은의 공개키를 이용해 나은과의 거래를 암호화하고, 잔고에 남아있는 돈에서 수수료를 제외한 금액을 보미에게 돌려주는 추가적인 거래를 만든다.(여기서는 보미에게 남은 잔액이 없어, 수수료만 0.5 BTC 지불한다.)

그리고 이 때, 보미의 개인키를 이용하여 이전 거래의 수금자가 보미가 맞음을 확인하게 되는데, 이 부분은 뒤의 ‘나은 → 초롱’의 거래에서 다시 한번 살펴보도록 하겠다.

나은은 자신의 개인키를 이용하여 서명란에 서명을 하고(보미의 경우와 동일), 초롱의 비트코인 주소와 송금할 금액을 기입한다.

4) 블록체인 인프라가 하는 일

나은이가 자신의 개인키로 서명을 할 때, ‘보미 → 나은’ 거래에서 나은의 공개키로 잠가두었던 “나은 : 4.5 BTC”가 해당 개인키로 열리는지 확인한다. 이것은 이전 거래에서 수금인이 나은이었음을 확인하는 것이다.
그리고 ‘보미 → 나은’의 거래와 마찬가지로 블록체인에 공개된 초롱의 공개키를 이용해 거래를 암호화하고, 잔금(거스름돈)에 대한 거래가 필요할 경우에는 나은의 공개키로 암호화 한다.
(※ 비트코인의 특징은 주소의 잔액이 송금 금액보다 큰 경우, 송금자에게 거스름돈을 돌려주는 방식을 취한다. 그래서 이 경우에 거래내역은 2개가 된다.)

나중에 거래를 하고자 할 때, 서명을 하면 된다.(예시 그림에서는 OOO에게 전송하는 것까지 포함하였다.)

거래의 검증과 UTXO

위 그림의 가장 마지막 트랜잭션의 출력부를 보면, ‘ㅇㅇㅇ의 잔액’이라고 되어 있다.

비트코인에서는 이 잔액을 UTXO(Unspent transaction output)라고 부르며, 사용되지 않은 비트코인 덩어리(소비되지 않은 거래 출력값), 즉 소유자가 사용 가능한 비트코인 덩어리를 의미한다.

UTXO라는 용어가 다소 생소할 수 있지만 비트코인에서의 거래는 UTXO의 소유권을 이전하는 것을 말한다.
트랜잭션(거래)의 입력부에도 누구누구의 잔액이 있는 것을 볼 수 있듯이 송금자의 UTXO를 쪼개서 보내어 수금자의 UTXO를 새롭게 하는 것이 비트코인의 거래이다.
이 UTXO는 거래가 일어날 때 수금자의 공개키로 암호화되며, 수금자가 사용하고자 할 때 개인키로 서명함으로써 사용 가능하다.

비트코인의 거래를 검증하고자 할 때에는 이 UTXO를 이용한다. 송금자의 UTXO는 블록체인 상에 존재하는 트랜잭션(거래)을 찾아갈 수 있는 포인터 역할을 한다.
위의 그림에서 총 4개의 트랜잭션(거래)을 볼 수 있는데, 이 거래들은 블록체인에 순차적 연결되는 것이 아니다. 첫번째 거래는 100번째 블록의 4번째 트랜잭션일 수 있고, 두번째 거래는 200번째 블록의 7번째 트랜잭션일 수 있다. 그래서 이전 거래의 포인터 역할을 하는 UTXO가 중요하다.

블록 생성과 작업 증명(POW)

이러한 거래들은 비트코인 네트워크에 송출되어 채굴자에게 보내진다.

채굴은 비트코인에서 제시하는 어려운 문제를 풀어 그 해답을 제시하는 경우, 보상이 주어지는 것을 의미하며, 채굴에 성공하면 블록이 생성되고, 블록 안에 들어있는 트랜잭션(거래)의 수수료를 채굴자가 보상으로 가지게 된다.
(채굴의 자세한 메커니즘은 뒷 부분에서 상세히 다루도록 하겠다.)

채굴자가 채굴을 성공하는데에는 약 10분 정도의 시간이 소요된다. 그 말은 하나의 블록 안에 10분 동안의 거래가 쌓이도록 한다는 것인데, 채굴 시간이 10분 내외가 되도록 비트코인 인프라에서 채굴의 난이도를 조정한다.
(한 개의 블록이 포함하는 거래수는 1000~2000여개로, 비트코인 네트워크는 초당 약 2~3개의 트랜잭션을 처리한다.)

채굴이 성공하면, 작업의 증명(POW, Proof-Of-Work)이라고 하여 새로운 블록을 블록체인에 추가하는 것에 대한 증명을 하게 된다. 비트코인 네트워크에 블록을 보내어 한번 더 검증을 받는 것이다.(채굴자가 트랜잭션을 묶어 블록을 생성할 때, 이미 1번의 검증이 수행되었다.)
그리고 이것이 51%의 참여자에게서 이루어져야만 비로소 블록이 생성된다.

거래의 최종 승인

거래가 최종적으로 승인 받기 위해서는 블록이 튼튼한 사슬을 가지고 있는지 확인되어야 한다.
거래가 동시 다발적으로 이루어지면서 동시에 블록이 생성되어 연결될 경우, 가장 긴 사슬로 연결된 블록체인만 살아남고, 나머지 블록과 사슬관계는 소멸된다. 물론 그 안에 있는 거래들도 소멸된다. 그렇기에 블록이 끝까지 살아남았을 때, 거래가 최종 승인된다고 볼 수 있으며,
통상 뒤로 6개가 연결되면 문제가 없더라..라는 가정하에 6개가 뒤에 붙었을 때, 거래가 승인된 것으로 간주한다. 하나의 블록이 생성되는데 걸리는 시간이 10분이므로 거래를 신뢰할 수 있을 때까지는 최소 1시간의 시간이 필요하며, 안전하게 하려면 24시간은 기다려야 한다.

소프트 포크와 하드 포크

위의 분기되어 소멸되는 그림과 비슷해 보이지만 조금 다른 형태의 분기가 있다.
‘나뉘다, 갈라지다’의 뜻을 가진 “포크(Fork)"라는 것인데, 기존 블록체인과 호환이 되느냐, 안되느냐에 따라 소프트포크와 하드포크로 나눌 수 있다.

소프트포크는 호환성을 유지하는 버전 업 정도로 보면 될 수 있는데, 대표적인 사례가 ‘세그윗(SegWit)’이다. 세그윗은 Segregated(분리된)과 Witness(증인)의 합성어로, 1개 블록의 저장 용량이 1MB라는 한계의 해결을 위해 비트코인 트랜잭션 내의 서명을 따로 분리하여 관리하는 기능이다. 단순히 소프트웨어 업데이트만으로도 가능하며, 이전 버전과 호환이 되고 비트코인 네트워크에 큰 영향을 미치지 않는다.

반면 하드포크는 새로운 블록체인을 구성한다고 보아야 한다. 심각한 보안취약점이 발견되거나 완전히 새로운 기능을 추가하고자 할 때, 하드포크를 한다. 하드포크로 새로운 가상화폐가 만들어지기도 하는데, 대표적인 사례가 ‘비트코인캐시(Bitcoin Cash)’이다. 비트코인캐시는 최대 8MB까지 용량 확장이 가능해 처리속도가 빠르고 수수료도 저렴하다는 특징을 가지고 있다.

비트코인 네트워크

앞서 비트코인 네트워크가 반복적으로 언급되었다.
비트코인 네트워크는 비트코인을 거래하고, 채굴하는 모든 사람들이 엮여있는 P2P(Peer to Peer) 방식의 네트워크를 말하며, 개념적으로 크게 Full Node, SPV(Simplified Payment Verification) 비트코인 사용원리 Node, Mining Node로 분류할 수 있다.

비트코인 네트워크를 살펴보면서, SPN Node는 블록 헤더만 가진다고 하였다.
그럼 블록 헤더란 무엇일까?

블록의 구조를 살펴보면, 블록은 크게 헤더와 바디로 구성된다.
헤더는 '이전 블록 헤더의 해시값(Prev Block Hash)', '머클해시(Merkle Hash)', 'Time', 'Nonce' 등을 포함하고, 바디는 트랜잭션들을 저장한다.

바디를 구성하는 트랜잭션은 상대적으로 많은 용량을 필요로 한다. 그래서 각 트랜잭션에 대한 해시값만을 이진트리로 비트코인 사용원리 구성하여 가장 상위의 루트(해시)만 헤더에 포함시킨다.

비트코인의 채굴

블록의 구조에서 보았던 구성요소들을 살펴보겠다.
여기서 낯선 용어가 보일텐테, Nonce, Bits가 그렇지 않나 싶다.

​(* 참고로 Ver(=Version)는 비트코인 소프트웨어 버전 정보, Time(=Timestamp)는 블록 생성 날짜, Transaction Count는 트랜잭션의 총 개수이다.)

Nonce와 Bits는 모두 채굴을 위한 요소이다. Nonce는 채굴을 위한 임의의 값이고, Bits는 난이도를 조절하는 4Byte의 값이다.

비트코인은 화폐로서의 역할을 하여야 하기 때문에 화폐 발행이 필요하다. 그것을 채굴이라는 아이디어에서 찾아냈으며, 채굴에 성공하였다는 것은 블록의 해시값이 어떤 정해진 수(타겟)보다 작게 나왔다는 것을 의미한다.
블록의 해시값은 Nonce를 바꿈으로써 조절이 가능한데, 따라서 블록 해시가 타겟보다 작아지는 “Nonce”를 찾아내는게 채굴이다.

여기서 블록 해시가 타겟 보다 작다는 것은 블록 해시의 앞부분 0의 개수가 타겟의 앞부부 0의 개수보다 적다는 것을 말한다. 타겟은 bits(4Byte)에 의해 만들어진 64자리 16진수 값으로,
bits를 미리 정의된 공식에 넣게 되면 앞자리가 0으로 가득한 타겟이 생성된다.

이 Nonce를 구하는 것이 어려운 이유는,
예를 들어, 맨 앞자리에 0이 한 개라면 16^63개 만큼의 해답이 있지만, 0이 늘어날 수록 16^62개, 16^61개. 로 답이 줄어들기 때문이다. 최악의 경우에는 64자리가 모두 0인 단 1개의 해답만이 있을 수도 있다.
그래서 0의 개수로 조정을 하는 것이며, 블록들이 생성되는 시간을 모니터링 하면서 채굴에 소요되는 시간이 10분 정도가 되도록 Bits를 조정한다.

비트코인 인프라

하나의 블록을 생성하기 위해서는 꽤 수준높은 하드웨어 성능을 요구한다.
블록을 생성하면 비트코인을 준다는 아이디어는 그 의도에 적중하여 서로 블록을 생성하고 싶도록 하는 동기를 부여하였으며, P2P 네트워크상의 하드웨어는 점점 발전하게 되었다.

한 때 그래픽카드가 무수히 팔린 적이 있다. Nonce 값을 먼저 알아내기 위해서는 그래픽카드 사양이 중요하다는 것 때문이었다.
결국 비트코인 인프라는 매우 수준이 높은 하드웨어로 구성되게 되었고, 그것에 들어간 비용이 비트코인의 가치보다 더 클 것이라는 말들까지도 생기게 되었다.

비트코인의 문제점

비트코인이 많이 발전하였지만 아직 문제점은 남아있다.
10분이라는 긴 검증 시간과 거래 확정이 불분명 하다는 점, 블록들이 쌓일 수록 더 큰 용량을 감당해야 한다는 점, 그리고 비트코인이 총 2,100만개로 한정되어 있다는 점이다. 거래소의 투명성 확보와 중앙기관 역할을 하고 있는 것도 문제로 제기되고 있다.

문과생이 설명하는 비트코인 원리

오늘은 비트코인에 대한 내용을 가져왔는데요. 잘 정리되어 있고 이해하기 쉬운 컨텐츠는 찾기 어렵더라구요. 이미 여기저기서 접했지만 비트코인을 잘 이해가 되지 않는 분들을 위해 쉽게 쓰려고 노력했습니다.

이 글을 쓰기 위해서 참고한 영상은 처음 비트코인을 비트코인 사용원리 비트코인 사용원리 접했을 때 여러 영상들을 보았지만 가장 함축적이고 가장 이해하기 쉬웠던 영상이기 때문에 참고하였습니다. 처음에는 단순 번역으로 써나가기 시작했는데 쓰다보니 아예 다른 내용이 되어 참고영상이라고 올렸습니다.

자, 그럼 쉽고! 빠르고! 정확하게! 비트코인에 대해서 알아봅시다!

비트코인의 특징 1: 중앙정부의 통제의 부재

비트코인은 우리가 사용하는 돈들과는 다릅니다. 정부에서 찍어내는 게 아니에요. 우리나라 돈인 원화는 우리나라 정부에서 그 가치를 보장해줍니다. 미화는 미국정부가 그 가치를 보장해주죠. 한 마디로 비트코인에서는 화폐의 가치를 보장해주는 정부가 없어지는 것입니다.

보통 우리가 사용하는 직접 만질 수 있는 종이화폐는 정부에서 얼마나 만들어낼지를 결정하고 그리고 그 돈이 어디로 흘러나가고 있는지를 은행을 통해서 알 수가 있습니다. 우리가 송금할 때, 은행을 통해서 돈을 보내죠. 그리고 이 돈을 보냈다는 것을 증명하고 보증해주는 의미로 은행은 그 댓가를 가져갑니다. 돈을 보증해준다는 이유로 수수료를 가져가는 것입니다.

사토시 나카모토가 비트코인을 만든 이유가 바로 여기에 있어요. 원화든 미화든 정부를 믿을 수 없다! 그래서 정부나 은행이 없는 화폐를 만들겠다!라는 마음으로 비트코인을 만든 것이죠.

그럼 여기서 의문점이 생기죠. 그렇다면 비트코인은 어떻게 정부나 은행의 보증없이 돈의 가치를 가지는 것일까요? 정부나 은행을 대신하는 것은 바로 컴퓨터 기술이죠. 그러면 그 기술이 무엇인지 한 번 알아볼까요?

비트코인 특징 2: P2P방식의 거래내역

비트코인은 가상화폐이며 사람과 사람을 연결해주는 P2P네트워크 방식으로 돈을 주고 받을 수가 있습니다. P2P를 통해서 음악, 이미지, 영상을 주고받아 보셨을 거에요. 그런데 여기서 다른 점은 음악, 이미지, 영상이 아닌 화폐를 주고받는 것이죠.

그럼 화폐를 그냥 복사해서 보내는 것일까요? 아니요. 비트코인은 복사해서 사용할 수가 없습니다. 암호화되어 있거든요. Crypto라는 말은 암호라는 뜻을 가지고 있습니다. 그래서 우리는 비트코인을 Cryptocurrency, 즉, 암호화폐라고 부르는 것입니다.

비트코인 특징 3: 탈중앙화 된 장부

블록체인은 한 번 거래했을 때마다 그 거래에 대한 기록을 남겨요. 예를 들어 A가 1000원을 B에게 보냈다 이런 식으로요. 이러한 기록은 블록체인 안에서 거래를 하는 모든 사람들의 장부에 기록이 됩니다.

그렇다면, 이제 비트코인은 전세계적으로 일어나는 거래를 기록하는 장부라는 개념이 잡힐 거에요. 그리고 이 거래기록을 하나의 블록체인이라고 생각하면 됩니다.

모두가 같은 장부의 내용을 가지고 있다라는 이 개념을 사람들은 탈중앙화되어 있다고 말합니다. 은행과 같은 중앙 한 곳에서 장부를 가지고 있는 것이 아니라 여러 군데에서! 모두가! 가지고 있기 때문에 탈중앙화되어 있다고 말하는 거에요.

고스톱으로 이해하는 탈중앙화 된 장부의 원리

그럼 이제 어떻게 모든 사람들이 장부를 가질 수 있게 되는 지를 고스톱을 예를 들어볼게요. 여러명의 사람들과 고스톱을 치고 있다고 해봅시다. 하지만 사람들이 다 지갑을 못가져왔네요. 그래서 각자 공책을 꺼내서 누가 이겨서 얼마를 갖고가게 되는 지, 누가 얼마를 잃게 되는 지를 모두가 적기로 한 거에요. 왜 모두 적냐구요?

만약에 사기꾼같은 지랄맞은 삼촌이 공책에다 자기가 100만원 벌었다고 뙇!!하고 써놓으면 어떡하냐구요. 그래서! 모두가! 공평하게 공책에 적기로 한겁니다. 그리고나서 재밌는 고스톱 게임이 끝나면, 무엇을 적었는 지를 같이 확인해봅니다.

그런데 여기서 갑자기 삼촌이 내가 100만원 벌었소!라고 썼으면 모든 친척들이 노발대발하며 일어나서 머리 끄잡아땡기겠죠? 여기서 중요한 사실은 사기로 공책에 다른 내용을 쓰면 걸린다는 거에요. 그리고 공책에 적은 각각의 페이지는 하나의 블록이 되는 거에요. 그리고 공책에 모든 페이지들이 연결되어 있는 것처럼 이 블록들이 쭉 체인처럼 연결이 되겠죠! 그래서 블록체인이라고 부르는 것입니다.

비트코인 특징 4: 투명성

수천명의 많은 사람들이 전세계적으로 동시다발적으로 거래가 이루어지고 있는데 그 모든 거래내역을 각각 가져야 하는데, 어떻게 그 순서를 맞출 수 있을까요?

아까 전에 말했던 고스톱을 다시 예로 들어봅시다. 고스톱을 치고 있는 판은 P2P네트워크이고, 거기에는 돈을 주고 받는 사람들이 있습니다. 또한 그 장부를 따로 기록하는 자원봉사자들이 있다고 해봅시다. 그러니까 돈을 주고받을 때마다 장부를 기록하는 자원봉사자들은 자신이 기록해 준 정보를 테이블에 있는 모든 사람들에게 알려줘야 합니다. 그래야 모든 사람들이 그 정보를 기록해서 가지고 있을 수 있으니까요.

자원봉사자들이 모든 사람들에게 알리고, 장부에 기록해야하는 것은 계좌 번호, 너가 보내는 사람의 계좌번호, 그리고 얼마의 돈을 보낼것인지를 알려줘야 해요. 그러면 이 내용을 알릴 때마다 새로운 블록 하나가 기존에 있던 다른 블록 뒤에 더해질거에요.

이렇게 보면 모두가 장부를 가지고 있는게 은행이라는 한 곳에서 거래기록을 남기는 것보다 보안성 면에서 훨씬 낫겠죠? 만약에 은행이 해킹이라도 당하면 어떡해요? 모든 기록이 다 날라가는 거잖아요.

비트코인의 특징 5: 보안성

아니, 근데 그러면 모두가 내 정보를 알게되는건가요? 그게 어떻게 더 보안이 높다는 거에요? 내 거래내역 정보가 투명하게 되어있다면 그 정보를 이용할 수도 있잖아요. 그런데 왜 비트코인이 안전하다고 하는거에요?

비트코인은 암호화폐이므로 높은 보안성을 가집니다. 왜냐하면 키라는 게 있거든요. 키라는 건 어떠한 정보를 참이다 거짓이다를 판별해주는 수학적으로 보증해주역할을 해요. 우리의 정보는 암호화되어 있고 이것을 열 수 있게 해주는 것이 바로 키의 역할이에요.

비트코인의 P2P네트워크에서 계정을 만들면, 그 계정의 지갑은 두 개의 키를 갖고 되요. 바로 프라이빗 키와 퍼블릭 키가 있죠.

프라이빗 키는 나만이 가지고 있는 키 입니다. 반대로 퍼블릭 키는 모든 사람들이 가지고 있는 키에요. 프라이빗 키로는 내 정보를 나만이 볼 수 있는 역할을 합니다. 그리고 퍼블릭 키는 프라이빗 키가 진짜인지 아닌지를 증명해주는 역할을 합니다.

만약에 내 신용카드 정보가 있다면 이 정보를 볼 수 있는 건 나뿐인데, 프라이빗 키를 이용해 서명을 하면 오직 나만이 이 정보를 볼 수가 있는거에요. 다른 사람 그 어떤 누구도 나의 프라이빗 키를 복제할 수 없습니다. 그렇다면 내가 가지고 있는 프라이빗 키가 진짜냐 아니냐하는 것은 모두가 가지고 있는 퍼블릭 키를 통해 서명을 확인하는 것입니다.

다시 말해서, 퍼블릭 키가 작동한다는 것은 나의 프라이빗 키가 진짜라는 것을 증명해주는 것이고 비트코인 사용원리 이 프라이빗 키를 통해서오직 나만이 볼 수 있는 정보를 볼 수 있게 됨으로 나라는 것을 증명할 수 있겠죠.이것을 통해서 누군가가 나인척을 하며 내 돈을 빼돌리지 못하겠죠.

비트코인 특징 6: 이중지출문제의 해결

만약에 어떤 사람이 돈 1000만원을 가지고 있었고 그 1000만원을 두 번썼다고 가정해봅시다. 은행의 경우라면 각각의 두 번의 거래에 대해서 처음에 쓴 1000만원은 맞는 거래이지만, 두번째로 쓴 1000만원에 대해서는 승인해주지 않을거에요. 만약에 승인해준다면, 나는 총 2000만원을 쓴게 되잖아요. 만약에 은행이 바보처럼 계속 승인만 해준다면, 우리는 돈을 펑펑써도 괜찮아요. 이것을 이중지출 문제라고 부릅니다.

하지만 비트코인의 네트워크에서의 지갑은 자동적으로 그 전의 거래를 찾아 돈을 쓸 충분한 비트코인이 있는지를 확인해 줍니다. 하지만 여기에는 시간차로 생길 수 있는 문제가 있는데요, 그 이유는 수많은 전세계의 많은 사람들이 블록체인의 정보를 갖고있기 때문입니다. 만약에 인터넷 환경이 안좋아져서 네트워크에 정보를 보내는데 시간이 걸린다면 모두가 같은 정보를 ‘순차적으로’ 가질 수 없겠죠.

예를 들어, A라는 사람의 장부기록에는 1. A가 500원을 썼다. 2. Z가 1000원을 썼다. 이런 순서이지만, Z에게는 1. Z가 1000원을 썼다. 2. A가 500원을 썼다. 라는 순서가 될 수 있다는 것입니다. 그래서 모든 사람들은 같은 내용의 블록을 가지게 되겠지만, 조금씩 다른 순서의 블록들을 가지게 될거에요. 그렇다면 블록은 어떤 과정을 거쳐서 생겨나는 것일까요?

비트코인의 특징7: 해시함수의 값 구하기 = 채굴

새로운 블록을 생성하려면 쉽게 말해 수학문제를 푸는 것이다라고 생각하면 됩니다. 그리고 이 수학문제는 해시함수문제를 푸는 것입니다. 체인에 또 다른 블록을 붙이기 위해서 사람들은 해시함수문제의 답을 다른 사람들과의 경쟁에서 제일 먼저 찾아야합니다.

해시함수에는 다양한 사이즈를 갖고있는 인풋과 고정된 사이즈의 아웃풋이 있습니다. 사람들은 정해진 숫자(아웃풋)에 다양한 숫자를 넣어보면서(인풋), 맞는 답을 찾으면 되는 것입니다. 인풋은 다양한 숫자의 값을 넣어줄 수 있다는 뜻이고 아웃풋은 이미 정해져있는 특정한 숫자입니다.

해시함수 문제는 인풋을 모두 더해서 10이라는 아웃풋을 만들어라는 식으로 예를 들 수 있어요. 간단한 이 쉬운문제에서도 10을 만들 수 있는 방법은 굉장히 많죠. 인풋값이 1–2–3–4라는 것을 알아내기 위해서는 맞을 때까지 많은 숫자를 넣는 수밖에 없어요. 숫자를 더해서 10을 비트코인 사용원리 만들 수 있는 방법은 무궁무진하니까요.

해시가 암호화폐에 정말 잘 어울리는 이유는 인풋이 정해져있으면 아웃풋은 찾기가 쉽지만 반대로 아웃풋이 정해져 있고 인풋을 찾아야 하는 것은 정말 어렵기 때문에 암호화폐에 딱 어울린다고 할 수 있어요. 수를 합쳐서 만들 수 있는 인풋의 값은 가능성은 무궁무진하고 그 중에서 문제에서 정한 값을 찾기란 정말 힘드니까요.

여태까지 말한 해시 문제는 SHA256이라고도 합니다. Secure Hash Algorithm이 줄임말이며, 미국 국방부에서 고안해낸 방법입니다.

컴퓨터로 SHA256 해시 문제를 풀려면 평균적으로 10분 정도가 걸립니다. 10분이나 걸린다는 말은 문제를 맞추기 전까지 수천 수만개의 오답을 거친다는 뜻인데요, 아까 말했듯이 해시 문제를 먼저 푸는 사람이 다음 블록을 차지할 수 있어요.

여러명의 사람들이 다음 블록이 되기위에 동시에 경쟁한다면, 네트워크는 가장 길고 믿을 수 있는 체인을 선택합니다. 경쟁에서 탈락된 블록들은 다시 나중에 체인에 비트코인 사용원리 붙을 수 있도록 원래의 자리로 다시 돌아갑니다.

그런데 도대체 아까 고스톱 예에서 말했던 자원봉사자들은 왜 비싼 값을 지불하며 SHA256을 풀 수 있는 컴퓨터를 살까요? 거기다 비싼 전기료도 나올텐데 말이에요. 왜 다음 블록이 되려고 그렇게 안간힘을 쓸까요? 그 이유는 비트코인의 시스템에는 그들이 보상을 받을 수 있도록 설계해 놓았기 때문에 블록체인에 하나의 블록을 더할때마다 12개 반의 비트코인을 받을 수 있기 때문입니다.

사실 여태까지 말했던 블록체인에 블록을 더 해주는 이 자원봉사자들은 사실 따로 부르는 이름이 있습니다. 바로, 채굴자입니다. 채굴자라고 부르는 이유는 블록체인을 새로 추가할 때마다 해시문제를 푸는 것이 마치 금을 캐는 듯하여 붙여진 이름입니다.

모든 비트코인은 채굴자들을 보상하기 위해 존재하는 것입니다. 또한 블록에 새울 때마다 코인을 받는 것이 아니라 장부에 새로운 거래내역을 올릴 때에도 작은 보상을 받게 됩니다.

210,000블럭 때마다 코인을 받게 수는 반으로 점점 줄게 되어있습니다. 가장 처음 시작할 때 받은 50개의 보상이 25개가 되고 12개 반이 되고 이제는 몇 년 이내에는 6개만을 받게 되고 그 이후로도 계속 줄어들겠죠.

마지막 비트코인은 2140년도 쯤에 채굴된다고 합니다. 점점 줄어드는 비트코인의 마치 금이 지구에서 캐내져 없어지는 이러한 아이디어는 비트코인이 시간이 지날수록 비트코인의 공급을 줄어들게 하여 가치를 올라가도록 한 것입니다.

비트코인 사용원리

비트코인의 암호화 원리

컴퓨터와 같은 전자기기와 인터넷이 발전하며 우리는 여태까지 상상하지도 못했던 것들을 직・간접적으로 경험할 수 있게 됐다. 현실에서는 가난하지만 사이버 세계에서는 부자가 될 수 있는 것도 그중 하나이다. 그런데 예전에는 사이버세계에서 부자는 현실세계의 부자가 되지 못했지만 요즘은 사이버세계의 부자가 현실세계의 부자로 전환될 수 있는 방법이 등장했다. 바로 비트코인(Bitcoin)을 통하여!

비트코인은 2009년에 ‘나가모토 사토시’라는 익명의 프로그래머에 의하여 개발된 가상의 비트코인 사용원리 비트코인 사용원리 화폐이자 이 화폐가 작동하는 방식이다. 쉽게 말해 ‘싸이월드 도토리’, ‘네이버 캐시’, ‘카카오톡 초코’와 같이 실제 돈은 아니지만 물건을 사거나 서비스 이용료를 결제할 수 있는 돈이다. 그런데 이런 돈과 비트코인의 가장 큰 차이점은 발행처이다. 현실세계에서 사용하는 실물화폐는 화폐의 거래를 담당하고 통화량을 조절하는 은행이 있다. 이를테면 우리나라의 경우 한국은행이 그런 은행이다. 또 ‘싸이월드 도토리’, ‘네이버 캐시’, ‘카카오톡 초코’ 등도 발행하는 곳과 사용하는 곳이 분명하다. 그러나 비트코인은 사용처는 있으나 발행처나 통화량을 조절하는 관리기관이 없다. 즉, 비트코인은 누구나 발행할 수 있고 누구나 사용할 수 있는 신개념의 화폐이다.

우리는 은행을 통해 돈을 이체하거나 우리나라 돈을 다른 나라 돈으로 바꾸려면 수수료를 내야 한다. 심지어 거래하고 있는 은행의 내 돈을 다른 은행이 운영하는 ATM기기를 이용하여 찾을 때도 비싼 수수료를 낸다. 반면 비트코인은 은행이나 환전소를 거치지 않고 당사자들끼리 직거래를 하기 때문에 수수료가 낮거나 없다는 장점이 있다. 하지만 사이버공간에서 직거래는 돈은 지불했는데 물건을 보내주지 않는 것과 같은 사고와 사기의 위험이 따른다. 따라서 가상의 화폐인 비트코인으로 거래를 할 때는 반드시 거래에 대한 신뢰가 필요하다. 그렇다면 비트코인을 암호화하는 방법에는 어떤 것이 있는지 알아보자.

컴퓨터와 같은 전자기기를 이용한 통신 환경은 허락받지 않은 공격자가 통신 중인 정보를 도청하여 변조하거나 다른 내용을 삽입 또는 삭제할 수 있다. 이런 문제점을 해결하는 가장 안전한 방법은 정보를 암호화하는 것이다. 암호화된 정보를 원래대로 되돌리는 것을 복호라고 한다. 정보를 암호화하는 방법은 크게 비밀열쇠방식과 공개열쇠방식이 있다.

비밀열쇠방식은 보내고자하는 정보를 암호화할 때, 암호화하는 열쇠와 복호하는 열쇠가 서로 대칭이다. 즉, 정보를 보내는 쪽이나 받는 쪽 중에서 하나의 열쇠만 알면 다른 쪽의 열쇠를 알 수 있다. 예를 들어 라는 정보를 보내는 경우를 생각해 보자. 정보를 보내는 송신자는 를 암호화하기 위하여 에 를 곱해서 를 만들었다면 송신자의 암호화열쇠는 이다. 또 라는 정보를 받아야할 수신자는 라는 정보를 받았으므로 이것을 복호하려면 여기에 을 곱해야 한다. 그래서 라는 정보를 받는다. 즉, 수신자의 복호열쇠는 송신자의 암호화열쇠 의 역수인 이다. 여기서 송신자의 암호화열쇠가 공개되면 수신자의 복호열쇠도 바로 알 수 있기 때문에 정보는 안전하게 보호되지 못한다.

공개열쇠방식은 보내고자하는 정보를 암호화할 때, 암호화하는 열쇠와 복호하는 열쇠가 서로 대칭이 아니다. 즉, 정보를 보내는 쪽의 암호화열쇠와 받는 쪽의 복호열쇠가 다르기 때문에 암호화열쇠를 공개하여도 암호화된 정보가 무엇인지 알기는 매우 어렵다. 송신자가 정보 를 공개열쇠방식으로 수신자에게 보낼 경우를 대강의 예로 들어보자.

먼저 정보를 받을 수신자는 어떤 두 소수(1과 자기 자신만으로 나누어 떨어지는 1보다 큰 양의 정수)의 곱 4067351을 이용하여 송신자에게 정보를 암호화해서 보내달라고 요청한다. 그러면 송신자는 공개된 암호화열쇠 4067351을 이용하여 정보 를 로 암호화하여 수신자에게 보낸다. 이때 송신자는 공개된 수 4067351만을 이용하여 를 로 암호화한다. 수신자는 4067351의 두 소인수(어떤 정수를 소수만의 곱으로 나타낼 때의 각 인수)를 이용하여 받은 암호문 을 로 복호한다. 암호화된 정보가 송신자로부터 수신자로 전달되는 사이에 공격자가 암호 를 탈취하더라도 4067351이 어떤 두 소수의 곱으로 이루어져 있는지 알 수 없기 때문에 를 로 바꿀 수 없다.

공개열쇠방식은 두 소수(1과 그 수 자신 이외의 자연수로는 똑 떨어지게 나눌 수 없는 자연수) 가 주어졌을 때, 그 두 소수의 곱 은 쉽게 구할 수 있지만 어떤 두 소수의 곱 이 주어졌을 때 이 어떤 두 소수의 곱인지 알기 어렵다는 것에서 착안한 방법이다. 즉, 공개열쇠방식은 누구나 한쪽 방향으로는 쉽게 들어갈 수 있어도 특정한 사용자 이외에는 되돌아올 수 없는 이른바 덫문(trapdoor)과 같은 장치가 마련되어 있다.

이와 같은 원리를 기초로 정보를 암호화하여 보호하는 방식이 비트코인을 주고받을 때 사용되는 공개열쇠암호방식이다. 실제로 두 소수의 곱 을 공개할 때는 두 소수 가 각각 100자리 이상인 소수를 사용한다. 실제로 공개열쇠암호방식이 처음 발표되었던 1977년에 사용한 은 다음과 같다.

그 당시 알려진 인수분해 알고리즘을 이용하여 을 인수분해 하는데 4천조 년이 걸릴 것으로 예상했으나 1994년에 개량된 인수분해 알고리즘이 발표되어 다음과 같은 의 두 소인수 를 구했다.

따라서 비트코인에서 사용하는 공개열쇠암호방식에는 보다 더 큰 소수들이 필요하게 되었고, 오늘날에는 앞의 보다 훨씬 큰 소수를 이용하고 있기 때문에 사이버공간에서 비트코인으로 거래를 할 수 있는 것이다.


0 개 댓글

답장을 남겨주세요