비트코인의 핵심 기술, 블록체인이란? - 모두의 블록체인 #6

    최초의 암호화폐들로 이캐시(eCash)와 비트골드(Bitgold)에 대해서 배워봤으며 사토시 나카모토에 관해서 알게 되었다. 그러면 이제는 본격적으로 비트코인의 기술들에 대해서 살펴봐야 될 것이다. 


    그동안 필자의 유튜브 영상이나 포스팅을 쭈욱 봐온 사람들이라면 다양한 블록체인의 기술을 이미 알고 있겠지만 이번에 시작하는 강의는 그동안의 중구난방 작성된 강의들을 리부트 형식으로 다시 작성하고 모은 강의이기 때문에 중복된 언급과 동일한 내용의 강의를 할 수 밖에 없다는 점 양해 바란다.




    블록체인의 등장배경


    비트코인(Bitcoin)이라는 것은 시민들이 국가를 신뢰하지 못하고 우리 스스로 화폐를 생산하여 사용하는 것으로 신뢰를 위해 모두가 동일한 장부를 가지고 있어야 한다. 즉, 철수가 작성한 비트코인 장부와 내가 사용하는 비트코인 장부가 완벽히 일치가 되어야 한다는 것이다. 


    그러나 분산된 환경에서 완벽히 일치하는 것에 대한 시도는 다양한 문제점을 수반한다. 


    첫째, 실시간 거래 동기화 문제


    장부가 모두 실시간 성으로 동기화 되려면 사실상 한 곳에 집중된 서버에서 작업이 되어야 한다. 그러나 비트코인은 전세계 사람들이 모두가 사용하는 화폐로 특정 지역에 서버가 몰려 있다면 아무도 해당 화폐를 글로벌 화폐로 인정해 줄수 없을 것이다.



    둘째, 복사의 위험


    컴퓨터라고 하는 것은 누구나 쉽게 모조품을 만들 수 있으며, 심지어 이 모조품의 퀄리티가 진품과 차이 나지 않는다. 실제 우리가 사용하는 화폐는 다양한 기술로 인해서 위조지폐와 퀄리티 차이가 나지만 온라인에서는 단지 0과 1의 조합(Bit)으로 이루어진 컴퓨터 신호이며 이 신호라는 것에 퀄리티는 존재할 수 없다.



    이와같이 치명적인 문제점을 최초의 암호화폐인 eCash는 은행이라는 중앙기관을 통해 문제를 해결(?)하였고, 비트코인의 선구자라고 불리는 Bitgold는 해결점을 찾지 못해서 끝내 포기하고 만다. 


    하지만, 사토시는 블록체인이라는 기술과 특화된 합의 방식을 통하여 분산이 가능한 구조로 절대 해결하지 못할 것 같은 난제를 해결하였으며 이로 인해 다양한 서비스 및 기존에 불가능한 구조의 개편들이 가능하기에 블록체인이 인터넷만큼 혁명적이라는 말을 하게 된 것이다.



    블록체인에 대한 정의


    블록체인은 사토시 나카모토가 비트코인을 만들기 위한 기술로 채택한 필수 기술이다. 흔히들 사토시가 블록체인을 만들었다고 착각할 수 있는데 사토시는 블록체인을 만든 사람이 아니라 숨겨졌던 이 기술(다행히 2004년에 특허권이 만료되었던...)을 잘 활용하여 비트코인에 녹여낸 사람이다. 한마디로 적절한 Know-Where와 천재적인 결합을 더한것이라 볼 수 있다. (뭐 비슷한 사례로 스마트컨트랙트를 비탈릭 부테린이 만들었다고 착각하는 사람이 있는데 스마트 컨트랙트는 Bitgold를 만든 닉 자보(Nick Szabo)가 만들었다)


    블록체인 기술에 대한 아이디어는 1991년 초,과학자 스튜어트 하버(Stuart Haber)와 스캇 스토네타(W. Scott Stornetta)에 의해 제시되었습니다. 이들은 실용적인 수학적 해결책을 타임 스탬핑에 도입해 디지털 문서의 날짜가 변경되거나 위조될 수 없게 했습니다. 


    이는 타임 스탬프를 저장하는데 암호학적으로 안전한 블록들의 체인을 사용했으며, 1992년 머클 트리 구조를 도입한 후 여러 문서를 하나의 블록에 모을 수 있게 되며 보다 효율적이게 됐습니다. 그러나 이 기술은 사용되지 않기 시작했으며, 비트코인이 탄생하기 4년 전인 2004년에는 특허권이 만료되었습니다.


    - 바이낸스 -


    사실 신기술에 대한 정의는 그 무엇보다 어렵고 복잡하다. 마치 소련보다 먼저 달로 간 미국의 닐 암스트롱(Neil Alden Armstrong, 1930 ~ 2012)이 달나라에 성조기를 꽂는 미국의 행동과도 같이 신선하고 발전이 무궁무진한 기술에 자신들의 정의를 녹여 선점하고 싶어하는 욕망으로 수많은 협회로부터 각기 다른 해석과 정의가 내려지게 되었다. 



    그렇기 때문에 필자는 하나의 협회에 대한 정의보다는 집단지성인 위키피디아(Wikipedia)에 있는 정의로 대신 할까 한다. 


    관리 대상 데이터를 '블록'이라고 하는 소규모 데이터들이 P2P 방식을 기반으로 생성된 체인 형태의 연결고리 기반 분산 데이터 저장환경에 저장되어 누구라도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있는 분산 컴퓨팅 기술 기반의 원장 관리 기술


    - 위키피디아 -


    위 정의를 토대로 생각해보면, 블록체인이라고 하는 기술은 P2P(사람대 사람이 직접 통신) 방식을 기반으로 하되 원장을 누구도 변경을 할 수 없게끔 체인 형태로 연결을 하여 저장을 한다는 것이다.


    우리는 이를 토대로 몇가지 사실을 알 수 있다. 하나는 누구도 정보를 변경할 수 없는 것으로 데이터 무결성(Data Integrity)를 가질 수 있으며 또 하나는 P2P 방식으로 이루어졌다는 것이다. 



    블록체인의 구조


    비트코인을 위해 커스터마이징된 블록체인 기술은 다음과 같은 구성요소들을 가지고 있다. 바로 장부의 집합으로 이루어진 블록, 거래시각이 적힌 타임스탬프, 거래가 트리로 연결된 머클트리(Merkle Tree), 그리고 문제를 풀기 위한 난스(nonce) 등으로 이루어져 있다.



    각각의 개별 요소들은 별도의 포스팅으로 설명을 해야 할테니 일단 넘어가고, 간단히 블록체인을 실생활에 비유를 해보면 블록이라고 하는 것을 가계부에 적힌 하나의 페이지라고 인식을 해보면 쉬울 것 같다. 이 가계부 페이지 안에는 일정 크기의 각종 거래내역들이 적혀 있을 것이다.



    그리고 이 가계부를 모두가 독자적으로 갖고 있는데 워낙 많은 사람들이 가지고 있어서 실시간으로 처리를 할 수 없으며, 일정 시간이 완료된 거래를 묶어서 처리를 하게 된다.(비트코인은 10분) 거래의 내역은 순서가 매우 중요하며 사람들이 변조를 할 수 없게 해시(Hash)를 사용한다. 그리고 거래 해시들을 머클트리라는 구조로 묶어서 최상위의 루트의 모양만으로 거래의 내용이 같은지 다른지 알 수 있게 된다. (머클트리는 변경을 찾기에 최적화된 나무 형태의 구조이다)


    Source, https://github.com/anudishjain/Merkle-Tree

    머클트리의 구조


    참고로 머클트리를 쉽게 이해하는 방법으로 시간여행에 관련된 영화를 예상하면 된다. 과거의 하나를 살짝 바꿨더니 미래가 확 바뀌는 것을 머클트리로 생각하면 된다. 위 머클트리의 구조를 보면 맨 하단에 위치한 값들은 상단의 값들에게 영향을 주게 되어있다. 그리고 최종 Root는 모든 개별적인 요소에 영향을 받는다. 이를 통해서 어떤 위치의 값이 변하였는지 알 수 있게 된다. 


    과거를 살짝 바꿨더니 미래가 완전 바뀌어져 있는 시간 여행의 대표적인 '백투더퓨처'

    머클트리를 이해하기 좋은 예이다


    하나의 블록은 이전블록과 연결이 되는데 바로 이전 블록 헤더의 해시값을 새로 만든 블록에 연결하기 때문이다. 쉽게 체인형태로 모든 블록이 연결이 되어 있는 모양새이며 이로 인해 블록체인이라 부른다. 이를 가계부로 비유하면 기존의 페이지 개념이 아니라 가계부마다 독특한 값으로 지정되어 있으며, 현재의 가계부는 이전 가계부 페이지의 독특한 값이 적혀 있는 것이다. 이를 통해 가계부의 순서를 알 수 있다.



    가계부의 순서는 Page 번호를 토대로 알 수 있겠지만 블록체인은 페이지라는 개념이 존재하지 않기 때문에 이렇게 해시값으로 연결을 하게 되는 것이다. 



    마치며... 간단 요약

    블록체인을 간단히 요약하자면 전세계에서 행해진 거래 내역들을 서로간에 같이 검증을 하게 되고, 검증이 된 내역들을 특정 시간 단위로 블록(가계로부 따지면 여러개로 이루어진 한 장의 거래 페이지)화 하여 공통으로 갖게 된다. 이때 이전 블록 정보를 현재 블록에 기록하여 현재 블록과 이전 블록을 연결하게 된다. 




    참고자료


    댓글

    Designed by JB FACTORY