블록체인

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

블록체인(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)라고 부르는데, 각 노드들은 블록체인에 저장된 데이터를 복사하여 저장하고, 해시 연산을 통해 새로운 블록의 생성에 참여할 수 있다. 또한 각 노드들은 언제든지 자신의 컴퓨터를 블록체인 네트워크에 연결하지 않고 접속을 차단함으로써 자유롭게 탈퇴할 수 있다. 블록체인 네트워크에 참여 또는 탈퇴하는 것은 권위 있는 조직의 승인이 필요 없이, 전적으로 해당 노드 참여자의 자유로운 의사에 따라 결정할 수 있다.

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

프라이빗 블록체인

프라이빗 블록체인(private blockchain)이란 미리 정해진 조직이나 개인들만 참여할 수 있는 폐쇄형 블록체인 네트워크를 말한다. 프라이빗 블록체인에 참여하려면 반드시 권위 있는 조직의 승인을 받아야 한다. 프라이빗 블록체인 운영자의 승인을 받지 못한 조직이나 개인은 해당 블록체인 네트워크의 운영에 참여할 수 없다. 예를 들어, A 기업과 B 기업 및 C 단체가 서로 협의하여 프라이빗 블록체인을 운영하기로 한 경우, 오직 A, B, C 세 곳만 참여할 수 있으며, 다른 제3자인 D 기업은 참여할 수 없다. 만약 D 기업이 해당 프라이빗 블록체인에 참여하고 싶다면, 관계자들과 협의하여 사전 승인을 받아야 한다.

프라이빗 블록체인의 운영을 위해서 암호화폐가 반드시 필요한 것은 아니다. 프라이빗 블록체인의 경우 굳이 암호화폐를 발행할 필요가 없이, 해당 프라이빗 블록체인의 참여자들이 자발적으로 컴퓨터 운영 비용을 부담하면 된다. 물론 프라이빗 블록체인에서도 암호화폐를 발행할 수는 있다. 블록체인이 혈관이라면 암호화폐는 그 혈관 속을 흐르는 혈액과 같은 존재이기 때문에, 프라이빗 블록체인에서도 암호화폐를 도입하는 것이 운영상 편리할 수 있다. 하지만 해당 암호화폐를 외부의 암호화폐 거래소에 판매하기 어렵기 때문에 사실상 내부 정산 및 서비스 이용 등의 목적으로 제한적으로만 사용할 수 있다. 결국 프라이빗 블록체인에서 암호화폐의 발행은 필수사항이 아니며, 각 프라이빗 블록체인 운영자들의 필요에 의해 자체 암호화폐를 발행할 수도 있고, 그렇지 않을 수도 있다.

특징

블록체인에 기록된 데이터는 위변조가 거의 불가능하여 누구나 신뢰할 수 있고, 안전하며, 탈중앙 방식의 시스템 운영이 가능하다.

신뢰성

블록체인에 기록된 데이터는 해킹을 통한 위변조가 매우 어렵기 때문에 누구나 신뢰할 수 있다. 블록체인에 기록된 내용은 해시함수에 의해 변환되어 암호화된 형태로 저장된다. 만약 내부자 또는 외부 해커가 시스템에 침입하여 특정 데이터를 위변조할 경우, 해당 데이터의 해시값이 변경되어, 위변조 사실을 즉각 알아낼 수 있다. 블록체인에 기록된 데이터의 양이 아무리 많아도 그 중에서 단 한 글자만 변경해도 전혀 다른 해시값이 나오기 때문에, 다른 사람이 모르게 데이터를 변경·삭제·추가하는 일은 불가능하다. 게다가 해시트리 구조로 데이터를 관리하기 때문에 어떤 위치에서 어떤 내용이 위변조되었는지를 즉각 알아낼 수 있다. 따라서 블록체인에 기록된 데이터는 단지 "블록체인에 기록되어 있다"는 이유만으로도 누구나 신뢰할 수 있다.

블록체인 자체를 해킹하는 유일한 방법은 전체 네트워크의 50% 이상에 해당하는 막강한 해시 연산 능력을 보유하고, 다른 정직한 노드들보다 더 빠른 속도로 신규 블록을 생성하여 네트워크에 전파함으로써, 다른 노드들이 정상적인 데이터가 아니라 위변조된 데이터가 포함된 블록체인을 채택하도록 만드는 것이다. 이것을 흔히 51% 공격이라고 부른다. 51% 공격을 성공하려면, 해당 블록체인 네트워크에 참여한 다른 모든 노드들의 해시 연산 능력을 합친 것보다 더 큰 해시 파워를 보유해야 하는데, 사실상 불가능에 가깝다. 물론 아주 예외적이기는 하지만, 참여자가 매우 적은 블록체인인 경우, 51% 공격이 성공할 수 있다. 하지만 블록체인 네트워크에 참여자 수가 늘어남에 따라 50% 이상의 해시 파워를 확보하는 것이 매우 어렵기 때문에, 51% 공격이 사실상 불가능해진다.

안전성

블록체인에 기록된 데이터는 분산 저장하기 때문에, 특정 노드에 대한 디도스 공격이나 랜섬웨어 공격 등으로부터 안전하다. 디도스(DDoS)란 Distributed Denial of Service의 약자로서, 특정 서버 컴퓨터가 처리할 수 있는 용량을 초과하는 정보를 한꺼번에 보내 과부하로 서버를 다운시키는 공격을 말한다. 예를 들어, 최대 1,000명이 동시 접속할 수 있는 서버에 2,000명이 동시 접속을 시도하면, 서버가 부하를 이겨내지 못하고 다운되거나 먹통이 되어 정상적인 서비스를 제공할 수 없게 된다. 기존의 서버-클라이언트 구조에서는 중앙 서버에 디도스 공격을 함으로써 전체 서비스를 마비시킬 수 있다. 랜섬웨어(ransomware)란 해커가 침입하여 컴퓨터 시스템에 있는 파일들을 암호화하여 알아볼 수 없게 변조해 버리고, 일종의 몸값(ransom)을 지불하면 복호화할 수 있는 암호를 알려주는 해킹 공격을 말한다. 기존의 서버-클라이언트 구조에서는 중앙 서버가 랜섬웨어 공격을 당하면 전체 서비스가 마비되는 문제가 있었다.

기존의 서버-클라이언트 구조와 달리, 블록체인 구조에서는 다수의 노드들이 동일한 데이터를 복사하여 분산 저장하고 있기 때문에 디도스 또는 랜섬웨어 등 외부의 공격으로부터 안전하다는 장점이 있다. 블록체인 네트워크에 참여하는 특정 노드를 공격하여 해당 시스템을 마비시키더라도, 다른 노드에 있는 서버 컴퓨터들이 정상 작동하기 때문에 서비스를 안정적으로 제공할 수 있다. 블록체인 네트워크를 구성하는 전 세계 모든 노드들을 상대로 동시에 분산 서비스 거부 공격(DDoS)이나 랜섬웨어 공격을 하여 전 세계 모든 시스템을 동시에 마비시키지 않는 한, 블록체인에 기록된 데이터는 외부 공격으로부터 안전하다. 블록체인 네트워크에 참여하는 전 세계 모든 노드를 동시에 공격하는 것은 매우 큰 컴퓨팅 파워가 필요하기 때문에 사실상 불가능하다.

탈중앙

블록체인은 해킹을 통한 데이터의 위변조가 매우 어려울 뿐 아니라, 디도스 공격이나 랜섬웨어 공격 등으로부터 안전하다는 장점이 있다. 블록체인에 일단 한 번 기록된 데이터는 위변조가 거의 불가능하며, 해당 블록체인 네트워크가 유지되는 한, 영구적으로 보존된다.


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

활용

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

같이 보기