막상 글을 작성하다보니,
당시 내가 직접 작성하며 정리한 글인 줄 알았으나...
아래 블로그의 글을 복붙하여 재편집한 정도이더라..ㅎㅎ
이 글은 그저 해당 블로그의 글을 보며,
내가 배우게 된 것을 정리?해놓은 포스팅 정도로만 봐주면 고맙겠다.
5분만에 이해하는 블록체인 원리 (1)
https://brunch.co.kr/@bumgeunsong/50
5분 만에 이해하는 블록체인의 원리 (1)
초보자들을 위한 가장 짧고 쉬운 설명 | 블록체인의 원리: 기초 과정 블록체인이 은행 없이 화폐를 만드는 원리를 알아보자. 가장 중요한 내용이면서 가장 사람들이 어려워하는 내용이다. 어려운 내용은 빼고 기초적인 내용만 담았다. 은행을 없애려면 먼저 은행이 무슨 일을 하는지 알아야 한다. 은행은 전자화폐의 신뢰를 유지하기 위해서 2가지 일을 한다. 1) 보관: 거래 내역이 담긴 장부를 안전하게
brunch.co.kr
은행은 전자화폐의 신뢰를 유지하기 위해서 2가지 일을 한다.
1) 보관
거래 내역이 담긴 장부를 안전하게 보관한다.
누가 누구에게 돈을 보냈는지,
누가 돈을 얼마 가지고 있는지에 대한 데이터를 은행 서버에 보관한다.
2) 검증
거래 내역에 문제가 없는지 검증한다.
새로운 거래 요청이 들어올 때 돈을 중복해서 쓰지는 않았는지,
잔고가 없는 데 돈을 보내지는 않았는지 등을 확인하고 걸러낸다.
따라서 블록체인이 은행을 대체하려면 이 두 가지 일(보관, 검증)만 대신하면 된다.
단, 조건은 단일 주체가 이 두 가지 일을 하면 안 된다는 것이다.
수십 년간 많은 사람들이 이 문제를 풀기 위해 노력했지만 아무도 성공하지 못했다.
그런데 블록체인이 혁신이라고 불리는 이유는 이 문제를 해결했기 때문이다.
장부 보관
블록체인은 모두에게 장부를 나눠준다.
네트워크에 참여하는 모든 사람들이 장부의 사본을 각자의 컴퓨터에 저장한다.
그래서 어떤 참여자가 데이터베이스를 손상시키거나, 네트워크에서 나가더라도 전체 장부에는 이상이 없다.
각자 장부를 하나씩 다 가지고 있으므로 누가 누구에게 돈을 보냈는지, 잔고는 얼마인지를 모두 확인할 수 있다.
이 장부는 신규 거래가 일정량 쌓이면 자동으로 동기화가 된다.
업데이트의 단위가 되는 한 거래 묶음을 ‘블록’이라고 한다.
장부는 계속 이전 블록들 다음에 한 블록씩 추가된다.
그래서 모든 사람들은 항상 서로 같은 내용의 장부를 가지고 있다.
각 블록의 내용은 모두 암호화되어 ‘봉인’되어있다.
블록에 담긴 거래 내용이 한 글자라도 바뀌면 ‘봉인’이 풀리게 된다.
봉인이 풀린 장부는 전체 네트워크에서 진짜로 인정해주지 않는다.
그 블록은 바로 네트워크에서 버려지고, 다른 사람의 장부와 동일하게 바뀐다.
게다가 이 봉인은 한 블록에만 해당되는 것이 아니라,
이전 블록과도 연결이 되어있다.
그래서 앞 블록의 내용이 바뀌면 그 뒤에 연결된 블록은 모두 봉인이 풀리게 된다.
그래서 이 장부는 한번 기록된 후에는 변경/삭제가 불가능하다.
(블록체인이 비가역성을 가질 수 있는 이유)
모든 사람이 같은 장부를 나눠가진다.
장부에 담긴 데이터는 수정이 불가능하다.
이 장부를 블록(Block)이 연결(Chain)되어있기 때문에 ‘블록체인’이라고 부른다.
거래 내역 검증
사람들이 장부를 믿고 거래하려면 잘못된 거래가 있어서는 안 된다.
그래서 장부에 기록하기 전에 확실하게 검증을 해야 한다.
검증을 하는 것 자체는 어렵지 않다.
A의 잔고에 10달러밖에 없는데 20달러를 보내려고 한다던지,
같은 돈을 두 명에게 보낸다던지 하는 거래들을 걸러내면 된다.
중요한 것은 ‘누가 검증할 것인가’이다.
검증을 할 사람은 반드시 정직해야 한다.
블록체인은 매 블록마다 제비뽑기를 한다.
사람들이 돌아가면서 블록을 검증하도록 만든다.
단일 주체에게 권한을 주지 않기 위해서다.
이렇게 하면 권력을 분산시킬 수 있지만, 한 가지 문제가 있다.
"어떻게 제비뽑기로 뽑힌 사람들이 ‘정직하게’ 검증하도록 만들 수 있을까?"
그냥 랜덤으로 사람을 뽑으면 혹시나 ‘나쁜 놈’ 한 명이 당첨되어서 일부러 검증을 제대로 안 할 수도 있다.
이 사람들이 ‘나쁜 짓’을 못하게 할 안전장치가 필요하지 않을까?
물론 안전장치가 있다. 이 안전장치는 2가지로 구성되어있다.
첫째, 제비뽑기를 할 때 ‘비용’이 발생하도록 만든다.
검증자의 신뢰성을 높이기 위해서, 제비뽑기를 할 때는 비용을 써야 한다.
제비뽑기 확률은 공평하게 배분하지 않는다.
돈을 많이 쓸수록 제비를 더 많이 뽑을 수 있다.
돈을 쓰지 않으면 당첨될 확률이 거의 없다.
이것은 검증에 참여할 때 상당한 양의 비용이 들게 해서 나쁜 의도를 가진 참여자를 걸러내기 위해서다.
검증에 참여하려는 사람은 이 돈을 씀으로써 나는 ‘신뢰할만한 사람’이라는 것을 증명한다.
따라서 참여 비용은 ‘물 관리’를 위한 최소한의 필터링 장치다.
돈을 지불했으므로 보상을 극대화하려는 유인도 더 커지게 된다.
둘째, 당첨이 된 사람에게는 네트워크의 가치와 연동되는 보상을 준다.
당첨이 되면, 검증을 해준 대가로 네트워크는 보상을 지급한다.
그런데 이 보상은 원화나 달러 같은 ‘법정화폐’로 주는 것이 아니라 비트코인 같은 ‘암호화폐’로 준다.
이 암호화폐의 특징은 가치가 변한다는 것이다.
암호화폐의 가치는 네트워크의 사용자가 많아질수록 커진다.
네트워크의 사용자가 많아지려면 네트워크가 신뢰성 있게 잘 운영되어야 한다.
그렇다면 합리적으로 생각했을 때, 검증하는 사람이 보상의 가치를 극대화하려면, 정직하게 잘 검증을 해야 한다.
정직하게 잘 검증을 해야만 이 네트워크의 신뢰가 유지되기 때문이다.
네트워크의 신뢰가 유지되어야 네트워크는 계속 성장한다.
네트워크가 성장해야 내가 받는 보상도 커진다.
요약하자면, 검증하는 사람들은 정직하게 행동해야 손해를 안 본다.
그래서 네트워크의 다른 참여자들은 이 사람들을 믿고 검증을 맡긴다.
블록체인은 단일 주체 없이 기록을 보관하고, 검증하는 시스템이다.
이러한 블록체인은 3가지 특성을 가지게 된다.
1) 장부에 쓰인 내용은 수정되거나 지워지지 않는다.
2) 모든 사람이 이 장부의 사본을 가지고 있으며 언제든지 확인할 수 있다.
3) 기록하기 전에 여러 명의 ‘정직한’ 사람들이 내용을 검증한다.
결론적으로 모든 사람들이 이 장부에 적힌 거래 기록을 믿을 수 있게 된다.
동시에, 어떤 개인이나 기관도 이 장부를 마음대로 조작할 수 없고, 통제할 수 없다.
이 네트워크는 누구나 참여할 수 있으며, 동시에 누구 한 명이 빠져도 네트워크에는 아무런 문제가 없다.
5분만에 이해하는 블록체인 원리 (2)
https://brunch.co.kr/@bumgeunsong/51
5분 만에 이해하는 블록체인의 원리 (2)
초보자들을 위한 짧고 쉬운 설명 | 블록체인의 원리: 심화 과정 블록체인의 기본적인 작동 원리를 이해했다. 이제 살짝 더 심화된 내용으로 들어가 보도록 하자. 이 글에서는 다음의 3가지를 설명한다. 1. 제비뽑기를 하는 방법2. 장부를 봉인하는 방법3. 정직한 놈이 많이 벌게 하는 방법 1. 제비뽑기를 하는 방법 검증할 사람을 뽑는 것은 여러 가지 방법이 있다. 가장 널리 알려진 비트코인
brunch.co.kr
제비뽑기를 하는 방법
검증할 사람을 뽑는 것은 여러 가지 방법이 있다.
가장 널리 알려진 비트코인 스타일의 뽑기 시스템을 알아보자.
비트코인은 매 블록마다 문제를 낸다. 문제를 가장 빨리 푼 사람이 당첨된다.
해시 기계에 어떤 입력값을 넣어야 00으로 시작하는 출력값이 나오는지 알려면,
직접 모든 단어를 넣어보는 수밖에 없다.
한마디로 ‘노가다’다.
출력값에 규칙성이 없기 때문에 언제 답을 찾을 수 있을지는 완전 랜덤이다.
비트코인의 이 ‘노가다’를 통해서 검증할 사람을 뽑는다.
물론 이 문제는 사람이 아니라 컴퓨터가 풀게 되어있다.
설명을 위해 단순화했지만, 실제 비트코인 프로그램이 내는 문제는 훨씬 더 어렵다.
너무 어려워서 웬만한 컴퓨터는 푸는 게 불가능하다고 보면 된다.
그래서 이 문제를 풀려면 좋은 컴퓨터를 구비해야 하고, 전기도 많이 써야 한다.
이것이 바로 사토시가 노린 바다.
좋은 컴퓨터를 사고, 컴퓨터를 돌리는 데 전기를 사용했기 때문에 일정량 이상의 ‘비용’이 들어갈 수밖에 없다.
앞서서 말했듯이, 검증자가 되기 위해서 ‘비용’을 지불할 수밖에 없도록 의도적으로 만들어 놓았다.
그러면 수백 대의 컴퓨터를 갖다 놓고, 순식간에 문제를 풀어버리면 되는 것 아닐까?
전기 비용도 안 들고 보상을 계속 받을 수 있을 텐데?
그래서 비트코인 프로그램은 자동적으로 문제 난이도를 조절하도록 되어있다.
문제를 푸는 데 투입되는 컴퓨팅 파워(계산 능력)에 비례해서 문제의 난이도가 계속 올라간다.
한 문제를 푸는 데 10분 내외가 걸리도록 자동적으로 난이도가 조정된다.
수백수천 대의 슈퍼 컴퓨터를 돌려도 여전히 비용이 발생한다.
비트코인은 쓸데없지만 비용이 드는 ‘작업’을 시켜서 검증할 사람을 뽑는다.
비용을 발생시켜서 이 사람이 신뢰할만한 사람인지 테스트하는 것이다.
작업(work)을 통해 신뢰를 증명(proof)한다고 해서 ‘작업 증명(Proof-of-work, PoW)’라고 한다.
장부를 봉인하는 방법
앞서서 블록체인의 각 블록은 모두 암호화를 통해 ‘봉인’된다고 얘기했다.
정확히 어떤 방식으로 ‘봉인’되는 걸까?
비트코인 프로그램이 블록을 생성할 때 문제를 낸다고 했었다.
이 문제를 조금 더 실제에 가깝게 풀어보면 다음과 같다.
이 블록은 블록에 담긴 모든 거래 내역(A)과 앞 블록의 결과값(B),
그리고 봉인 코드(C)를 더해서 해시 기계에 넣었을 때 ’00’으로 시작하는 결과값이 나와야 한다.
봉인 코드(C)를 찾으시오.
비트코인은 A + B + C를 해시 기계에 넣어서 ’00’으로 시작하는 결과값이 나와야만 이 블록을 진짜로 인정한다.
A와 B는 이미 모두가 알고 있는 값이기 때문에, C값만 찾아내면 유효한 블록을 만들 수 있다.
그리고 앞서 말했던 작업 증명은 바로 이 봉인 코드(C)를 찾는 과정이다.
열심히 컴퓨터를 돌려서 누군가 C값을 찾아냈다고 하자.
1. 모든 사람에게 C값을 알려준다.
2. 사람들은 C값이 정말 봉인 코드가 맞는지 각자 자기가 가진 A, B 값을 더해서 확인해본다.
3. 과반수 이상의 사람이 C값이 봉인 코드가 맞다고 확인해주면,
4. 이 사람은 블록을 생성할 권리를 얻는 동시에 이 C값으로 그 블록을 봉인하게 된다.
이제부터는 누구도 블록의 내용을 수정할 수가 없다.
누군가 거래 내역(A)을 바꾸게 되면, 해시값도 바로 바뀐다.
사람들은 이 내용이 잘못되었음을 바로 알 수 있다.
해시 기계를 사용해서 계산만 해보면 된다.
정확히 말하면 종이에 적힌 내용을 바꿀 수는 있지만,
바꾸는 순간 모든 참가자들이 이 내용은 진짜가 아니라는 것을 알게 된다.
이것이 거래 기록의 봉인이다.
사후 조작의 방지
현재 50개의 블록이 쌓여있는 블록체인이 있다고 하자.
어떤 ‘나쁜 놈’이 45번째 블록의 내용을 수정하려고 한다.
이 ‘나쁜 놈’이 거래 내역(45-1)을 수정한 다음에 새로운 봉인 코드를 찾아낼 수도 있다.
그러면 45 블록이나 45-1 블록 둘 다 규칙을 만족시키니까 유효하게 인정된다.
어떤 것을 진본으로 해야 할까?
하지만 이것도 불가능하도록 장치가 되어있다.
왜냐하면 비트코인 네트워크는 동시에 유효한 블록이 여러 개 생기면,
’가장 긴 체인’만을 진본으로 인식하기 때문이다.
하나의 블록은 뒤의 블록과 모두 연결되어있다.
따라서 수정한 블록이 유효하게 인정되려면,
진짜 블록을 풀고 있는 사람보다 훨씬 빠른 속도로 봉인 코드를 풀어야 한다.
그런데 앞서 말했듯이 봉인 코드를 찾는 것은 ‘컴퓨팅 파워’에 비례한 랜덤이다.
비트코인은 ‘나쁜 놈은 항상 소수다.’라는 가정을 깔고 있다.
그러므로 나쁜 놈이 봉인 코드를 찾는 속도는 다수의 착한 놈보다 항상 느릴 수밖에 없다.
나쁜 놈이 다른 사람들보다 더 긴 체인을 만드는 것은 불가능하다.
일시적으로는 두 개의 유효한 블록이 생길 수 있다.
특정 체인이 진본으로 인식되는 순간 그 외의 버전은 무시된다.
따라서 문제를 푸는 참가자가 충분히 많을 경우 사후적으로 문제를 풀어서 이미 쓰인 내용을 수정하는 것은 불가능하다.
'Blockchain > Founders 2019 (1기)' 카테고리의 다른 글
| Founders 2019 (1기) 온라인 OT 정리 #4 (0) | 2019.11.24 |
|---|---|
| Founders 2019 (1기) 온라인 OT 정리 #3 (0) | 2019.11.14 |
| Founders 2019 (1기) 온라인 OT 정리 #2-1 (0) | 2019.11.08 |
| Founders 2019 (1기) 온라인 OT 정리 #1 (0) | 2019.11.02 |
| Founders 2019 (1기) 온라인 OT 정리 #0 (0) | 2019.11.02 |