성수동 힙스터의 스타트업 이야기

[웹 3.0 핵심 기술] 알기 쉽게 정리한 블록체인의 개념과 해시함수 본문

Ⅱ. 스타트업 인사이트/스타트업 테크 설명서

[웹 3.0 핵심 기술] 알기 쉽게 정리한 블록체인의 개념과 해시함수

성수동 힙스터 2022. 3. 6. 21:33
반응형

[웹 3.0 핵심 기술] 알기 쉽게 정리한 블록체인의 개념과 해시함수

사진 출처: Pixabay

 

이번 포스팅에서는 요즘 많은 주목을 받고 있는 차세대 인터넷 웹 3.0에서 가장 중요한 기술인 블록체인의 개념을 정리하고, 블록체인 기술의 핵심을 이루는 '해시함수'에 대해 자세히 살펴보도록 하겠다.

< 목 차 >

1. 블록체인(Blockchain)의 개념
1) 블록체인(Blockchain)이란?
2) 블록체인(Blockchain)의 구성요소

2. 블록체인의 핵심 기술, 해시함수 

  1) 해시함수(Hash function)란?
  2) 해시함수(Hash function)의 세 가지 특징

 

1. 블록체인(Blockchain)의 개념 



1) 블록체인(BlockChain)이란?

출처: 물리산책&amp;nbsp;

블록체인(Blockchain)은 말 그대로 블록과 블록을 체인 형태(Linked list)로 연결한 자료 구조를 말한다. 즉, 일정 기간 내에 이루어지는 거래 내역(=데이터)을 하나의 블록(Block)으로 묶어 기존에 생성된 블록에 체인(Chain)처럼 계속 연결하는 데이터 구조를 말한다. 

바꿔 말하면 블록체인 블록(Block)에 데이터를 담아 체인(Chain) 형태로 연결한 후, 이를 복제해 수많은 컴퓨터(= 노드)에 동시에 저장하는 분산형 데이터 저장 기술(Distributed Ledger Technology)을 의미한다. 중앙 집권적 서버거래 내역(=데이터)을 보관하지 않고, 거래에 참여하는 모든 사용자에게 거래 내역을 보내주며, 거래 때마다 모든 거래 참여자들이 정보를 공유하고, 이를 대조해 데이터 위조나 변조를 할 수 없도록 되어 있다.

그럼 여기서 블록, 체인, 노드가 각각 무엇을 의미하는지 조금만 더 자세히 살펴보자. 

 

2) 블록체인(Blockchain)의 구성요소

 

◆ 블록(Block)

블록(Block)은 의미 있는 데이터를 저장하는 한 단위이다. (ex: A가 B에게 2만 원 송금, C가 E에게 3만 원 송금 등의 거래 내역)
하나의 블록에는 일정 기간 내에 이루어진 여러 개의 거래 내역이 저장된다. 예를 들어, 비트코인 네트워크에서는 블록이 약 10분을 주기로 생성된다. (즉, 하나의 블록에는 약 10분 간의 거래 기록이 담긴다.)  일정 기간 내에 이루진 거래 기록을 모아서 새로운 블록에 담고 신뢰성 검증을 마친 후, 이전 블록에 연결하면 블록체인 형태가 된다.

참고로, 여기서 처음 시작된 블록을 제네시스 블록(Genesis block)이라고 부른다. 즉, 제네시스 블록은 그 앞에 어떤 블록도 생성되지 않은 최초의 블록을 말한다.

 

◆ 체인(Chain)

체인(Chain)각 블록을 연결시키는 고리를 말하며, 각 블록은 '해시함수(Hash function)'라는 강력한 문서 압축기술을 통해 서로 연결된다.

블록체인 이미지 (출처: 필자 직접 작성)&amp;nbsp;


◆ 노드(Node)

블록체인은 중앙 집중형 서버에 거래 기록을 보관/관리하지 않고, 블록체인을 사용하는 모든 거래자들의 개별 컴퓨터에 거래장부를 공유하고 보관한다. 이 거래자들이 자발적으로 모여 네트워크를 유지 및 관리한다. 이 개개인의 서버, 즉 참여자를 노드(Node)라고 한다.

블록체인 시스템에서는 중앙 관리자가 없기 때문에 블록을 배포하는 노드의 역할이 중요하며, 참여하는 노드들 가운데 절반 이상(51% 이상)의 동의가 있어야 새 블록이 생성된다. 노드들은 블록체인을 컴퓨터에 저장해 놓고 있는데, 일부 노드가 해킹을 당해 기존 내용이 틀어져도, 다수의 노드에게 데이터가 남아 있어 계속적으로 데이터를 보존할 수 있다. 

노드(Node)의 이미지 (출처: pixabay)

 

[여기서 궁금한 점!] Q. 어마어마한 블록체인의 거래 데이터량을 사용자들의 컴퓨터가 감당 가능할까? 

A. 현재 모든 블록체인 거래기록의 원본을 보유한 풀 노드(Full node)의 용량은 200GB 정도로, 랩톱 컴퓨터 하드웨어를 꽉 채울 만큼 무겁고 크다. 하지만 모든 개별 사용자나 노드가 이 거래 원본 데이터를 보유하고 있을 필요는 없다. 이 대용량을 저장해야 하는 노드는 전문적으로 블록체인 네트워크를 운영하는 노드(Bitcoin Core, Full block chain node 등)나 비트코인을 채굴(Mining)하려는 노드들이다.

지갑 기능을 주로 사용하는 일반 사용자나 중계 역할을 해주는 노드들은 이 200GB 용량의 풀 노드를 가지고 있을 필요가 없으며, 노드의 목적에 따라 블록의 요약 정보, 즉 라이트 노드(Light node)만 가지고 있어도 문제없다. 세세한 조회가 필요하게 됐을 경우에는 풀 노드로부터 필요한 정보만 받아오면 된다. 

풀 노드(Full Node): 최초의 블록(제네시스 블록)부터 현재 시점까지 일어난 모든 비트코인의 거래기록 원본을 전부 저장해놓은 노드를 말하며, 용량 크기는 약 200GB 정도이다. 

라이트 노드(Light Node): 일부 블록만 소유하고 풀 노드에게서 필요한 정보만을 받아서 유지하는 노드

덧붙여 설명하자면, 현재 비트코인의 풀 노드 용량은 약 200GB 정도로 결코 가벼운 편이 아니다. 만약 풀 노드 용량을 계속해서 늘린다면, 풀 노드를 내려받고 거래를 새로 기록한 뒤 검증하는 데 시간이 너무 오래 걸릴 것이다.

그러나 비트코인 총발행량이 2,100만 개로 제한된 것처럼, 블록의 크기도 초당 15건 정도를 처리할 수 있게 제한되어 있다. (블록 크기는 1개 당 1MB 이내로 제한) 따라서 10분에 약 4MB 블록이 더해지는 속도가 일정하게 유지되고 있으므로, 블록 용량이 200GB에서 갑자기 폭발적으로 늘어나 거래에 차질이 발생할 일은 아직 없다고 보면 된다.

 

2. 블록체인의 핵심 기술, 해시함수

 

1) 해시함수(Hash function)이란?

해시함수(Hash function)는 어떤 데이터를 입력해도 같은 길이의 결과를 도출하는 일방향 함수(one-way function)를 말한다. 도출되는 결과가 중복될 가능성이 굉장히 낮고, 결괏값을 보고 원래의 입력값을 역으로 추정하는 것이 불가능에 가깝다

뜬금없지만 이해를 돕기 위해 자몽주스를 예로 들어보겠다. 자몽(grapefruit)을 믹서기에 넣고 갈면 일정한 용량(ex. 300ml 등)의 자몽주스가 만들어진다. 여기서 자몽원본 데이터, 믹서기해시함수, 자몽주스결괏값(해시값)이다. 자몽을 자몽주스로 만들 수는 있지만, 자몽주스를 다시 자몽으로 만들 수는 없다. 따라서 이 믹서기는 '일방향(one-way)'으로만 작동(function)한다. 

출처: 필자 직접 작성

자몽주스를 만드는 믹서기와 같이 해시함수어떤 원본 데이터를 넣든 간에 일정한 길이문자열 값을 도출하는 함수를 말한다. 이때 도출되는 문자열 결괏값을 해시값(Hash)이라고 한다.

출처: 필자 직접 작성

 

2) 해시함수(Hash function)의 세 가지 특징

 

이어서 해시함수(Hash function)가장 중요한 특징 세 가지를 살펴보도록 하겠다. 

(1) 특정 데이터는 단 하나의 고유한 해시값(Hash)을 가진다. 따라서 원본 데이터가 완전히 같다면, 완전히 같은 해시값을 가진다. 

원본 데이터 해시값(결과값)
블록체인 공부는 흥미진진하다. seon9SuHip5ter
블록체인 공부는 흥미진진하다. seon9SuHip5ter

 

(2) 원본 데이터의 일부라도 다르면 완전히 다른 해시값을 가진다. 

원본 데이터 해시값(결과값)
블록체인 공부는 흥미진진하다. seon9SuHip5ter
블록체인 공부는 흥미진진하다 kusp7adJd3alek

위의 예와 같이, 점(.) 하나만 달라도 완전히 다른 해시값을 가진다. 원본 데이터를 조금이라도 변경하면 해시값이 완전히 달라지기 때문에, 해시값을 비교하면 원본 데이터에 조작을 가했는지 바로 파악할 수 있다.

 

(3) 해시값의 조합만 보고 원본 데이터를 유추하는 것은 거의 불가능하다. 

해시값(결과값) 원본 데이터
seon9SuHip5ter ?????

 

참고로 블록체인 기술에 사용되는 해시함수는 결괏값이 256비트로 도출되는 'SHA-2(SHA 256)'라는 함수다. SHA-2는 결괏값이 160비트로 도출되는 SHA-1에서 한 단계 발전된 형태의 해시함수다. SHA-2는 어떤 길이의 값을 입력해도 결과가 256비트로 도출된다.

*SHA : Secure Hash Algorithm의 약자 

 

 

 

참고 자료: 블록체인 해설서, 만화로 배우는 블록체인, 블록체인 혁명, 블록체인 비즈니스의 미래, 유튜브 채널 '노마드 코더' 블록체인 영상 시리즈 


 

이번 포스팅에서는 블록체인의 개념과 해시함수에 대해 살펴보았다.

다음 편에서는 1) 시함수(Hash function)가 블록체인에서 구체적으로 어떻게 사용되는지, 2) 블록의 구성요소와 블록이 생성되는 과정에 대해 다뤄볼 예정이다. 

 

[다음편] ▶ 블록의 구성 요소를 통해 알아본 블록체인 해킹이 어려운 이유

 

반응형
Comments