안녕하세요. 산책하는 '개'발자 입니다!
최근 암호화폐에 대한 사람들의 뜨거운 관심만큼 블록체인에 대한 관심도 많아지고 있습니다.
블록체인이란 기술은 아직 자리를 잡아가는 과정이기 때문에 사람마다 정의와 개념, 생각들이 제각각인 상황입니다. 그래서 블록체인에 대한 여러 설명글을 보아도 이해가 어렵습니다.
이번 포스팅은 자세한 원리나 기술적 이야기는 뒤로 미루고 블록체인이란 무엇 인지 본질에 대해서 풀어보도록 하겠습니다.
얼마나 쉽게 설명하는지 감시하는 삼돌이 ;)
블록체인은 왜 생겨났을까?
어떠한 기술에 대해서 알고싶을 때 그 기술이 왜? 생겨났을까에 대해 생각해보는게 중요합니다.
대부분의 기술은 어떠한 '문제'를 해결하기 위해서 생겨난 경우가 많기 때문이죠.
그래서 왜? 라는 질문 속에는 그 기술의 원리나 기술에 담긴 철학, 더 나아가 그 기술이 무엇인지 답이 있는 경우가 많습니다.
마찬가지로 블록체인이란 무엇인가에 알기위해 왜? 라는 질문부터 시작해 보겠습니다.
블록체인(Block chain) 의 탄생
블록체인이 왜 생겨났을까에 답을 찾으려면 우선 비트코인으로 부터 시작해야합니다.
블록체인은 비트코인을 만드는 과정에서의 문제점을 해결하기 위해 개발 되었기 때문입니다.
비트코인이란?
사토시 나카모토라는 닉네임을 가진 개발자(들이)가 기존의 국가 또는 중앙은행 중심의 화폐구조를 벗어나 P2P 방식으로 금융거래를 할 수 있게 하려고 만든 블록체인 기술 기반의 암호화폐 입니다.
사토시는 제 3자(혹은 기관)의 통제나 도움없이 P2P거래가 가능한 전자화폐를 만드려고 비트코인을 만들었습니다.
그런데 은행과 같은 기관이 없으니 다음과 같은 문제가 발생합니다.
1. 사람들 간의 거래 내역을 수집하고 저장하는 문제
2. 거래 내역 자체를 믿을 수 있는지에 대한 신뢰 문제
사토시는 두 문제점의 대안으로 거래내역 장부를 분산해서 저장하는 구조를 제시합니다. 아래의 그림과 같이 누군가 비트코인을 거래하고, 네트워크 상에 자신이 비트코인을 거래했다는 내역을 전파하면 노드들이 각자의 장부에 거래내역을 기록하는 구조입니다.
노드란?
비트코인에서 의미하는 노드란 네트워크 상에서 거래 장부를 기록해주는 각각의 네트워크 참여자들을 지칭 합니다.즉, 컴퓨터 1대(CPU기준) 으로 생각하시면 됩니다. (비트코인을 거래하는 사람들과는 별개로 비트코인 시스템을 유지 시켜주는 사람(혹은 컴퓨터)들 입니다.)
이제 거래내역을 수집하고 저장해주는 문제는 해결 했는데 거래내역 자체를 어떻게 믿을 것인가에 대한 신뢰의 문제가 남았습니다. 비트코인 논문에서는 이러한 신뢰의 문제를 더블스펜딩(doublespending, 이중지불) 문제로 명시하고 있습니다. 예를들면 아래 그림과 같은 상황이 발생하여 노드들이 어떤 거래내역을 받아 들여야하는지 알 수 없는 곤란한 상황에 처할 수 있는 것이죠.
기존 화폐 시스템에서 예를 들어 본다면 내 계좌에 만원이 들어있고, 2대의 ATM기에서 동시에 만원을 인출하려는 상황입니다. 이때 거의 동시에 2대의 ATM기에서 인출을 시도 하더라도 은행서버에 0.1초라도 먼저 요청된 시도만 성공하고, 나머지 요청은 금액부족으로 거절될 것입니다. 하지만 비트코인 시스템에서는 은행과 같은 기관이 없기 떄문에 각 노드들은 2개의 거래내역 중 하나를 선택해야하는 딜레마에 빠지게 됩니다.
블록체인 기술을 탄생하게 한 문제가 바로 여기에 있다고 할 수 있습니다. 즉, 비트코인 시스템에서 각 노드에 분산되어 저장된 거래내역 장부들이 서로 내용이 다를 때 어떤 거래내역 장부를 신뢰('참'으로 선택)할 것인가에 대한 문제를 해결하기 위해 블록체인 기술이 탄생한 것입니다.
블록체인은 어떻게 문제를 해결할까?
블록체인이 어떤 문제를 해결하기 위해 생겨난 기술인지 알았으니 이제 어떻게 문제를 해결하는지 간단히 살펴봅시다. 결론부터 말하자면 블록체인은 다수결을 통해 문제를 해결합니다.
블록체인의 구조는 이름에서 나타나듯이 블록(block) 들이 체인(chain) 형태로 이어져있는 형태 입니다. 아래 그림과 같이 말이죠. 각 블록 안에는 거래내역을 포함한 여러값들이 들어가 있습니다.
비트코인 시스템에서는 블록이 비트코인 시스템에 참여한 각 노드들의 CPU 연산(작업증명, Proof of work)에 의해 새로 생성됩니다. 각 노드들 중 제일 먼저 CPU연상 작업을 해낸 노드가 새로운 블록을 생성하여 거래내역 등을 추가 한 뒤 다른 노드들에게 전파하는 것입니다.
비트코인 시스템에서는 거래내역이 문제없이 차곡차곡 쌓여 나가다 아래와 같이 더블스펜딩 시도가 발생하여 거래 내역 장부가 나뉘는 경우가 발생합니다. 이경우 그 다음 새 블록이 먼저 생성된 경우가 가장 긴 체인이 되고 다수의 노드들에 의해 선택받아 살아남게 됩니다.
블록체인이란?
블록체인이란 결국 분산 데이터들(비트코인에서는 거래 내역 장부)에 대한 노드들의 합의(consensus) 방식 기술이라 할 수 있습니다. 믿을 수 없는 분산 데이터들을 어떻게 믿고 선택할 것이냐에 대한 기술인거죠.
위에서 설명할 때 비트코인 시스템에서는 이라는 말을 많이 사용했는데 그 이유는 블록체인이라는 기술이 분야나 용도에 따라 얼마든지 합의 방식은 다르게 적용될 수 있기 때문입니다. ( 비트코인에서는 작업증명(Proof of Work)의 합의 방식을 사용합니다.) 이러한 점에서 블록체인 기술은 합의방식에 따라 다양한 콘텐츠들이 만들어질 수 있는 플랫폼이라는 생각이 듭니다.
글을 마치며
블록체인에 대해 왜 생겨났는지 부터 시작하여 블록체인이란 무엇인지에 대해 설명을 했습니다. 원리적인 부분을 빼고 이야기하다 보니 미흡한 부분도 많습니다. 하지만 이번 포스팅의 목적은 블록체인이란 무엇인가에 대한 큰 그림을 그리는 것으로, 블록체인의 본질은 합의방식에 있다는 것 입니다.
자세한 원리나 블록체인에 대해서는 추후 더 쉬운 설명으로 포스팅하도록 하겠습니다!
포스팅 감사히 잘 보았습니다^^
최근에 스티밋에 입성하셨군요!
앞으로 잘 부탁드립니다~
좋은 포스팅 기대할게요!
좋은 하루되셔요!
네 이제 막 포스팅을 시작한 뉴비입니다! 앞으로 잘부탁드립니다