비트코인이 무엇입니까?
얼마 전 도쿄로 이사 가게 되었습니다. 부동산 직원분과 이야기하는 와중, 자연스럽게 제 관심분야에 대한 이야기가 나왔습니다. 다른 지역으로 이사를 가는 것만으로도 쉽지 않은 일인데, 굳이 일본까지 온 이유가 궁금하셨던 듯합니다. 한두 마디를 나누다 보니, 자연스럽게 비트코인에 대한 이야기가 나오게 되었는데. 놀랍게도 부동산 직원분도 비트코인에 대해 알고 계셨습니다. 역시 공중파에서 비트코인 거래소 광고까지 하는 나라라는 생각이 들더군요. 그런 생각이 들 수밖에 없는 게, 부동산 직원분은 IT 쪽에 전혀 관심이 없으시던 분이었거든요. ‘비트코인에 관심을 가져서 알게 된 것은 아니겠구나’라는 생각이 들었습니다.
하지만 블록체인이라는 기술에 대해서는 들어본 적이 없는 듯하셨습니다. 실제로 투자를 하고 계시는 분 같지는 않으니, ‘요즘 비트코인인가 무언가가 유행하고 있다며?’ 정도의 분들께서 블록체인이라는 개념까지 알고 있는 건 약간 무리이겠지요. 하지만 블록체인은 비트코인 그리고 암호 화폐에 관심 있는 분들께선 필히 알아 둬야 할 내용입니다.
그래서 이번 포스트에서는 블록체인의 시작이라 할 수 있는 비트코인의 개념부터 시작해 보도록 하겠습니다. 물론 이런 생각을 하시는 분들도 있을 수 있습니다. “나는 코인 거래로 돈만 벌면 되는데 왜 이런 글을 봐야 하지?” 하고요. 맞는 말입니다. 결국 투자란 돈을 벌기 위해서 하는 거니깐요. 하지만 암호 화폐 투자는 곧 기술적 가치에 대한 투자이고, 현재로는 코인의 유망성을 알아보는 자만이 장기적인 투자를 할 수 있습니다.
코인에 대한 이해가 없는 투자는 바로 손실로 이어집니다. 다시 한번 자세히 다루겠지만 제대로 된 기술 없이, 그저 마케팅만을 통해 가격을 올리고 이익을 얻어 가는 사기(Scam)코인도 있기 때문입니다. 이런 코인들을 구별할 수 있는 능력을 갖추기 어렵다면 암호 화폐 투자는 삼가는 게 좋습니다.
암호 화폐 투자에 대한 첫걸음이자 블록체인에 대한 첫 포스트치고는 서론이 길었습니다. 그러나 언제나, 그리고 항상 당부드리고 싶은 말은. 시장에 대한 이해 없이 벌 수 있는 돈이 없음을 명심하셨으면 좋겠습니다.
은행을 신뢰할 수밖에 없다
제가 공동 저자인 믐늠음름님에게 돈을 보낸다고 합시다. 간단하게 모바일 뱅킹 앱에서 금액을 정하고, 비밀번호를 입력하고, 송금 버튼만 누르면 제가 가지고 있는 돈 중에서 일부를 믐늠음름님에게 보낼 수 있습니다. 이제 곧 믐늠음름님에게서 돈을 받았다고 연락이 올 것이고, 저는 돈이 제대로 송금되었음을 확인하게 됩니다. 얼핏 보면 제가 직접 믐늠음름님에게 돈을 보낸 것 같지만, 엄밀히 말하면 은행이라는 "제삼자에 의한 중계 거래”입니다. 이 과정을 하나씩 살펴봅시다.
은행 서버에는 제가 가진 돈의 액수가 기록되어 있고, 제가 송금을 원하면 제 통장의 액수를 차감하고, 송금된 통장의 액수를 올리면 됩니다. 만약 다른 은행으로 송금한다고 하면 해당 은행 서버에 “블류 통장에 있는 돈을 차감했으니 그쪽의 통장 금액을 올려라”라는 메시지를 보내주면 됩니다.
이런 일이 가능한 건 은행이 신뢰할 수 있는 기관이기 때문입니다. 은행이 통장에 있는 잔액을 조작 할 일이 없다고 ‘신뢰’하고 있는 것이죠. 네트워크를 통한 돈의 이동은 실체가 존재할 수 없기에, 은행과 같이 신뢰 가능한 기관을 통해서만 가능했습니다. 또한 은행은 신뢰를 보증하는 대가로 고객들에게서 ‘수수료’를 받아 가게 되죠.
은행은 이 신뢰를 지키기 위해 노력합니다. 만약 서버가 해킹되어 고객들의 돈이 사라지거나, 전송되어야 할 금액이 변경되거나, 해커의 계좌로 돈이 보내진다면. 은행의 신뢰는 하루 만에 사라지게 될 것입니다. 은행은 신뢰기반의 서비스이기 때문에 이 신뢰관계를 지키지 못하면 정부와 시민들은 은행으로써의 지위권을 가차 없이 박탈해 버립니다. 하지만 은행이 아무리 노력한다 하더라도 은행 서버는 그 데이터의 완전성을 보장할 수 없습니다.
만약 은행 서버에 있는 데이터를 조작할 수 있다면 은행에 있는 돈은 마음대로 할 수 있는 것이죠. 실제로 Carbanak이라는 해킹그룹이 세계 30여 개 나라, 100여 개의 금융회사에서 최대 10억 달러(약 1조 원)를 빼돌렸다고 지난 2015년 카스퍼스키랩에서 발표한 적이 있습니다. 그들은 은행 직원에게 악성코드를 보낸 뒤, 다양한 방법으로 은행 메인 서버에 침투하여 자신들의 계좌로 돈을 직접 송금하거나 ATM 기기에 돈이 나오도록 하는 등, 다양한 방법으로 은행에게서 돈을 빼돌렸습니다. 2016년에도 Carbanak으로 추측되는 해킹그룹이 Odinaff라는 악성코드를 통해 SWIFT(국제은행간통신협회) 사용기관을 공격해 허위거래 기록을 만들어 돈을 빼돌린 것으로 확인되었습니다. 지금까지 어떤 은행이 이들의 공격을 받았는지까지는 공개되지 않았지만, 이미 은행 보안의 허점을 이용해 부당한 방법으로 돈을 빼돌리는 뉴스는 자주 보셨을 겁니다.
이것이 바로 온라인상에서 일어나는 신뢰기반 거래의 문제점입니다. 신뢰할 수 있다는 기관조차 정말 무결한 것이 아니기 때문에 거기에서 발생하는 거래도 정말 무결하다고 볼 수 없는 것이죠. 그래서 제삼자의 신용 보증이 불필요하면서, 거래 과정을 암호화하여 정말 무결함을 보증하려는 전자지불 시스템의 개념이 탄생하게 되었습니다. 바로 비트코인이죠.
블록체인, 비트코인의 시작
비트코인을 개발한 사토시 나카모토가 누구인가?’에 대해선 다른 글에서 하기로 하고. 이번 글에선 비트코인이 어떻게 개발되었는지를 집중해봅시다. 비트코인의 개발자인 사토시 나카모토는 지금까지 당연하게 여겨온 ‘신뢰할 수 있는 제삼자에 의한 거래구조’를 바꾸기 위해, 디지털 서명을 계속 이어가는 구조를 만들어내게 됩니다.
제삼자에 의한 거래구조에서는 모든 과정이 제삼자의 판단에 결정이 되지만, 사토시 나카모토가 창안한 개념에선 거래구조에 참여하는 모든 사람이 판단의 주체가 됩니다. 비트코인의 각 소유자는 코인을 송금할 때, 앞사람의 거래내역과 다른 소유자의 기록에 전자적인 서명을 하여, 이 정보를 송금 데이터에 포함시키게 됩니다. 이러한 과정으로 앞사람의 거래를 승인함과 동시에 다른 소유자의 거래 토대가 되어줍니다. 즉, 비트코인의 핵심은 모두가 거래구조에 참여하여 신뢰를 확보하는 것입니다.
그러나 많은 사람들이 거래에 참여할수록, 개개인이 검증해야 할 거래 기록이 점차 늘어나게 되는 문제가 있습니다. 장부의 기록이 점차 늘어나게 되니, 일일이 다 대조하며 진행하기엔 과정이 복잡해집니다. 그렇다고 장부의 특정 부분만을 대조한다면 누군가는 장부를 위조할 수 있게 됩니다. 그렇기에 비트코인에는 장부를 빠르게 대조할 수 있으면서, 동시에 장부를 위조할 수 없도록 ‘해시(Hash)’ 과정을 사용합니다.
여기서 ‘해시(Hash)’는 암호화 알고리즘으로 데이터 위 변조 여부를 검증할 수 있는 암호화 기술을 말합니다. 여태까지의 거래 내용이 모두 담긴 장부 내용을 암호화하여, 아무런 의미를 담지 않는 하나의 문구로 바꾸어 냅니다. 이렇게 만들어진 암호화 문구를 ‘해시(Hash)’라고 부릅니다. 일반 컴퓨터로는 해시의 과정을 분석하여, 암호화 전의 내용을 해석하기가 불가능에 가깝습니다. 만약 누군가 장부를 위조하려 한다고 해도 다른 사람이 서명한 해시값과 다른 결과가 나오기에, 이를 막을 수 있게 됩니다. 또한 거래가 쌓일 때마다 점차 커질 수밖에 없는 장부를 대조하는 대신 가벼운 해시값을 대조하는 것으로 빠른 처리 속도를 유지합니다.
하지만 이 구조만으로는 누군가가 가지고 있지 않은 돈을 사용한 여부를 확인할 방법이 없습니다. 기존의 시스템에서는 신뢰받는 중앙통제기관에 의해 잔고를 검증하고, 지불 여부를 이중으로 검사받았지만, 제삼자의 신뢰에 의한 작동을 거부한 비트코인에게 이런 시스템은 사용할 수 없습니다.
그래서 비트코인은 ‘모든 거래를 기록하고 공개’하는 것으로 중앙기관 없이 이중 지불 여부를 확인할 수 있도록 하였습니다. 예를 들면 제가 1비트를 가지고 있다고 모두에게 알려준 상태에서, 누군가에게 1비트를 보냈다고 모두에게 알려주는 것이죠. 그러면 이제 모두가 제가 가진 비트코인이 0개라는 것을 모두 알기 때문에 제가 다른 곳에 비트를 보내려 해도 ‘넌 지금 가지고 있는 비트가 없잖아’라는 대답이 돌아오게 됩니다.
장부를 정리하고 공개하기 위해 비트코인은 데이터를 시간 순서대로 모은 다음 하나의 블록 형태로 만들기로 합니다. 해당 시간에 데이터가 명확히 존재했다고 증명할 수 있는 타임스탬프와 거래 기록, 해시값을 담습니다.
여기에 위에서 말한 디지털 서명 구조를 포함시켜 생각해보면, 서로 연결되어 있는 해시값은 서로에게 영향을 주기 때문에 이미 생성된 해시에 포함된 블록은 절대로 내용이 바뀔 수가 없습니다. 다만 완전히 바꿀 수 없는 것은 아닌데, 과거의 블록을 변경하려면 앞서 생성되어 있는 블록들은 전부 새로 생성해야 하기 때문에 거의 불가능에 가까워집니다.
그러면 이 블록은 누가 만들어야 할까요? 당연히 모두가 만들 수 있어야 합니다. 다만 블록의 해시값만을 계산하는 것으로는 너무 빠른 속도로 블록이 생성되고 말아버립니다. 그리고 블록 생성이 너무 쉽다면 블록체인의 거래 기록을 조작하는 것도 쉽습니다. 그래서 블록을 생성하기 위해서는 Proof of work(작업 증명) 과정을 통해 블록의 생성 시간과 난이도를 조절합니다.
Proof of work의 등장
블록 생성에는 누구나 참여할 수 있어야 하기 때문에 참여자가 정당한 의도로 참여할 수밖에 없는 구조를 만들어야 합니다. 좀 더 정확히 말하면, 참여자가 악의적인 의도를 품어도 다수를 점령하지 못하는 이상 비트코인 네트워크에 해를 끼치지 못하는 구조를 유지해야 합니다.
하지만 디지털 세상에서 다수결이란 참으로 위험한 발상입니다. 참여자가 1명이라고 특정하지 못하도록 하는 방법이 너무 많거든요. 속칭 ‘다중이’라고 대표되는 인터넷상의 다중 계정 문제처럼. 인터넷 공간에서는 다양한 방법을 통해 타인을 사칭하거나, 한 사람이 여럿 사람으로 위장하고 연기할 수 있습니다. 타인에게 악플을 남기거나 동의를 받고 싶다는 이유만으로도 다수의 계정을 운용할 수 있는데. 금전적 이득이 걸렸다면 가상의 주소를 수천, 수만 개씩 생성하는 건 일도 아닙니다.
그래서 비트코인은 가상으로 생성할 수 없는, 실질적인 자원이 소비되는 형태로 신분을 증명시키기로 하였습니다. 바로 CPU의 계산력입니다. CPU의 계산력은 실질적으로 자원이 소비되고, 자본이 투입되어야 하기 때문에 공격자가 원하는 대로 생성하는 것이 불가능합니다. 전 세계에 퍼져있는 비트코인을 점령하기 위해서 자본을 투자할 바에야, 차라리 그 돈으로 대대손손 호화 호식하는 쪽이 더 현명한 선택이죠. 이러한 증명을 통하여, 비트코인에는 망을 건전하게 유지하려는 대다수의 사람들로 작업이 이루어지게 됩니다.
비트코인의 블록을 생성하기 위해서는 SHA-256으로 생성된 해시값이 제로 비트(Zero Bits)로 시작하는 값을 찾아야 합니다. SHA-256 암호화 기술은 넣는 값이 조금만 달라져도 완전히 다른 결과물이 나오기 때문에, 0여러 개로 시작하는 값을 찾기 위해서는 아무 데이터나 넣고 직접 계산해볼 수밖에 없습니다.
글을 쓰는 시점에서 막 생성된 503497 블록의 해시값을 보면 “00000000000000000075757adab3cf52f9cbbff7590919878891fd64036c643d”입니다. 이렇게 앞부분에 여러 개의 0으로 시작하는 해시값을 찾는 것이 바로 채굴입니다. 이 앞의 0개 개수는 블록 생성 속도를 컨트롤하는 프로그램에 이해 조정되는데 이 이야기는 나중에 하도록 하겠습니다. 아무튼 현재 블록 생성에 필요한 해시값을 찾기 위해서는 13,823,824,128 GH/s, 초당 1382경 3824조 1280억 번의 계산을 해야 합니다. 참고로 현재 슈퍼컴퓨터 세계 1위인 중국의 타이후라이트(Sunway TaihuLight)가 초당 9경 3000조 번 연산이 가능합니다.
그래서 비트코인 채굴장들은 SHA-256 연산에 특화된 ASIC(application specific integrated circuit, 주문형 CPU)를 만들기까지 하였습니다. 비트코인 채굴기라고도 불리지요. 이를 단순한 계산력으로만 보자면 세계에 있는 모든 슈퍼컴퓨터를 합친 것보다 높은 계산력을 가지고 있습니다. 또한 고성능의 CPU를 장착한 다수의 PC를 구매하는 것보다 성능 대비가격도 훨씬 저렴합니다. 일반 PC가 다양한 목적을 위해, 슈퍼컴퓨터가 고도의 계산을 위해 사용된다면. 비트코인 ASIC는 채굴만을 위해 사용되는 전문화된 기기라 볼 수 있지요.
이런 엄청난 계산을 거친 후에야 비트코인의 블록체인에 블록을 생성할 권리가 생기는 것입니다. 이 때문에 블록체인은 아무나 넘볼 수 없는 보안성을 자랑하게 되고, 설령 공격자가 비트코인 망을 공격하려고 해도 계산력의 51% 이상을 장악하는 것은 경제적, 물리적으로 엄청난 무리라는 걸 깨닫게 됩니다. 그냥 정당한 체인에서 채굴하는 게 오히려 경제적으로 이득임을 알아채는 거죠.
비트코인의 작동
그러면 최종적으로 비트코인이 어떻게 작동하는 건지 정리해볼까요?
새로운 거래가 생성된다
비트코인 네트워크에 새로운 거래가 퍼진다.
각 노드가 새로운 거래를 블록에 수집한다.
노드가 작업 증명을 성공한 시점에, 블록을 모든 노드에게 알린다
노드는 모든 거래가 유효하다고 판단되면 그 블록을 승인한다.
노드는 블록 승인을 표현하기 위해 먼젓번 해시로 승인된 블록의 해시를 사용해 체인에 블록을 연결한다.
PS. 노드는 비트코인 네트워크에 참여하고 있는 모든 참여자를 말합니다.
비트코인과 블록체인
사토시 나카모토의 비트코인은 은행이라는 신뢰 기관 없이 가치의 전송을 가능하게 하였으며, 이는 기존의 시스템보다 훨씬 안전한 구조가 되었습니다. 각국의 정부에 의해 통제되던 경제가 이제 시장에 의해 통제되도록 되었습니다. 그와 동시에 비트코인은 블록체인이라는 훌륭한 기술의 토대를 남겨주었습니다. 그 가치를 인정받은 비트코인은 개당 가치가 2천만 원에 가까워지고 있죠.
하지만 비트코인이 남긴 것은 새로운 경제와 시장만이 아닙니다. 블록체인이라는 훌륭한 기술도 남겨주었죠. 아무도 함부로 수정할 수 없다는 보안성과 특정한 주체가 없이도 만들 수 있다는 장점으로 새로운 산업과 경제혁명을 가져다 줄 것으로 기대되고 있습니다.
지금도 우리가 모르는 사이에 새로운 개념을 도입한 블록체인 기술이 등장하고 있습니다. 하루하루 바뀌는 현상황에 늦지 않기 위해서는 더욱 발 빠르게 대응할 필요가 있습니다. 이것으로 첫 주제였던 “비트코인”에 대해 알아보았고, 다음 포스팅에서는 더욱 깊숙이 알아보는 시간을 가지도록 하겠습니다.
네이버 "블록체인 서울"에 등록한 글을 스팀잇으로 가져와봤습니다.
유용한 정보네요. 나중에 블록체인 서울도 방문해볼게요.
잘보가 가요 멋쩌요
잘 읽었습니다. 리스팀할게요~!