해시의 정확한 뜻

박재성·2022년 11월 2일
0
post-custom-banner

해쉬의 오래된 기억..

아주 오래 전 내가 처음 면접을 봤을 때가 생각 난다.

"해쉬가 뭔가요"

당시 내가 생각한 해쉬는 해쉬테이블에서 키값을 통해 bigO(1)로 데이터를 찾을 수 있는 구조를 생각했다. 단순히 객체를 떠올렸다...

해쉬의 핵심은 그것이 아닌데 완전 이해하지 못하고 있었다.

해쉬에서 가장 중요한 것은 같은 입력 같은 출력이다. 당연히 함수는 같은 입력 같은 출력 아닌가..?그렇지 않다. 1 + 1도 2고 2 + 0도 2이다. 다른 입력이 같은 출력을 내고 있기 때문에 해쉬가 아니다.

해쉬는 이떤 입력을 받으면 아주 긴 문자열을 반환한다. 예를 들어 imjaesong을 입력하면 sdfsdfsdfdsfdsfaskjhfasjmvndskui을 출력할 것이다. 어떤 곳에서 imjaesong을 입력해도 저 문자열이 출력이 될 것이다. 만약에 누군가 오타를 내, imjeaseong을 입력하면 fhsdfui가 출력 될 것이다. 때문에 우리는 객체에서 키값을 통해 어떤 값을 뽑을 수 있는 것이다. 키값이 고유하기 때문에 정확하게 매핑되는 데이터를 출력하는 것이다.

해쉬는 이러한 것이다. 내가 공부한 이유는 블록체인의 개념을 알아야 했기 때문이다. 블록체인이 뭘까 궁금했었는데 이제서야 알게 되었다.

블록체인과 해쉬?

비트코인은 뭐고 블록체인은 뭘까. 블록체인이 왜 보안이 끝내줄까 이제 약간 해답을 얻었다.

블록체인은 단순하게 블록들의 연결이다. 역시 너무 추상적이다. 일단 블록의 정의를 알아보자.

블록

여기서 블록은 연결리스트의 node를 떠올려 보면 이해가 쉽다. node에는 다음 node의 주소를 담고, data를 담는다. 블록도 이와 비슷하다. 연결 될 체인의 전 블록의 hash값과 data, 해당 블록의 hash를 포함하는 것이 블록이다. 블록체인의 블록들은 한 방향으로 일자로 쭉 연결된다.

그럼 이 블록체인은 왜 보안이 뛰어날까. 더 깊은 이야기가 있지만, 일단 해쉬가 정답이다.

블록들은 전 블록의 해쉬와 현재 블록의 해쉬를 저장하기 때문에 어떤 값이 중간에 변경되면 다른 블록에서 옳지 않음을 깨달을 수 있다. 때문에 함부로 정보를 수정할 수 없다. 하지만 슈퍼 컴퓨터의 빠른 연산을 통해 다음 해쉬값을 알아내면 무용지물이 된다. 벌써 허점이 보이는데 왜 보안이 뛰어날까..?

바로 블록이 추가되려면 작업 증명이 필요하다. 1초에 블록을 100만개를 넣고 싶어도 넣을 수 없다. 블록이 추가되는데 시간을 지연시키도록 설계되었기 때문이다. 때문에 빠르게 해쉬값을 찾아낸다고 하더라도 쉽게 블록을 추가하거나 수정하기 힘들다. 하지만 불가능한 것이 아니기 때문에 여기서 블록체인은 한 번 더 꼬아버렸다.

peer to peer 네트워크가 핵심이다. 간략한 뜻으로 분산처리라고 생각할 수 있다. 해당 블록체인 네트워크에 포함되는 네트워크 모두가 같은 블록체인을 각각 가지고 있다. 새로운 블록이 추가되었을 때 모든 네트워크의 블록체인에 각각 추가되기 때문에 한 곳에서 수정을 한다고 하더라도 다른 곳이 변경되지 않았기에 reject 당하는 것이다. 때문에 우리는 블록체인의 보안이 엄청나다고 하는 것이다.

아주 간단하게 블록체인의 개념에 대해 알았다. 그럼 비트코인은 대체 뭘까 자연스레 궁금해졌다.

비트코인

비트코인의 원리는 블록체인이다. 비트코인을 받는 이유는 블록체인에 블록을 추가했기 때문에 받는 것이다. 무슨 의미냐면 비트코인을 받는 원리는 '보상'이다. 아주 단순한 수학 문제를 풀면 비트코인을 준다. 비트코인을 설계한 블록체인에 해쉬값을 앞에 19자리를 0으로 만들면 비트코인을 보상으로 받는다. 얼마나 간단한가..? 그래서 많은 사람들이 gpu를 엄청나게 연결해서 미친 연산을 하고 있는 것이다. 그래서 비트코인은 해킹이 불가능 하다는 것이다. 그 비트코인은 블록체인 기반으로 관리 되기 때문에 지갑 자체를 훔치지 않는 이상 절대 탈취할 수 없다.

신기한 세상이라고 생각했다. 비트코인 뿐만 아니라 NFT의 개념도 엄청나다. 돈이 없어 NFT를 못 사지만, 나도 opensea?에 내 NFT를 올려서 팔아보고 싶다.ㅋㅋ NFT는 코인과는 다르게 유틸성에 대해 개발자들이 많은 시도를 하고 있다. 지금은 맴버쉽 개념으로 사용하고 있지만 어떻게 될지 정말 관심이 간다.

공룡 IT 서비스들이 사람들의 생활 습관을 바꿨듯이 NFT와 결합된 새로운 시장들이 또 우리의 생활에 변화를 주지 않을까 기대하며 시장 흐름을 잘 살펴야겠다.

profile
개발, 정복
post-custom-banner

0개의 댓글