쉽게 이해하는 블록체인 기술(2)

in #kr7 years ago

* 이전 내용

쉽게 이해하는 블록체인 기술(1): https://steemit.com/kr/@loum/1


이전 강의에서는 암호화폐가 암호 + P2P 네트워크로 구성된다는 것을 배웠습니다.
그리고, P2P 네트워크의 구성은 1) 권한이 같은 다수의 피어(노드)들이 2) 그 중에서 일부의 피어들과 연결된다는 것을 알았습니다.

실제로, 비트코인은 최대 8개(?)의 피어와 이더리움의 패리티는 25개의 피어와 연결이 됩니다.

이와 같이, p2p 네트워크에서 다수의 피어들이 하나의 블록체인(DB)를 유지하는 것이 블록체인 기술이라고 했습니다.

이 다수의 피어, 더 구체적으로는 체굴자들이 하나의 블록체인을 P2P 네트워크에서 유지하기 하기 위해서, 채굴자들이 서로 합의를 해야 한다는 것도 알았습니다.

사실, 암호화폐에서 합의 알고리즘이 가장 어렵습니다.


두번재 강의는 블록체인의 구성과 채굴에 대해서 간단히 알아보겠습니다.

이번 강의는 비트코인의 블록체인에 대한 것입니다.

아래의 그림과 같이, 블록체인은 블록 + 체인으로 이루어져 있습니다.

아래의 블록체인에 대한 그림을 주의 깊게 보시기 바랍니다.

블록체인의 특징은 첫번째로 추가전용(append only)의 DB이고 또는 로그 DB입니다.

즉, 내용을 추가만 할 수 있고, 삭제 기능은 없습니다.

두번째로 블록을 주기적으로 생성하고 이를 체인으로 연결하는 것이 특징입니다.

이 방법은 좀 구식방법이죠! 왜냐하면, 기존 서버는 거래(이벤트)를 즉시 처리를 하기 때문입니다.

그러면 왜 이런 구식 방법을 사용할까요?

이는 p2p 네트워크 때문이고, 다수의 피어(채굴자)들이 블록을 누가 만들 것인가를 합의를 해야 하기 때문입니다.

이 때문에, 즉시 처리가 불가능하고, (평균적인) 일정한 시간동안 거래(데이터)를 모아서 거래를 처리하는 방법을 사용합니다.

구체적으로, 블록은 '거래의 모음'으로 1) 소유권 이전 기록, 즉 거래 기록을 포함하고, 또한 2) 거래 위조 방지 등을 위한 헤더부를 더 포함합니다.

1.png

아래의 그림은 블록체인을 보여주고 있습니다.

블록은 세부분으로 구성됩니다.

즉 1) 거래부 2) 헤더부와 3) 블록해시(블록 ID)로 이루어집니다.

먼저 거래부는 다수의 거래 기록을 포함합니다.

두번째 헤더부는 보안용 추가 데이터를 포함합니다.

마지막으로 블록 해시는 해더부에 있는 모든 데이터를 넣어서 만들어집니다.

이 때문에, 헤더부에 어떤 변화가 생기면 당연히 블록 해시가 변하게 됩니다.

비트코인의 헤더부는 6개로 구성이 되어있습니다.

당연히 이 6개 중 하나라도 변하면, 블록해시가 변합니다.

하지만, 이중에서 4개는 반드시 알아야 하며, 암기해 두시면 상당히 도움이 됩니다.

먼저 prev_hash는 체인을 만듭니다.

아래 그림과 같이 block1은 block0의 블록해시, 즉 A를 포함하며, 이것을 이전해시인 prev_hash라고 합니다.

이것에 의해, 아래 그림과 같이 블록이 체인으로 연결되는 것입니다.

즉, 현재 블록에 이전 블록의 블록해시가 반드시 포함되기 때문에 블록이 체인으로 연결되어 블록체인이 되는 것입니다.

mrkl_root는 머클 루트(merkle root)로 이진 머클 트리를 가리키는 것이고, 여기서 알아야 할 것은 거래부에 포함된 거래가 하나라도 바뀌면 머클 루트가 변한다는 것입니다.

이때문에 이것은 거래의 위조 방지 기능을 가집니다.

bits는 이것을 통해서 타겟과 난이도를 구합니다.

타겟을 구하는 수식에 비츠(bits)를 넣으면, 바로 타겟을 구할 수 있습니다.

bits과 nonce은 합의 알고리즘인 작업증명(PoW)을 위한 것입니다.

PoW 합의 알고리즘은 아래와 같습니다.

먼저, 비츠로 타겟을 구하고, 난스(nonce)를 0부터 +1씩 증가시키면서 블록해시를 구하고, 이것이 타켓과 같거나 작은지를 검사를 합니다. 만일 같거나 작으면 원하는 블록해시를 찾은 것이고 아니면, 난스를 +1해서 다시 원하는 블록해시를 찾는 과정을 반복합니다.

만일 블록해시를 찾으면, 채굴자는 다음 블록을 다시 찾게 됩니다.

참고로, 비트코인의 경우 현재 약 2^60 정도를 계산해야 겨우 블록해시를 찾을 수 있다고 합니다.

2.png

이번에는 채굴에 대해서 알아보겠습니다.

채굴은 블록체인 생성과정을 말합니다.

이것은 금속의 채굴과 비슷하게 PoW에서 블록을 생성하는 것이 마치 채굴과 비슷하기 때문에 붙여진 이름입니다.

즉, 엄청나게 계산을 해야 어쩌다가 원하는 블록해시를 발견하고 그 보상이 코인이 주어지기 때문이죠..

앞에서 언급했듯이 암호화폐는 블록을 모아서 주기적으로 생성을 합니다.

비트코인의 블록은 평균 10분마다 생성되며, 약 2500개의 거래를 포함합니다.

3.png

아래는 P2P 네트워크에서 블록생성 과정을 보여줍니다.

그림과 같이 지갑A에서 지갑B로 코인을 보내는 경우를 생각해보겠습니다.

이것을 아래의 P2P네트워크에서 설명을 하면 아래와 같습니다.

빨간색 노드A가 거래를 생성하여 그와 연결된 3개의 이웃 노드에게 이를 전파하고, 이들이 다시 자신과 연결된 이웃 노드에게 전파하는 것을 반복합니다.

그러면 약 1~2초이내에 이 거래가 노드B에 도착을 합니다. 이때는 이 거래가 블록체인에 포함이 안된 상태이며, 이를 unconfirmed transaction(미확인 거래)이라고 합니다.

그 사이 노드(피어)들이 블록해시를 찾으려고 계속 해시 계산을 하고, 이 계산은 블록의 헤더부를 난스를 +1해서 계속 계산합니다. 이 때문에, 비트코인의 계산 능력을 초당 해시 계산능력, 즉 해시레이트(hash rate)로 표시합니다.

그러다가 우연히 보라색 채굴자가 target 과 같거나 작은 블록해시를 찾으면 이를 p2p 네트워크에 전파를 합니다.

블록의 전파는 거래의 전파와 마찬가지로 채굴자와 연결된 이웃 노드에게 전파하고, 이 노드는 다시 자신의 이웃 노드에게 전파를 하여 최종적으로는 이 블록이 거의 전체 노드에 전파됩니다.

이 경우, 지갑A가 거래를 전파했을 때는 아래의 블록체인의 그림과 같이, 블록0과 블록1이로 이루어진 블록체인이 존재했었는데, 이제 보라색의 채굴자가 찾은 블록2가 새로 블록체인에 연결됩니다.

물론, 거래와 블록은 이웃노드에게 전파하기 전에 이를 검증을 하여 이를 통과해야 이를 이웃노드에게 전파를 합니다. 또한 검증을 통과하지 못한 거래 및 블록을 전파한 노드는 불량 노드로 기록되어 여러가지 조치가 취해집니다.

4.png


* 이후의 내용

  1. 합의 알고리즘
  2. 채굴자원문제
  3. EOS 소개
Sort:  

The Vote For Your Awesome Post Has Just Arrived!


This post has been voted with the use of SteemiTag. Feel free to upvote this comment if you’d like to express your support for our cause. Conversely, if you don’t want to receive any more votes from SteemiTag, please respond to this comment by writing NOVOTES.

SteemiTag is an innovative program that helps users increase their gains in the curation rewards by voting on posts that are likely to get high payouts. It maximizes the chance of a user to be rewarded through an accurate selection algorithm that works 24/7 and eliminates "no rewards" problem for users with low Steem Power. You can participate in our program by clicking on this link and confirming your delegation. Your rewards will be sent to you in the form of weekly dividends. Thank you and keep up with your great work!

* 밋업자료

1).쉽게 이해하는 블록체인 기술(1): https://steemit.com/kr/@loum/1
3). 쉽게 이해하는 블록체인 기술(3): 합의 알고리즘: https://steemit.com/kr/@loum/3
4). EOS(1): 스팸 공격 방어방법: https://steemit.com/kr/@loum/eos-1
5). EOS(2): 채굴자원 확장문제: https://steemit.com/kr/@loum/eos-2

Coin Marketplace

STEEM 0.17
TRX 0.12
JST 0.027
BTC 55173.73
ETH 2879.85
USDT 1.00
SBD 2.30