블록체인

해시넷
Asadal (토론 | 기여)님의 2018년 6월 3일 (일) 03:55 판
이동: 둘러보기, 검색

블록체인(blockchain)이란 다수의 거래 기록을 묶어 블록을 구성하고, 여러 블록을 해시 체인으로 연결한 뒤, 분산 저장하는 알고리즘이다. 블록체인 기술을 이용하면 데이터의 위변조가 불가능하여 신뢰할 수 있는 안전한 거래와 데이터 처리를 할 수 있다. 블록체인은 비트코인이더리움암호화폐에 사용된 핵심 기술이다. 은행 등 제3의 중개기관이 없더라도 블록체인 기술을 이용하면 누구나 신뢰할 수 있는 안전한 거래를 할 수 있다. 블록체인은 암호화폐뿐 아니라, 온라인 거래내역이 있는 모든 데이터 처리에 활용할 수 있다. 블록체인 기반의 물류관리 시스템, 저작권 관리 시스템, 신원확인 시스템, 문서관리 시스템 등 다양한 활용이 가능하다. 중개기관이 필요 없는 블록체인 기술을 활용함으로써 인류는 새로운 거래 방식과 조직 운영 원리를 바탕으로 과거 인터넷 기술이 가져온 것 이상의 큰 사회적 변화와 번영을 누릴 수 있을 것으로 예측하고 있다.

작동 원리

블록체인은 다수의 온라인 거래 기록을 묶어 하나의 데이터 블록(block)을 구성하고, 해시(hash) 값을 이용하여 이전 블록과 이후 블록을 마치 체인(chain)처럼 연결한 뒤, 이 정보의 전부 또는 일부를 P2P 방식으로 전 세계 여러 컴퓨터에 복사하여 분산 저장·관리하는 기술을 말한다. 블록체인의 3가지 핵심 기술은 블록 구성, 해시 체인 연결, P2P 분산 저장이다.

블록 구성

블록체인을 만들기 위해 처음 해야 하는 일은 다수의 거래 기록을 묶어 하나의 블록을 구성하는 일이다.

거래의 최소 단위는 트랜잭션(transaction)이다. 트랜잭션이란 더 이상 쪼갤 수 없는 업무 처리의 최소 단위를 말한다. 예를 들어, A라는 사람이 B라는 사람에게 1,000원을 지급한 경우, 이 거래 기록은 더 이상 작게 쪼갤 수가 없는 하나의 트랜잭션을 구성한다. 만약 A는 돈을 지불했으나 B는 돈을 받지 못했다면 그 거래는 성립되지 않는다. 이처럼 A가 돈을 지불하는 행위와 B가 돈을 받는 행위는 별개로 분리될 수 없으며 하나의 거래 내역으로 처리되어야 하는 단일 거래이다. 이런 거래의 최소 단위를 트랜잭션이라고 한다.

인터넷 등 온라인에서 거래가 발생한 경우, 각각의 트랜잭션별로 하나의 거래내역을 구성한다. 이 거래내역은 해시(hash) 함수를 사용하여 암호화된다. 해시 함수란 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑하는 알고리즘이다. 각각의 거래내역을 텍스트로 표시할 경우 그 길이가 각각 다를 수 있지만, 이것을 해시 함수로 변환하면 항상 일정한 길이의 해시 값이 나온다. 예를 들어, SHA-256 해시 함수를 사용할 경우, 거래내역이 아무리 짧거나 혹은 길어도 해시 값은 항상 2진수로 256자리(즉, 16진수로 64자리)의 고정된 길이를 가진 값으로 표시된다. 이러한 해시 연산 과정을 거쳐 블록체인 안에서 하나의 트랜잭션에는 반드시 하나의 해시 값이 대응하는 1:1 구조를 이루게 된다.

블록체인에서는 다수의 거래내역을 묶어 하나의 블록을 구성한다. 블록체인 기술을 적용한 대표적인 암호화폐인 비트코인의 경우 약 10분에 한 번씩 새로운 블록을 구성한다. 라이트코인의 경우 약 2분 30초에 한 번씩 새로운 블록을 구성한다. 거래내역이 많든 적든 상관없이 항상 일정한 시간에 한 번씩 새로운 블록을 구성한다. 하나의 블록에는 하나의 루트 해시 값이 존재한다. 루트 해시를 생성하기 위해 우선 각각의 거래내역별로 각각 하나씩의 해시 값을 매핑하고, 이러한 해시 값을 해시트리(=머클트리) 구조로 구성하여 결국 최종적으로 트리의 최상위 지점에 하나의 루트 해시를 생성한다. 루트 해시에는 일정한 시간 동안 이루어진 모든 거래내역들이 하나도 빠짐없이 기록되어 하나의 해시 값으로 변환되어 저장된다. 이로써 하나의 블록이 구성된다.

해시 체인 연결

하나의 새로운 블록을 구성한 경우, 마치 체인처럼 이전부터 이어져 내려오던 블록체인의 맨 끝에 이 새로운 블록을 연결시켜야 한다. 새로운 블록을 기존 블록체인의 끝에 연결시키려면, 해당 블록의 이름에 해당하는 해시값을 찾아내야 한다. 새로운 해시값을 성공적으로 찾아내는 경우 새로운 블록이 생성되어 기존 블록체인에 연결된다.

새로 구성한 블록의 이름에 해당하는 해시를 찾아내는 일은 수없이 많은 시도를 반복해야 하는 매우 힘든 과정이다. 왜냐하면 새로운 블록의 해시는 반드시 프로그램에 의해 미리 정해진 목표값보다 작아야 한다는 조건을 충족해야 하기 때문이다. 예를 들어, 목표 해시값이 00ff32라고 가정하고, 새로 만든 블록의 해시값이 12fa3b라고 하면, 이 값이 목표값보다 더 크기 때문에 블록 생성에 실패하게 된다. 하지만 새로 찾아낸 해시값이 00c3b1이라고 가정하면, 이 값은 목표값보다 더 작기 때문에 새로운 블록의 생성에 성공하게 된다.

일반적으로 블록의 해시값은 해당 블록의 루트 해시, 이전 블록의 해시, 그리고 논스(nonce)라고 불리는 임시값 등을 조합하여 생성한다. 해당 블록의 루트 해시와 이전 블록의 해시 값은 이미 확정되어 정해진 값을 가지고 있지만, 논스라는 임시값이 달라짐에 따라 해시 연산 결과로 생성되는 블록 해시값도 다양하게 나올 수 있다. 예를 들어 논스가 1인 경우의 해시값과 2인 경우의 해시값은 전혀 다르다. 이 논스 값을 수없이 바꿔가면서 하나씩 대입하다가 새로 생성된 해시값이 일정한 목표값보다 더 작을 경우에 새로운 블록이 성공적으로 생성된다. 이처럼 특정한 블록에 대해 목표값 이하의 크기를 가진 해시값을 찾음으로써 새로운 블록을 생성하는 행위를 채굴(採掘) 또는 마이닝(mining)이라고 한다.

P2P 분산 저장

블록체인은 거래를 처리하고 기록·관리하는 권위 있는 중앙 조직이나 기구·기관이 없이, 네트워크에 연결된 개별 참여자들의 협업에 의해 유지된다.

블록체인은 P2P 방식으로 운영된다. 피투피(P2P)란 Peer to Peer의 약자로서, 인터넷에 연결된 다수의 개별 사용자들이 중개기관을 거치지 않고 직접 데이터를 주고받는 것을 말한다. 영어로 Peer란 '동료'라는 뜻으로서, P2P란 인터넷에 연결된 한 동료가 다른 동료에게 데이터를 직접 전송하는 시스템을 말한다. P2P 방식은 기존의 서버-클라이언트 방식의 데이터 전송과는 본질적으로 다른 구조를 가지고 있다. 서버-클라이언트 구조에서 개별적인 참여자는 우선 서버에 데이터를 올려야 하고, 다른 참여자가 해당 서버로부터 데이터를 받아오는 방식으로 작동한다. 이런 점에서 서버-클라이언트 구조에서 서버는 중앙·중심·센터에 해당하고, 클라이언트는 서버에 연결된 종속적 위치에 놓이게 된다. 반면 P2P 방식을 따르는 블록체인에는 중앙이나 중심 또는 센터가 없다. 블록체인 네트워크에 참여하는 모든 참여자들은 서로 평등하다.

블록체인에 저장된 데이터는 네트워크에 연결된 모든 노드(node)에 복사되어 분산 저장된다. 노드란 네트워크를 구성하는 각각의 개체를 말한다. 예를 들어, 10대의 컴퓨터가 서로 연결되어 네트워크를 구성하고 있는 경우 각각의 개별 컴퓨터가 하나의 노드가 된다. 즉, 이 시스템은 10개의 개별 노드로 구성된 네트워크 시스템이다. 서버-클라이언트 구조에서는 원본 데이터가 서버에 저장되어 있고 클라이언트는 서버에 접속하여 데이터를 열람·복사·다운로드 받지만, 블록체인 네트워크 구조에서는 중앙 서버가 존재하지 않으며 네트워크에 참여하는 모든 노드들이 서로 데이터를 복사하여 동일한 자료를 분산 저장하고 있다. 블록체인에 저장된 데이터는 원본과 사본의 구별이 없다. 블록체인 네트워크에 참여하는 개별 노드들은 다른 노드에 있는 데이터를 복사하여 저장함으로써 서로 동일한 데이터를 가지게 된다.

블록체인 네트워크에서 새로운 거래가 발생할 경우 그 내역은 네트워크에 연결된 모든 노드들에게 전파되어 알려진다. 각 노드들은 일정한 시간 동안 이루어진 모든 거래를 하나로 묶어 새로운 블록을 구성하고, 목표값 이하의 해시값을 찾기 위해 경쟁한다. 네트워크에 참여한 수많은 노드들 중에서 가장 먼저 목표값 이하의 블록 해시값을 찾아낸 노드가 경쟁에서 승리하게 된다. 블록 해시를 가장 먼저 찾아낸 노드는 자신이 경쟁에서 승리했음을 전체 네트워크에 알린다. 네트워크에 참여한 다른 노드들은 새로 생성된 블록의 유효성을 검사하고 아무런 이상이 없을 경우 해당 블록의 생성을 승인한다. 이런 방식으로 전체 네트워크에 참가한 노드들 중에서 과반수가 새로 생성된 블록을 승인할 경우, 해당 블록은 정식 블록으로 채택되어 블록체인에 추가된다. 이러한 과정을 통해 블록체인은 거래를 처리하고 승인하는 권위 있는 중앙기관이 없이도 네트워크 참여자들의 협업을 통해 안전하고 신뢰할 수 있는 시스템을 운영할 수 있다.

종류

블록체인은 참여자의 범위에 따라 퍼블릭 블록체인과 프라이빗 블록체인으로 나눌 수 있다.

퍼블릭 블록체인

퍼블릭 블록체인(public blockchain)이란 누구든지 자유롭게 참여할 수 있는 블록체인 네트워크를 말한다. 권위 있는 조직의 승인이 없이 누구든지 인터넷에 연결된 PC, 노트북, 스마트폰, 서버컴퓨터, 채굴기 등 다양한 컴퓨터 장비를 이용하여 블록체인 네트워크에 참여할 수 있다. 이러한 블록체인 네트워크에 참여하는 개별 컴퓨터를 노드(node)라고 부르는데, 각 노드들은 블록체인에 저장된 데이터를 복사하여 저장하고, 해시 연산을 통해 새로운 블록의 생성에 참여할 수 있다. 또한 각 노드들은 언제든지 자신의 컴퓨터를 블록체인 네트워크에 연결하지 않고 접속을 차단함으로써 자유롭게 탈퇴할 수 있다. 블록체인 네트워크에 참여 또는 탈퇴하는 것은 권위 있는 조직의 승인이 필요 없이, 전적으로 해당 노드 참여자의 자유로운 의사에 따라 결정할 수 있다.

퍼블릭 블록체인의 경우 참여자들의 컴퓨터 사용에 따른 전기료 등 운영 비용을 감당할 수 있도록, 암호화폐를 발행하여 보상한다. 퍼블릭 블록체인 참여자들은 새로운 블록이 생성될 때마다 발행되는 암호화폐를 지급 받음으로써, 컴퓨터 감가상각비, 전기료, 공간사용료, 인건비 등 각종 비용을 보상 받을 수 있다. 퍼블릭 블록체인 운영에 참가한 사람들은 지급받은 암호화폐를 실생활에서 사용하거나 혹은 암호화폐 거래소에서 판매함으로써 참여 비용을 회수할 수 있다. 이런 점에서 퍼블릭 블록체인과 암호화폐는 서로 분리할 수 없는 일체형 구조로 되어 있다. 만약 퍼블릭 블록체인에서 암호화폐를 지급하지 않는다면, 블록체인 네트워크 참여자들이 받을 수 있는 경제적 보상이 없기 때문에 소수의 헌신적인 기여자들을 제외하고는 참여자가 없게 되어, 최악의 경우 블록체인 네트워크가 붕괴할 우려가 있다. 따라서 퍼블릭 블록체인에서 암호화폐를 발행하는 것은 블록체인 네트워크를 유지하기 위해 반드시 필요한 사항이라고 할 수 있다.

프라이빗 블록체인

특징

블록체인을 이용하면 거래의 신뢰성을 보장하는 별도의 중앙 기관이 없더라도, 네트워크에 분산된 다수의 사용자 컴퓨터에 저장된 데이터를 교차 검증함으로써 데이터의 신뢰도를 보장할 수 있게 해 준다.

활용

블록체인 1.0은 비트코인에 적용된 기능으로, 모든 거래내역을 블록체인을 통해 안전하게 장부에 기록하는 역할을 한다. 블록체인 2.0은 이더리움에 적용된 기능으로, 단순 거래내역뿐 아니라 복잡한 계약 내용과 금액, 기간, 조건 등을 모두 기록할 수 있는 스마트 계약 기능을 구현했다.

같이 보기