[Blockchan A-Z] 고아블록(Orphaned Blocks)

bolee·2022년 8월 26일
1

Blockchan A-Z

목록 보기
17/33

MODULE 2 (A) - CRYTOCURRENCY INTUITION
11. ORPHANED BLOCKS

고아블록(Orphaned Blocks)은 두 개의 블록이 동시에 승인되었을 때 메인체인으로 연결되지 못해 따로 떨어져 존재하는 블록을 말한다. 스테일블록(stale block)이라고도 한다.

고아블록은 2명의 채굴자들이 비슷한 시기에 블록을 생성할 때, 혹은 해커가 거래를 교란시키기 위한 공격을 시도할 때 생성된다.
고아블록 중에서 첫번째 블록을 엉클블록(uncle block)이라고 한다.

채굴과 고아블럭

위에서 언급한 것처럼 고아블록은 두 명의 채굴자들이 비슷한 시기에 블록을 생성할 때, 혹은 해커가 거래를 교란시키기 위한 공격을 시도할 때 생성된다.
그러나 여기에서는 2명의 채굴자들이 비슷한 시기에 블록을 생성할 때를 가정하자.

2명(또는 그 이상?)의 채굴자들이 비슷한 시기에 블록을 생성하게 되면, 각각의 채굴자들과 가까운 노드들에 각 채굴자들이 생성한 블록을 전파하게 된다.
따라서 경쟁하는 두 개의 네트워크 즉 두 개의 체인을 동시에 갖는 것이다.

만약 두 노드가 동시에 블록을 채굴하여 블록체인의 분기가 일어났다고 해도, 한 번 더 두 개의 블록이 동시에 생성될 확률은 적으므로 메인체인은 계속해서 길어지고 더 이상 길어지지 못하고 현재 길이를 유지하는 엉클체인이 생성된다.

결국 길이가 더 긴 메인체인에 더 많은 데이터가 들어있다고 판단되어 엉클체인은 버려지게 된다.
즉, 더 긴 체인이 살아남는 것이고, 결국에 경쟁하고 있는 두 체인 중 더 높은 해싱 파워 또는 해시율이 더 높은 쪽이 이기는 것이라고 할 수 있다.

평균적으로 분기가 일어났을 때 2~3개의 블록이 추가된 후에 블록체인의 분기가 해결된다고 한다. 이 엉클체인에 포함된 블록을 고아블록이라고 한다.

고아블럭으로 인한 문제점

만약 고아블럭이 생기면 어떻게 될까?

고아블록은 더 이상 블록 연결이 되지 않으며, 이 블록에 속한 모든 트랜잭션은 다시 멤풀로 돌아가게 된다.
다시 말하면, 이 블록을 수용했던 노드의 멤풀로 돌아가는 것이다.

물론 채굴자들은 수수료가 높은 트랜잭션을 고르기 때문에, 메인체인 내 트랜잭션 중 일부는 고아블럭 속 트랜잭션에 포함되었을 수도 있다.
그 경우 메인체인의 결과는 결국 모든 노드에 전파될 것이기 때문에 메인체인의 블록 내 트랜잭션과 비교하여 멤풀에서 수정된다.

하지만 정상적인 블록에 포함된 트랜잭션이 아니고, 고아블록에만 포함된 일부 트랜잭션은 돌아갔다가 그대로 멤풀에 머물게 되는데 이들은 해당 블록에 해당하지 않기 때문에 그렇다.
즉, 트랜잭션의 성공을 판가름하기 전에 최소한 몇 번의 확인을 거치는 것이 중요하다.

'확인'이라는 것은 현재 블록 뒤로 추가되는 블록 몇 개를 살펴보는 작업이다.
만약 '확인'을 하지 않는다면, 트랜잭션이 승인된 줄 알고 실행되었던 것들(예를 들어, 송금)이 더 이상 유효되지 않아 다시 롤백(roll-back)되는 이중 지출 문제가 발생할 수 있다.

또한 고아블록이 연결되어있는 엉클체인의 생성 과정은 불필요한 해시 계산을 위해 컴퓨팅 파워를 쓴 것이 된다.

그리고 난이도가 줄어들면 블록 타임이 줄어들게 되고 컴퓨팅 파워가 큰 채굴자의 영향력이 커지는 문제가 생기는 데, 고아블록 생성 이후 다음 블록을 생성하면 평균 블록 생성 시간이 더 길어지기 때문에 블록 생성 후의 난이도가 줄어들게 된다는 문제점도 있다.

대안

고아블록으로 인한 불필요한 해시 계산이나 난이도의 대한 문제는 어쩔 수 없지만, 이중 지출 문제는 평균적으로 분기가 발생했을 때 2~3개의 블록이 추가된 후에 해결된다.
대표적으로 비트코인과 이더리움은 다음과 같이 해결한다.

비트코인

  • 일시적으로나마 이러한 분기 상태가 발생할 가능성이 있기 때문에 실제 거래 상황에서는 보통 어떠한 거래가 포함된 블록 이후로 3~5개의 블록이 더 추가된 후에야 그 거래를 최종적으로 유효한 것으로 확정한다.
  • 따라서 분기가 발생하더라도 3~5개의 블록이 추가되는 과정에서 분기 상태가 해결되며 결국 하나의 블록체인만 남게 된다.

이더리움

  • 이더리움은 이러한 문제를 고스트 프로토콜(Ghost Protocol : Greedy Heaviest Object subTree Protocol)을 사용하여 해결한다.
  • 고스트 프로토콜은 비트코인의 성능과 보안성 향상을 위해 개발된 합의 알고리즘인데 이더리움은 수정된 고스트 프로토콜을 사용한다.
  • 이더리움은 블록 생성 속도가 빨라 고아블록의 생성 확률이 높아 보안이 취약한데, 이더리움은 이를 수정된 고스트 프로토콜을 통해 해결한다.

고스트 프로토콜
'Greedy Heaviest Object subtree protocol'의 약자로 메인체인을 선택하는 데 있어 가장 가장 긴 체인을 채택하는 알고리즘

암호화폐 거래소에 경우 임계값이라는 것이 존재한다.
즉, 바로 확인하지 않고 규정상 또는 약관에 따라서 트랜잭션이 한 번의 확인 과정을 마쳤다고 하더라도 대여섯 번 정도 정해 놓은 횟수(임계값)만큼의 확인 과정을 거칠 때까지 송금하지 않는다.

거래소는 여러분과 성사한 해당 트랜잭션이 이와 같은 고아 블록으로 전락할 위험 즉, 이중 지출의 위험을 최소화할 수 있도록 한다.
따라서 두 번, 세 번 네 번의 확인을 거친다.

왜냐하면, 만약 제대로 확인하지 않고 거래소가 이미 암호화폐를 보내 버렸다면 해당 암호화폐를 다시 되찾을 수가 없는 이중 지출 문제를 원치않기 때문이다.

참고 자료

http://wiki.hash.kr/index.php/%EA%B3%A0%EC%95%84%EB%B8%94%EB%A1%9D
http://wiki.hash.kr/index.php/%EA%B3%A0%EC%8A%A4%ED%8A%B8_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C

0개의 댓글