안녕하세요, 블록 체인(Block Chain)은 분산 가상 전자화폐 시스템 비트코인에서 사용된 트랜잭션 기록을 관리하는 기술입니다. 중앙 집중식 시스템을 사용하지 않고도 안전하고 신뢰할 수 있으며 저렴한 비용으로 전세계 어디에서나 쉽게 사용할 수 있는 가상의 전자화폐를 실현하기 위한 핵심 기술로 주목 받고 있습니다. 금융, 통화뿐만 아니라 다양한 분야에서의 응용이 기대되고 있습니다. 아래부터 블록 체인 기술의 핵심인 비트코인을 예를 들어 설명하도록 하겠습니다.


비트코인과 블록체인

비트코인도 블록체인 기술을 사용하며, 일반 은행이나 금융 기관과 같은 집중적인 관리기구가 없는 분산 가상통화 시스템입니다. 모든 거래는 P2P(Peer to Peer) 기술을 사용한 분산 네트워크에서 진행됩니다. 거래의 실행이나 거래 기록의 저장 등은 비트코인 네트워크에 참여하는 모든 노드가 서로 협력하여 수행하는 시스템으로 특정 시스템의 문제가 발생하여도 거래를 할 수 있습니다. 또한 블록체인 구축의 비용은 많이 발생하지 않으며, 언제 어디서나, 익명성을 보장받아 국경과 언어를 넘은 공통된 화폐를 거래 할 수 있는 기술입니다.


하나의 비트코인은 BTC 라는 단위의 가상통화로 취급합니다. 비트코인 거래소에서 현실의 통화와 교환 할 수 있으며, 비트코인을 취급하는 나라마다 환률에 따른 시세도 존재하지만 블록체인 기술과 관련이 없기에 해당 포스팅 에서는 다루지 않겠습니다. 이러한 시스템을 실현하기 위해 비트코인은 과거의 모든 거래(트랜잭션)의 기록을 각 노드에 저장하고 있었습니다. 이를 통해 사용자의 계좌에 얼마의 잔액이 있는지, 과거에 어떤 거래가 이루어 졌는지 등, 이 아주 작은 헤더의 기록을 추적해서 정보를 기록하게 됩니다. 전체 거래를 하나의 데이터베이스 시스템 등으로 저장하는 것이 아니라 ‘블록’ 이라는 작은 크기로 나누어 관리하고 있습니다. 블록의 크기는 현재 최대 1MB에서 하나의 블록에는 500 ~ 2000 트랜잭션 정도가 기록되고 있습니다. 블록을 트리형태로 묶고 링크로 연결하여 관리하기 때문에 ‘블록체인’ 이라는 표현을 합니다.


비트코인은 과거 비트코인 잔액과 그 거래의 기록(트랜잭션)을 노드의 체인에 저장하고 있습니다. 새로운 트랜잭션이 발생하면 그것을 블록에 정리하여 체인의 끝에 순차적으로 추가합니다. 중앙 집중식 관리 시스템이 없는 완벽한 분산 네트워크에서 어떻게 블록체인의 데이터를 보존하고 트랜잭션을 처리 할 것인지, 데이터의 일관성 유지 및 악성변조 등의 방어는 어떻게 감지하여 방어하는 지가 블록체인 기술의 핵심입니다.


비트코인 지갑

지갑은 비트코인 가상 통화를 보관하기 위한 가상의 계좌이며, 일반적으로 "shdjf2sfgzd4sj" 와 같은 비트코인 주소는 이중 해시코드로 암호화 되어 있습니다. 이중화 해시코드란, 데이터 블록의 내용을 짧게 표현한 수치 정보입니다. 예를 들어 데이터 블록의 내용을 모두 더하거나 XOR 연산 하거나하여 32bit의 고정 길이 데이터로 변환합니다. 그러면 두 개의 데이터 블록의 내용이 동일한 지 여부를 해시 값을 비교하는 것만으로 신속하게 판단 할 수 있게 됩니다. 해시 값이 동일하게 데이터를 위조하는 것은 어렵기 때문에 손상되지 않았는지 여부를 체크하는 등에도 자주 사용하게 됩니다. 비트코인은 SHA-256, RIPEMD-160 해시코드 암호화를 사용하고 있습니다.


또한 정확하게는 지갑에 저장되어있는 것은 얼마의 BTC가 몇개 보관되어 있습니다. 라는 정보가 아니라 어디에서 어디에 BTC가 몇개 전송 되었다는 트랜잭션의 기록입니다. 비트코인은 BTC를 모든 트랜잭션들의 연속으로 다루고 있습니다. 예를 들어 3 BTC 가 입금됐다는 기록이 있지만, 인출 기록이 없으면 지갑에는 3 BTC 의 잔액이 있습니다. 라고 판단하여 처리하게 됩니다.


비트코인 거래와 확인

비트코인 거래는 존재하는 비트코인 주소에서 지정한 비트코인 주소에 대해 몇 개의 BTC를 보내라는 지시입니다. 비트코인을 보내는 사용자와 받는 사용자가 동의를 한 경우 비트코인 클라이언트 등을 통해 거래를 지시하게 됩니다. 송금 상대가 온라인이라면 송금 한 비트코인이 즉시 상대의 비트코인 지갑 주소에 도착하는 것입니다.


거래 내용의 확인

비트코인 송금 처리를 진행하면, 그 데이터는 P2P 네트워크 전체에 전송된 트랜잭션 데이터의 정당성이 각 노드에 의해 검증이 됩니다. 예를 들어 트랜잭션 데이터는 정확한지? 지갑이나 트랜잭션은 공개키 암호화 등으로 서명되어 있지만 그것이 손상되지 않았는지, 원본 비트코인의 소유자는 정당한지? 타인의 비트코인을 보내려고 하지 않는지, 이미 완료된 트랜잭션과 중복되지 않았는지? 동일한 요청을 재전송하지 않거나 올바른 트랜잭션으로 확인되면 블록체인에 추가 작업이 이루어집니다.


새로운 블록 채굴 및 블록 체인에 추가

트랜잭션의 확인이나 블록의 추가는 비트코인 네트워크에 연결되어있는 노드 중 CPU 전력 (계산 능력)이 있다고 판단되면 새로운 블록을 채굴(mining) 할 노드가 자동으로 생성됩니다. 비트코인에서 새로운 블록을 채굴하려면 전반적인 네트워크의 50% 초과한 계산 능력이 필요로 하는 조건이 있습니다. 이것을 Proof of Work 라고 합니다. 잘못된 노드가 악성 블록이나 트랜잭션 등을 추가하여 비트코인 시스템을 빼앗아 버리지 않기 위함입니다.


실제 채굴은 트랜잭션 요청을 받고 새로운 블록의 모형을 만들고 그 해시 값을 계산합니다. 이 때 nonce(number used once)라는 32bit의 정수 값을 변경시키면서 해시값이 있는 상태, 예를 들어 256bit의 해시값 중 처음부터 64bit 이상, 0이 연속되는 상태가 되도록 같은 nonce 값을 구합니다. 이 작업은 엄청난 시도가 필요하기 때문에 새로운 블록을 채굴 할 수있는 확률은 약 10분에 1회 정도입니다. 계산 시간은 컴퓨터 기술의 향상과 함께 단축되지만, 그에 따라 목표 값도 자동으로 올라가도록 설계되어 있기 때문에 새로운 블록의 추가는 항상 10분 정도의 시간이 걸리게 됩니다. 새로운 블록이 발견되면 그것을 차단 체인의 끝에 추가하고 전체 네트워크로 전송합니다. 체인 블록은 이전 블록을 나타내는 해시값이 포함되어 있기 때문에 뒤에 새로운 블록이 추가 된 시점에서 그 블록의 제어는 매우 어려운 작업입니다. 해시값을 변경하지 않고 블록의 내용을 위장하는 것은 어렵기 때문입니다.


블록 추가

블록체인의 끝에 새 블록을 추가하는 것을 채굴이라 합니다. 새로운 블록을 추가하려면 미확인 상태의 트랜잭션을 모아두고 블록의 해시 값이 특정 조건을 만족하는 nonce 값을 구할 필요가 있습니다. 가장 먼저 채굴이 완료된 블록만 정규 체인에 추가 할 수 있으며 그 보상을 얻을 수 있습니다. 블록의 추가는 평균 10분에 1회 정도 실시됩니다. 새로운 블록을 채굴 할 경우 그 보상으로 12.5BTC 를 채굴자 에게 보상하게 됩니다. 이 보상은 현재시간 기준이며, 대체로 4년에 한 번 보상기준을 변경하고 있습니다. 채굴은 비트코인 블록 체인의 트랜잭션을 기록하는 데 필요한 기본적인 처리 방식입니다.


블록의 분기 및 파괴

위에서 설명한 바와 같이 약 10분마다 1개의 새로운 블록이 순차적으로 추가 된 블록 체인에 합류하게 됩니다. 하지만 경우에 따라서는 블록이 분기해 버릴 수도 있습니다. 떨어진 곳에 있는 2개 이상의 노드가 동시에 새로운 블록의 추가 작업을 할 수도  있기 때문입니다. 동시에 블록을 추가하는 등 블록 체인 2 개로 분기 한 경우는 그대로 두고 다음 블록이 추가 된 시점에서 짧은 쪽을 파기합니다. 따라서, 간혹 마지막에 추가 된 블록이 삭제 될 수 있으므로 중요한 트랜잭션의 경우 거래되는 BTC의 양이 많거나 거래소에서 실제 현금으로 교환 할 경우에는 확인 작업을 3번이상 반복하여 최종 확정을 진행하게 됩니다. 이 메커니즘은 분산 환경에서 제대로 블록 체인을 유지할 수 있도록 합니다.


비트코인을 넘어

지금까지 설명드린 내용이 비트코인 블록 체인의 개념입니다. 분산 네트워크 환경에서도 블록 체인이라는 구조를 사용하면 충분히 실용적인 전자화폐 시스템을 구축 할 수 있다는 것을, 비트코인에 의해 이미 입증되었습니다. 하지만 블록 크기가 최대 1MB로 작아 향후 트랜잭션 수의 증가를 따라 잡지 못해 채굴이 늦어지는 경우 트랜잭션 처리를 기다려야 하거나, 채굴을 하기위한 시스템 구축비용이 비용이 너무 높은 경우 등 여러 가지 우려의 목소리도 있습니다. 현재는 비트코인에서 얻은 블록 체인의 지식을 응용하여 다른 통화 시스템들이 개발되어 상용화 서비스를 하고 있으며, 통화뿐만 아니라 다양한 분산 응용 프로그램 에서의 활용이 개발되고 있습니다.  


감사합니다.

'IT 정보 기술' 카테고리의 다른 글

클라우드 개념 및 활용사례  (0) 2016.10.24
가상현실 VR 동향과 활용사례  (0) 2016.10.22
USB C타입에 대해 알아보기  (0) 2016.10.20
IPv6 간단하게 알아보기  (0) 2016.10.18
BIOS와 UEFI에 대한 이해  (3) 2016.10.16

+ Recent posts