비트코인에 관련된 논문을 읽고 내용을 정리하면면서 풀어가보겠습니다. 논문은 하단 링크를 참고해주세요.
블록체인은 P2P 네트워크를 통해서 관리되는 분산 데이터베이스의 한 형태이다.
처음에는 솔직히 이 말이 이해가 안된다. 블록체인이 무엇인지, 비트코인은 무엇인지, 또 어떻게 채굴을 하여 코인을 얻는지, 그래서 어떻게 만들 수 있는지, 왜 보안에 강하며, 어떻게 디도스 해킹 공격을 막을 수 있는지 등등 모든 것을 알아봅니다.
블록체인 기술이란 거래정보를 중앙서버 한 곳에서 보관 및 관리하는 것이 아니라 블록체인 네트워크에 연결된 개개인의 서버(여러 컴퓨터)에 저장 및 보관하는 기술이다. 이 개개인의 서버를 '참여자' 또는 '노드' 라고 한다.
예를 들어, 쿠팡에 내 계정으로 로그인해서 물건을 구매한다면, 그 거래정보는 쿠팡의 서버(컴퓨터)에 저장될 것이다. 이 서버가 해킹을 당하면 거래정보가 해킹을 당하는 것이다. 만약에 누군가 이 서버에 접근해서 결제하기 직전에 결제금액을 바꾼다고 생각해보자. 10만원짜리 상품을 1만원만 내고 10만원에 산 것처럼 한다면?? 혹은 내가 예전에 구매했던 내역을 지운다면?? 물론 진지하게 생각하거나 시도해본 적은 없지만 아마 거의 불가능하게 만들어두지 않았을까?? 그 이유는 일단, 항상 감시하고 대응하는 화이트해커와 전문가들이 있을 것이고, 해킹을 막기위해 막대한 노력과 돈을 투자하고 있을 것이다. 시스템을 갖추기 위해서도 많은 돈과 인력이 필요했을 것이다. 그런데도 금융정보 해킹 등 해킹사례들은 끊이지 않고 있다. 그리고 이런 기관들이 사람들에 대한 정보를 쓸어담고, 이를 바탕으로 광고를 내어주고 그만큼 돈을 쓸어담고 있다. 물론 편리하고 상품은 가격경쟁력이 있고 등등 장점이 많지만.. 잠깐 여담으로 빠졌지만 어쨌든 이러한 중앙화와 보안에 취약한 단점을 극복할 방법으로 블록체인이 나온것이 아니겠는가!
이어서 알아보면, 거래정보는 블록체인 네트워크에 연결된 개개인의 서버에 저장된다고 했다. 그리고 이 서버를 노드라고 한다. 노드란 정확히 무엇일까?
노드란 역할에 따라 풀 노드, 라이트 노드, 마스터 노드, 마이닝 노드 등이 있습니다. 이번에는 중요한 풀 노드와 라이트 노드에 대해서만 알아보겠습니다.
풀 노드는 블록체인에서 이루어진 모든 거래정보를 전부 저장하는 검증인 역할을 하는 노드입니다. 제네시스 블록(첫 번째 블록)부터 현재 생성되고 있는 블록까지 모든 블록체인 정보를 수집하고 저장합니다.
비트코인의 경우, 약 10분마다 1개의 블록이 생성되는데, 블록체인에 새로운 블록을 추가하기 위해서 모든 거래를 검증하고 실시간으로 데이터를 업데이트합니다. 전체 거래내역에 오류가 없음을 확인하고 새로운 블록이 생성될 때 최종 승인하는 역할을 합니다. 한마디로 풀 노드는 블록체인의 중앙기관 역할을 합니다.
여기서 질문! 그럼 내 컴퓨터를 풀 노드로 이용할 수 있나요?
네 가능합니다만, 2가지 조건이 있습니다.
풀 노드는 블록체인의 모든 블록 정보를 가지고 있어야 하기 때문에 1. 충분한 저장공간이 있어야한다. 2. 인터넷에 연결이 되어있어야 한다. 그러면 누구든 풀 노드가 될 수 있습니다. 또한 풀 노드가 많으면 많을수록 중앙기관이 많아지는 효과가 있기 때문에 블록체인 보안이 점점 강력해집니다! 비트코인의 경우 역사가 오래되었기 때문에 제네시스 블록부터 현재의 블록까지 모든 정보를 저장하기 위해서는 200GB 이상(2020년 5월 기준)의 용량 과 아래 사이트에서 비트코인 코어를 다운받아서 실행 하면 풀 노드로서 역할을 할 수 있습니다. https://bitcoin.org/ko/download
풀 노드는 중앙기관인 만큼 매우 중요하지만 스스로 거래를 검증할 수 있다는 점 외에 다른 보상은 없습니다. 그래서 현재 블록체인 풀 노드는 대부분 채굴을 위한 풀 노드입니다. 참고로 비트코인 지갑을 직접 개설하여 사용한다면 이는 풀 노드로 운영됩니다.
라이트 노드란 블록체인 참여자 중 거래를 수행하는 노드입니다. 풀노드와 달리 블록체인의 모든 정보를 가지고 있지는 않습니다. 라이트 노드가 가지고 있는 데이터는 블록체인의 일종의 요약본인데, 블록 헤더의 중요정보만 가지고 있습니다. 그래서 라이트 노드는 새로운 거래 정보를 수신받았을 때 이를 검증할 수는 없습니다. 따라서 새로운 정보를 수신했을 때 풀 노드에게 블록 정보를 요청하여 이 거래가 검증된 거래인지 확인하는데 이러한 방법을 SPV(Simple Payment Verify, 단순 지불 검증)이라고 합니다. 스마트폰의 경우 대개 적은 용량을 가지기 때문에 스마트폰의 비트코인 지갑은 라이트 노드로 운영됩니다. 지금까지 블록체인이 무엇인지, 블록체인 네트워크에 어떻게 연결하고 검증하는지에 대해서 알아보았습니다. 더 궁금하신 내용이 있다면 댓글 부탁드립니다. 서로 질문하면서 공부하는 것을 지향합니다.
블록체인에 관한 논문 링크주소:
https://www.kiri.or.kr/pdf/%EC%97%B0%EA%B5%AC%EC%9E%90%EB%A3%8C/%EC%97%B0%EA%B5%AC%EB%B3%B4%EA%B3%A0%EC%84%9C/nre2018-24_02.pdf