최대한 블록체인을 간단하게 설명해보고 싶다.
우선 분산원장을 들 수 있겠다. 데이터베이스를 우선 예로 들 수 있다. 지금까지 서비스를 위한 데이터를 어디에 저장할 것이냐고 했을 때, 대부분은 서비스 제공자가 관리하는 데이터베이스에 저장해왔다. 대표적으로 은행의 웹-앱 서비스가 이렇게 작동을 한다.
근데 이러한 데이터를 각자의 기기에 똑같은 형태로 복제를 하고, 추가적으로 쓰이는 데이터도 모두 일치시킨다고 하자. 가능할 수 있지만, 여기서 데이터가 금전
과 관련이 되면 부정행위가 발생할 수 있다.
금전 거래를 기록하는 장부를 A, B, C 외 여러 인물이 각자 기록하고 있다고 하자. A가 B에게 송금을 해야 하는데, C가 기록하는 장부에서는 A가 C에게 송금을 했다고 기록하고, C는 이후 자신이 필요한 재화를 구매하는데 그 기록을 사용하였다. C가 부정행위를 했다는 것을 찾기 위해서는 이 장부 체계를 이용하는 모든 사람들의 기록을 대조해야 한다. 이는 이중지불
문제도 가능케 한다.
데이터를 서비스 제공자 같은 중앙관리자가 아닌 이해관계자나, 서비스 이용자가 기록하고 관리하게 하는 것이 분산원장이다. 하지만 그냥 데이터를 분산해서 저장하면 위와 같은 문제 사항이 발생할 수 있다
그래서 등장하는 것이 합의 알고리즘이다. 합의 알고리즘
은 블록체인에 참여하는 개인들이 각자가 가지고 있는 분산원장
을 일치하게 하는 약속 혹은 규약이다.
블록체인이 사용하는 합의 알고리즘은 여러 개가 있다.
생각해보기, 탈중앙화?
지금 내가 블록체인을 다시 생각해봤을 때, 탈중앙화의 여부가 중요한지는 잘 모르겠다. 진심으로 나는 탈중앙화를 옹호하는 입장이다. 따져보면
PoW
외에 탈중앙화를 완전히 구현할 수 있는 합의 알고리즘은 없는 것 같다. 이후 설명하겠지만 진정한 탈중앙화는Public Chain
으로 누구나 참여자(Node)로 블록체인에 기여할 수 있는 기회를 얻을 수 있어야 한다.
하지만PoS
는 참여자가 되기 위해서 해당 블록체인의 코인, 토큰을 일정량 보유하고 있어야 한다. 마치 할리 데이비슨 커뮤니티에 가입하고 활동하기 위해 할리 데이비슨을 가지고 있어야 하는 것과 같다. 이 경우에는 그래도 자본으로 밀어붙이면 누구나 참여 가능하다는 문제는 해결이 되긴 하다.
DPoS가 비난을 받는 경우는 현대 정치체제처럼 대표자가 선출되는데, 이 대표자가 진정 모든 참여자들을 대표할 수 있냐는 문제인 것 같다. 블록체인 참여자들은 목표를 공유하고 실현하기 위해 노력한다고 한다. 하지만 현실의 어떤 집단이 나아가는 모습은 그렇듯 선형적으로 작용하는 것 같지는 않다. 나는 집단은 한 점에 모여 퍼져나가는 형식으로 발전한다고 생각한다.
근데 덧붙여 말하면PoW
조차 참여자가 되어 제대로 보상을 얻으려고 하면 현재 몇 백만원 씩 하는 ASIC 전용 채굴기를 사야한다.
누구나 참여자로서 참여할 수 있고, 데이터를 기록하고자 만들었던 비트코인의 창시자 사토시 나카모토는 지금의 행태를 보면 무슨 생각이 들까?
합의 알고리즘이 어떻게 블록을 만드는지는 알겠지만, 어떻게 똑같은 분산원장을 기록하게 하는 방법이 될수 있는지에 대해 의문이 들 것이다. 이는 PoW
의 경우로 살펴봐야 이해가 빠른 것 같다.
이진수 숫자열을 만드는 것을 목표로 참여자들은 소유한 기기로 계산을 해야 한다. 계산을 하는 과정에서 어마어마한 전력을 소모하게 된다. 그리고 가장 먼저 유효한 블록을 생성한 참여자가 생길 것이다. 다른 나머지 참여자들은 이 블록이 맞는지 검증하고, 옳을 시에 곧장 이 다음 블록을 생성하기 위해 지금까지의 작업을 포기하게 된다.(이 시점에서 무의미한 전력 소비 지적을 받는다.)
여기에 만약 외골수의 참여자가 생긴다고 하자. 다른 사람이 블록을 어떻게 만드든 상관 없이 자신의 블록체인을 이어나가는 것이다. 이 참여자는 분기된 블록체인에서 보상을 얻을 것이다. 하지만 이 보상을 트랜잭션으로 올리게 되면 어떻게 될까? 이 참여자 이외 다른 블록체인 분기를 공유하는 참여자들은 이 외골수 참여자의 보상을 인정하지 않는다. 이 외골수 참여자는 괜히 자신의 전력만 낭비한 것이다.
동시에 서로 다른 참여자 각각 블록이 생성되었다고 하자. 그리고 이 소식을 다른 참여자들에게 전파한다. 정확히 50:50의 참여자가 각각의 블록에 대한 소식을 전파받고 각각의 블록에 대한 다음 블록을 생성하게 된다. 이런 우연이 과연 얼마나 갈까? 진짜 우연의 우연이 발생해서 계속 이런 상황이 생기면 문제가 될 것이다. 하지만 작업 난이도에 의해서 조절하긴 하지만 블록 생성 작업이 완료되는 시간은 랜덤하다. 언제까지나 이런 우연이 반복될 일은 거의 없고, 아마 결국에는 이 평형이 깨지게 될 것이다. 그럼 먼저 블록을 생성한 분기 쪽의 블록체인으로 컴퓨팅 파워가 몰릴 것이다. 그렇게 하지 않으면 손해라는 것은 자명한 사실이기 때문이다. 이를테면 잘 짜인 알고리즘을 통한 암묵적 합의로 작동한다. 다른 선택을 한 사람은 사례1에 속하는 사람이 될 것이다.
지갑은 개인키와 공개키를 보관하는 장소다. 하드웨어에 보관할 수도 있고(콜드월렛), 소프트웨어 상에서 보관할 수도 있다(핫월렛). 보안은 하드웨어 보관하는 것이 안전하다고 하는데, 사용편의는 당연히 핫월렛이 좋다. 둘을 상호보완하는 형태로 발전해 나갈 것이다.
공개키는 다른 사람에게 전하여 코인을 송수신할 수 있는 피아를 식별할 수있는 방법이다.
개인키는 본인이 소유한 암호화폐를 소비할 수 있게 서명할 때 사용하게 된다. 개인키는 자신이 소유한 재화의 전달에 직접적으로 영향을 미치기 때문에 남에게 노출되면 안된다.
블록체인
은합의 알고리즘
을 통해서보장이 안된 노드
에 의해신뢰 가능한 분산원장
기록을 가능케하는 기술이다.
누구나 참여자로서 블록체인에 기여할 수 있다. 참여하는 모든 노드들이 생성되는 블록과 트랜잭션들을 검증하게 된다. 때문에 신뢰도가 높지만 모든 노드가 거래 기록을 공유하려 하기 때문에 처리 속도가 느리다.
폐쇄형 블록체인으로 Public Chain과는 상대적인 개념이다. 권한 부여 능력이 있는 주체가 다른 참여자들이 블록체인에 참여 할 수 있게 권한을 준다. 하이퍼렛저가 대표적인 Private Chain 을 따르는 블록체인이다.
Public Chain과 Private Chain 중간의 성격을 띄고 있다고 한다. 참여 구성원들의 동의가 있어야 블록체인에 새로운 참여자가 기여할 수 있다. 하이퍼렛저의 Fabric 프로젝트가 이에 해당한다.