사토시 나카모토의 Bitcoin 논문을 통해 블록체인의 근간이 되는 개념을 쉽게 알아보자
사토시 나카모토의 Bitcoin 논문
이번 포스트에서는 현대의 블록체인 기술의 근간이 된 사토시 나카모토의 bitcoin 논물을 설명하고, 블록체인의 핵심 개념에 대해 적어보고자 한다.
사토시 나카모토가 제안한 bitcoin의 궁극적이고 본질적인 목표 제 3 기관의 개입 없이 화폐를 주고 받는 것이다. 이러한 화폐의 교환에서 가장 중요한 이슈는 특정한 거래가 두번 일어나게 되어 존재하지 않던 재화가 전산상에 생겨나게 되는 double spending problem 이다. 이를 위해 사토시는 매 시간의 timestamp를 기반으로 하는 p2p네트워크를 고안하였으며, 모든 거래 정보는 블록화 되어 체인 구조로 연결되고 동기화 될 수 있다. 이렇게 체인을 연결해 가는 과정에서 가장 많은 CPU 파워를 가진 컴퓨터 집단이 가장 긴 체인을 생성할 수 있을 것이며 이를 신회하는 네트워크 구조이다.
블록체인 내에서의 거래의 발생
그렇다면 블록체인 네트워크 내에서의 거래는 어떻게 발생하는가?
블록체인 시스템 내에서의 코인의 정의는 디지털 서명들로 이루어진 체인 이다. 즉, 하나의 코인은 코인의 소유자들의 정보들의 나열로 볼 수 있으며, 해당 코인의 거래란 이러한 소유자들 정보의 나열에 코인의 다음 소유자의 pubkey를 추가하는 것으로 발생한다. 이를 통해 다음 소유자의 private key 가 있어야만 다음 거래가 일어날 수 있기 때문에 각 코인의 자신들 만의 고유의 역사를 가지며 현실 세계의 화폐에 비유하자면 모든 월화에 그 원화를 소유했던 사람들의 이름들이 모두 작성되어 있는 것을 상상하면 된다. 즉, 블록체인 내에서 거래(transaction) 는 이전 거래의 정보(이전 transaction'has value) 를 포함하기 때문에 모든 거래는 시간 순으로 동기화 된다.
거래의 증명
모든 거래의 내역들은 블록으로 저장되며 각 블록의 해쉬값을 먼저 풀어낸 노드가 새롭게 블록을 생성한다.
해쉬값을 푸는 것은 계속해서 nonce 값을 증가시키는 방식으로 이루어 지며, 이를 통해 상대적으로 더 많은 컴퓨팅 파워를 가지는 믿을 수 있는 노드들의 컴퓨팅 파워를 통해 옳바른 블록을 생서하게 된다.
네트워크의 동작
블록체인 네트워크는 다음과 같은 순서에 따라 이루어 진다.
- 모든 transactions 는 모든 노드에 전파된다.
- 모든 노드는 각 트랜잭션을 모아서 블럭을 구성한다.
- 각 노드는 만든 블럭의 해시를 풀어낼 nonce 값을 찾기 위해 연산을 시작한다.
- 어떤 노드가 nonce를 찾아냈다면 다른 모든 노드에게 자신이 가진 블록을 전파한다.
- 블록을 받은 노드들은 받은 블록 안의 모든 트랜잭션들이 유효하고 이미 지불된 것이 아닐 때에만 블록을 받는다.
- 블록을 받은 노드들은 받은 블록의 해쉬값을 previous hash로 하는 새로운 블록은 만드는 것에 착수함으로써 다른 노드들에게 해당 블록을 승인하였음을 알린다.
- 만약 노드가 동시에 두개의 블록을 받는다면 처음 받은 블록을 기준으로 작업을 시작하지만 이후로 받은 블록들도 저장해 둔다. 이렇게 여러 블록들은 개별적인 브랜치를 형성하고 특정 브랜치가 길어지면 가장 긴 브랜치의 블록들을 승인하여 체인을 이어간다.
만약 노드가 다음 블록을 받지 못했다 하더라도 문제가 되지 않는데, 이는 그 다음 블록을 받게 되면 노드 자체가 자신이 받지 못한 블록을 인지하고 다른 노드들에게 이를 요청하기 때문이다. 또한 모든 트랜잭션들을 매우 많아서 빠트리면 트랜잭션이 있더라도 블록들은 계속 생성되기 때문에 빠트린 transaction들은 무시되고 넘어간다.
보상의 원리
블록체인 시스템의 참여자들을 컴퓨팅 파워를 통해 그 신뢰가 유지되는 시스템이므로, 모든 참여자들이 계속해서 컴퓨팅 파워를 제공하도록 동기 부여 하기 위해 인센티브를 부여한다. 이는 바로 블록을 생성한 노드에게 최초의 트랜잭션을 발행하도록 하는 것으로 이것이 우리가 일반적으로 알고있는 코인의 채굴하는 과정이 된다.
화폐가치의 분할
위 내용에서와 같이 우리는 모든 코인은 그 전의 소유자들의 정보를 가진다고 알아보았으며, 이는 현실 세계에서 특정 1달러 지폐에 이제까지의 소유자들이 적혀있는 것에 비유될 수 있다고 하였다. 하지만 좀 더 작은 단위 혹은 더 큰 단위의 돈을 송금하는 경우를 생각해 보자, 1달러 지폐 하나를 다른 누군가 혹은 수십명의 다른 사람들과 공유하는 것을 생각할 수 있다. 이것은 하나의 transaction이 여러 개의 input 및 output value를 가짐으로써 해결 될 수 있다. 하나의 transaction은 다른 여러 사람들에게 지불될 수 있으며 모든 내용이 하나의 transaction에 작성되어 있다. 쉽게 말하면 1달러 지폐를 현재 가지고 있는 사람이 복수 명이 되어도 괜찮다는 것이다.
블록체인 시스템에 대해서 쉽게 설명되어 출분히 이해가 되었습니다.
쉽고 간단하게 요약해주셨네요 ^^
보팅하고 갑니다
잘 보고 가요~~
한번 보고 전 이해가 잘안됐네요
생각날때마다 보러 오겠습니다.