[모두의 연구소] PoW consensus algorithm

in #kr7 years ago

안녕하세요, 모두의 연구소 블록체인 연구실입니다.

11월 9일 6회차 스터디에서 최시현님이 발표한 PoW 알고리즘 내용을 공유합니다.

배경

  • 중앙화 데이터베이스 -> 비허가형 분산형 데이터베이스로의 전환
  • 그럼 누가 데이터베이스 업데이트의 권한을 갖는가?
  • 누구나 허가받지 않고 네트워크에 참여하게 되면 도대체 누가 데이터베이스를 업데이트 할까?
  • 어떻게 악의적인 공격으로부터 데이터베이스를 보호할 수 있을까?
  • 예) Sybil attack: 분산화된 P2P 네트워크에서 공격자가 많은 수의 가명의 신분을 만들어서 올바르지 않은 큰 영향력을 행사하는 경우
  • 예) 비잔틴 장군 문제: 합의를 의도적으로 방해하려는 공격(올바르지 못한 참가자)으로부터 어떻게 안전하게 합의에 도달할 수 있을까?

PoW란?

  1. 거래가 비트코인 네트워크에 전파됨
  2. 거래가 검증됨
  3. 채굴
  4. 블록에 포함
  • 중앙 신뢰 기관이 없는 상태에서, 공개 장부 안에 있는 내용을 어떻게 전 세계 모든 사용자가 동의할 수 있을까?
    Answer: 모두가 같은 장부를 가지고 있기 때문!!!

  • 어떻게 모두가 동일한 장부를 가지게 할 수 있을까?
    Answer: 합의 도출 프로세스

합의의 과정

  1. 모든 노드가 각 거래마다 독립된 검증을 실시
  2. 어떤 채굴자가 작업 증명에 성공하면 다른 채굴자들이 검증하여 거래들을 새로운 블록에 독립적으로 추가
  3. 모든 노드들이 새 블록을 독립적으로 검증한 다음 체인에 블록을 연결
  4. 모든 노드가 작업 증명을 통해 나온 최고 누적 연산 체인을 독립적으로 선택

상세한 합의 과정

  • 거래가 끝나면 그 거래는 모든 비트코인 네트워크에 전파
  • 각 네트워크의 노드들은 받은 트랜잭션을 이웃 노드들에게 다시 전송하기 전에 1차적으로 스스로 검증 (합의 프로세스의 첫번째 단계)
    (거래가 이미 소비되어 있으면 안됨, 거래의 크기는 정해진 Max block size보다 작아야 함, 입력값이 출력값 총액보다 커야 함, 해시가 0이면 안됨….등등의 체크리스트를 확인)

채굴이란?

  • 채굴의 기술적 목표는 블록 헤더 안에 있는 난이도 목표보다 낮은 블록 해시값이 나올 때 까지 nonce를 찾는 것
  • 이 요건에 맞는 nonce를 찾기 위해, 이를 바꿔가며 블록 헤더를 반복적으로 해싱해서, 해시 결과값이 특정 목표치와 일치할 때까지(=목표보다 낮아질 때까지) 하나의 매개변수, 즉 nonce 값을 변화시키는 과정임

해시 연산의 특징


채굴 예시


채굴의 네트워크 효과

채굴의 목적

  • 거래를 담고 있는 블록이 충분한 계산력을 사용하여 확인될 때만 블록이 장부에 등재되고 신뢰를 형성
  • 각 블록 내에서 새 비트코인을 생성(화폐를 발행)

PPT 링크는 아래와 같습니다.
https://drive.google.com/open?id=1ddJ-65zF1-0JlocYIBl2I5_PhQ8VURyl

감사합니다.