본문 바로가기

블록체인/블록체인(박승철)

블록체인 - (8) 비트코인 블록체인 합의 프로토콜

블록체인 - (8) 비트코인 블록체인 합의 프로토콜

인터넷 익명 기반 P2P 시스템의 특성
- 누구나 참여할 수 있는 완전 개방 시스템
- 특정 기관에 의존하지 않음(중간자, 중재자가 없음)
- 참여자의 신원을 확인하지 않는 익명 시스템
- 지연시간이 가변적인 P2P 네트워크 기반의 비동기 시스템(지연시간이 존재)

블록 합의 문제
(1) 모든 채굴자가 10분 마다 생성되는 블록의 내용을 합의로 승인하고
(2) 승인된 블록을 블록체인에 연결하여 동기화된 블록체인으로 유지하여
(3) 모든 참여자가 동일한 블록체인으로 거래를 수행할 수 있도록 만드는 문제

블록 합의의 전제 조건
(1) 자발적인 채굴자의 참여를 유도할 수 있어야함(유인책이 필요)
(2) 블록체인에 추가되는 승인된 블록은 정직한 채굴자에 의해 생성된 것이어야 한다(악의적 공격으로 생성된 블록에 대한 방어책이 요구됨)
(3) 합의 작업이 특정 참여자에 의해 제어될 수 없도록 충분히 분산되어야 한다.(51% 해시 파워를 독점하는 개인이 등장해선 안 된다.)
(4) 분산된 블록체인은 충분히 동기화된 상태로 유지되어야 한다.(블록을 전송하는 네트워크 지연시간이 충분히 짧아야 한다.)

명시적인 합의 메커니즘 적용의 어려움
- 익명성의 부재
- Sybli 공격 가능성
- P2P 네트워크의 불안전성

묵시적인 합의 알고리즘(Implicit consensus algorithm) 채택
- 채굴자가 최선을 다해 합의 규칙에 따라 채굴 작업에 열중하다 보면 블록 승인의 합의에 도달하고, 블록체인이 충분히 동기화된 상태로 유지되며 자신에게 이익이 되는 구조
- 즉, 개인의 이기심대로 행동하는 것 = 공익성

비트코인의 합의 정책 고려 사항
- 자발적인 참여 유도
- 충분한 분산성 유지
- 적합한 블록 생성
- 동기화된 블록체인 유지

비트코인의 분산 합의 정책
(1) 인센티브 정책(Incentive Policy)
(2) 작업 증명 정책(Proof-of-Work Policy)
(3) Longest Chain을 메인 체인으로 채택

인센티브 정책(Incentive Policy)
- 최종적으로 승인된 블록을 생성한 채굴자는 블록 보상(block reward)과 거래 수수료(transaction fee)를 인센티브로 지급받는다.
- 중도에 블록 승인이 취소(거절)되면 블록 인센티브도 취소된다.

블록 승인 취소(거절)
- 블록이 다른 채굴자에 의해 부적합 블록으로 처리되는 경우
- 다른 채굴자가 다음 블록 채굴 과정에서 체인으로 연결할 이전 블록 선택에서 배제

정규 블록
- 가장 긴 체인에 연결된 블록
- 메인 체인

채굴자 합의의 의미
- 블록의 깊이가 깊을수록(승인 횟수가 많을수록) 안전
(1) 수신한 블록상에서 새로운 블록 채굴 작업 개시는 수신 블록을 승인하는 행위에 해당
(2) 자신의 해시 파워를 해당 블록 생성자에게 투표함으로써 해당 생성자의 블록에 합의함
(3) 자신이 다음 블록 채굴에 성공한다면 채굴 블록이 수신된 블록에 연결되어 블록체인을 확장할 것이기 때문에, 수신된 블록이 블록체인에 생존하도록 그만큼 돕는 의미
(4) 특정 채굴자가 생성한 블록에 투표한, 즉 해당 블록 상에서 채굴하는 채굴자가 많으면 많을수록 해당 블록이 블록체인에 생존할 가능성이 높아짐
 (5) 다른 채굴자가 채굴한 블록을 승인하지 않고 채굴중인 블록의 채굴을 지속하여 성공하더라도 다른 채굴자에 의해 승인될 가능성이 낮음
- 즉, 채굴자는 최대 길이(Longest Chain)에 속하는 체인에 속하여 채굴을 진행하는 것이 자신에게 이득이 됨
# main chain : 최대 길이 체인
# branch : 나머지 체인
# 정규 블록 : 메인 체인의 블록
# 부실 블록 : branch의 블록
- 정규 블록의 거래만 적합한 거래로 간주된다.

<그림 1: 비트코인 체인>

블록체인의 분기(blockchain forking)

<그림 2: 블록체인의 분기>

- B 채굴자가 A2 블록을 채굴하는 데 성공했는데 다른 채굴자(A)가 채굴한 블록 A1이 채굴자(B)에게 도달한 경우
(1) A1 블록과 A2 블록에 포함된 거래의 수와 순서에 차이가 있을 수 있음
(2) A1과 A2 블록 중에 어떤 블록이 메인 체인으로 성장하는 가에 따라 A1과 A2 중 하나의 블록에만 포함된 거래의 승인 여부가 결정됨
(3) 최신 블록에 포함된 거래의 경우 이후에 승인이 취소될 수 있다는 것을 의미함
(4) 블록 승인이 취소된 거래는 다음 블록 생성 시에 포함되어 다시 승인이 시도
(5)  거래가 포함된 블록이 메인 체인에 안정적으로 자리를 잡으면 해당 블록의 거래의 승인 상태가 확고해 짐

블록체인의 수렴

<그림 3: 블록체인의 수렴>

- A1 블록상에서 다음 블록을 채굴하는 채굴자들의 해시 파워가 높으면 A1 블록을 부모 블록으로 하는 블록 B1이 생성될 가능성이 높음
- 이후 채굴자들이 B1 블록을 부모 블록으로 다음 블록 채굴 활동 -> A1-B1의 메인 체인이 생성됨
- 브런치에서 채굴활동을 하면 인센티브를 할당받지 못하므로 채굴자들은 자연스럽게 Longest Chain(=Main chain)에서 채굴활동을 하게 됨.

51% 공격
- 공격자가 자신의 이중 지불 거래가 포함된 블록을 메인 체인이 아닌 공격 대상의 정상 거래가 포함된 블록의 이전 블록에 연결하여 브런치를 만들고, 이후 충분한 해시율로 연속적으로 블록을 브런치에 연결하여 최종적으로 브런치를 메인 체인으로 교체하는 공격

<그림 4: 51% 공격>

- 철수는 1000 BTC를 영희에게 주어 부동산을 구매하는 거래를 수행하는 것으로 51% 공격을 하려 한다.
- 먼저, 메인 체인이 450,000 - 450,001이 존재했고 철수는 51% 해시파워를 가지고 있으므로 동시간대에
- A1 블록 : 철수가 영희에게 1000 BTC를 지불한 거래 정보가 담긴 블록
- A2 블록 : 철수가 철수에게 1000 BTC를 지불한 거래 정보가 담긴 블록
- A1, A2의 이중 지불 거래 블록을 생성하는 데 성공한다.
- 이후에, 철수는 51%의 해시파워를 이용하여 정상 거래 정보가 담긴 메인 체인(450,001-A1-B1)이 아닌 가짜 거래 정보가 담긴 브런치(450,001-A2-B2-C)에 지속적으로 블록을 연결시키는 데 성공한다.
- 최종적으로, 비트코인 네트워크에 참여한 참가자들은 Longest block chain을 메인 체인으로 채택하므로 가짜 정보가 담긴 블록 체인이 메인 체인으로 인정되어 영희는 1000 BTC 부동산을 철수에게 강탈당한다.
- 비트코인 골드 51% 공격에 대해서

합의 규칙 변경
- 소프트 포크(Soft fork) : 호환성을 유지하면서 이루어지는 합의 규칙 변경
- 하드 포크(Hard fork) : 기존 비트코인과의 호환성 결여를 무릅쓰고 이루어지는 합의 규칙 변경
- 비트코인은 블록의 크기가 1M btye로 한개의 블록에 최대 4,000개의 거래정보를 포함하는 한계를 지녔다. 즉, 10분에 1개의 블록이 생성되므로 1초당 7개의 거래까지만 승인할 수 있다는 뜻이다. BC카드가 1초에 5,000번의 거래를 수용한는 현 상태에서 이러한 비트코인 거래 수용량은 확장성이 떨어지는 문제를 지녔고 결과적으로 8M byte의 블록크기를 갖는 비트코인 캐시(BCH)로 분기되는 하드 포크가 발생했다
- 그러나, 8M byte로 블록 크기가 증가하면서 네트워크상에 블록 정보가 전송되는 시간 딜레이가 길어졌다. 이것은 높은 해시파워를 갖는 사용자가 블록을 생성하고 블록 정보를 다른 참여자에게 공유할 때 다른 참여자는 해당 블록정보를 뒤늦게 수신한다는 것을 의미하며 그 사이에 높은 해시파워를 갖는 참여자는 이후 채굴에 남들보다 먼저 참가함으로써 비트코인 네트워크가 높은 해시파워를 갖는 참여자에게 지배될 가능성이 상승되었다.

Reference
1. 

제8강+비트코인블록체인합의프로토콜.pdf
0.62MB

2. 박승철블록체인과비트코인제8강 비트코인블록체인합의프로토콜