1. 해시캐시 (HashCache)
- 해시함수를 fn(X) = Y 로 표현한다면, X는 입력값 Y는 출력값이다.
이 중에서 이쁜 Y를 만들기 위해 X를 바꿔가며 입력할 수 있는데,
이쁜 Y를 만든 X를 HashCache라고 부를 수 있다.
그런데 X에는 자동으로 고정되는 값이 몇개 포함되어 있어야 하고,
사용자가 임의로 설정할 수 있는 값도 있어야 한다.
즉, 수신자의 메일주소와 같이 바꿀 수 없는 값 + 사용자가 임의설정 가능한 카운터 = X로 했을때
이쁜 Y를 만들 수 있는 X를 HashCache라고 부를 수 있다.
(해시캐시의 개념은 스팸메일 필터링에서 나온 개념이므로 수신자의 메일주소를 주로 포함한다.
90년대 국제표준에서는 Y의 앞자리20자리가 0이 되는 X값을 해쉬캐시로 정했었다.)
2. Nonce
- 위 예제에서 사용자가 설정한 임의의 카운터를 Nonce라고 부를수 있다. 나머지 고정된 값들을 제외한 사용자가
고생을 해서 산출해야 하는 값이다.
- 이쁜 Y라고 부르는 이유는, Y값의 범위를 정하거나 모양등을 정하므로서, 알고리듬의 복잡도가 탄생한다.
즉, Y값을 000000000xxxxxxx 이런식으로 고정한다면, 이를 위해서 사용자는 nonce를 여러번 생성해봐야지 적당한 nonce를 구할 수 있다.
- 비트코인에서는 총32Byte(256bit) 중, 앞자리 40 bit가 0이어야 한다.
이러한 해시캐시(Nonce포함)개념으로 하나의 블록을 생성한다.
3. 블록체인
- 앞에서 설명한 하나의 블록을 여러개 연결한게 블록체인이다.
- 연결방식은 뉴블록 = 직전블록의 Hash값 + 뉴데이타 + 뉴Nonce 이다.
- 뉴뉴블록 = 뉴블록 Hash값 + 뉴뉴data + 뉴뉴nonce로 항상 직전 Hash값만 포함한다.
이것만으로도 이전의 모든 블록들을 마치 다 포함하는 것처럼, 앞 선 모든 블록들을 아무도 고치지 못하는 효과가 생긴다.