티스토리 뷰

최근 비트코인, 이더리움 등 가상화폐 투자로 짧은 시간에 돈을 많이 번 사람도, 많이 잃어버린 사람도 생겼다는 소식은 들으셨을 것입니다. 이러한 가상화폐는 블록체인이라는 기술을 활용하며 만들어졌습니다.


저희 에티에서도 이전에 블록체인과 관련하여 다음과 같은 기사를 쓴 적이 있습니다. 


(참고: 블록체인 기반의 다음세대 웹, Blockstack블록체인을 IoT 시장에 끌어들이다 – 암호화 스타트업 Ubirch)



출처: crypto-news


이번 뉴스에서는 1)블록체인 기술의 원리를 최대한 간단하게 설명하고, 다음 뉴스에서는 2)비트코인과 채굴 작업에 대해 이해를 해보려고 합니다. 그리고 이번 연재의 마지막으로는 3) 블록체인 기술 활용 스타트업 현황과 향후 전망에 대하여 소개해드리고자 합니다.


블록체인이란 무엇인가?


기존에 거래 내역을 기록할 때, 은행과 같은 제3기관이 중앙에서 거래 내역을 기록하고 관리를 하였으나, 블록체인은 '공공거래장부' 형태로 네트워크에 참여하는 사람들 모두가 기록하고 관리하는 것이라 할 수 있습니다.


예를 들어 한 때 유행했던 싸이월드의 경우 도토리라는 가상화폐를 싸이월드라는 회사(중앙장치)에서 발행하고 관리를 하였습니다. 단, 블록체인 기술을 사용한다면 이러한 중앙장치가 존재하지 않아도 안전성, 보안성 등을 확보할 수 있게 됩니다.



출처: https://openwt.com; 기존의 중앙장치 의존형 거래 방식과 블록체인 방식의 대조



블록체인(Blockchain)을 이해하려면, 이름에서 알 수 있듯이 '블록'을 '체인'으로 엮는 것에 대해 생각하시면 됩니다. 그렇다면 우선 '블록'이란 무엇일까요?


'블록'의 의미

온라인 상에서 어떤 주체끼리의 거래 데이터가 기록되는 장부를 블록이라고 합니다.


'체인'의 의미

그리고 이러한 블록들은 형성된 후 시간의 흐름에 따라 순차적으로 연결되어 '체인'구조를 가지게 됩니다.


즉 이러한 거래 정보가 사슬처럼 묶여 존재하면, 이것은 하나의 장부(모든 기록이 거래 되어 있는 책과 같은 역할)를 의미하게 되고, 이 장부를 '중앙장치'에서 관리하는 것이 아니라 네트워크 참여자들에게 공개, 분산하여 관리하게 됩니다. 아래 그림 설명을 참고 하시기 바랍니다.


출처: 매일경제기사


원리를 이해하시기 위해서는 이 부분이 중요합니다. 거래 데이터를 기록한 블록은 네트워크 내 모든 참여자에게 전송이 되고, 모든 참여자가 해당 블록이 '타당한' 거래라고 승인을 해야만 기존의 블록체인에 연결 될 수 있습니다. 그리고 이렇게 연결된 블록체인은 영구히 저장되기 때문에 누가 임의로 수정을 하는 것은 불가능에 가깝습니다. 


블록체인 기술은 정말 안전할까?


블록체인이 보안성을 가지는 원리는 다음과 같습니다.


어렸을 때 레고 블럭을 쌓았던 경험을 생각해보면 더욱 이해가 쉬우실 것입니다. 블록을 쌓다가 중간에 한 블록의 색깔을 아래처럼 바꾸고 싶다면, 그 부분만 억지로 빼낼 수는 없을 것입니다. 즉, 위쪽의 블록들을 모두 빼내고 원하는 색깔의 블록으로 바꿔준 후 다시 윗 부분을 쌓아야 합니다. 아래의 유명한 그림으로 설명을 드리겠습니다.


출처: IEEE SPECTRUM


1) 위 그림에서 90개의 블록이 만들어져 있고, 모든 참여자들이 새로운 블록(91번째)에 대해 타당성을 확인하는 작업을 하고 있다고 가정해 봅시다. 

2) 그럴 때 어떤 해커가 74번째 블록에 담긴 거래기록을 임의로 수정하고자 한다면, 

3) 블록체인은 체인 구조로 되어있기 때문에 90번째부터 75번째 블록까지 모두 수정해야만, 74번째 블록에 접근하여 수정 할 수 있습니다. 즉 18개의 블록을 만드는데 소요된 모든 컴퓨팅 비용을 감당해야 하며, 

4) 이러한 작업을 모든 사용자가 91번 블록에 대한 타당성 검사를 완료하기전에 끝내야 하기에 사실상 불가능에 가까운 일입니다.


이 설명만 들으면 여전히 의문이 하나 남습니다. '한 블록에 대해 작업을 한다는 것이 무엇인가? 이게 왜 어렵다는 것이지?' 이제 마지막으로 해시함수(Hash Function)를 이해하시면 됩니다. 


해시함수에 대해 이해하기


암호학에서 자주 사용되는 해시함수에 대해서 설명을 드리겠습니다. 해시함수란 한쪽 방향의 계산은 매우 쉬우나, 그 역방향의 계산을 하는 것은 매우 어려운 함수입니다. 즉, Y=F(X)라는 함수가 있을 때, X에 따라 일정한 Y값이 나오지만, Y값을 보고서 X값(입력값)이 무엇이었는지는 매우 알기 어려운 경우를 말합니다. 또한 해시함수 중 Input은 랜덤한 길이의 text를 받으나, 함수의 결과값(해시값)으로는 항상 일정한 길이의 값을 갖는 해시함수가 있습니다.




Mod 함수 자체만으로 고정된 길이의 해시값을 갖지는 않지만, 예로 들어 해시함수를 조금 더 쉽게 이해해보겠습니다. Mod3의 의미는 어떤 X를 3으로 나누었을 때 나머지를 Y라고 정의하는 것입니다. 

즉 Y=Mod3(X) 라고 표현할 수 있습니다. 실제로 X가 7이면 Y=Mod3(7)=1 이 되게 됩니다. 7을 3으로 나눈 나머지가 1이기 때문입니다. 


X->Y 방향: 이 처럼 X를 알면 Y를 쉽게 알 수 있으나,

Y->X 방향: 3으로 나누어 나머지가 1이 되는 X값은 너무 많아 찾기 어려워 집니다. 


이 때, 'Y값은 8보다 작다' 라고 알려주면 조금 더 답을 찾는 속도가 빨라질 수 있습니다. 이처럼 조건을 주는 것을 '해시 조건 완화'라고 부릅니다.


그런데 이러한 '해시 조건 완화'를 위해 컴퓨터에서는 bit의 개념을 사용하기 때문에 앞의 몇개의 0이 있는가를 가지고 조건 완화를 할 수 있습니다. 


컴퓨터는 2진수로 세상을 이해한다고 들은 적이 있으시죠? 해시함수의 결과값이 고정된 길이(4bit, 즉 4자리의 2진수)로 표현 된다고 예를 들겠습니다.


0001=1

0010=2

0011=3

0100=4

0101=5

0110=6

0111=7

1000=8

1001=9

1010=10

...

1111=15


위에서 말한 8보다 작다는 조건은 '4bit 길이의 숫자 중 맨 앞자리가 0인 숫자이다' 라고 바꿔 말 할 수 있게 됩니다.

즉, 이렇게 0이 지속되다가 1이 되는 순간을 체크하는 것을 해시 함수에서 'Nonce'라고 부릅니다. 


일반적으로 블록체인에서 해시함수는 공개표준 함수 중 SHA-256라는 함수를 사용하고 있으며, 256bit중 앞의 40자리를 0으로 채우고, 나머지 216자리를 조정하도록 되어 있습니다. 즉 어떤 숫자나 텍스트를 입력하면, SHA-256 해시함수는 항상 256비트로 이루어진 2진수 값을 출력하게 됩니다. 


그런데 비트코인의 경우, 공식사이트에서 일정한 텍스트를 네트워크 내 사용자에게 보내줍니다. 그리고 이 텍스트의 해시함수 실행 결과가 특정 공식적으로 정해져 있는 값보다 작으면, 블록 생성이 되는 구조입니다. 하지만 실제로 답을 독점할 수 없도록, 매번 입력하는 텍스트 앞에 임의의 텍스트를 추가하도록 해놓았습니다. 즉 변경되어서는 안 되는 거래 정보에 랜덤으로 바꿀 수 있는 텍스트를 추가하여 알맞은 해시값이 나오게 하는 랜덤 텍스트를 찾아 내야 하는 것입니다. 이러한 랜덤 텍스트를 Nonce라고 부르게 됩니다. 그렇게 다양한 임의의 텍스트를 추가하여 실행하다가, 모든 조건을 맞추는 Nonce를 찾아내는 순간 블록이 추가가 되는 형태입니다. 


즉, 블록체인에서 블록들은 자신들의 Nonce값을 찾고, 이전 블록들의 해시값 Y를 가지고 있게 됩니다. 그렇다면 앞서 말한 블록90번에 91번이 추가 될 때 각각 어떤 정보를 가지고 있는지 살펴 보겠습니다.


블록90의 구성 요소

출처: https://brunch.co.kr/@ppineapple17/8


1)블록89의 해시값(89번째 거래내역의 암호화 결과, 즉 이것이 바로 해시함수의 결과인 Y값)

2)블록90의 내용을 암호화한 값, 즉 해시값

3)블록90의 앞 자리가 40비트가 되는 Nonce값 (복호화 시 필요한 내용임)


이때 새로운 블록91이 추가가 되려면 블록91의 Nonce값을 정확히 찾아내야 합니다. 즉, 내트워크 내 여러 사람이 가능한 Nonce값들을 대입하며, 실제로 해시값의 앞 부분 40bit가 0이 되는 Nonce를 발견해야만 합니다. 이렇게 Nonce값을 찾아내게 되면, 새로운 블록91은 기존 블록체인에 연결되게 됩니다.


즉, 블록91이 추가가 되려면 블록90의 해시값과 블록91의 알맞은 Nonce를 조합 후 해시함수에 입력하여 새로운 해시값(앞의 자리 40bit가 0이 되는)을 찾아야 된다는 것입니다.


그런데 이러한 작업은 통상적으로 많은 컴퓨팅 양이 필요하게 되고, 한 명의 해커가 기존 네트워크보다 더 강력한 컴퓨팅 파워를 가지고 있지 않은한, 더 많은 작업량 (18개 수정=18개의 nonce값 찾아내기)을 동일 시간 내(비트코인은 10분마다 전 세계 거래기록을 동기화하므로, 이 안에 모든 해킹 작업을 끝내야 함)에 할 수 없기 때문에 사실상 해킹이 불가능하다고 하는 것입니다. 실제로 2016년 기준으로 비트코인 네트워크에 투입되는 컴퓨팅 파워는 1958만 3587 페타플롭스라고 합니다. 세계에서 가장 바르다는 중국 Tianhe-2호기의 계산력이 33.8 페타플롭스 임을 고려하면, 어떤 슈퍼컴퓨터 소유자가 전체 네트워크의 컴퓨팅 파워를 능가하는 것은 사실상 불가능한 일이라고 볼 수 있는 것입니다. 

정리하면, 블록의 길이가 길어 질수록, 블록의 신뢰도는 증가하게 됩니다. 이러한 강력한 보안성을 바탕으로 블록체인 기술이 각광을 받게 되었다고 이해하시면 됩니다.



다음 회에서는 이러한 블록체인의 기술이 어떻게 비트코인이란 가상화폐를 탄생시켰고, 사람들이 최근 '채굴'이라고 부르는 과정에 대하여 소개드리도록 하겠습니다.




저작자 표시 비영리 변경 금지
신고

인기 포스팅 보기

댓글
댓글쓰기 폼