336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



이 포스트는 비트코인이 우리가 쓰는 현금이나 신용카드와 어떤 점이 다른지를 설명하는 글입니다. 비트코인에 대한 사전지식이 없더라도 읽기 편하도록 구성했습니다.


비트코인 화이트페이퍼 제목인 "A Peer-to-Peer Electronic Cash System"에 등장하는 P2P와 Electronic Cash를 이해하는 것부터 시작하려 합니다. 요즘은 모두 신용카드와 페이류 앱들을 쓰면서 현금을 잘 쓰지 않는데요. 제가 페이코를 가끔씩 쓰기 때문에 페이코를 가지고 설명을 좀 하겠습니다. 언젠가 자원봉사를 하고 페이코 상품권(?)을 받은 적이 있습니다. 상품권의 코드를 페이코 앱에 입력하면 페이코 포인트가 생기고, 이 포인트는 페이코 가맹점에서 현금처럼 쓸 수 있습니다. 일종의 전자 화폐이지요. 전자 화폐는 현금과 어떻게 다를까요?

전자 화폐 (Electronic Cash)

현금은 거래가 매우 간단합니다. 물건을 살 때 현금을 건네주면 됩니다. 현금을 받은 사람이 위조 여부를 확인하면 거래가 성립됩니다. 이 거래는 당사자만 관여되어 있는 Peer-to-Peer(이하 P2P) 거래라고 볼 수 있습니다. 페이코 포인트 같은 전자화폐 거래는 다소 다릅니다. 제가 페이코 앱을 켜서 PIN 번호를 입력하고 바코드를 점원에게 보여주면 점원은 바코드를 찍어서 결제 정보를 페이코 서버로 보내겠지요. 이 페이코 서버로부터 정상 응답을 받으면 거래가 성립됩니다. 만약 그 시점에 페이코 서버가 응답을 하지 못하면 거래는 성립되지 않습니다. 이 경우는 돈을 보내는 사람과 받는 사람 사이에 지급을 보장해주는 거래 중개자가 필요합니다. 이 과정에서 중개자는 거래 당사자들로부터 거래 수수료를 챙길 수 있습니다.


P2P 거래는 이 거래 수수료를 줄일 수 있다는 점에서 장점이 있습니다. 전자지불을 P2P로 한다면 어떤 형태일까요? 디지털 파일은 손쉽게 복사가 가능하기 때문에 현금을 넘기는 것처럼 어떤 파일을 전송하는 방식으로는 가능하지 않습니다. 해결 방법은 모두가 볼 수 있는 데이터베이스를 두어 누가 얼마를 가지고 있는지를 기록하는 것입니다. 이를 보다 자세히 이해하기 위해 필요한 개념 중 하나가 분산 원장(Distributed Ledger)입니다. 원장(Ledger)은 계좌에 입출금 내역이 기록되는 것을 연상하면 됩니다. 계좌를 처음 만들면 0원에서부터 시작해서 입출금 내역이 쭉 있고 이를 더하기 빼기하면 계좌의 현재 잔고를 알 수 있지요.


비트코인은 전세계 모든 계좌에 대한 거래를 단일한 원장으로 기록하는 프로토콜입니다. 모든 거래 기록을 모두가 처음부터 끝까지 볼 수 있습니다. 비트코인을 가지고 있다면 누구나 거래 기록을 쓸 수 있습니다. 계좌에 빗대어 표현하면 "보내는 계좌, 받는 계좌, 금액, 보내는 계좌의 인감 도장"이 있는게 하나의 거래 기록이고, 이 거래 기록을 처음부터 마지막까지 모두 기록해 두고, 이 기록을 따라 쭉 더하기, 빼기를 하고 나면 어떤 계좌에 얼마가 있는지를 알 수 있습니다. 다시 거래 얘기로 돌아와서 비트코인으로 물건을 사기 위해서는 내 인감 도장을 찍어주고, 그 거래 기록이 분산 원장에 기록되기를 기다려야 합니다. 인감 도장이 전자적으로 어떻게 동작하는지가 궁금하신 분들은 전자서명에 대해 알아보시기 바랍니다. 우리가 뱅킹앱으로 송금할 때 공인인증서 서명하는 것과 암호학적 원리는 같습니다. 

이중지불 문제 (Double spending problem)

이중지불 문제는 거래 기록이 분산되어 있을 때 발생할 수 있는 문제입니다. 예를 들어 A라는 계좌에 만원이 남아 있습니다. 이 계좌의 인감 도장을 복사해서 B와 C에 동시에 만원을 송금했다고 가정해 봅시다. 두 개 거래 중 하나는 무효가 되어야 합니다. C 입장에서는 A와 B의 사이의 거래를 알기 전까지는 돈을 받았다고 생각할 수도 있습니다. 이 시간 차를 이용해서 A의 만원을 전세계 곳곳에서 두 번, 세 번, 그 이상 쓸 수도 있습니다. 당연히 이 문제를 막아야 하고, 그러기 위해서는 거래 기록을 일렬로 세우고 거래를 확정하는 프로토콜이 필요합니다. 이를 합의 알고리즘(Consensus Algorithm)이라 하고 현재 비트코인과 이더리움의 경우 PoW(Proof of Work)를 채택하고 있습니다. PoW 프로토콜을 통해서 비트코인의 참여자 중 한 명을 랜덤으로 뽑아 트랜잭션을 블록으로 확정 짓습니다. 블록으로 만들 때에는 거래의 순서가 생기기 때문에 이중 지불을 방지하는 검증이 가능합니다. 현재 비트코인 프로토콜은 평균적으로 10분에 1개 꼴로 블록을 생성하도록 구현되어 있습니다.


여러 개의 트랜잭션(Tx)를 하나의 블록으로 만들어 이전 블록에 연결


P2P 상에서 랜덤으로 뽑기 때문에 어쩔 수 없이 블록이 동시에 생성되는 불행한 경우도 있습니다. 이 때문에 블록이 철회될 수도 있는데, 중요한 점은 PoW 프로토콜 하에서는 뒤에 이어진 블록이 많을 수록 철회될 확률이 급격하게 낮아집니다. 예를 들어 나와 관련된 거래 기록이 블록에 포함된 직후보다는 그 뒤로 블록이 5개 이상 이어진 경우가 내 거래 기록이 철회될 가능성이 훨씬 낮다는 것입니다.


이 블록이 이어진 모양을 보고 이 기술을 블록체인이라 하고, 데이터의 조작을 방지하는데 효과적으로 쓰일 수 있습니다.

현재 비트코인 결제가 어려운 이유

최근 비트코인은 그 가격이 수십 퍼센트를 왔다 갔다 하기 때문에 실질적으로 쓰일 수 없습니다. 가격이 올라간다면 아무도 쓰지 않고 가지고 있을 것이고, 가격이 떨어진다면 어느 상점도 받고 싶어하지 않을 겁니다. 다른 이유로는 거래 확정 속도가 느리다는 점이 있습니다. 약 10분에 한 번 꼴로 블록이 만들어지는데, 통상적으로 3블록~6블록을 거래 확정으로 취급하는데, 이는 바로 블록에 포함되더라도 약 30분에서 한 시간이 걸립니다. 서비스를 제공하고 나면 회수할 방법이 없는 상품에 대해서는 비트코인 결제가 현실적이지 않습니다. 그리고 앞서 P2P 거래는 거래 수수료를 줄일 수 있다고 언급했습니다. 그러나 실제로는 중간에 블록 생성자가 개입하기 때문에 블록 생성자에게 수수료를 지불해야 합니다. 대신 수수료를 누군가 독점하지 않는 차이점이 있습니다. 문제는 이 수수료를 비트코인으로 지급해야 하는데, 현재 비트코인 자체의 가격이 너무 올라 수수료가 한화로 수 천원에서 수 만원까지 한다는 것입니다.


요약하면 점심을 먹고 6000원 어치 비트코인을 결제하면, 식당 주인이 결제가 확정되지 않았다고 놔주질 않고, 결제 확정을 기다리는 동안 비트코인 가격이 올라 10000원 어치가 되어 있을 수도 있습니다. 아, 그리고 블록 생성자에게 내는 수수료 만원어치 비트코인은 별도입니다.


하지만 이런 문제가 블록체인 기술의 근본적인 한계로 보진 않습니다. 비트코인을 포함해 여러 블록체인 기술들이 사이드 체인, 새로운 합의 알고리즘 등을 통해 처리속도 및 용량을 높이기 위한 시도를 하고 있습니다. 

암호화폐 (Cryptocurrency)

비트코인은 암호화폐입니다. 거래는 암호학적인 서명에 의해 이루어지며 서명이 없으면 쓸 수 없습니다. 여기서 중앙화된 시스템과 큰 차이가 생기는데, 한 번 잃어버린 비트코인은 되찾을 수 없습니다. 만약 제가 페이코 포인트 5만원이 있는 계정을 잃어버렸다거나 해킹으로 잃어버렸다면 페이코 시스템 관리자가 포인트를 다시 쓸 수 있게 해주는 방법이 존재합니다. 그러나 비트코인은 키를 분실하거나 유출 당해 잃어버렸다면, 그 비트코인을 되찾을 수 있는 시스템적인 방법은 없습니다. 이는 해커들이 비트코인을 요구하는 이유이기도 합니다. 이런 특성은 암호화폐를 아직 제도권에서 받아들일 수 없는 이유이기도 합니다. 물론 이 역시 기술이 성숙해지면 프로토콜 추가 등의 방법으로 극복할 수 있는 부분이기도 합니다.

결론

비트코인은 기술도 초기 단계이고 현재 투기 열풍(?)으로 수수료가 비싸 전자지불 수단으로는 갈 길이 멀어보입니다. 블록체인 기술과 관련 서비스의 발전으로 극복될 수 있는 부분이지만 미래에 암호화폐가 통용되는 때가 온다면 그 중에 비트코인이 포함될 지는 역시 알 수 없습니다. :)

+ Recent posts