IMG-LOGO
Home 암호화폐 강의 비트코인뽀개기 7편

비트코인뽀개기[7편]


기존의 중앙 집중형 금융 시스템에서 금융 거래를 진행하기 위해서는 거래 정보를 작성하고 소유권을 인증받은 후 거래를 진행할 수 있었습니다. 마찬가지로 비트코인 네트워크에서도 거래를 진행하기 위하여 거래 정보를 작성하고, 소유권을 인증받을 수 있는 방법이 필요합니다.

트랜잭션


비트코인 프로토콜에서는 거래를 진행하기 위해 작성된 거래 정보를 트랜잭션이라고 표현하며, 트랜잭션은 비트코인에 대한 소유권을 다른 사람에게 이전하기 위한 목적으로 서명된 정보라고 할 수 있습니다. 트랜잭션은 크게 input(입력) 정보와 output(출력) 정보로 구성되며, 트랜잭션에는 미사용 비트코인, 송금 정보, 송금액, 수령자의 공개 주소 정보 등이 포함되어 있습니다.

비트코인 거래를 위해 작성된 트랜잭션은 비트코인 네트워크에 연결된 노드들에게 전파되며, 각 노드는 전달 받은 트랜잭션의 유효성을 검증하고 검증 받은 트랜잭션들은 Mempool이라는 공간에 추가됩니다. 그렇다면 전달 받은 트랜잭션의 유효성은 어떻게 검증할 수 있을까요? 지금부터 자세히 살펴보도록 하겠습니다.

트랜잭션 검증


비트코인 프로토콜은 비트코인의 소유권을 입증하기 위한 방법으로 공개 키 암호화 방식을 활용하고 있으며, 트랜잭션에는 원본 데이터와 함께 개인 키로 암호화된 전자 서명 데이터를 포함하여 전송함으로써 소유권에 대한 유효성을 검증 받게 됩니다.

예를 들어 A, B, C 사용자가 있고 A가 B에게 1 BTC를 보내고 싶다고 가정했을 경우 A는 B에게 1 BTC를 전송하기 위한 거래 정보를 작성하고, 작성한 원본 데이터와 함께 자신의 개인 키 정보를 통해 원본 데이터를 암호화한 전자 서명 데이터를 포함하여 비트코인 네트워크에 연결된 노드들에게 전파합니다.


IMG

트랜잭션을 전달받은 노드들은 원본 데이터에 작성된 입력 정보가 정상적인지 검증하고, 트랜잭션에 입력된 정보가 정상적일 경우 소유권을 입증하기 위하여 전자 서명된 데이터를 소유자의 공개 키로 복호화합니다.

공개 키 암호화 방식에서 개인 키는 오직 소유자인 A만이 알 수 있으며, A의 개인 키로 암호화된 데이터는 오직 A의 공개 키로만 복호화할 수 있습니다. 즉, 전자 서명된 데이터를 A의 공개 키로 복호화하고 A의 공개 키로 복호화한 데이터가 원본 데이터와 같다면 A가 보낸 트랜잭션이라는 것이 입증되는 것입니다.


IMG


IMG

만약 사용자 B가 악의적인 목적으로 A가 B에게 1 BTC를 보낸다는 트랜잭션을 생성하여 전파한다고 가정해보겠습니다. B는 A의 개인 키를 알고 있지 못하기 때문에 올바른 전자 서명 데이터를 생성할 수 없습니다.

A의 개인 키를 알지 못하기 때문에 B의 개인 키로 원본 데이터를 암호화하고 트랜잭션을 전파할 경우 각 노드들은 전자 서명된 데이터를 A의 공개 키를 통해 복호화하게되며, B의 개인 키로 암호화된 데이터를 A의 공개 키로 복호화 하였을 경우 원본 데이터와 전혀 다른 결과 값이 출력됨으로 유효성에 실패하게 됩니다.


* 대다수의 암호화폐에서는 공개 키 암호 방식을 사용하고 있습니다. 만약 개인 키를 분실 하였을 경우 자신이 소유하고 있는 지갑 주소일지라도 전자 서명을 할 수 없게 되어 해당 주소에 보유 중인 암호화폐를 영원히 되찾을 수 없게됩니다. 또한, 만약 해킹범에 의하여 개인 키 정보가 유출되었을 경우 해킹범은 얼마든지 해당 주소의 암호 화폐를 다른 곳으로 전송할 수 있기 때문에 암호 화폐에서 개인 키 관리는 매우 중요한 요소입니다.

Mempool


비트코인 거래를 위해 트랜잭션을 생성하고, 생성된 트랜잭션은 비트코인 네트워크에 연결된 노드들에게 전파됩니다. 각 노드들은 해당 트랜잭션의 유효성을 검증하고 검증된 트랜잭션들은 Mempool이라는 공간에 업데이트됩니다. 즉, Mempool은 아직 거래가 성립되지 않은 0 컨펌 상태의 트랜잭션들이 저장되는 공간입니다.

채굴자(마이너)는 새로운 블록을 생성한 댓가로 새롭게 발행되는 비트코인뿐만 아니라 블록에 포함된 모든 거래 수수료를 인센티브로 얻게 됩니다. 그렇기 때문에 Mempool에 대기 중인 0 컨펌 상태의 트랜잭션 중 거래 수수료가 높은 트랜잭션들을 우선적으로 선별하여 블록에 추가하게됩니다.

0 컨펌 상태의 트랜잭션이 채굴자(마이너)에 의해 블록에 담기어 블록 체인에 연결되는 순간 1 컨펌으로 변경되고, Mempool에서 삭제됩니다. Mempool의 데이터 크기가 클 경우 대기중인 트랜잭션들이 많다는 의미이며, 수수료가 낮은 트랜잭션들은 거래가 이루어지기까지 많은 시간이 소요될 수 있습니다.


IMG


Mempool 정보를 쉽게 확인할 수 있는 다양한 서드 파트 서비스 (비트코인 인포, jochen)

이번 비트코인뽀개기 7편에서는 트랜잭션 검증 원리 및 Mempool에 대한 학습을 진행하였습니다. 다음 비트코인뽀개기 8편에서는 비트코인 거래 원리를 이해하기 위하여 UTXO라는 개념에 대하여 자세히 알아보는 시간을 갖도록 하겠습니다.

참고자료


https://www.forextimekr.com/ko/education/forex-tutorials/uncovering-bitcoin-transactions-how-they-work


IMG
출처 : Keep!T / 작성자 : yahweh87