본문 바로가기

블록체인 기초

해시함수, SHA-256, 해시레이트(hashrate)

해시함수(Hash function)

 

어떤 내용을 넣더라도 항상 같은 길이의 결과를 내놓는 함수이다. 해시 함수를 적용해 나온 고정된 길이의 값을 해시 값이라 한다. 해시 코드, 해시섬, 체크섬 등으로도 불리기도 한다.

 

해시 함수는 특정 데이터에 대해 언제나 동일한 해시 값을 내놓는다. 그러므로 두 해시 값이 다르면 원래의 데이터도 다르다. 또한 원래 입력 값에서 1bit만 바꿔도 해시 값은 크게 달라진다. 이러한 성질 때문에 해시는 정보의 위변조를 확인하기 위한 용도로 쓰인다.

 

- wikipedia

 

한편 해시 함수는 단사 함수(일대일 함수)가 아니다. 같은 해시 값을 갖고 있다면 원래의 입력 값이 서로 같을 가능성은 있으나, 꼭 그렇다고 보장할 수는 없다.

 

 

단사 함수(일대일 함수) : 정의역의 특정한 원소를 공역의 특정한 원소로 대응시키는 함수

전사 함수 : 공역과 치역이 같은 함수

전단사 함수(일대일 대응) : 두 집합 사이를 중복 없이 모두 일대일로 대응시키는 함수

 

해시는 사람의 지문과 유사하다.
- AD4th 홍준 대표

 


SHA(Secure Hash Algorithm)

 

미 국가안보국(NSA)에서 1993년에 설계한 암호 알고리즘이다. 인터넷 보안 표준으로 채택되어 널리 이용되고 있다. 최초로 만든 함수는 SHA이고, 이후에 만든 함수는 별도로 구분하기 위해 SHA 뒤에 숫자를 붙인다.

 

비트코인의 경우, 어떤 데이터든 256비트(= 32byte) 데이터로 바꿔주는 SHA-256을 사용한다. 그러므로 작업증명(PoW)을 통해 보상을 받기 위해서는 SHA-256 해시함수에 여러 값을 대입하여 논스를 구해야 한다.

 

- opencores.org/project/sha256core

 

SHA-256은 256비트의 결과물을 출력한다.
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f 로 구성된 해시를 출력하는 프로그램(16진수)

 


해시레이트(Hashrate)

 

해시레이트는 연산 처리속도를 나타내는 단위다. 초당 연산 회수로 GH/s, TH/s 등의 단위를 사용한다. 1TH/s(Tera Hash per second)는 초당 1Tera Hash를 처리할 수 있다는 의미다. 일례로, ASIC 채굴기인 Antminer S9은 13,500GH/s 수준의 성능을 갖는다.

 

해시레이트가 높아져서 연산량이 많아지면 그만큼 채굴이 빨리 이루어지기 때문에 네트워크 내 채굴 난이도는 더 높아지게 된다.

 

- Antminer S9

 


해시(Hash) : 특정한 문자열을, 더 짧은 길이의 값이나 키로 변환하는 것이다.

 

해시캐시(Hashcash) : 스팸 메일 필터링에서 나온 개념으로, SHA-256을 기반으로 하는 비트코인 작업증명 방식을 이른다.

 

ASIC(Application Specific Integrated Circuit) : 반도체 업체에서 사용자의 주문에 맞춰 설계·제작한 주문형 반도체이다. 블록체인에서는 암호화폐 채굴에 특화된 반도체를 이르는 말로, 그래픽 카드 대비 수만 배 이상의 빠른 연산 속도를 갖는다.