___  ___    _ _    _  _ _____   _____
 / __|/ _ \  | | |  | || |_ _\ \ / / __|
| (_ | (_) | |_  _| | __ || | \ V /| _|
 \___|\___/    |_|  |_||_|___| \_/ |___|

 --- A GOPHER-LIKE INTERFACE FOR HIVE BLOCKCHAIN ---

KEEP!T Column 비트코인 뽀개기(7편)

BY: @keepit | CREATED: July 5, 2018, 9 a.m. | VOTES: 32 | PAYOUT: $18.74 | [ VOTE ]

[IMAGE: https://steemitimages.com/DQmV3guBREZC84NrWXvEtrF1XoamE3XZipzDeYwq12qNVF7/image.png]

KEEP!T Column

안녕하세요! KEEP!T입니다. 최초의 암호화폐인 비트코인을 누구나 쉽게 이해할 수 있도록 '비트코인 뽀개기'라는 주제로 콘텐츠를 연재하고 있습니다. 지난 비트코인 뽀개기 6편에서는 공개 키 암호 방식에 대해 학습하였으며, 이번 7편에서는 비트코인에서 공개 키 암호 방식을 어떻게 활용하였는지에 대하여 자세히 알아보는 시간을 갖도록 하겠습니다. 혹시 앞선 비트코인 뽀개기 시리즈를 읽지 않으셨던 분들은 아래의 링크를 통해 읽어보시면 좋을 것 같습니다.

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

트랜잭션

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

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

트랜잭션 검증

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

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

[IMAGE: https://cdn.steemitimages.com/DQmZkYdwV2L7fRNKEfdmo7bJ9STMvWGbQJHcaoawJiyZL46/7_0.png]

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

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

[IMAGE: https://cdn.steemitimages.com/DQmdSQkSQ2BvdU1tuHP9Ks93rwbhuahhNaPdWdqmZoyCzyd/7_1.png]

[IMAGE: https://cdn.steemitimages.com/DQmRqmHDERcsffTEVkTrjDkmpbceoCDA9rmYBt91NBMFqKn/7_2.png]

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

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

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

Mempool

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

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

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

[IMAGE: https://cdn.steemitimages.com/DQmUW6cy8wo6Pji4rzGSDiCkK8VYciiDTJy5Ux1bGBKf935/7_3.png]

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

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

yahweh87

참고자료

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

[IMAGE: https://steemitimages.com/DQmVVGEH48HG929Q55uQYZBuw9QbPoTNieiiZ7NCLvzG6QZ/logo_end.gif]

이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 국제 라이선스에 따라 이용할 수 있습니다.

TAGS: [ #coinkorea ] [ #kr-coin ] [ #bitcoin ] [ #kr ]

Replies

@a-a-a | July 5, 2018, 9 a.m. | Votes: 0 | [ VOTE ]

upvote for me please? https://steemit.com/news/@bible.com/2sysip

@whatwelivefor | July 5, 2018, 9:35 a.m. | Votes: 0 | [ VOTE ]

블록체인 저널을 잘 정리해주셨네요. 감사합니다.

@nnuuss11 | May 18, 2019, 1:38 p.m. | Votes: 0 | [ VOTE ]

글 너무 감사드립니다!
궁금한 점이 생겨 여쭤봅니다

만약 A가 B에게 100원을 보냈다는 TX가 생성되었을 때, 이의 거래를 당사자 간에 확인하는 절차를 위해서는 A와 B의 서명이 모두 들어가고 또 A와 B의 개인키로 암호화한 전자 서명이 필요한 것이 아닌지(예를 들어, A의 개인키로 먼저 암호화하고 그 다음에 B의 개인키로 암호화) 생각됩니다.

A와 B간의 거래인데 단순히 A만의 서명과 A 개인키로만 암호화한 거래 내역은 충분히 A가 자신의 개인키로 암호화하기 전에 거래 내역을 예를 들어 100원을 101원으로 살짝 바꿀 수 있지 않나 싶습니다

[ BACK TO TRENDING ] [ BACK TO MENU ]
CMD>