외계어 없이 이해하는 블록체인의 원리 [1]

in #kr7 years ago (edited)

블록체인이 은행 없이 화폐를 만드는 원리를 알아보자. 가장 중요한 내용이면서 가장 사람들이 어려워하는 내용이다. 어려운 내용은 빼고 기초적인 내용만 담았다.

블록체인의 원리: 기초 과정


은행을 없애려면 먼저 은행이 무슨 일을 하는지 알아야 한다.

은행은 전자화폐의 신뢰를 유지하기 위해서 2가지 일을 한다.

1) 보관: 거래 내역이 담긴 장부를 안전하게 보관한다.

누가 누구에게 돈을 보냈는지, 누가 돈을 얼마 가지고 있는지에 대한 데이터를 은행 서버에 보관한다.

2) 검증: 거래 내역에 문제가 없는지 검증한다.

새로운 거래 요청이 들어올 때 돈을 중복해서 쓰지는 않았는지, 잔고가 없는 데 돈을 보내지는 않았는지 등을 확인하고 걸러낸다.

따라서 블록체인이 은행을 대체하려면 이 두 가지 일(보관, 검증)만 대신하면 된다. 조건은 단일 주체가 이 두 가지 일을 하면 안 된다는 것이다. 사실 수십 년간 많은 사람들이 이 문제를 풀기 위해 노력해왔다. 하지만 아무도 성공하지 못했다.

비트코인 문제.png

블록체인이 혁신이라고 불리는 이유는 바로 이 문제를 해결했기 때문이다. 사토시 나카모토는 9페이지짜리 논문에서 이 문제에 대한 해결책을 제시했고, 실제로 구현해냈다.

하지만 그 역사적인 논문은 안타깝게도 일반인이 읽기에는 너무 어렵게 쓰여있다. 수학 공식과 전문 용어 없이, 어떻게 블록체인이 이 문제를 해결했는지 알아보자.


1. 장부 보관


블록체인은 모두에게 장부를 나눠준다. 네트워크에 참여하는 모든 사람들이 장부의 사본을 각자의 컴퓨터에 저장한다. 그래서 어떤 참여자가 데이터베이스를 손상시키거나, 네트워크에서 나가더라도 전체 장부에는 이상이 없다. 각자 장부를 하나씩 다 가지고 있으므로 누가 누구에게 돈을 보냈는지, 잔고는 얼마인지를 모두 확인할 수 있다.

이 장부는 신규 거래가 일정량 쌓이면 자동으로 동기화가 된다. 업데이트의 단위가 되는 한 거래 묶음을 ‘블록’이라고 한다. 장부는 계속 이전 블록들 다음에 한 블록씩 추가된다. 그래서 모든 사람들은 항상 서로 같은 내용의 장부를 가지고 있다.

각 블록의 내용은 모두 암호화되어 ‘봉인’되어있다. 블록에 담긴 거래 내용이 한 글자라도 바뀌면 ‘봉인’이 풀리게 된다. 봉인이 풀린 장부는 전체 네트워크에서 진짜로 인정해주지 않는다. 그 블록은 바로 네트워크에서 버려지고, 다른 사람의 장부와 동일하게 바뀐다.

게다가 이 봉인은 한 블록에만 해당되는 것이 아니라, 전 블록과도 연결이 되어있다. 그래서 앞 블록의 내용이 바뀌면 그 뒤에 연결된 블록은 모두 봉인이 풀리게 된다. 그래서 이 장부는 한번 기록된 후에는 변경/삭제가 불가능하다.

모든 사람이 같은 장부를 나눠가진다. 장부에 담긴 데이터는 수정이 불가능하다.

이 장부를 블록(Block)이 연결(Chain)되어있기 때문에 ‘블록체인’이라고 부른다.


2. 거래 내역 검증


사람들이 장부를 믿고 거래하려면 잘못된 거래가 있어서는 안 된다. 그래서 장부에 기록하기 전에 확실하게 검증을 해야 한다. 검증을 하는 것 자체는 어렵지 않다. A의 잔고에 10달러밖에 없는데 20달러를 보내려고 한다던지, 같은 돈을 두 명에게 보낸다던지 하는 거래들을 걸러내면 된다.

중요한 것은 ‘누가 검증할 것인가’이다. 검증을 할 사람은 반드시 정직해야 한다.

블록체인은 매 블록마다 제비뽑기를 한다. 사람들이 돌아가면서 블록을 검증하도록 만든다. 단일 주체에게 권한을 주지 않기 위해서다.

이렇게 하면 권력을 분산시킬 수 있지만, 한 가지 문제가 있다. 어떻게 제비뽑기로 뽑힌 사람들이 ‘정직하게’ 검증하도록 만들 수 있을까? 그냥 랜덤으로 사람을 뽑으면 혹시나 ‘나쁜 놈’ 한 명이 당첨되어서 일부러 검증을 제대로 안 할 수도 있다. 이 사람들이 ‘나쁜 짓’을 못하게 할 안전장치가 필요하지 않을까?

물론 안전장치가 있다. 안전장치는 2가지로 구성되어있다.

첫째, 제비뽑기를 할 때 ‘비용’이 발생하도록 만든다.

검증자의 신뢰성을 높이기 위해서, 제비뽑기를 할 때는 비용을 써야 한다. 제비뽑기 확률은 공평하게 배분하지 않는다. 돈을 많이 쓸수록 제비를 더 많이 뽑을 수 있다. 돈을 쓰지 않으면 당첨될 확률이 거의 없다.

이것은 검증에 참여할 때 상당한 양의 비용이 들게 해서 나쁜 의도를 가진 참여자를 걸러내기 위해서다. 검증에 참여하려는 사람은 이 돈을 씀으로써 나는 ‘신뢰할만한 사람’이라는 것을 증명한다. 따라서 참여 비용은 ‘물 관리’를 위한 최소한의 필터링 장치다. 돈을 지불했으므로 보상을 극대화하려는 유인도 더 커지게 된다.

둘째, 당첨이 된 사람에게는 네트워크의 가치와 연동되는 보상을 준다.

당첨이 되면, 검증을 해준 대가로 네트워크는 보상을 지급한다. 그런데 이 보상은 원화나 달러 같은 ‘법정화폐’로 주는 것이 아니라 비트코인 같은 ‘암호화폐’로 준다. 이 암호화폐의 특징은 가치가 변한다는 것이다. 암호화폐의 가치는 네트워크의 사용자가 많아질수록 커진다. 네트워크의 사용자가 많아지려면 네트워크가 신뢰성 있게 잘 운영되어야 한다.

그렇다면 합리적으로 생각했을 때, 검증하는 사람이 보상의 가치를 극대화하려면, 정직하게 잘 검증을 해야 한다. 정직하게 잘 검증을 해야만 이 네트워크의 신뢰가 유지되기 때문이다. 네트워크의 신뢰가 유지되어야 네트워크는 계속 성장한다. 네트워크가 성장해야 내가 받는 보상도 커진다.

요약하자면, 검증하는 사람들은 정직하게 행동해야 손해를 안 본다. 그래서 네트워크의 다른 참여자들은 이 사람들을 믿고 검증을 맡긴다.

비트코인 답변.png

이것이 바로 블록체인의 작동 원리다. 블록체인은 단일 주체 없이 기록을 보관하고, 검증하는 시스템이다.

블록체인은 3가지 특성을 가지게 된다.

  1. 장부에 쓰인 내용은 수정되거나 지워지지 않는다.

  2. 모든 사람이 이 장부의 사본을 가지고 있으며 언제든지 확인할 수 있다.

  3. 기록하기 전에 여러 명의 ‘정직한’ 사람들이 내용을 검증한다.

결론적으로 모든 사람들이 이 장부에 적힌 거래 기록을 믿을 수 있게 된다. 동시에, 어떤 개인이나 기관도 이 장부를 마음대로 조작할 수 없고, 통제할 수 없다. 이 네트워크는 누구나 참여할 수 있으며, 동시에 누구 한 명이 빠져도 네트워크에는 아무런 문제가 없다.

이것이 바로 블록체인의 기술의 핵심이며, 블록체인은 ‘탈중앙화된 신뢰’를 만드는 기술이다.


모든 블록체인이 비트코인과 같은 방식을 사용하는 것은 아니다.

알아두어야 할 것은, 비트코인에 사용된 블록체인은 ‘최초’의 블록체인이지만, 비트코인 블록체인이 유일한 블록체인은 아니다. 비트코인의 등장 이후 블록체인이 제공하는 ‘신뢰’를 기반으로 수많은 암호화폐와 응용 프로그램이 만들어졌기 때문이다. 하지만 비트코인 블록체인은 모든 블록체인의 기준이며 다른 블록체인은 거의 다 비트코인에서 파생되었다. 우리는 이해를 위해서 비트코인에 사용된 블록체인을 기준으로 블록체인을 설명한다. 비트코인 블록체인을 이해한 뒤, 차이점만 이해하면 다른 블록체인도 쉽게 이해할 수 있다.


엑셀 &카톡으로 은행이 없는 화폐를 만들어보자.

다음 내용을 따라 하면 친구들끼리 암호화폐를 만들어볼 수 있다.

  1. 친구들끼리 단톡방을 하나 만든다.

  2. 서로 주고받은 돈 기록을 단톡방에 올린다.

  3. 거래가 어느 정도 쌓이면 단톡방에서 제비뽑기를 한다.

  4. 제비뽑기를 해서 당첨된 사람은 여태까지 모인 거래를 하나의 엑셀 파일로 만든다.

  5. 그리고 이상한 거래가 없는지 확인한다. 친구들을 대표해서 확인을 하는 대가로 돈을 받는데, 제대로 확인을 해야 돈을 더 많이 준다. 꼼꼼히 체크한다.

  6. 검증이 끝나면 파일을 암호화시킨다. 사람들은 암호화된 파일의 내용을 확인할 수는 있지만, 수정할 수는 없다.

  7. 이 파일은 모두에게 공지가 된다. 사람들은 각자 자신의 컴퓨터에 이 파일을 저장해놓는다.

이제 암호화폐 시스템이 완성되었다.

내 친구 철수에게 이 새로운 화폐를 보내고 싶으면, 단톡방에 ‘철수한테 5만 원 보냄’이라고 올리면 된다. 그러면 잠시 뒤에 그 내용이 포함된 엑셀 파일이 폴더에 저장된다.

그리고 나중에 철수가 ‘너 나한테 그때 돈 줬어?’ 물어보면, 폴더 안에 있는 엑셀 파일을 보여주면 된다!

Sort:  

캬. 말이 필요 없네요. 보팅하고 잘 읽고 갑니다.

감사합니다 :)

아닙니다. 좋은 글은 적은 것이지만 보팅 하고 가요

브런치에서 넘어오셨군요 :) 환영해요 항상 글 잘 보고 있습니다!!

네 천천히 이사해보려고 합니다 ㅎㅎ 응원 감사합니다

모르시는 분들도 이해가 쉽게 갈 수 있게 글 진짜 잘쓰셨네요! (y) 엄지척

오... 여태껏 조금씩 보면서 음... 으음.. 알듯말듯 아리송... 했던 부분을 에디송님이 알기쉽게 정리해주셔서 이해가 확 됐어요! 보팅과 팔로우하고 갑니다 총총

좋은글 잘일고 갑니다

기가막힌 설명입니다. 이렇게 쉽게 풀어서 써주시다니 감동감동입니다 ^^

카톡예시까지 초보자에게 너무 유용한 글이네요!