[TIL & Issue Note] 20220315

블록체인 원리 (3) - 작업증명 : 해시 퍼즐과 난이도

1. 블록만들기와 해시 퍼즐

해시 퍼즐

  • 무차별 대입법 -> 특정 값 -> 무한 반복 산수 문제
  • 해시 퍼즐을 푸는 수학적 공식은 없음
  • 무수히 반복되는 산수 문제 해결
  • 해시를 통해 얻게 되는 고유한 값 32 Byte 값 -> SHA-256 - 유효한 블록의 해시값을 찾을 때까지 무한 반복
  • 해시 퍼즐 정답 = 블록 고유 해시값
  • 제네시스 블록 해시값 = 2의 32승 번 값 계산 -> 약 10분동안 계산

해시 퍼즐 풀이

  1. 블록 헤더의 넌스값을 0 으로 설정
  2. 비트코인 해시 함수를 연속 2번 해싱 (SHA-256) : 임의의 32 Byte 값
  3. 블록 전체를 해시함수를 연속 두 번 적용하여 나온 해시값 H와 주어진 목표값 T 값을 비교
  4. 주어진 값보다 더 작거나 갖지 않다 -> 넌스 1증가 (1 ~ 32 까지 증가) -> 임의의 32 Byte 값 생성 반복
  5. 판단박스 목표 값보다 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배

무어의 법칙에 따른 자연적인 증가

  • 막대한 하드웨어의 투자 + 전용 기계 -> 인위적 수치
  • 난이도 증가는 블록체인의 영속성에 영향