Inor

[블록체인] 블록체인 기본 개념 본문

IT 기술/블록체인

[블록체인] 블록체인 기본 개념

Inor 2017. 12. 2. 16:29

- 블록체인




 블록체인은 2017년 가장 핫한 키워드 중 하나였던 비트코인을 지탱하는 기술입니다. 블록체인은 기존에 중앙 집권적인 데이터 관리리 방식이 아닌 공유 데이터 장부를 분산해서 관리하는 기술입니다. 공유 데이터 장부는 블록체인 서비스가 제공하는 재화에대한 정보가 들어있는데 이 글에서는 비트코인을 예시로 설명하겠습니다.

 비트코인 거래에대한 모든 정보는 장부에 저장됩니다. 이 장부에는 사용자가 비트코인 거래, 생산 등의 활동을 했을때 사용자의 비트코인 변화 상황을 기록합니다. 이런 상황을 기록하는 것을 블록이라고 합니다. 비트코인 거래가 발생하면 장부에 블록이 하나 추가됩니다. 이 블록은 한 사람의 장부에만 기록되는 것이 아니고 네트워크에 존재하는 모든 사용자의 장부에 저장됩니다. 블록이 마치 체인과 같이 줄줄이 이어져있는 모습을 하고 있기 때문에 이 기술을 블록 체인이라고 합니다. 이 글에서는 블록체인의 종류와 블록을 거래하는 과정, 블록체인 시스템 해킹이 이론상 불가능하다고 평가 받는 이유에대하 알아보겠습니다.




- 공개키 암호화 알고리즘


< 출처 : http://hitk.acm.org/elliptic-curve-cryptography-by-riddhiman-dasgupta-and-anirban-ghose/ >



 비트코인은 중앙 은행 없이 사용자끼리 자신의 코인을 거래하는 방식입니다. 코인을 거래하기 위해서 사용자는 수표를 생성합니다. 중앙 은행이 없는데 계좌를 개설하고 수표를 교환하는 과정이 가능한 이유는 공개키 암호화 알고리즘 덕분입니다. 공개키 알고리즘은 공개키와 개인키 2가지를 사용해서 검증을 진행합니다. 만약 A가 B에게 수표를 전송한다면 이 수표가 A가 전송한 수표인지 확인하는 과정이 필요합니다. A는 수표를 전송하기 전에 A만 갖고있는 개인키를 이용해 수표에 서명을 합니다. 그리고 B에게 서명된 수표와 공개키를 같이 전송하는데 B는 A가 전송한 수표가 맞는지 확인하기 위해 공개키를 사용합니다. 공개키를 사용하면 이 수표에 서명한 개인키가 누구의 소유인지 확인이 가능합니다. 암호화 알고리즘은 사용자에게 공개키와 개인키 짝을 제공합니다. 블록체인 시스템에서 공개키는 일회용 계좌번호처럼 사용되고 사용자 검증하는 과정에서 사용됩니다.




- 블록 거래


 블록체인은 수표를 생성해서 전송한 사람을 확인하기 위해 암호화 알고리즘을 사용합니다. 수표를 생성해서 전달한 사람이 송금할 정도의 돈을 갖고 있는지 확인하기 위해서는 블록체인 시스템의 공유 장부를 사용합니다. 공유 장부는 블록체인 시스템에 존재하는 모든 사용자가 갖고있습니다. 블록체인을 분산 원장 관리 시스템이라고 부르는 이유는 분산된 장부를 통해서 거래를 승인하기 때문입니다. 모든 사용자의 장부를 확인해서 거래를 승인하기 때문에 중앙 은행이 필요없습니다.

 A가 B에게 코인을 송금하기 위해 개인키로 서명한 수표를 생성합니다. 수표는 B에게 전송되고 B는 이 수표를 네트워크에 존재하는 모든 사용자에게 전송합니다. 모든 사용자는 공개키 사용이 가능하기 때문에 A가 만든 수표가 맞는지 확인합니다. 그리고 본인이 갖고 있는 장부를 사용해서 A가 B에게 송금할만큼 잔고가 있는지 확인합니다.


< 출처 : https://en.bitcoin.it/wiki/Transaction >


 위의 그림에는 총 4개의 Transaction이 있고 각 Transaction은 서로 논리적 연결을 맺고있습니다. Transaction은 앞서 말했던 수표입니다. 모든 사용자는 논리적 연결을 따라가며 이전 Transaction으로 송금을 요청한 사용자의 잔고를 확인합니다. 위 그림을 보면 C라는 사용자가 D라는 사용자에게 101코인을 송금하는 과정을 나타냅니다. Transaction C에는 C라는 사용자가 이전에 어떤 사용자에게 코인을 입금 받았는지 나와있습니다. A가 100코인을 입금했고 B가 50코인을 입금 했습니다. 이렇게 논리적 연결을 따라가면 C가 150코인을 갖고 있다는 사실을 확인할 수 있습니다. C는 D에게 101 코인 송금이 가능하고 모든 사용자는 이런 확인 과정을 거치며 Transaction D를 생성해서 연결합니다. 만약 C가 D에게 송금하기 이전에 다른 사용자에게 150 코인을 송금 했다면 다른 사용자들에 의해서 Transaction D를 만드는 과정은 거부당하고 블록체인 시스템에 Transaction을 생성하지 못하게됩니다. 모든 사용자는 자신의 장부에 Transaction D를 생성해서 연결합니다. 모든 장부는 독립적으로 존재하며 Transaction D를 연결하는 과정도 독립적으로 발생합니다.

 위의 그림에서 Transaction A, C, D는 Input에 다른 노드와 논리적 연결을 맺고있는 논리적 연결(링크)이 존재하는데 Transaction B는 그런 논리적 연결(링크)이 존재하지 않습니다. 그 이유는 Transaction B가 마이닝을 통해서 코인을 생성한 Transaction이기 때문입니다. 모든 코인은 Transaction B와 같이 생성되고 거래 과정을 통해서 다른 Transaction을 생성하고 논리적 연결을 맺습니다. 모든 논리적 연결(링크)을 따라가다보면 결국 Transaction B와 같은 Transaction을 만나게 됩니다.




- 블록체인 위조 방지 기술


< 출처 : http://d2.naver.com/helloworld/8237898 >



 블록체인 위조가 어려운 이유는 네트워크에 존재하는 모든 사용자가 위조를 감시하는 감시자가 되기 때문입니다. 모든 사용자는 장부를 갖고있고 수표 생성 과정을 감시합니다. 비트코인에서 수표를 저장할때 여러개의 수표를 블록에 함께 저장합니다. 블록은 이전에 생성된 블록과 연결되어있고 각 블록은 이전 블록과 연결하기 위해 이전 블록의 해시값을 갖고있습니다.

 블록을 위조하기 위해서는 네트워크에 존재하는 과반수 사용자의 장부를 조작해야됩니다. 네트워크에 10명의 사용자만 존재하면 블록을 위조하는 과정은 별로 어렵지 않습니다. 그러나 100000명의 사용자가 네트워크에 존재하고 장부를 소유하고 있다면 최소 50000개 장부를 위조해야합니다. 만약 어떤 해커가 49999번째 장부까지 위조하는데 성공했더라도 50000번째 장부를 위조하는 도중에 새로운 블록이 생성된다면 해킹은 실패하게됩니다. 블록은 링크드 리스트 형태로 연결되어있고 각 블록은 이전 블록의 해시값을 갖고 있기 때문에 중간에 새로운 블록 삽입은 불가능합니다. 

 블록체인 네트워크에 존재하는 사용자가 많을수록 블록 위조가 어려워집니다. 비트코인은 코인을 채굴하는 문제를 어렵게 만들어 최대한 많은 사용자가 네트워크에 상주하게 합니다. 이 사용자들은 코인을 채굴하면서 블록의 위조를 막습니다.




- 블록체인 기술의 전망


 가상화폐인 비트코인에서 시작한 블록체인 기술은 초기에 금융업계에서 주로 연구했지만 최근 제조, 유통, 무역 등 다양한 분야에서 연구가 이루어지고 있습니다. 블록을 한번 생성하면 삭제가 불가능하고 분산 원장 방식으로 데이터를 관리해 중앙 서버가 공격 받았을때보다 피해가 적다는 이유 때문입니다. 제 3자의 담보 없이 거래가 가능하고 P2P 방식으로 거래가 이루어지기 때문에 수수료 문제도 사라지게 됩니다. 모든 장부가 투명하게 공개되기 때문에 거래의 투명성도 보장됩니다.

 많은 장점에도 불구하고 블록체인이 당장 사회를 변화시키지 못하는 이유는 아직 미성숙된 기술이기 때문입니다. 이론상 블록 위조가 불가능한 것이지 모든 공학에 100%는 없듯이 블록체인 기술에도 분명 문제점이 있을 것 입니다. 그리고 블록체인 기술을 기반으로한 서비스는 대부분 정부의 규제와 관련된 서비스(금융, 유통 등)입니다. 사회적 합의가 이루어지고 그에 따른 제도가 만들어져야지 블록체인 기술 기반 서비스가 우리 사회를 직접적으로 변화 시킬수 있다고 생각합니다.

Comments