지난 포스팅에서는 아래와 같이 공개키 암호화 알고리즘에 대한 개념정리를 하였습니다.
오늘 포스팅의 목표는 비트코인의 거래시 트랜잭션의 검증이 어떻게 이루어지는지에 대한 개념정리를 목표로 포스팅을 진행하겠습니다!
이해를 돕기 위해서 비트코인 거래의 전체적인 흐름을 한번에 설명하지 않고 나눠서 하나씩 채워가는 형태로 설명을 하겠습니다.
비트코인을 거래하기 위해서는 거래 정보를 작성해야합니다. 예를 들어서 'Bird'가 'Dog'에게 1.0 BTC를 보낼 것이라고 메시지를 작성합니다. 이렇게 작성된 메시지를 '트랜잭션'이라고 표현하며, 해당 트랜잭션은 비트코인 네트워크에 연결된 노드(지갑)들에게 전파됩니다. 트랜잭션을 수신 받은 각 노드들은 거래 내역을 업데이트하고 또 다시 다른 노드들에게 해당 트랜잭션을 전파하게 됩니다.
위의 그림 처럼 새롭게 생성된 트랜잭션을 각 노드들에게 전파 됩니다. 트랜잭션을 수신한 노드는 반드시 해당 트랜잭션이 올바른 트랜잭션인지 검증하는 수단이 필요합니다.
'Caw'가 'Bird'의 돈을 훔치기 위해서 'Dog'와 짜고 가짜 거래내역을 만들어내서 비트코인 네트워크에 연결된 노드들에게 전파하면 어떡하죠?
예전 포스팅을 통해 어떤 거래가 이루어지면 각 노드는 해당 거래가 '진짜'인지를 검증하고 검증된 거래내역만 업데이트 한다고 설명해 드린적이 있습니다! 그렇다면 어떻게 검증이 이루어질까요? 해당 거래가 '진짜' Bird가 보냈는지에 대한 유효성 검증을 하기 위해서는 디지털 서명(Digital Signature) 혹은 전자 서명이 필요합니다.
지난 포스팅에서 '개똥'이와 '소똥'이의 예제를 통해서 공개키 암호화 알고리즘을 이용하여 '전자 서명'을 하는 방법에 대하여 언급하였습니다. 기억하시나요?
암호화 알고리즘은
비대칭 암호화 방식으로'개인 키'로 암호화 데이터는 오직'공개 키'로만 해석할 수 있다고 설명해드렸습니다. 그리고 이 방식은 '공개 키'를 가지고 있는 사용자라면 그 누구라도 암호화된 데이터 내역을 복호화 할 수 있지만 반대로 이러한 암호화 데이터는 오직 '개인 키'를 가진 사람만 할 수 있다고 설명해 드렸습니다.
비트코인을 거래하기 위해서는 원본 데이터와 전자 서명된 데이터를 함께 보내어 해당 트랜잭션의 데이터 내용이 수정되었거나 올바른 메시지인지 '검증'을 하게됩니다. 'Caw'가 'Bird'인척 트랜잭션을 전파했을 경우의 예를 들어보겠습니다.
위의 그림 과정을 설명해드리면 아래와 같습니다.
위의 시나리오는 조작된 거래에 대하여 판별하는 시나리오 입니다. 다음은 정확한 검증 시나리오를 살펴봄으로써 정확하게 트랜잭션의 유효성 검사가 어떻게 이루어지는지 확인해보겠습니다.
자 그럼 다시한번 최종적으로 위의 내용을 정리해보도록 하겠습니다.
어느정도 이해가 되셨나요? 현재 설명한 내용으로는 비트코인 거래원리를 100% 설명했다고 할 수 없습니다. 다음 포스팅에서도 계속해서 비트코인 거래원리에 대한 포스팅을 이어가도록 하겠습니다!
[참고 자료]
https://ko.wikipedia.org/wiki/%EA%B3%B5%EA%B0%9C_%ED%82%A4_%EC%95%94%ED%98%B8_%EB%B0%A9%EC%8B%9D
https://steemit.com/kr/@jsralph/5f59rf-1
https://withkairos.wordpress.com/2015/06/14/mastering-bitcoin-2-%EB%B9%84%ED%8A%B8%EC%BD%94%EC%9D%B8%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8F%99%EC%9E%91%ED%95%98%EB%8A%94%EA%B0%80-how-bitcoin-works/