이번 글에서는 여러분들이 비트코인이 어떻게 어디에 쓰이는 것이며 블록체인에 대한 이해도 어느 정도 있다고 생각하고 글을 써내려갈 생각입니다. 비트코인이 무엇이고 블록체인이 무엇인지 잘 모르시는 분들은 아래 링크를 참고해주세요!
- 비트코인은 무엇인가? (@kimjaeh9/1)
- 블록체인은 무엇인가? (@kimjaeh9/5ipyfr-1)
- 블록체인의 원리는 무엇인가? (@kimjaeh9/5oj2bd-2)
합의 알고리즘(Consensus algorithm)부터 알아야한다.
비트코인의 Proof of Work (작업 증명)에 대해 알기 전에 Consensus algorithm (합의 알고리즘)이 무엇이지 알고 넘어가야합니다. 합의 알고리즘이란 분산된 시스템안에서 하나의 데이터의 값에 대해 사람들의 동의를 구하는 과정을 말합니다. 이는 사실 블록체인 기술의 가장 핵심이 되는 부분이고 가장 어려운 부분이기도 합니다. 합의 알고리즘에 의해 블록체인의 성격과 속도가 사실 결정이 된다고 해도 무방하기 때문이죠. 여러분이 많이 들어보신 PoW, PoS, DPoS, BFT 등등 이 모든 것들은 합의 알고리즘의 종류들입니다. 이 들의 차이점은 간단히 말하자면 누가 어떻게 얼마에 걸쳐 거래들을 승인하고 체인에 새로운 블록들을 추가 시킬지에 대한 방법이 다릅니다. 현재 블록체인 개발자들은 어떤 합의 알고리즘을 어떻게 사용해야 블록체인 생태계가 가장 건강하게 유지될 수 있을지 알아가고 있는 상황이라고 보면 될 것 같습니다.
작업 증명(PoW)란 무엇인가?
작업 증명(PoW) 방식은 비트코인 블록체인 네트워크에서 사용되는 합의 알고리즘입니다. PoW는 풀기 어려운 문제를 가장 빨리 해결한 사람에게 블록을 생성할 수 있는 권한을 주고 그 보상으로 코인을 제공하는 방식입니다. 우리는 이 어려운 문제를 푸려고 하는 사람들을 채굴자라고 부르고 있습니다. 즉, PoW 방식에서는 크게 거래자와 채굴자로 네트워크 참여자들을 구분할 수 있습니다. 만약 철수가 영희한테 10 BTC 를 송금을 하고싶다면 채굴자들이 이를 검증을 한후 블록에 거래 내역을 기록 및 봉쇄하며 거래가 성사되게 됩니다. 그렇기 때문에 철수는 이 거래가 성공적으로 완료되게 도와준 채굴자들에게 수수료를 지급하게 되죠.
(출처: 피넥터)
비트코인의 채굴 보상 표입니다. 보상은 블록이 생성되면 될 수록 줄어들게 됩니다. 이 주기는 대략 4년 정도이고 2140년도면 비트코인의 채굴은 모두 완료가 되게 됩니다. 굉장히 먼 미래죠. 만약 채굴이 다 되고 보상이 없어지면 비트코인 채굴자들은 뭘 얻나요? 채굴이 다 되면 보상은 없고 거래 수수료만 생성하게 될 것 입니다. 채굴이 의미가 있으려면 채굴자들이 소모한 시간과 비용대비 수익이 있어야하고 그래야만 블록체인이 지속될 수 있습니다. 그렇기 위해서는 비트코인의 작업 난이도를 낮추는 방식으로 블록체인을 유지하려 하지 않을까 조심스레 예측해봅니다. 거래 수수료를 증가 시킬 수는 있지만 이는 효과적이지 않은 방법으로 생각됩니다.
채굴자들은 어떤 문제를 풀게되는가?
위에서 언급한 어려운 문제를 푸는데는 고도의 수학능력이나 지능을 활용해서 푸는 문제가 아닙니다. 여기서 말하는 어렵다는 것은 시간과 노력이 들어가기 때문에 풀기 어렵다를 나타냅니다. 예를 들면, 제가 1부터 1억까지 숫자하나를 생각할테니 어떤 숫자인지 맞춰보세요. 이런 노가다식 문제를 채굴자들이 풀게 됩니다. 이 문제를 가장 빨리 푸는 채굴자가 블록을 생성함과 동시에 보상과 같이 가져가는 방식이 PoW죠.
여기서 우리가 알면 좋은 기술적 용어들이 나옵니다.
- 블록 헤더(Block Header)
하나의 블록이 가지고 있는 데이터들을 말합니다. 여러가지 데이터들이 있지만 이 중 4가지만 살펴보도록 하겠습니다.- previousblockhash: 이전 블록의 해시
(현재 블록이 블록체인에 있는 이전 블록과 연결되었음을 보여줌) - merklehash: 개별 거래 정보의 거래 해쉬를 2진 트리 형태로 구성할 때, 트리 루트에 위치하는 해시 값
- time: 블록이 생성된 시간
- nonce: 해쉬값을 찾아낼때 까지 1씩 증가하는 계산 횟수
- previousblockhash: 이전 블록의 해시
해시 함수(Hash Function)
임의의 데이터를 함시 함수에 집어 넣으면 고정된 길이의 데이터를 결과 값으로 내보내는 함수를 말합니다. 예를 들면, "12345"를 해시 함수에 넣으면 "00123456"가 8자리 해시 값으로 반환되고, "123456789"를 해시 함수에 넣어도 8자리의 "00654321"이라는 숫자가 나오게 되죠. 비트코인은 SHA256이라는 해쉬 함수를 사용하고해시 값
해시 함수를 통해 나온 결과 값을 말합니다.논스(Nonce)
해쉬값을 찾아낼때 까지 1씩 증가하는 계산 횟수를 나타냅니다. 채굴자들은 해쉬 값을 바꿀 수 없기 때문에 이 논스 값을 바꿔가며 문제를 풀게 됩니다. 이 논스 값을 찾아내는 것이 채굴입니다.작업 난이도
논스 값을 찾아내는 난이도를 나타냅니다. 비트코인은 평균 10분이 소요되는 난이도를 유지합니다. 만약 전에 더 오래 걸리게 된다면 작업 난이도를 낮추고, 적게 걸리면 높이는 방식으로 말이죠.
PoW 방식의 장점들은?
1. 가치가 증명이 된다.
채굴자들이 시간과 노력 투자하여 코인을 캐냈음이 이미 네트워크 참여자들에게 증명됐기 때문에 최소한의 가치를 가지게 됩니다.
2. DDOS 공격에대한 방어력이 높다.
PoW 방식을 이용하면 네트워크에서의 행동에 제약을 받게 됩니다. 거래를 승인 및 검증하기 위해서는 많은 노력이 들어가게 됩니다. 해커들이 데이터를 위조/변조를 성공시키기 위해서는 변경하려는 거래 정보가 포함된 블록부터 그 이후의 모든 블록을 순서대로 채굴을 해야하는데 이는 정말로 불가능에 가깝습니다.
PoW 방식의 단점들은?
1. 느린 거래 처리 속도
모든 노드들이 하나의 블록을 생성해내기 위해 노력하기 때문에 블록 생성이 속도면에서는 비효율적입니다. 현재 비트코인의 거래속도는 1초당 7개 정도의 거래를 처리할 수 있는데, 우리가 실생활에서 쓰이는 VISA나 MASTERCARD의 거래속도인 70,000 TPS를 비교하면 턱없이 느린 속도다.
2. 에너지 낭비
채굴을 빠르고 많이 해내기 위해서는 많은 GPU및 CPU를 활용해야 하기 때문에 엄청난 양의 전기가 소모되게 됩니다. 이는 환경이 좋지 않다는 지적을 많이 받고 있죠.
3. 51% 공격
비트코인의 블록체인일 경우 해시 코드들이 블록에 블록에 걸쳐서 연결이 되었기 때문에 기존의 내역을 변경하는 것은 사실 불가능에 가깝습니다. 하지만 51% 공격은 새로 생성하는 블록을 공격합니다. 비트코인의 블록은 가장 긴 체인에 연결이 되게 됩니다. 이는 즉 과반수가 블록을 검증에 성공하면 그 블록을 체인에 연결한다는 뜻입니다. 해시 파워의 51%를 가진 노드가 마이닝을 통해 해시 값을 찾더라도 주변의 노드들에게 알리지 않아 버리게 되면 다른 노드들은 절반이 못되기 때문에 해커들의 체인들이 가장 긴 체인으로 생성이 되며 그 이후 잘못된 정보들이 블록에 기록되며 체인을 구성하게 됩니다.
4. 무의미한 채굴방식
PoW의 대표적인 문제점 입니다. 정말 무의미한 숫자 찾기를 컴퓨터를 이용하여 무한히 반복하고 있고 사실 현재는 전문적인 채굴 업체들이 비트코인 블록체인들을 운영하고 있다고 해도 과언이 아닙니다. 수익을 만들기 위한 채굴을 하기 위해서는 전문적인 채굴 기계들이 있어야 하기 때문이죠.
(출저: Blockchain.info/pools)
현재 비트코인의 상황입니다. 대형 마이닝풀들이 효율적으로 채굴을 하기위해 모여있는 모습을 볼 수 있습니다. 사실 비트코인 창립자 사토시의 처음 생각과 다르게 완벽한 탈중앙화를 보여주지 않고 있습니다.
마치며
비트코인의 PoW방식에 대해 알아보았습니다. 최대한 쉽게 설명하기 위해 노력했는데 여러분들이 어떻게 느끼실지 잘 모르겠네요. 이해가 안가는 부분이 있다면 댓글로 남겨주셔도 됩니당.
CNoLL의 암호화폐 분석 보기
1. 비트코인은 무엇인가?
2. 이더리움은 무엇인가?
3. 리플은 무엇인가?
4. 라이트코인은 무엇인가?
5. 스텔라는 무엇인가?
6. 이오스는 무엇인가?
7. 네오는 무엇인가?
8. 아이오타는 무엇인가?
9. 온톨로지는 무엇인가?
10. 스트라티스는 무엇인가?
11. 트론은 무엇인가?
12. 아이콘은 무엇인가?