본문 바로가기
블록체인/비트코인

[비트코인]Bitcoin Transaction

by dev_mac-_- 2018. 11. 26.

Bitcoin Transaction

인터넷으로 블록체인을 공부하다보면 햇갈리는 내용들이 자주 나온다. 

그 중에서 Bitcoin의 Transaction에 대한 내용인데, 사실 이 부분을 누군가에게 설명하기 전에 혼자 공부를 할때는 이해가 가는 것 같았지만 막상 설명하려고 하니 의문점이 많았다. 

그 내용을 바탕으로 정리를 해보았다.


예를 들어보자, A에서 B로 송금한다고 가정한다.


1. 먼저 Transaction정보 (A->B 거래정보)와 B의 공개키를 가져와서 해싱을 한다.

2. A의 개인키로 전자서명을 한다.

3. 모든 노드들에게 Broad Casting한다.

4. 마이너는 A의 공개키를 이용해서 전자서명을 검증 후 트랜잭션 풀에 등록을 한다.


(비트코인에서는 해시함수로 SHA-256를 사용한다.)

이 부분이 끝이아니다. 단지 Transaction이 발생되어 유효한 Transaction인지 검증만 한 것 뿐이다.


비트코인에서 PoW (Proof Of Work) 작업증명 방식으로 블록들을 체인으로 연결한다.


채굴과정을 보기 전에 비트코인의 헤더가 어떤 구조로 이루어져 있는지 알아야 한다.

비트코인의 헤더 부분이 궁금하신 분은 BlockChain 기초개념을 참고하면 된다.

트랜잭션 풀에 있던 개별거래정보들을 해시를 해서 머클트리를 만든다. 

블록헤더에는 머클트리루트의 해시값이 담긴다. 

(간략하게 머클트리를 설명하자면 Child 노드들의 해시값이 Parent 노드의 해시값이다. Child노드의 값이 바뀐다면 Parent 노드의 해시값이 변하게 된다.) 

아래 그림에서 Transaction은 머클트리 루트의 해시값이라고 생각하면 되겠다.

이전 블록 해시라고 적어두었는데 정확하게는 이전 블록헤더의 해시값이다. 

1. 이전 블록 해시와 Transaction 그리고 nonce 값을 SHA-256 해싱을 한다.

2. Target값과 비교를 하는데, 이때 Target 값은 난이도 값을 뜻한다. 이 값보다 작거나 같으면 해당 nonce값을 새로운 블록에 기록을 하고 모든 노드들에 브로드 캐스팅을 해서 블록체인에 연결이 된다.

비트코인의 블록에는 블록의 헤더, 거래정보, 기타정보가 담겨있다.


이 부분을 공부하면서 들었던 의문점들을 정리해 보았다.

- Mining 속도는 어떻게 통제하는가?

difficulty를 도입을 하였다. Network hash power의 최근 2주간 통계로 평균 10분에 하나씩 블록이 생성되게 설계하였다.


- 채굴하는 동안 쌓이는 거래는 어떻게 보관하는가?

이 부분은 처음 설명한 Transaction pool과 관련이 있다. transaction이 발생하면 마이너는 자신의 pool에 보관을 한다.

이때, 우선순위에 따라서 transaction(거래정보)가 새로운 블록에 머클트리로 묶이게 되고 채굴과정을 시작하게 된다.




참고자료

https://homoefficio.github.io/2016/01/23/BlockChain-%EA%B8%B0%EC%B4%88-%EA%B0%9C%EB%85%90/

http://ihpark92.tistory.com/51

https://www.khanacademy.org/economics-finance-domain/core-finance/money-and-banking/bitcoin/v/bitcoin-transaction-block-chains

댓글