비트코인 상식 2
상태바
비트코인 상식 2
  • 김형중 칼럼니스트
  • 승인 2019.07.03 16:15
  • 댓글 0
이 기사를 공유합니다

한국핀테크학회 회장 김형중/ 고려대 암호화폐연구센터 센터장/ 고려대 정보보호대학원 교수

(시사매거진255호=김형중 칼럼니스트) 비트코인을 공격하는 여러 가지 방법이 있다. 그 가운데는 동시에 여러 블록을 생성하는 공격도 있다. 그러나 이게 쉬운 공격이 아니다. 교과서에서는 아주 쉬운 것처럼 적었지만 전혀 그렇지 않다.

블록을 생성하려면 채굴에 성공해야 한다. 그런데 채굴이 결코 쉽지 않다. 하나도 어려운데 동시에 여러 블록을 생성한다는 것은 정말 어려운 일이다. 그만큼 엄청난 컴퓨팅 능력이 필요하기 때문이다.

그렇다고 불가능한 것도 아니다. 동시에 7개의 블록이 생성된 사례도 있다. 2개 이상 동시에 생성되는 예도 종종 발생했다.

블록체인은 한 줄로 블록을 연결하므로 동시에 여럿이 생성되면 하나만 선택하고 나머지는 버려야 한다. 선택된 하나는 블록체인에 연결되지만 나머지 잉여 블록들은 버려진다. 버려지는 블록을 고아(orphan) 블록이라 부른다. 고아 블록은 잊혀질 뿐만 아니라 채굴보상도 받지 못한다.

소위 “일등만 기억하는 더러운 세상”이랄까? 그렇다면 고아 블록을 정하는 원칙은 무엇일까? 둘 이상의 블록이 동시에 생기면 더 긴 체인에 달린 블록을 남기고 짧은 체인에 달린 블록들은 제거한다. 당연히 더 긴 체인이 생길 때까지 기다려야 한다.

예를 들어 블록 2000번 이후 동시에 블록 두 개가 채굴되었다고 가정하자. 이로써 2001번 블록이 두 개 생긴다. 둘 중 하나는 고아가 되어야 한다. 다시 10분 후 2002번 블록이 생성되었는데 두 개의 2001번 블록 중 하나에 달라붙으면 후손이 없는 다른 2001번 블록은 고아가 된다.

그런데 고아 블록에 포함된 거래기록까지 함께 고아가 되는 것은 아니다. 고아 블록에 담긴 거래기록들은 대기하고 있는 거래 풀에 되돌려진다. 2003번 이후 블록에서 이들 거래기록들이 다시 선택되어 블록에 담기게 된다.

군대에선 ‘줄을 잘 서야 한다’는 말을 흔히 한다. 고아 거래기록들은 줄을 잘못 선 탓에 지연 송금이 이루어진다. 거래기록들이 줄을 잘못 선 게 아니라 고아 블록에 의해 선택된 게 불운이다. 그런데 이런 선택은 철저히 확률적이다.

고아 블록에 담긴 거래기록들은 고아 블록으로 확정되기 전까지 유효한 거래기록으로 존재한다. 고아 블록에 담긴 “홍길동이 성춘향에게 5비트코인을 송금한다”는 거래가 유효할 때 성춘향이 5비트코인을 찾아갔는데, 이후 그 블록이 고아 블록이 되면서 5비트코인을 찾아간 거래 기록이 풀에 되돌려져 다시 선택되어 다른 블록에 담긴다면 어떤 일이 생길까?

지금까지 이런 일이 발생한 바 없다. 그렇지만 그런 일이 생긴다면 어떤 일이 생길 것인지 궁금하지 않은가?


주요기사