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 네트워크의 불안전성
비트코인의 합의 알고리즘
- 묵시적인 합의 알고리즘 채택
- 채굴자가 최선을 다해 합의 규칙에 따라 채굴 작업에 열중하다 보면 블록 승인의 합의에 도달하고 블록체인이 충분히 동기화된 상태로 유지되며 자신에게 이익이 되는 구조
- 합의 규칙을 따르지 않으면 자신에게 손해가 되는 구조
비트코인의 분산 합의 정책
- 비트코인의 합의 정책 고려 사항
- 자발적인 참여 유도
- 충분한 분산성 유지
- 적합한 블록 생성
- 동기화된 블록체인 유지
- 인센티브 정책
- 최종적으로 승인된 블록을 생성한 채굴자는 블록 보상과 거래 수수료를 인센티브로 지급받는다.
- 중도에 블록 승인이 취소(거절)되면 블록 인센티브도 취소된다.
- 작업 증명 정책