블록체인 7강, 8강

비트코인

Posted by 동식이 블로그 on June 7, 2019

7강 비트코인작업증명과 인센티브 | 8강 비트코인블록체인 합의 프로토콜

제7강 비트코인작업증명과인센티브

블록 채굴과 인센티브

  • 블록 인센티브

    • 블록 보상

      • 블록 채굴에 성공한 채굴자에게 네트워크가 지급
      • 인플레이션을 방지하기 위해 시간이 감에 따라 축소되도록 설계
      • 50BTC로부터 시작하여 210,000블록마다(약 4년 마다) 보상 금액이 1/2로 축소
      • 2140년 경이 되면 비트코인 총 발행량은 약 21,000,000 BTC에 이르게 되고 더 이상 신규 비트코인 발행을 멈춤
    • 거래 수수료

      • 거래 수수료 보상 = (블록의 전체 거래의 입력값 종합 - 블록의 전체 거래의 출력값 종합)
    • 코인베이스 거래

      • 블록 채굴에 대한 전체 인센티브는 해당 블록에 저장되는 첫번째 거래인 코인베이스 거래에 의해 지불
      • 출력값으로 블록 보상과 수수료 보상을 합친 금액이 채굴자의 주소로 지불
  • 작업 증명 방법

    • 채굴자는 블록 헤더에 대한 HSA256 해시값이 목표보다 작아질 때까지 블록 헤더의 일부 값(넌스)을 변경하면서 블록헤더의 해시값 계산을 반복
    • 해시값이 난이도 목표 필드의 값보다 작은 값이 발견되면 작업 증명에 성공(이 때의 넌스가 작업 증명 결과)
    • 채굴된 블록을 수신한 다른 채굴자는 블록 헤더의 HSA256 해시값이 블록 헤더의 난이도 목표보다 작은지만 확인함으로써 작업 증명을 검증

블록 채굴과 작업 증명

  • 해시 함수의 일방향성

    • 어떤 데이터에 대해 해시 함수를 적용하여 얻은 해시값으로부터 원래 데이터를 추론할 수 없음을 보장하는 성질
    • 채굴자가 난이도 목표보다 작은 해시값을 미리 정해놓고 여기에 맞는 넌스를 추론하는 것이 불가능
  • 해시 함수의 임의성

    • 해시값과 원래값의 연관성 추론이 불가능
    • 해시 함수의 반복 계산 외의 다른 방법으로 목표 난이도보다 작은 해시값을 찾을 수 없음
    • 작업 증명의 문제는 확률의 문제 → 해시 함수 적용 횟수가 많은 채굴자가 적용 횟수가 적은 채굴자보다 반드시 빨리 작업 증명에 성공하는 것을 보장하는 것은 아님
  • 해시율

    • 해시 함수 적용 능력, 즉 초당 해시 함수 계산 능력
  • 채굴자의 작업 증명 성공 확률

    • (채굴자의 해시율/전체 채굴자의 해시율의 총합)
  • 난이도 목표
    • 난이도 목표 예 :
    • 0x0000000000000003A30C00000000000000000000000000000000000000000000
    • 전반부 60비트가 0으로 설정 → 해시값 생성 활률 : 2^-60
    • 난이도 목표의 전반부 0비트를 64로 널린다면 작업 증명 성공 확률 2^-64으로 낮아짐
  • 난이도 조정
    • 작업 증명에 걸리는 시간이 평균 10분으로 유지되도록 설정
    • 작업 증명에 걸리는 시간은 작업 증명에 투입되는 총 해시율에 의해 결정
    • 총 해시율 = 모든 채굴자의 해시율의 총합
    • 채굴 수익율이 높아지면 총 해시율은 증가, 채굴 수익율이 낮아지면 총 해시율 감소
    • 2,016 블록마다 한번씩 이루어지도록 설계
    • 새로운 난이도 목표 = 지난 난이도 목표 * (직전 2,016블록의 실제 경과 시간/(2,016*10분))
  • 블록 헤더 변경
    • 블록 헤더에 대한 해시값 계산을 통해 수행되므로 채굴자는 블록 헤더의 일부 내용을 변경하면서 해시 함수 적용을 반복
    • 해시 함수 적용 시마다 변경하는 필드가 넌스
    • 넌스를 2^32번 모두 변경해도 작업 증명을 완료하지 못하는 경우가 발생
    • 코인베이스 거래의 데이터 필드의 일부(8 바이트)를 추가적으로 넌스로 활용
    • 작업 증명에서 변경시킬 수 있는 필드 : 넌스 4바이트 + 코인베이스 데이터의 일부인 8 바이트

작업 증명 수단의 진화와 채굴풀

  • 채굴풀
    • 특별한 풀-채굴 프로토콜을 사용하여 많은 수의 채굴자들이 협력하여 단일 작업 증명을 수행
    • 각 채굴자는 자신의 채굴 기계를 풀 주변에 접속하고, 풀 서버가 할당한 영역에서 작업 증명을 수행
    • 풀 서버에 연결된 채굴자 중 하나가 작업 증명에 성공하면 그 결과를 풀 서버에 전달
    • 풀 서버는 그 결과로 블록 생성을 완료하여 네트워크에 전파함으로써 블록 인센티브를 지급
    • 블록 인센티브는 채굴 풀에 참여한 모든 채굴자에게 기여 정도에 비례하여 나누어 지급

제8강 비트코인블록체인합의프로토콜1

비트코인 시스템의 특징

  • 인터넷 상의 익명 기반 P2P 시스템
    • 누구나 참여할 수 있는 완전 개방 시스템
    • 특정 기능을 특정 기관에 의존하지 않은 P2P시스템
    • 참여자의 신원을 확인하지 않는 익명 시스템
    • 지연시간이 가변적인 P2P 네트워크 기반의 비동기 시스템

비트코인 블록 채굴

  • 블록 채굴과 거래 승인
    • 정해진 구간 동안 발생한 거래들을 검증한 후 순서대로 블록에 저장하고 블록체인에 연결하는 방법
    • 블록체인에 연결된 블록에 포함된 거래는 승인된 것으로 간주
  • 블록 채굴자
    • 비트코인 참여자는 누구나 채굴자로 참여 가능

비트코인에서 합의 문제

  • 블록 합의 문제
    • 모든 채굴자가 10분 마다 생성되는 블록의 내용(순서화된 거래 집합)에 대해 합의로 승인하고
    • 승인된 블록을 블록체인에 연결하여 동기화된 블록체인으로 유지하여
    • 모든 참여자가 동일한 블록체인으로 거래를 수행할 수 있도록 만드는 문제
  • 블록 합의의 전제 조건
    • 자발적인 채굴자의 참여를 유도할 수 있어야 한다.
    • 블록체인에 추가되는 승인된 블록은 정직한 채굴자에 의해 생성된 것이어야 한다.
    • 합의 작업이 특정 참여자에 의해 제어될 수 없도록 충분히 분산되어야 한다.
    • 분산된 블록체인은 충분히 동기화된 상태로 유지되어야 한다.

비트코인의 합의 문제의 어려움

  • 명시적인 합의 메커니즘(투표, 정해진 순서에 의한 블록 승인 등) 적용의 어려움
    • 익명성
    • Sybil 공격 가능성
    • P2P 네트워크의 불안전성

비트코인의 합의 알고리즘

  • 묵시적인 합의 알고리즘 채택
    • 채굴자가 최선을 다해 합의 규칙에 따라 채굴 작업에 열중하다 보면 블록 승인의 합의에 도달하고 블록체인이 충분히 동기화된 상태로 유지되며 자신에게 이익이 되는 구조
    • 합의 규칙을 따르지 않으면 자신에게 손해가 되는 구조

비트코인의 분산 합의 정책

  • 비트코인의 합의 정책 고려 사항
    • 자발적인 참여 유도
    • 충분한 분산성 유지
    • 적합한 블록 생성
    • 동기화된 블록체인 유지
  • 인센티브 정책
    • 최종적으로 승인된 블록을 생성한 채굴자는 블록 보상과 거래 수수료를 인센티브로 지급받는다.
    • 중도에 블록 승인이 취소(거절)되면 블록 인센티브도 취소된다.
  • 작업 증명 정책