본문 바로가기

기타 컴퓨터 기술

블럭체인 기술

기술 개요 및 기본 원리

블록체인은 분산 컴퓨팅 기술 기반의 원장 관리 기술이다. 좀 더 자세히 설명하면 어떠한 점점 커지고 확장해 나가는 데이터(원장)를 여러 컴퓨터에 나누어 저장하면서도 안정적으로 데이터를 동일하게 열람하고 누군가 임의로 수정할 수 없게 만드는 기술이라고 할 수 있다. 

여기서 중요한 개념은 원장으로 이 데이터는 아무렇게나 변하는 것이 아니라 순차적으로 확장해 나가는 방식으로 한정된 것을 의미한다. 블럭체인에서는 이 데이터가 블럭 단위로 추가되며 이 블럭들은 추가된 순서의 체인 형태로 연결된다. 이것은 자료구조를 배웠다면 배운 Linked List의 형태와 같다. Linked List의 원리와 데이터 추가가 쉽다는 장점을 생각하면 블럭체인의 기본 구조는 원장 형태의 데이터에 데이터 추가를 위한 가장 효율적인 형태로서 채택된 것이다.

체인 형태의 구조가 데이터 확장성과 관련이 있다면 데이터의 안정성과 관련한 부분은 데이터를 여러 컴퓨터에 분산 저장하는 것이다. 분산 컴퓨팅 기술을 활용해서 같은 데이터를 똑같이 여러 컴퓨터에 저장함으로서 데이터가 쉽게 변하지 않게 함으로서 데이터의 안정성을 높였다. 이 덕분에 데이터가 잘못 저장되거나 악의적인 수정에도 데이터가 망가지는 일 없이 안정적으로 데이터 열람 및 추가가 가능한 것이다.

 

블럭

다시, 블록체인에서 데이터 구성의 기본인 블록에 대해 좀 더 자세히 알아보자. 블록은 헤더와 바디로 구성되어 있다. 헤더에는 블록의 이름에 해당하는 해시와 이전 블록의 해시 그리고 버전이나 논스(Nonce와 같은 블록을 설명하는 필수적인 정보를 포함한다. 바디에는 거래 정보나 기타 거래와 관련된 정보들이 담겨 있다.

앞서 설명한 헤더 정보 중 블록의 이름, ID에 해당하는 해시는 블록의 핵심이라고 할 수 있다. 해시는 해시 함수를 통해 생성되는데 해시 함수는 어떠한 입력들을 특정한 고정된 길이의 데이터로 변환하는 함수로 그 입력이 조금이라도 달라지면 그 출력도 완전히 달라진다는 특징을 가지고 있다. 블록체인에서는 블록을 생성할 때 해당 블럭의 헤더 정보를 포함 모든 데이터를 해시 함수의 입력으로 사용하는데 여기서 중요한 점은 이 정보에는 이전 블록의 이름을 포함한다는 것이다. 이에 따라 이전 블록의 정보가 바뀌면 그 블록의 해시가 달라질 뿐만 아니라 최신 블록의 해시도 연쇄적으로 바뀌게 된다. 이것은 전체 데이터가 온전한지 즉 데이터 무결성을 검증하는데 중요한 역할을 하게 된다.

일반적으로 블록헤더에는 블록이 생성된 시간을 나타내는 타임스탬프 값이 포함된다. 이 타임스탬프 값은 보통 Unix 시간을 사용한다. 다만 이 타임스탬프 값은 컴퓨터마다 시간이 조금 씩 다를 수 있고 악의적으로 시간 수정 등 여러 요인으로 인해 정확한 블록 생성 시점을 반영하지는 못한다. 그렇지만 정상 범주의 타임스탬프를 가진 블록을 제외하거나 블록 생성 시 컴퓨터들이 합의하는 과정에서 이를 검사하는 등 블록체인마다 나름의 여러 방식을 통해 오류를 최소화 하고 있다.

그 외에도 블록헤더에는 비츠, 논스 등 블록 체인에 필요한 정보를 포함한다. 이는 블록체인마다 그리고 특징에 따라 달라지므로 여기서는 자세한 설명을 하지 않는다.

블록바디의 거래 정보는 블록체인마다 포함되는 정보의 종류나 양은 각기 다르다. 또한, 정보를 기록하는 방식도 다 다른데 보통 기준이되는 비트코인의 경우를 살펴보자. 먼저 어떠한 거래가 체결되면 그 거래 정보는 거래 풀에 확정되지 않은 상태로 저장이 된다. 그리고 비트코인의 블록이 생성되는 순간 블록을 생성한 사람은 거래 풀에서 자신의 기준에 맞는 거래들을 블록에 기록 가능한 수 만큼 골라 블록에 기록하며 이렇게 블록에 기록된 거래들은 거래가 확정된다. 이 거래 정보들도 마찬가지로 블록의 해시 생성 시 입력으로 사용된다.

요약하자면 블록체인은 블록의 모든 정보를 포함해 생성한 해시 그리고 블록 간 해시를 통해 연결한 구조를 통해 블록체인의 핵심 기술인 블록체인의 무결성 보증 및 거래를 구현한다.

 

합의 알고리즘

앞에서 알아본 바와 같이 블럭체인에서 데이터의 무결성을 확인하는 방법은 각 해시가 제대로 생성되었는지 첫 블럭부터 순차적으로 재현함으로서 확인이 가능하다. 그러나 이는 블럭체인이 오류 없이 제대로 작성되었는지 확인하는 것이지 해당 내용이 진실된 것인지 까지는 알 수 없다. 이를 블럭체인의 특징중 하나는 다수가 같은 데이터를 공유하는 분산원장이라는 것인데 이를 활용해서 다수가 검증한 데이터를 진실된 데이터로 선택하게 된다.

그러나 단순히 다수결로 데이터를 선택하는 것만으로는 부족하다. 만약 어떤 악의적인 의도를 가진 사람이 해킹이나 기타 여러 방법을 통해 다수의 데이터를 조작할 수도 있는 것이다. 이를 방지하기 위해서 블록체인마다 합의 알고리즘이라는 것을 사용하게 된다.

블록체인에서 다양한 합의 알고리즘들이 사용되지만(참고: 합의 알고리즘) 크게 작업 증명 방식과 지분 증명 방식이 사용된다.

작업 증명 방식은 블록을 생성 시 컴퓨터를 사용해 어떠한 작업을 했음을 증명하도록 하는 방식이다. 일반적으로 특정 조건을 만족하는 해시 값을 찾는 작업을 요구하며 다수의 다른 사용자들(노드)이 이름 검증하는 과정까지 거쳐야 비로소 블록 생성이 완료된다. 이렇게 블록 생성 시 높은 컴퓨팅 파워를 요구하기 때문에 블록체인을 악의적으로 공격하려고 해도 수정한 데이터가 다른 사람들에게 받아들여지려면 최소한 누군가 블록 생성에 들인 작업량 이상을 해내야 할 수 밖에 없다. 가장 대표적이자 비트코인에도 적용된 작업 증명 방식은 해시캐시(링크) 방식으로 특정 조건을 만족하는 해시 값을 찾을 때까지 계산하도록 하여 작업 증명을 구현하였다.

지분 증명 방식은 암호화폐를 보유하고 있는 비율에 따라 블록을 생성할 권한이 많아지는 방식이다. 보통 이더리움을 포함한 지분 증명 방식을 체택한 블록체인 기술들은 많은 지분을 가질 수록 블록을 생성할 확률이 높아지는 방식을 사용하고 있다. 이것은 작업 증명 방식에서 요구하는 작업이 보통 쓸모 없고 에너지 낭비를 과도하게 유도하는 작업 증명의 단점을 보완하고자 나온 방식이다. 추가적으로 지분이 많을수록 보상을 주는 시스템 덕분에 블록체인 시스템을 유지하는 동기를 부여할 수 있다는 장점도 존재한다.

이 두 방식이 일반적으로 사용되는 방식이며 이외에도 블록체인 참여자들이 투표권을 행사해 대리인을 선출하고 대리인들이 블록 생성 등의 여러 권리를 행사할 수 있게 하는 위임지분방식이나 암호화폐를 소각하도록 하여 채굴할 가능성을 높이는 소각 증명 등 다양한 방식의 합의 알고리즘이 존재하며 이러한 알고리즘이 각 블록체인 및 암호화폐의 특징을 크게 좌우하게 된다.

 

프라이빗 블록체인

블록체인 기술은 비트코인이라는 암호화폐에서 시작된 것에서 보이듯 암호화폐와 밀접한 관계를 보이고 그에 따라 위에서 설명한 블록체인 핵심 기술들은 공개된 암호화폐 시스템을 유지하는데 주로 사용된다. 그러나 블록체인의 분산 시스템을 활용한 데이터 보안에 초점을 맞추어 다른 분야에서도 활용할 수 있는 가능성을 확인할 수 있었기에 이러한 기능만 활용하고자 하는 요구도 있었다. 주로 기업과 같은 곳에서 데이터 보안 목적으로 활용하고자 했으며 이를 위해 프라이빗 블록체인이라는 기술이 등장하게 되었다.

프라이빗 블록체인은 허가된 사람만 블록체인에 참여할 수 있게 하는 것이 목표로 참여자에게 읽기, 거래 검증, 거래 생성 등 별도의 권한을 갖도록 하는 것도 가능하다. 또한, 허가된 사람은 이미 신뢰성이 확보된 사람으로 이를 전적으로 신뢰하기 때문에 합의 알고리즘이나 시스템 유지를 위한 여러 장치가 크게 필요하지 않아 처리 속도도 빠른 것이 일반적이다.

하지만, 허가된 참여자의 신뢰에 기반하기 때문에 동시에 허가된 참여자가 악의적인 조작을 시도할 경우 시스템이 무너질 수 있는 단점은 여전하다. 프라이빗 블록체인은 기업이나 기관에서 사용할 수 있도록 하는 것이 핵심이므로 이들의 요구 조건을 맞추면서도 안정성 확보와 처리속도의 트레이드오프를 어떻게 해결할지가 프라이빗 블록체인 기술의 핵심이라고 할 수 있다.

 

마무리

지금까지 내가 블록체인에 대해 알아본 것들을 정리해 보았다. 블록체인 기술은 단순히 알고리즘 자체에 국한한 것이 아니라 블록체인에 참여하는 사람들의 행동을 어떻게 제어할 것인지도 중요하게 다루고 있다는 점에서 굉장히 혁신적이라고 할 수 있다. 사실 자세하게 적자면 끝도 없을 것 같아서 자세한 설명을 생략한 부분도 많다. 일단 이론적인 내용보다도 실제로 기술을 다루어 보면서 블록체인에 대해 좀 더 자세히 정리해 나가고자 한다.