⛏채굴 = 정답을 찾은 사람(관리자)에 대한 보상!
비트코인은 장부 관리에 참여하고자 하는 사람들에게 장부 전체를 복사해서 전달해 줘. 이 장부를 다운로드하고 관리에 동참하는 컴퓨터들이 바로 채굴기라고 할 수 있어.
장부들은 위에 말했듯 블록 단위로 이루어져 있어. 그래서 거래(트랜잭션)가 있을 때마다 모든 거래 내역은 전 세계의 모든 관리자들, 즉 채굴기들에게 전달이 되지! 이 거래 내역들은 10분에 한 번씩 하나의 블록(장부)로 묶여서 이전 블록에 연결(체인) 될 거야.
그런데, 각자의 컴퓨터들이 사양이 다르다 보니 속도 차이로 인해서 또는 악의적으로 조작한 누군가에 의해 체인의 길이가 달라질 수 있어. 하지만 비트코인 시스템에서는 가장 긴 체인을 진짜로 인정하기로 합의했어. 가장 성실하게 블록을 연결한 셈이니 누락이 없을 것으로 믿는거야. 이 채택된 체인의 블록은 채굴기들에게 다시 전달 돼. 그러면 채택된 채굴기는 일정량의 비트코인을 채굴 보상으로 받게되는 거야.

🎃그런데 가짜 장부들을 이어서 가장 긴 체인을 만들면 어떻게 되는 거야?
사실 이건 거의 불가능에 가깝다고 생각하면 돼! 블록을 연결하는 것이 그냥 내역을 영어나 한글로 가져와서 쌓는 것이 아니라, 각 거래 내역들은 해시라는 형태로 암호화되어 해석하는 과정을 겪게 돼! 그러다 보니 우리가 뉴스에서 보는 코인 채굴장처럼 컴퓨터들이 그 어려운 암호들을 하루 종일 해석하고 있는 거지!
가짜 장부들을 이어서 가장 긴 체인이 되려면, 하나의 블록만 바꾸면 되는 게 아니라 체인으로 이어진 블록의 내역들을 모두 바꾸고 그만큼 암호를 풀어야 할 양이 많아지겠지. 그런데 애초에 블록체인 채굴은 슈퍼컴퓨터들이 10분을 낑낑대면서 풀릴 정도로 난이도가 어려운 문제들이 출제되다 보니 풀어야 할 양이 많아지면 더욱 가장 긴 체인이 될 확률이 거의 없어.
즉, 채굴이란 건 가장 긴 블록을 만든 대가로 코인을 보상을 받는 것이고, 보상을 목적으로 채굴에 참여하는 자발적 참가자들에 의해 저절로 보안까지 이루어지는 시스템이 바로 비트코인이야!
지금 이 시간에도 전 세계 각지에서 비트코인은 계속 채굴되고 있으니 탈 중앙화된 채굴자들에 의해 보안도 든든해지고 있어.
⚙️해시(Hash)가 무슨 뜻이야?
어떠한 크기의 입력값을 입력하던지 같은 크기로 출력하는 것을 해싱(Hashing)이라고 해.
쉽게 말해 특정 함수를 거쳐 입력값을 암호화 시키는 거야. 가장 일반적으로 사용하는 SHA-256 의 경우, 어떤 크기의 입력값을 입력하던지 256비트 길이의 출력값을 내보내는 거지.
그 과정을 통해 출력된 값이 해시(Hash)가 되고, 이런 해시함수는 블록체인 시스템에서 아주 중요하게 작용하고 있어. 사용자의 익명성을 보장하고 블록체인의 안정성 또한 보호할 수 있거든.

해시함수가 어떻게 익명성과 안정성을 보장하는데?
해시함수는 한 방향으로만 작동하기 때문에, 입력값을 통해 출력값을 알 수는 있어도 출력값을 가지고 입력값을 알아낼 수는 없거든. 또한 입력값이 조금만 바뀌어도 출력값은 아예 달라져버려.
그래서 트랜잭션에서 해시함수를 통해 암호화된 지갑 주소와 송금 액수는 알 수 있어도, 지갑주소를 만들 때 입력한 사용자의 신상을 알아내기는 거의 불가능하다는 거야.
또한 새로운 블록에 이전 블록의 내용도 들어가기 때문에 해싱값이 달라졌다면 이전 블록이나 현재 블록에 조작이나 위조가 발생했음을 알 수 있겠지. 해싱함수는 이런 방법으로 블록체인의 안정성을 보장하는 거야. 어때 신기하지?


여기까지 해시함수에 대해 설명했는데, 왜 이런걸 알아야 할까?
해시함수에 대해 이해해야 비트코인 채굴의 원리에 대해 이해할 수 있기 때문이야.
⛓다양한 합의알고리즘
저번 레터에서 채택된 블록의 채굴기가 그 보상으로 비트코인을 받는다고 얘기했었지?
비트코인에서 채굴을 하기 위해서는 문제를 풀어서 출력값에 대한 특정 숫자를 찾아내야 해.
이 숫자를 논스(Nonce)라고 하는데, 다들 이 논스를 빨리 찾아 채굴하기 위해 더 좋은 컴퓨터를 이용하면서 경쟁하고 있지. 이런 방식을 작업증명방식(PoW)라고 해.
모든 블록체인이 비트코인처럼 문제를 빨리 풀어냄으로써 블록을 생성하는 건 아니야.
블록체인 네트워크에서 어떻게 블록을 생성하냐에 대한 방법은 각자 다르고, 이 방법을 ‘합의알고리즘’이라고 불러.
하나의 운영주체가 없기 때문에 네트워크 참여자가 모두 합의된 방법으로 블록을 생성하는거지.
다른 합의알고리즘도 몇 가지 알려줄게.

이더리움도 갈아탄 지분증명(PoS, Proof of Stake)
앞에서 설명한 PoW가 ‘누가 제일 빨리 숫자를 찾나’ 하는 방법이었다면,
PoS(지분증명방식)은 이름 그대로 지분, 즉 코인을 많이 가지고 있을수록 블록을 생성할 가능성이 높아지는 방법이야.
별도의 채굴기가 필요하지 않고 무의미한 계산이 없어 전기 낭비와 탄소 배출이 적어 PoS 코인을 ‘친환경 코인’이라고 부르기도 하지. 우리가 아는 코인 중 솔라나, 에이다, 폴카닷 등 여러 코인들이 지분증명방식을 사용하고 있으며, 이더리움 역시 ‘이더리움 2.0’이라는 이름으로 작업증명방식에서 지분증명방식으로 변환을 진행하고 있어.
🤭장점: 환경친화적, 무의미한 계산이 없어 경제적, 탈중앙화된 네트워크 구축 가능
👿단점: 아직 보안성이 검증되지 않았음, 지분이 많은 소수의 거대 투자자들이 독점 가능

위임지분증명(DPoS, Delgated Proof of Stake)
전체적인 방식은 PoS와 비슷하지만, 내가 가진 지분을 특정인에게 위임(Delgate) 즉 몰아줄 수 있는 방식이야.
또한 만들어진 코인을 어디에다 사용할지 투표를 통해 결정하고, 보유하고 있는 지분만큼 투표권이 주어져.
지분증명방식을 통해 보상을 받고 싶어도 최소한도의 코인을 가지지 못한 투자자들에게 긍정적인 방식이라고 볼 수도 있지.
🤭장점: PoS보다 블록 생성 속도가 빠르고 PoW보다 저렴한 방법
👿단점: 위임한 만큼 탈중앙화에서 멀어짐, PoS보다 네트워크가 취약하다.

그 밖에 국내 클레이튼 코인에 적용되는 기여증명방식(PoC,Proof of Contribution)이 있고,
장애가 있어도 1/3을 넘지 않으면 시스템이 정상작동하도록 하는 비잔틴 장애 허용(BFZ)가 존재해.
시중에 존재하는 1세대 코인들은 아직 대부분 작업증명방식을 이용하고 있고 이더리움, 솔라나를 비롯한 여러 코인들이 지분증명방식과 위임지분증명방식을 채택하고 있지.
이와 같이 어떤 합의 알고리즘 방식이 존재하고 어떤 코인이 어떤 방식을 적용하는지에 대한 이해도가 생긴다면 투자를 하더라도 실수할 확률이 좀 더 적어지겠지?