[TIL & Issue Note] 20220315
블록체인 원리 (3) - 작업증명 : 해시 퍼즐과 난이도
1. 블록만들기와 해시 퍼즐
해시 퍼즐
- 무차별 대입법 -> 특정 값 -> 무한 반복 산수 문제
- 해시 퍼즐을 푸는 수학적 공식은 없음
- 무수히 반복되는 산수 문제 해결
- 해시를 통해 얻게 되는 고유한 값 32 Byte 값 -> SHA-256
- 유효한 블록의 해시값을 찾을 때까지 무한 반복
- 해시 퍼즐 정답 = 블록 고유 해시값
- 제네시스 블록 해시값 = 2의 32승 번 값 계산 -> 약 10분동안 계산
해시 퍼즐 풀이
- 블록 헤더의 넌스값을 0 으로 설정
- 비트코인 해시 함수를 연속 2번 해싱 (SHA-256) : 임의의 32 Byte 값
- 블록 전체를 해시함수를 연속 두 번 적용하여 나온 해시값 H와 주어진 목표값 T 값을 비교
- 주어진 값보다 더 작거나 갖지 않다 -> 넌스 1증가 (1 ~ 32 까지 증가) -> 임의의 32 Byte 값 생성 반복
- 판단박스 목표 값보다 T보다 작아질 때까지 반복
넌스값
- 입력의 사소한 변화
- 32 Byte 충분히 작은 값이 나올 때까지 반복
- T(목표값) -> 목표값이 작을 수록 만족 힘듦
작업증명
- 퍼즐을 이용해서 의도적으로 막대한 에너지를 소모하게 만든 방식
- 스팸 방지를 위해 개발
- 의도적으로 막대한 에너지를 소모하게 하여 그 일을 억제
- 최초 기록 및 변경에 막대한 에너지 소모 -> 반대 급부의 경제적 이득이 없으면 변경 이유 없다
- 최초의 기록된 노드의 검증 -> 합당한 이유 없다면 정상적 기록을 통한 보상금 -> 합리적 선택
스팸 방지
- 네트워크 과부하 문제
- 어떤 작업을 반드시 해야만 되도록 부과 -> 스팸 억제
2. 해시 퍼즐과 난이도
해시 퍼즐과 난이도
- 목표값이 작아지면 해시퍼즐을 찾을 확률이 줄어듬
- 목표값을 성취하려면 과정 반복 필요
해시 퍼즐의 비유
해시 함수를 통해 얻는 값
- 32 byte로 이루어진 값이 어떤 특정 패턴을 이룰 수 있는 방법 -> 0000 (0), 1111 (2의32승-1)
- 목표값은 작아질 수록 ㅎ시행횟수 증가 -> 오래시간 소요
- 목표값을 조정하여 목표값에 맞는 해시값을 찾는데 필요한 계산횟수
- 횟수는 오래 걸리지만 시간은 10분 소요 -> 과거에 비해 빠른 컴퓨터
난이도 조절 이유
- 컴퓨터가 발달 하여도 10분에 하나씩 블록 생성
목표값과 해시값의 관계
- 1,209,600초 -> 10분이하로 블록 생성
- 늦은 시간 -> 하나의 블록생성시 10분 이상 걸림
- 원래 소요시간보다 적을 겨우 -> 난이도 상승
- 원래 소요시간보다 낮음 -> 난이도 하향
목표값
무어의 법칙
- 반도체의 발달 속도 - 18 개월마다 반도체의 직접도가 두배가 되어
- 18개월마다 컴퓨터 속도 2배 항샹
- 지속적으로 난이도조절
- 2009 ~ 2017 63배
무어의 법칙에 따른 자연적인 증가
- 막대한 하드웨어의 투자 + 전용 기계 -> 인위적 수치
- 난이도 증가는 블록체인의 영속성에 영향