1. 블록체인 이전
블록체인 이전에는 온라인 거래들이 특정 서버에 기반을 두고 이뤄졌습니다. 해당 서비스를 운영하는 회사에서 컴퓨터를 하나 마련하고, 여기서 모든 거래들이 진행되고 내역들이 장부에 저장됐습니다.
(1) 블록체인 이전 시스템의 단점
- 여기에는 위험이 따릅니다. 중앙 서버만 털리면, 장부를 조작해서 돈을 빼가거나 시스템을 마비시키고 파괴할 수 있습니다.
- 그래서 회사에선 보안에 많은 인력과 돈을 들여야합니다.
(2) 블록체인이 개선한 점
블록체인은 이 발상을 뒤집은 것입니다. 장부를 중앙서버에 꽁꽁 숨겨두는 것이 아니라, 모두가 볼 수 있게 공개하고 사람들이 자발적으로 참여해서 장부들을 함께 관리하고 감시하도록 하는 것입니다.
2. 블록체인 원리
- 블록체인은 이 장부에 참여하고자 하는 사람들에게 장부 전체를 복사해서 전달해줍니다.
- 이 장부를 다운 받고 관리에 동참하는 컴퓨터들은 "채굴기"라고 불립니다.
(1) 블록
- 이 장부들은 블록 단위로 되어있습니다. 거래가 발생할때마다 그 내역들은 전세계 모든 관리 참여자들인 채굴기에 전달됩니다.
- 이 내역들이 약 10분에 한 번씩 블록으로 묶여서 장부에 추가됩니다.
- 이러다보면, 채굴기마다 다른 장부를 갖게 될 수도 있습니다.
- 오류가 있거나, 느려서 뒤쳐졌거나, 누가 악의적으로 조작했을 수도 있습니다.
- 그러면 그 중에 가장 긴 체인이 진짜로 인정돼서 채택됩니다.
- 이것이 나머지 채굴기들에 전달이 됩니다.
- 누락된 것이 없으니까 블록이 가장 길다고 판단하는 것입니다.
(2) 가짜 장부를 가장 길게 만든다면?
- 새 블록이 만들어지면 이전 블록에 레고처럼 끼워집니다. 그런데 이전 블록의 모양이 정해져있으므로, 이 모양에 맞는 블록을 만들어야 끼워넣을 수 있을 것입니다.
- 이 모양은, <이전 거래들의 전체 내역 + 새 블록의 거래내역들>을 모두 계산해야 찾아낼 수 있습니다.
- 한 글자라도 바뀐다면 완전히 달라집니다. 여기서 해시라는 개념이 나옵니다.
- 여튼, 모든 거래내역들을 특정 공식으로 계산해서 이 문제를 풀어야, 새 블록을 연결해서 내놓을 수 있는 것입니다.
- 블록 중간에 거래 하나만 살짝 조작해도 그 이후의 블록들은 문제를 전부 풀어야 연결할 수 있는 것입니다.
- 중요한 건 이 문제가 엄청 어럽다는 것입니다.
- 어느 정도냐면, 전세계 모든 채굴기들이 서로 경쟁하고 협력해서 10분동안 어렵게 풀어야 풀릴 정도로 매번 난이도가 조절됩니다.
- 가장 먼저 정답을 맞춰서 다음 블록을 성사시키는 컴퓨터에게는 일정량의 보상이 주어집니다.
3. 채굴 원리
- 공공거래장부의 거래 내역 검증은 참여자들의 대조 / 과반수의 보유 블록 으로 이뤄집니다. 참여자들로부터 컴퓨터 연산력을 할애받는 것입니다. 검증에 성공했을 때, 암호화폐로 보상을 줍니다.
크게는 다음의 과정을 따릅니다.
- 규칙에 따른 정보 전송 확인 완료
- 모든 참여자가 규칙대로 확인하였음을 합의
- 검증 완료에 따라 암호화폐 발행
위 3개의 과정을 합의 프로토콜이라고 합니다.
- 규칙의 묶음인 합의 프로토콜은 규칙에 따라 다양한 방식이 존재합니다.
- 컴퓨터 연산력에 의한 검증 방식이 다양하기 때문입니다.
4. 합의 프로토콜: PoW
가장 대표적이고 대중적인 합의 프로토콜입니다. 풀어서 얘기하면, 참여자가 작업한 것을 증명하면 암호화폐를 발행해준다는 것입니다.
- 여기서 작업이란 검증을 의미합니다.
- 작업 증명은 검증 완료를 뜻합니다.
(1) 작업 증명의 구조
- 거래 발생
- 거래내역을 아직 밀봉되지 않은 블록에 저장
- 임의의 숫자를 추가
- 블록의 내용에 따라서 결정되는 블록의 이름이 해시값입니다.
- 작업증명에선 첫 번째 블록을 제외한 모든 블록은 이전 블록의 해시값에 따라 자신의 해시값이 결정됩니다.
- 과거 블록 내용이 바뀌면, 이후 모든 블록의 해시값이 변경됩니다.
조금 구체적으로 살펴봅시다.
위 과정을 통해서 본래 할당 받아야할 해시값과 다른 해시값을 할당 받게 됩니다.
- 다른 참여자들의 해시화를 유도합니다.
- 다른 참여자들에게 질문을 하는 것입니다. "방금 받은 신규 거래내역에 어떤 숫자를 추가하면 나랑 같은 해시값이 나올까?"
- 그러면 참여자들은, 각자의 컴퓨터 연산력을 총 동원해서 신규 거래내역을 바탕으로 해시화를 시도합니다.
- 답안 해시값이 나올 때까지 임의의 숫자 대입을 통해서 해시화를 반복합니다.
만약 참여자들이 갖고 있는 거래내역이 다르다면, 답안지 해시값을 얻기 위한 임의의 숫자가 모두 다를 것입니다.
- 즉 과거 거래내역에 따라서 내놓는 임의의 숫자가 다르게 되므로 검증이 되는 것입니다.
- 그러다가 참여자 중에서 답안지 해시값과 같은 해시값을 찾게 되면, 이 사실을 바로 모든 참여자들에게 전달합니다.
- 다른 참여자들은 제공 받은 임의의 숫자로 모두 해시값을 도출합니다. 만약 누구도 위변조한 거래내역을 갖고 있지 않다면 모두 동일한 해시값을 도출하게 됩니다.
만일 답안지 해시값과 다른 해시값이 나왔다면 그 의미는 다음과 같습니다.
- 해시값은 거래내역을 바탕으로 암호화됐으니, 이 사실만으로도 블록체인은 최소 두 종류 이상의 과거 거래 내역이 존재합니다.
- 다만 어느 쪽이 진짜인지는 처음 제공된 답안지로 결정하는 것이 아니라, 다수결에 따릅니다.
만일 처음 제공된 임의의 숫자를 넣었을 때, 과반수 이상이 같은 해시값을 내놓은 경우를 생각해봅시다.
- 과반수에 속하지 않는 참여자들의 블록이 교체됩니다. 과반수가 가진 블록으로 전체 통일되는 것입니다.
만일 처음 제공된 임의의 숫자를 넣었을 때, 과반수 이상이 같은 해시값을 내놓지 않은 경우를 생각해봅시다.
- 다시 새로운 임의의 숫자를 찾아가는 과정을 반복합니다.
- 이것을 반복하는 과정 중에, 과반수가 갖고 있는 임의의 숫자가 등장하면 과반수가 아닌 블록이 과반수의 블록으로 교체됩니다.
결론적으로
최초 + 과반수 이상이 동일한 임의의 숫자를 도출 하면, 작업을 증명하여 채굴에 성공한 것입니다. 그러면 해당 참여자는 암호화폐를 발행 받습니다.
- 중요한 것은, 작업증명에서 과반수의 의미는 참여자들의 수가 아니라 해시파워가 기준이 됩니다.
- 그러므로 블록체인이 갖고 있는 전체 해시파워에서 자신이 갖고 있는 해시파워 비중이 중요합니다.
5. 합의 프로토콜: PoS
암호화폐 발행의 핵심이 해시파워인 PoW의 단점을 보완한 합의 프로토콜 중 하나가 PoS입니다. 암호화폐 발행의 핵심이 지분입니다.
- 임의의 숫자 문제를 받고, 해시파워로 찾아 검증하는 것은 PoW와 같습니다.
- 그런데 지분 증명은 한 번의 검증에 모든 노드가 문제를 풀지 않고, 각 노드의 지분을 기초로 확률적으로 문제를 풀 기회가 주어집니다.
- 만약 임의의 숫자 문제를 풀 기회를 받지 못했다면, 다음 문제를 기다려야 합니다.
- 이전에 검증한 노드가 다음 노드를 임의로 결정합니다.
과반수의 의미는 참여자들의 수가 아니라 지분 비중으로 합니다.
(1) 서로 다른 과거 거래내역을 가진 것이 발견된다면
보유 암호화폐 총 비중이 과반수인 쪽의 블록이 진짜가 됩니다.
- 블록체인의 목적은 탈중앙화 / 분산화입니다.
- 그러나 지분증명은 보유한 암호화폐의 비중으로 판단합니다.
6. 합의 프로토콜: DPoS
지분증명의 다른 응용버전입니다.
- 대표와 투표 개념이 존재합니다.
- 블록체인에서도 의사결정시 모든 참여자들의 의사를 묻고 취합하는 것이 비효율적이므로 정해진 절차에 따라 선출된 대표에게 의사결정 권한을 위임하는 것입니다.
7. 심화
해시 파워를 노드들이 경쟁적으로 올리면, 발행되는 암호화폐의 양이 증가하는 것은 아닌가요?
- 해시파워를 노드들이 경쟁적으로 올리면 발행되는 암호화폐의 양이 증가할 수 있습니다. 그래서 이것에 대한 대비가 되어있습니다.
- 대표적으로 비트코인의 경우에는 전체 해시파워에 따라 문제의 수식 복잡도를 조정합니다. 해시를 통해 해시값을 만드는 과정은 수식으로 되어있습니다. 그렇다는 얘기는 컴퓨터 성능에 따라서 해당 수식에 대한 해결 시간을 예측할 수 있다는 것입니다. 그렇기 때문에, 블록체인 내에서 해시파워에 따라서 얼마만큼의 암호화폐가 발행되게 할 것인가는 조절 가능하다는 것입니다.