참고 사이트 

https://brunch.co.kr/@springboot/103 를 참고했습니다. 

 

블록체인 이란?

블록체인은 원장 분산 시스템으로 P2P 형식으로 노드와 사슬이 연결되어 있는 방식입니다. 1세대 블록체인 기술백서에서는 합의 알고리즘으로 동작합니다. 블록체인은 decentualize 를 실현하며, 흔히 말하는 DAPP 을 통칭 합니다. 이를 통해 중앙 집권 저장방식에서 분산화된 개인이 데이터를 저장가능합니다. 하지만, 아쉽게도 블록체인 트랜잭션을 개인이 전부 가지고 있기에는 역부족 이기 때문에 아이러니 하게도 거래소와 같은 곳에서 이러한 데이터를 관리하게 됩니다. 

 

Hash 정의, 사용 이유

Hash는 일반적으로 암호화가 적용된 SHA-256 을 사용하며, 사용하는 이유는 객체를 구별하기 위해 사용합니다.

Hash 단독으로 사용되는 것보다 `이전해쉬 + 데이터값 + 타임스태프 + nonce` 로 조합하여 만들고 Hash Function 을 사용해 Hash를 구합니다.

 

블록체인 원리 & 이슈 

각 블록들은 현재 노드에서 이전 노드의 해시를 참조하고 있습니다. LinkedList 와 다르게 해시의 값이 바뀌면 연결이 무너지기 때문에 값의 위변조를 파악할 수 있습니다. 

 

다음 블록이 pre_hash 는 이전 블록의 hash 를 가리키고 있습니다.

 

구현

nunce 를 활용해서 `00000` 를 포함한 블록들을 생성하고 연결시켜 구현하는데 목적이 있습니다. 

만약, 위변조가 발생하여 해시값이 변경되고 사슬이 끊어지는 과정을 확인하는것을 빠져있습니다. 

 

Click

 

해싱 활용 사례

해싱활용 사례는 카빈 핑커 프린트 알고리즘 이 있습니다. 일반적으로 문자열 탐색을 진행할 때 문자열 길이만큼 시간복잡도가 발생하지만 카빈 핑커 프린트 알고리즘을 활용하면, 해당 문자열 길이만큼 Hashing 처리하여 index로 처리할 수 있기 때문에 O(1) 안에 처리할 수 있습니다.