Browse Tag: 합의알고리즘

블록체인 Intro

이글은 블록체인 구조와 이론을 읽으며 블록체인에 대해 공부한 내용을 요약한 것입니다.

Intro

  • 블록체인
    블록체인의 기술에 대해 공부하려면 4가지 기술에 대한 복합적인 이해가 있어야한다.
    1) ‘블록체인’ 그 자체에 대한 아키텍쳐
    2) 블록체인이 공유 되는 P2P 네트워크
    3) 어떤 블록을 accept 할지를 결정하는 합의 알고리즘
    4) Nonce 값을 찾아서 블록해쉬를 생성하는 해쉬

블록체인이 시작된 역사를 보면 블록체인은 비트코인의 분산원장을 구현하기 위해 사용된 기술이다. 그래서 위 4개의 기술들은 블록체인의 구현보다는 가상화폐의 구현 기술에 가까워 보인다. 그래서 혹자는 가상화폐 구현을 위한 4가지 기술이라고 이야기 할 수도 있다. 그러나 책을 읽으면서 느끼는점은 가상화폐(비지니스)에서 블록체인(기술)을 분리하는 방향으로 기술이 발전해 가고 있다는 것이다. 가상화폐는 블록체인을 이용한 비지니스라는 것을 인지하면서 4가지 기술에 대한 이해를 바탕으로 블록체인에 대해 이해해보려고 한다.

먼저 블록체인에 대해 알아보자. 네이밍만 따라서 이해한다면 블록을 체인으로 연결해놓은 그림을 그릴 수 있다.

하지만, 어떤 블록을 생성해서 어떻게 연결한다는 말인가?

답을 찾아보자면, 블록의 생성을 위해서는 합의 알고리즘이 그리고 블록을 연결하기 위해서는 전자서명과 해쉬를 이용해야 한다는 것이다.

잠깐 가상화폐 중 비트코인에 사용된 합의 알고리즘을 이용해 블록을 연결하는 과정을 살펴보자.

 

블록의 생성

비트코인은 Proof of Work(계산량에 따른 증명 , PoW)이라는 합의 알고리즘을 사용한다.

PoW를 극단적으로 설명하면 10분에 당첨자가 한명씩 나오는 로또가 있다고 가정하자. 이 로또는 특이하게 이미 당첨번호가 선정되어 있다. 그리고 로또 게임에 참여하는 사람은 모든 경우의 수를 고려해서 6자리 숫자를 만들어 나가며 당첨번호를 찾아간다. 그 과정에서 경우의 수를 빠르게 계산한 사람이 당첨번호를 찾으면 당첨금을 받아가고 그 사실이 전세계에 공표된다.

위의 로또 게임에서는 두가지 가정이 있다. 1)당첨자는 10분에 한명씩만 나온다. 2)당첨 번호를 가장 빠르게 찾는 사람은 당첨금을 가지고 갈 권리가 있다.

무슨 로또냐고 반문하겠지만, PoW는 CPU 파워를 이용해 10분(예시)에 한번씩 답을 찾을 수 있는 확률을 가진 해쉬 값을 찾는 사람이 블록을 생성하고 보상으로 비트코인을 가지고 가는 알고리즘이다. 이 알고리즘은 P2P 네트워크에서 비잔틴장군의 문제를 해결하는 대표적인 알고리즘으로 알려져 있다.(Intro에서 다 설명할수 없다 천천히…)

P2P 네트워크에서는 중앙집권식의 서버에서 작업에 대한 신뢰를 보장하지 않기 때문에 PoW에서는 CPU파워가 가장 높은 사람을 믿겠다 라고 이야기하는 것이다. 그리고 그 사람이 블록을 생성할 권리를 가지게 되는 것이다.

이렇게 블록은 생성 되었고 이전 블록과는 어떻게 연결하는지 알아보자

 

블록의 연결

생성된 블록에는 크게 앞블록의 정보 및 현재 블록의 정보(고정된 정보) 와 Nonce 라 불리는 해쉬 계산에 필요한 정답으로 구성되어 있다. 고정된 정보를 바탕으로 모든 경우의 Nonce 값을 계산해서 블록해쉬 값을 찾아야 한다.(SHA256 해쉬 함수를 적용해서 계산되는 값)

Nonce 값을 찾은 유저는 해당 블록을 블록체인 네트워크에 전파하고 각 노드는 새롭게 생성된 블록을 검증해서 로컬 블록체인에 추가한다. 결국 블록해쉬는 이전 블록의 블록해쉬값을 가지고 있고 이는 링크드 리스트처럼 블록을 연결하는 역활을 한다.

블록의 생성시 서로 다른 노드간 충돌에 대해서는 어떻게 관리할까? 간단히, 생성 후 많은 블록이 연결된 노드가 더 신뢰할 만하다고 판단한다.(충돌 트렌트 차트 – https://blockchain.info/charts/n-orphaned-blocks)

 

일단 마무리

글쓴이처럼 블록체인에 대해 이제 공부해보려는 사람이 많을 것이다. 하지만 정보도 많이 없고 정의도 제각각이고 개념은 어렵고.. 산넘어 산일수도 있다.(혹은 천재여서 다 이해할지도) 이 글에 담은 내용이 맞는지도 확신할 수 없다. 하지만 여러 reference를 바탕으로 스터디 한 내용을 공유한다. 그리고 잘못된 내용이 있다면 자유롭게 토론할 수 있었으면 좋겠다.

일단, 블록을 어떻게 생성하고 연결하는지에 대해 알아봤다. 다음에는 각 기술 요소에 대해 더 자세하게 스터디하는 글을 준비하겠다.

 

*출처 : 블록체인 구조와 이론, 예제로 배우는 핀테크 핵심 기술@위키북스,

https://homoefficio.github.io/2017/11/19/블록체인-한-번에-이해하기/