안녕하세요 스크립토 4기 이정민입니다. 이번년도 자료팀에서는 블록체인에 관한 최신의 자료들을 제공하기 위해 블록체인과 관련한 정보나, 백서, 기술 등등에 대해 자료팀 학회원들이 각자 주제를 정하여 시리즈를 만들어 올릴 예정입니다.
저는 블록체인 관련 주제 중 코인들에 대해 자세히 살펴볼 수 있는 백서를 읽어보고 분석해 주는 시리즈를 주제로 선정을 하여서 글을 쓸 계획입니다. 처음 보시는 분들도 이해하기 쉽게 한번 써보도록 하겠습니다.
처음 소개해드릴 백서는 비트코인입니다. 블록체인을 적용한 최초의 디지털 암호화폐라서 그만큼 블록체인에 있어서 중요하다고 볼 수 있습니다. 바로 백서를 보시겠습니다.
비트코인 백서의 경우 총 9페이지입니다. 이 페이지는 처음 페이지로 초록과 나오게 된 배경 등에 대해서 설명하고 있습니다. 초록을 한번 읽어 보겠습니다.
기존 개인 대 개인 버전 전자 화폐가 존재했지만 이러한 화폐들은 '부분'적인 솔루션을 제공하여서 '이중지불'의 문제를 해결할 수 없어서 이를 해결하기 위해 개인 대 개인 전자 화폐시스템 네트워크인 비트코인을 만들었다고 나옵니다.
그렇다면 비트코인 이전의 화폐는 무엇이 있었을 까요??? 저도 궁금해서 찾아보았습니다.
https://www.dailycoinews.com/dailycoinews/article/read.do?articleNo=1236&lang=kr
약 5가지가 있었는데 이러한 가상화폐들은 해커의 공격에 취약했다고 하네요. 간단히 보고 바로 서론 부분으로 넘어 갑시다.
서론에서는 기존의 거래 방법이 모두 신뢰 기반인데 이러한 신뢰 기반 모델이 가진 약점들에 대해서 우선 설명하고 있습니다. 그에 따른 예시로 중재 거래비용으로 인한 일상적 거래 방해와 같은 것들을 설명하며 신뢰기반 모델에 대한 단점과 신뢰가 없는 상황에서 제 3자를 통하지 않고 인터넷과 같은 통신 채널에서 수행할 방법으로 암호학적 증명을 이용해 직접 거래를 하게 해주는 것이 비트코인이라고 설명합니다. 기존 전자 화폐 서비스와 다르게 이중지불 문제를 해결하기 위해 분산 타임 스탬프 서버를 사용하며 시스템이 절반이 넘는 공격자가 없는 한 보안상 안전하다고 하네요.
다음은 거래부분 입니다. 일반적인 전자적 화폐의 거래가 이루어지는 과정에 대해서 설명하며 이러한 모델이 지닌 문제점은 '이중지불'이라는 점을 언급하며 이를 해결하기 위해 조폐국과 같은 거래를 공개적으로 알려주고 이 문제를 해결하기 위해 제 3자가 아닌 타임스탬프 서버, 작업증명, 네트워크 등등까지 다양한 방법을 사용한다고 합니다.
비트코인은 타임스탬프를 이용해서 각 타임스탬프에 먼젓번 타임스탬프를 포함하고 이를 계속해서 이어나가는 사슬을 형성한다고 합니다.
작업증명의 경우 해시 연산을 거친 결과가 0비트 여러 개로 시작할, 즉 넌스(nonce)값을 찾는 것인데 블록을 생성하기 위해서는 이러한 작업을 거쳐야합니다. 또한, 변경하기 위해서도 마찬가지로 이러한 작업을 수행해야하는데 블록이 시간이 지날수록 연결되는 만큼 이를 변경시키려면 현재 있는 모든 블록에 대해 재수행 작업을 해야합니다. 이러한 재수행 작업은 시간이 많이 걸려서 해킹의 가능성이 그만큼 낮아지게 하는 원인으로 볼 수 있습니다. 이러한 작업증명은 CPU당 1개이기 때문에 다수결의 대표성 문제를 해결하고 다수의 CPU 파워가 악의적인 노드에 의해 통제되지 않는다면 사슬(체인)이 가장 빠르게 늘어나 다른 체인을 압도하고 블록이 늘어남에 따라 해킹될 확률(공격자가 전체 블록을 형성하여 체인을 따라잡을 확률)이 지수적으로 감소합니다. 이러한 넌스 난이도는 시간이 지날수록 조정되는데 보통 증가한다고 하네요.
네트워크의 순서는 다음과 같습니다.
새로운 거래가 모든 노드에 퍼짐
각 노드가 새로운 거래를 블록에 수집
각 노드가 블록에 맞는 POW 진행
노드가 POW를 다 하고나서 모든 노드로 블록을 퍼트림
그 블록에 대해 노드는 모든 거래가 유효하고 아직 이중지불되지 않은 것을 확인하고 블록을 승인
승인된 블록을 먼저 퍼트린 노드는 전의 해시로 승인된 블록의 해시를 사용해서 체인안에 다음블록 생성
노드는 긴 사슬을 정확한 것으로 블록체인 네트워크 안에서 받아들이고 두 노드가 동시의 블록의 서로 다른 버전을 퍼트려도 결국 한 쪽 체인이 더 길어지고 그 체인이 블록체인 네트워크에서 받아들여집니다. 새로운 거래가 퍼지는 것이 꼭 모든 노드에 도달하지 않아도 되고 거래에 대한 정보를 전달받지 못한 노드는 다음 블록을 받을 때 누락된 거래에 대해 요청해서 사슬을 갱신해나간다고 합니다.
첫 번째로 블록을 만든 사람에게 비트코인과 같은 인센티브를 주며 이러한 인센티브는 나중에 비트코인 발행량이 다 떨어지고나서 비트코인이 아닌 거래 수수료로 충당될 수도 있습니다. 이러한 인센티브제는 공격자가 규칙대로 움직이는 게 만드는 것이 더 이득임을 알게 해서 공격자의 동기를 떨어트리게 한다고 합니다.
머클트리로 해시를 하며, 오래된 블록 트리의 분기를 쳐낸다고 합니다. 비트코인 블록의 블록헤더 부분은 약 80바이트인데 이것이 증가하는 용량과 무어의 법칙을 비교하였을 때 문제가 되지 않을 정도라고 하네요.
전체 네트워크 노드를 구동하지 않고 가장 긴 체인의 블록 헤더 사본을 유지하면서 해당 거래를 타임스탬프가 찍힌 블록에 연결한 머클 분기를 얻기만 하면 검증을 할 수 있습니다. 그걸 체인내 장소에 연결함으로써 네트워크 노드가 그걸 받아들인 것과, 이후 그게 받아들여졌음을 확인한 뒤 추가된 블록을 봅니다. 그러나 공격자에 의해 과점된다면 네트워크가 취약해지므로 사용자의 소프트웨어가 그 온전한 블록을 내려받게 하고 경고된 거래에 모순을 확인하게 합니다. 이는 특히 수금이 잦은 비즈니스에서는 자체 노드 구동을 원하므로 이러한 곳에서 잘 이용될 것입니다.
거래는 복수의 입출금을 포함하고 이는 가치를 나누고 합칠 수 있도록 하는 것입니다. 비트코인UTXO에 대한 자세한 자료는 여기에서 찾아보실 수 있습니다.
https://brunch.co.kr/@skkrypto/13
전통적인 은행 모델은 다른 사람에게 정보 접근을 제한해 일정 수준의 프라이버시를 달성하지만 비트코인은 공개키 익명성을 보존해 정보의 흐름을 끊는 걸로 프라이버시를 보장합니다. 즉, 지갑주소와 같은 의미가없는 데이터들로 구성하여 누구의 것인지 모르게합니다. 하지만, 다중입금 거래에서는 한 지갑주소에 비트코인이 보내지게되어 그것이 누구인지 대충적으로 특정할 수 있게 됩니다.
이러한 수학적 공식을 이해하기 어려우신 분들이라면 이 문장을 기억하시면 됩니다. 공격자가 해당 시점부터 따라잡을 수 있는 확률은 시간이 지날수록 지수적으로 늘어나기 때문에 해킹이 엄청나게 어렵다.
저도 수학을 잘 아는 학생이 아니어서 위의 글을 보고 이해하였습니다.
신뢰에 의존하지 않는 비트코인 시스템 -> 디지털 서명이라는 기존의 화폐에서 이중지불 문제를 해결하기위해 공중 거래 이력(즉 분산장부, 개인 대 개인 네트워크)을 제안하였고 네트워크는 단순함 때문에 견고하며 퍼블릭 블록체인이기 때문에 네트워크에 마음대로 들어갔다 나올 수 있으며 블록을 생성할 때 합의 작용을 통해 이행된다는 것을 결론에서 말합니다.
이렇게 비트코인 백서에 대해서 간단하게 알아보았는데요 비트코인이 대충 어떠한 것인지 감이 오시나요?? 이렇게 백서들을 보면 그 블록체인이 가진 특징에 대해서 자세히 알 수 있어서 블록체인을 배워나가는데 도움이 됩니다. 다음번에는 다른 백서로 찾아뵙겠습니다. 감사합니다.