안녕하세요. 'pcs88'입니다.
위 글에서 언급한 첫 번째 의문점에 대해 이야기 해보겠습니다.
의문 1
이들이 신뢰도가 높은 하나의 노드(정부, 기업 등 각종 기관) 만큼 우리가 믿을 근거가 뭘까요?
불특정 다수의 노드는 블록체인을 검증자가 되기 위해, 자신이 나쁜 노드가 아니라는 것을 증명합니다.
최초로 성공한 블록체인인 '비트코인'에서는 그들이 어떻게 신뢰를 증명하는지 알아보겠습니다.
☞ 비트코인에서 불특정 다수의 노드 증명방법
◈ 비트코인에서는 노드가 작업증명(Proof of working, POW) 방식으로 신뢰를 증명한다.
- 비트코인은 특정한 작업을 수행해서 신뢰를 증명합니다.
- 특정한 작업이란 다음 문제에 대한 답을 구하는 것입니다.
'해시함수에 입력값=[거래내역]+[이전 블록 출력값]+[암호]을 넣어, [정해진 출력값]이 나오는 암호는?'
- 문제에서 거래내역과 이전 블록 출력값 그리고 해당 블록의 정해진 출력값은 미리 주어져 있습니다.
- 단, 해시함수는 정해진 출력값을 알아도 입력값을 알 수 없습니다.
- 해시함수? 입력값? 출력값? 암호? 복잡하지요? 우선 이런 과정만 알고 계세요.
- 뒤에서 더 다루겠습니다.
- 자, 이렇게 노드는 입력값을 구성하는 '암호'를 찾아 신뢰를 증명합니다.
- 그런데... 겨우 문제 하나 풀었을 뿐인데... 무슨 신뢰를 할 수 있을까요?
- 결론부터 말하자면 '경제성'과 관련이 있습니다.
- 암호를 찾기 위해서는 컴퓨터가 있어야 합니다.
- 많은 컴퓨터가 암호를 찾을 수록 더 빨리 찾을 수 있겠지요?
- 그러나 비트코인 블록체인은 암호를 찾는데 10분이 걸리도록 난이도를 자동으로 조절합니다.
- 많은 컴퓨터 또는 더 뛰어난 컴퓨터를 사용할 수록 문제 난이도는 더욱 어려워지는 것이죠.
- 결국 노드는 컴퓨터의 양 증가와 성능 향상, 그에 따른 전기 사용료로 인한 비용을 지불하게 됩니다.
- 즉, "내가 일을 하려고, 비용을 지불하니 신뢰해주세요." 라고 말합니다.
- 노드는 일을 하고 비트코인으로 보상을 받습니다.
- 보상 받은 비트코인의 가치가 비용보다 높아야 노드는 손해를 보지 않습니다.
- 노드가 열심히 일할 수록 진짜 블록만 존재하는 비트코인 블록체인으로 신뢰가 높아집니다.
- 그로 인해 많은 사용자들이 비트코인 블록체인을 사용하게 되면서 비트코인 가치는 상승하고, 노드는 비용을 충당하고 이익을 볼 수있지요.
- 즉, "내가 일을 하려고, 비용을 지불하니 신뢰해주세요." 에 "나는 비용을 충당하고 이익을 봐야 하기에 비트코인 블록체인을 위해 열심히 일하겠습니다." 가 더해집니다.
- 이렇게 불특정 다수의 노드에 대해 경제적인 논리로 신뢰할 수 있습니다.
◈ 불특정 다수의 노드가 신뢰를 증명하면 이 후에 무슨 일을 하지요?
- 지난 글에서 노드들은 [새로운 블록 생성 및 연결 시키는 일]과 [블록체인을 검증하는 일]을 한다고 했지요?
- 노드들은 비용을 지불하고 신뢰를 증명함과 동시에 일을 합니다.
- 다시 말해서 위 글에서 나온 해시함수 문제를 풀면 신뢰를 증명함과 동시에 위의 일을 하지요.
- 비트코인 블록체인이 아래와 같이 있습니다.
[A블록] - [B블록] - [C블록] - [D블록] -
- [A블록]에서 시작해서 [D블록]까지 연결되어 있네요.
- 그럼 이제 [E블록]을 새로 생성해서 [D블록] 뒤에 연결해야겠군요.
- 모든 블록에는 다음과 같은 내용이 기록되어 있습니다. 위 글에서 봤던 용어들이 나오네요.
- 거래내역, 이전 블록 출력값, 암호 (이 세 가지가 [E블록] 입력값이 됩니다.)
- 거래내역
- 거래내역은 비트코인 거래가 이루어진 내용입니다.
- 'A로부터 B에게 얼마가 이동했다.' 와 같은 여러 거래 건이 기록되어 있지요.
- 이전 블록 출력값
- 이전 블록 출력값은 이전 블록에서 해시함수에 입력값을 넣었을 때 나오는 출력값입니다.
- 새로 생성될 [E블록]에는 [D블록]의 출력값이 기록 되어 있겠네요.
- 암호
- 암호는 노드가 신뢰를 증명하면서 찾은 값입니다.
- 자, 노드가 암호를 찾아 신뢰를 증명했습니다!
- 이 노드는 암호를 다른 노드들에게 알립니다.
- 다른 노드들은 암호를 해시함수에 대입해보고 맞으면 확정합니다.
- 모든 노드의 블록체인에 [E블록]이 연결되고, 암호를 찾은 노드는 보상을 받습니다.
- 노드들이 다음 [F블록] 생성을 위해 [F블록] 암호를 찾기 시작합니다.
- 이제 [E블록]은 위조 될 수 없습니다.
- 누군가 [E블록] 거래 내역을 조작했다면 [E블록] 입력값이 달라져 [E블록] 출력값이 달라집니다.
- [E블록] 출력값은 [F블록] 입력값을 구성하고 있기에 [E블록] 입력값이 달라지면 바로 위조 사실이 발견됩니다.
┌ 값이 같음 ┐(진짜)
- [D블록] - [E블록] - [F블록] -...
└ 값이 다름 ┘(가짜)
- 또 [D블록] 이후 [E블록] 생성 중에 거래 내역을 조작하고 유효한 다른 암호를 찾아 [EE블록]을 만들었다 하더라도 이후 [F블록] 생성 보다 늦어지게 됩니다.
[E블록] - [F블록] 생성 완료 (진짜)
- [D블록] -
[EE블록] - [FF블록] 암호 찾는 중 (가짜)
- 대다수 노드는 경제적인 논리로 위조가 발생하면 비트코인의 가치가 사라져 큰 손실을 입습니다.
- 따라서 대대수 노드는 비트코인 블록체인의 성장이라는 목적이 있습니다.
- 그런 이유로 특정 목적의 위조 노드보다 항상 많은 수 입니다.
- 암호를 찾기 위해서는 컴퓨팅 파워가 필요하고, 컴퓨팅 파워가 많은 쪽이 암호를 더 빨리 찾게 됩니다.
- 이런 이유로 비트코인 블록체인은 길이가 긴 것을 진짜 블록체인으로 보도록 설정되어 있습니다.
- 따라서 [EE블록]의 위조가 발견됩니다.
쉽게 설명하려고 하지만 역시...
긴 글 읽어주셔서 감사합니다. ^^