본문으로 건너뛰기

코인베이스 트랜잭션

코인베이스 트랜잭션은 블록 맨 앞에 놓이는 첫 거래입니다. 새 비트코인이 발행되는 자리이기도 합니다. 이름이 같은 거래소가 있지만, 여기서 말하는 코인베이스는 비트코인 안쪽의 기술 용어입니다.

거래의 시작점

비트코인에서 내가 보내는 돈은 앞선 거래에서 내가 받은 돈이어야 합니다. 받은 기록이 없다면 보낼 수도 없습니다. 거래를 계속 거슬러 올라가면 시작점이 있어야 전체 사슬이 성립합니다.

원화는 중앙은행처럼 발행을 맡은 기관이 분명합니다. 반면 비트코인에는 발행을 담당하는 기관이나 담당자가 없습니다. 그렇다고 새 비트코인이 전혀 생기지 않는 것은 아니므로, 누구나 확인할 수 있는 발행 절차가 필요합니다.

전체장부를 전 세계가 함께 쓰는 하나의 두꺼운 책이라고 생각해 보겠습니다. 블록은 평균 10분마다 장부에 더해지는 페이지입니다. 대부분의 줄은 이미 존재하던 돈이 한 사람에게서 다른 사람에게 이동한 기록입니다.

그런데 블록의 맨 앞에는 다른 성격의 거래가 하나 놓입니다. 이 거래에는 새로 발행되는 비트코인과 해당 블록의 거래 수수료를 받는 출력이 기록됩니다.

블록마다 하나뿐인 첫 거래

채굴자는 블록을 만들 때 맨 앞에 거래 하나를 직접 써 넣습니다. 이것이 코인베이스 트랜잭션입니다. 블록마다 하나만 존재하며, 두 개를 넣으려고 하면 노드가 규칙에 맞지 않는 블록으로 판단합니다.

보통 거래는 어느 거래에서 돈을 받았는지 이전 출력을 가리켜야 합니다. 노드는 그 출처를 확인한 뒤 거래를 검증합니다. 코인베이스 트랜잭션은 기존 UTXO를 참조하지 않는 특별한 입력 구조를 사용합니다. 따라서 일반 거래처럼 이전 거래의 출력을 가리키지는 않지만, 입력 필드 전체가 단순히 비어 있는 것은 아닙니다.

코인베이스 입력의 데이터 영역에는 채굴자가 임의의 메시지를 넣을 수 있습니다. 2009년 제네시스 블록의 코인베이스에는 당시 신문 헤드라인이 담겨 있습니다. 이 메시지는 이전 출력의 참조가 아니라 코인베이스 입력의 데이터 영역에 기록된 것입니다.

대신 새로 발행되는 비트코인은 채굴자가 정한 주소로 기록됩니다. 해당 블록에 담긴 거래 수수료도 함께 보상에 포함됩니다. 신규 발행분과 수수료가 보상으로 어떻게 결합되는지는 별도의 주제이지만, 코인베이스 트랜잭션이 이를 기록하는 자리라는 점은 같습니다.

노드가 금액을 검사하는 방법

채굴자가 자기 몫을 부풀려 적는 것 자체를 막을 수는 없습니다. 블록을 만드는 쪽이 어떤 내용을 써 넣을지는 스스로 정하기 때문입니다.

그러나 블록을 받은 전 세계의 노드는 코인베이스 출력의 합계가 해당 블록 높이에서 허용되는 발행 보조금과 블록에 포함된 거래 수수료의 합계를 넘지 않는지 확인합니다. 정해진 금액보다 단 1사토시라도 많다면 블록 전체가 거부됩니다. 블록을 만드는 데 들인 계산과 수고도 함께 헛일이 됩니다.

공급 상한은 코인베이스 금액 검사 하나만으로 유지되는 것은 아닙니다. 일반 거래에서도 노드는 입력이 실제로 존재하는지, 이미 사용된 출력을 다시 쓰지 않는지, 입력 합계보다 큰 출력을 만들지 않는지 등을 검증합니다. 이런 규칙들이 함께 임의의 비트코인 생성을 막습니다.

바로 사용할 수 없는 코인베이스 출력

코인베이스 거래의 출력 전체에는 성숙 제한이 적용됩니다. 새로 발행된 보조금뿐 아니라 그 거래에 포함된 수수료 부분도 바로 사용할 수 없습니다. 생성 블록과 소비 블록의 높이 차이가 최소 100블록이 되어야 코인베이스 출력을 소비할 수 있습니다. 이는 화면에 표시되는 확인 수 자체가 아니라, 코인베이스 출력에 적용되는 별도의 합의 규칙입니다. 비트코인 개발자 문서에서도 이 성숙 제한을 설명합니다.

거래소와 다른 이름

코인베이스라는 이름을 미국 거래소로 먼저 접하는 경우가 많습니다. 하지만 순서상 기술 용어가 먼저 쓰였습니다. 새 비트코인이 나오는 바탕이라는 뜻으로 사용되던 이름을 거래소가 나중에 회사 이름으로 가져간 것입니다.

어느 회사나 거래소도 비트코인을 임의로 발행할 권한은 없습니다. 발행은 블록마다 하나 있는 코인베이스 트랜잭션을 통해 규칙에 따라 일어납니다. 거래소는 이미 발행된 비트코인을 사고팔 수 있도록 연결하는 역할을 할 뿐입니다.

코인베이스 트랜잭션은 2,100만 개 공급 상한과도 연결됩니다. 하나뿐인 발행 통로와 그 금액을 모든 노드가 함께 검사하고, 일반 거래의 입력과 출력도 검증하기 때문에 발행 규칙을 장부에 반영할 수 있습니다.

링크 복사하기X에 공유페이스북에 공유쓰레드에 공유