Blockchain 공부 노트 2편
Blockchain #2
지난 시간에 이어서 오늘도 블록체인 공부를 했다. 공부하는데 참고한 사이트는 기본적으로 지난 시간과 같은 Tutorialspoint의 강좌 사이트인 여기부터 참고했다.
작업 증명(Proof of Work)
솔직히 이해가 잘 되지 않는 부분이다. 그래서 다른 문서들을 좀 많이 참고했다.
참고한 사이트의 리스트를 수록한다.
일단 작업 증명(Proof of Work, 줄여서 PoW) 알고리즘은 네트워크의 모든 노드가 동시에 블록을 만들 수 없게 하는 데에 초점을 두는 알고리즘으로, 이 알고리즘을 통과해야만 블록을 생성할 수 있다. 일반적으로 작업 증명 알고리즘은 난수 대입을 이용하므로 엄청난 컴퓨팅 파워를 요구한다.
작업증명 알고리즘을 사용하는 블록체인의 블록 해시는 Difficulty에 따라 선택된 Target 데이터 규격을 만족해야 합니다. 블록해시는 해시 알고리즘에 의해 만들어지기 때문에, Target 데이터를 가지고 대응되는 입력값을 알아낼 수 없다. 따라서, 블록체인의 노드는 조건을 만족하기 위해 Nonce라는 임의의 값을 계속 대입하게 되는 것이고, 이 Nonce값이 Target 데이터 조건을 만족하면 블록이 생성되는 것이죠.
작업 증명 알고리즘은 Difficulty 조절 알고리즘을 이용하여 10분당 1~2개의 블록이 생성된다는 것을 보장한다.
한 편, 블록체인 네트워크에서는 그 체인은 선형으로 연결되어야 하며, 분기가 없어야 한다. 이 분기를 방지하기 위하여 사용하는 알고리즘이 작업증명 합의 알고리즘이다.
작업증명 합의 알고리즘은 일시적으로 합의가 깨질 수 있으나 확률적으로 마지막엔 하나의 블록체인을 합의하게 되는 합의의 알고리즘입니다.
다만 작업증명 알고리즘은 속도가 상당히 느리고, 컴퓨팅 자원이 상당히 낭비된다. 비트코인 한 블럭을 생성하기 위해서는 5,000,000TH/s(1TH/s = 초당 1,000,000,000,000번의 해시연산)이상의 해시 파워가 필요하다.
이를 해결하기 위해 등장한 알고리즘으로는 지분 증명 알고리즘이 있다.
요약: 그래서 어떻게 블록체인이 동작한다고?
지금까지 설명한 블록체인 네트워크의 동작과정을 요약하면 아래와 같다.
- 어떤 거래가 행해지면 양 거래 주체는 네트워크에 그 거래 정보를 공유한다.
- 그 시간 동안, 많은 다른 거래들이 발생하고 이 정보가 네트워크에 공유된다.
- 공유되는 거래 정보가 네트워크의 모든 노드에 도달하지 않더라도, 네트워크의 각각의 노드들이 거래 정보를 블록에 집어넣는다. 이 때 각각의 블록은 독립적으로 만들어지기 때문에 동시다발적으로 생성될 위험이 있다. 하지만 시스템은 작업 증명 알고리즘을 통하여 이는 방지된다. 일반적으로, 블록을 형성한 miner에게는 비트코인의 형태로 보상이 주어진다.