| 블록체인에서의 거래 흐름도. A가 B에게 10만원을 송금한다는 거래기록을 생성하면 A는 비밀키로 서명한 뒤 각 노드(개별 PC라고 생각하면 됨에 이를 전송해 공유한다. 각 노드중 하나가 이 거래기록을 모아 블록을 생성한 뒤 A와 B의 잔액을 장부에 새로 기재해 이를 각 노드에게 다시 전파, 공유한다. |
|
[이데일리 이정훈 기자] 이제 블록체인(Blockchain)이 무엇인지에 대해서는 기본적인 개념이 잡혔을 것으로 보입니다. 그렇다면 다시 한번 블록체인이 어떻게 구성되며 어떤 거래흐름을 가지는지 좀더 상세하게 부연해서 설명해 보도록 하겠습니다. 앞서 언급했던대로 블록체인은 그 네트워크 내에 참여하고 있는 사람들간의 거래내역이라는 데이터를 저장하는 하나의 거대한 데이터베이스(DB)라고 볼 수 있겠습니다. 물론 그 DB는 하나의 집중화된 서버에 저장돼 있지 않아 모든 네트워크 참가자들의 개인용컴퓨터(PC)에 분산돼 저장돼 있는 겁니다. 따라서 저장된 내용은 위조나 변조가 사실상 불가능한 것이지요.
여기서 제대로 알고 넘어가야할 부분은 블록체인이라는 거대한 하나의 신뢰 네트워크를 이루는 개별 구성단위인 노드(Node)입니다. 블록체인 네트워크는 수 많은 노드들로 구성되는데 쉽게 말하자면 이 노드는 네트워크에 참여하는 사람들이 가진 전자기기라고 보면 됩니다. 블록체인 네트워크에 연결된 개인들의 PC와 태블릿PC, 스마트폰 등을 말하는 겁니다. 이 개인들의 PC가 인터넷을 통해 하나로 연결돼 있는 거죠. 각각의 노드는 블록체인 네트워크에 접속하고 블록체인을 다운로드 받아 모든 거래내역을 공유하고 확인하고 이를 저장합니다. 또 새로 생겨나는 거래내역을 확인하고 승인합니다. 새로 생기는 블록을 확인하고 승인하며 블록을 최종적으로 만들어낸 후 그 보상으로서 비트코인을 받는 채굴까지 진행하는 게 노드가 수행하는 역할이라고 볼 수 있겠습니다. 노드가 해야할 일이 참 많죠? 그래서 블록체인 거래에서 사실상의 주인공이 이 노드라고 할 수 있는 겁니다.
그렇다면 이젠 위에 첨부돼 있는 블록체인 거래 흐름도를 보면서 다시 예를 들어 보겠습니다. A라는 사람이 B에게 10만원을 송금하는 거래를 한다고 가정해 봅시다. A는 자신을 식별할 수 있게 해주는 비밀키(개인키)로 서명한 뒤 10만원을 송금하는 거래기록을 같은 네트워크 내에 있는 참여자들의 컴퓨터(=노드)로 전송해서 공유합니다. 이들 가운데 장부를 기록할 수 있는 권한을 따낸 한 명이 송금 기록을 반영해 A의 거래후 잔액이 20만원이고 B의 잔액은 30만원이라는 기록을 작성해 그 블록을 모든 컴퓨터에 다시 전송해 공유합니다. 모든 참여자들은 자신의 블록내 기록과 이 기록을 비교, 대조해 유효성을 승인하게 되고 이를 거쳐 10만원 송금이라는 거래가 안전하게 마무리되는 식입니다. 이 때 각 노드는 블록체인 네트워크상에서 구별할 수 있도록 하기 위해 고유의 주소(address)를 가지고 있습니다. 블록체인 네트워크 참여자들은 익명성이 보장되는 대신 누가 누구인지 구분하기 위해 복잡한 숫자와 문자를 무작위로 배열해서 만든 주소를 가지고 있는 거죠. 그렇지 않다면 누군가에게 송금하는 것도 불가능할테니 말입니다. 참고로 주소는 `1BvBMSEYstWeqtFn5Au4M4gfG7xJaNVN2` 이런 식으로 만들어 집니다. 이런 조합은 거의 무제한으로 나올 수 있으니 걱정할 필요도 없구요.
이제 이를 비트코인에 적용해 봅시다. 비트코인의 블록체인도 마찬가지로 노드들에 의해서 공유됩니다. 비트코인 네트워크에 자발적으로 참여하는 참가자들이 바로 노드라고 할 수 있는데요, 노드들은 가십 프로토콜(gossip protocol)을 통해 가까운 다른 노드에게 블록을 전송합니다. 블록을 전달받은 노드들은 자신의 블록체인 네트워크를 통해 거래를 검증하고 다시 가까운 노드에게 그 거래를 전파합니다. 이렇게 하다보면 네트워크에 참여한 모든 노드들이 해당 블록을 공유할 수 있게 되는 것이죠. 정리하자면 노드는 전달받은 거래를 검증하고 다른 노드에게 거래를 전파해주는 역할을 합니다. 누구든지 비트코인 블록체인을 다운로드 받기만 하면 노드가 될 수 있고 원할 경우 언제든지 그만 둘 수도 있습니다.