비트코인 백서

taeyeon·2023년 3월 19일
0

스크립토

목록 보기
1/2

비트코인의 등장

비트코인은 리먼사태 이후로 신뢰 중심의 기존 금융을 탈피하고자 탈중앙화를 내세우며 등장하였다. 그리고 이러한 비트코인은 사토시 나카모토의 비트코인 백서를 통해 최초로 소개되었는데 오늘은 그 백서를 살펴보며 비트코인의 중요한 개념들을 소개하고자 한다

서론

  • 전통적인 신뢰 기반의 모델은 비가역적 완전 거래(completely non-reversible)가 불가능
  • 이를 해결하기 위해 신뢰를 암호학적 증명으로 대체하여 당사자 간에 직접적으로 거래할 수 있는 전자지불 시스템이 필요,그것이 비트코인. 명을 생성하여 이중지불 문제를 해결함
  • 비트코인은 이중지불 문제를 해결하기 위해 거래의 발생 순서기록에 대한 연산적 증명을 생성하는 타임스탬핑 서버를 이용
    - 비가역적 완전 거래 란?
    : 문맥상 비가역 거래는 한번 이루어지면 절대 되돌릴 수 없는 완벽한 시스템으로서의 거래를 의미한다. 그러나 은행과 같은 금융기관은 정부의 명령이나 법원의 판결 등에 따라 거래를 취소, 반환하는 등 거래에 개입하여 거래가 없던 상태로 돌아가는 경우가 존재하기 때문에 가역적 특성을 가져 비가역적 완전 거래가 불가능하다고 볼 수 있다.
    -이중지불 이란?
    : 현실 화폐는 물건으로 존재하여 상대방에게 화폐를 건네주면 다시 쓸 수 없다. 그러나 디지털 거래에서 화폐는 물건이 아닌 정보로 존재하기 때문에 송금하더라도 그 정보가 남아있어 이중으로 사용이 가능하다. 이를테면 비트코인의 경우 시스템에서 사용되는 코인은 마치 일회용과 같다. A가 B에게 1비트코인을 지불하면 A가 가지고 있던 코인이 B에게 이동하는 것이 아니라, A의 코인이 사용됨으로 처리되고 새롭게 B 소유의 1비트코인이 디지털적으로 인쇄되는 것이다. 그렇기 때문에 모든 지불 및 거래에서 사용되는 코인은 한 번도 사용된 적 없는 코인이어야 하는데 이를 어겨 거래나 송금 시에 사용된 코인을 다시 사용해 상대방을 속이는 행위를 이중지불이라고 한다.

거래

  • 비트코인의 거래는 디지털 서명의 사슬.
  • 이때 수금자는 앞선 소유자 가운데 누군가 화폐를 이중지불하지 않았는지 검증해야 하므로 앞선 소유자가 이전에 어떤 거래에도 서명하지 않았음을 수금자에게 알릴 수단이 필요.
  • 이를 위해서는 모든 거래정보가 공개적으로 알려져야 하고(1), 거래 발생 순서에 대해 참여자들이 동의할 수 있는 시스템이 있어야 하며(2), 수취인이 해당 코인의 최초 수신자라는 사실에 대해 시스템 네트워크 대다수의 노드가 동의한다는 증명(3)이 필요
    - 공개키와 개인키 란?
    : 공개키와 개인키는 비트코인의 암호화 방법이다. 그림에도 나오듯 모든 비트코인 거래는 블록상의 장부에 기록되기 위해 유효한 서명이 필요한데, 이러한 서명은 디지털 키가 있어야 생성된다. 이때 사용되는 키가 한 쌍의 공개키와 개인키인데, 공개키로 암호화하면 개인키로 복호화가 가능하고, 개인키로 서명하면 공개키로 그 서명의 검증이 가능한 시스템이다. 개인키를 통해 공개키를 생성하고, 공개키를 통해 비트코인 주소를 생성할 수 있지만 역산은 불가능하다.
    공개키는 은행의 계좌번호와 유사하다. 누구에게나 공개된 키로 비트코인을 전송받을 때 사용되며 거래 내역의 유효성을 검증하는데 사용된다. 개인키는 비밀번호와 유사하며 비트코인에 대한 소유권, 통제권과 직결되므로 개인키를 분실할 경우 그것으로 묶인 비트코인 또한 찾을 수 없다.

타임스탬프 서버: 거래 순서의 증명

  • 타임스탬프 대상들을 블록 단위로 모아 이를 해싱, 순서대로 저장하는 것이 타임스탬핑
  • 비트코인의 타임스탬프는 특정 데이터가 타임스탬프 속에 해싱되는 시점에 존재했음을 뜻하므로 거래 순서에 대한 증명으로 기능, 절대적 시간이 아닌 상대적 순서로 사건의 전후관계를 특정
  • 각각의 타임스탬프 해시데이터는 내부에 직전 타임스탬프 데이터를 포함하여 체인을 형성하므로 후속 타임스탬프의 추가는 이전 타임스탬프의 데이터를 공고히 함

작업증명(proof of work): 타임스탬프 서버의 구현

  • 분산 네트워크에서는 조폐 과정에서 누가 얼마의 새 화폐를 받을 수 있는지를 결정할 중앙 권력이 없기에 모든 참여자들이 동의할 방법이 필요, 이러한 방법이 작업증명 시스템
  • 일방향함수인 해시함수는 계산은 쉽지만 역산(채굴)은 어렵다는 것에 착안하여 모든 참여자가 해시 함수를 계산해 가장 먼저 계산한 사람에 블록생성 권한을 부여하고 보상으로 새 코인을 받아가는 방식
  • 결국 작업증명은 임의의 값을 해시연산(비트코인은 SHA-256 사용)하여 특정 출력값을 만들어내는 입력값(nonce값)을 찾아내는 작업
  • 블록에 다음 블록이 체인으로 이어지고 나면 해당 블록을 변경하기 위해서는 그 뒤에 이어진 모든 체인의 블록에 대한 작업 증명도 다시 해야함
  • 작업증명은 1cpu당 1표 방식으로 긴 체인일수록 작업증명을 위해 많은 노력이 투입된 것이므로 그만큼 다수의 의견을 대표
    - SHA-256 이란?
    : 일종의 알고리즘으로 입력값의 길이에 관계없이 256자리의 2진수로 값을 반환한다
    -논스 란?
    : 임의의 값, 32비트의 랜덤한 숫자로 이 값을 증가시켜가면서 조건에 맞는 값을 찾는 방식으로 작업증명을 구현한다

네트워크: 거래의 전파

  • 네트워크 실행 절차는 다음과 같다
    1. 새로운 거래가 발생하고 이것이 모든 노드에 브로드캐스트 된다
    2. 각 노드가 신규 거래를 블록에 수집한다
    3. 각 노드들은 그 블록에 맞는 난이도의 작업증명을 찾아 나선다
    4. 작업증명값을 찾은 노드는 자신의 블록을 모든 노드에 전파한다
    5. 노드들은 블록에 포함된 모든 거래가 유효한 동시에 사전에 지불된 적이 없는 경우에 한해 해당 블록을 승인한다
    6. 블록에 대한 승인은, 노드가 전달받은 블록의 해시값을 계승해 다음 블록 생성 작업을 수행하는 방식으로 표현한다
  • 노드들은 언제나 가장 긴 체인이 맞는 것이라 여기고 그 체인에서 작업을 이어감
    - 노드 란?
    : 블록체인은 중앙집중형 서버에 거래 기록을 보관하지 않고 거래에 참여하는 개개인의 서버들이 모여 네트워크를 유지 및 관리하는데 이때 네트워크에 접속한 개개인의 서버/참여자가 노드이다.

인센티브(보상)

  • 비트코인 시스템의 인센티브는 비트코인 그 자체로의 코인과, 거래 수수료 두 가지
  • A가 B에게 10비트코인을 송금하기를 원할 경우 채굴자들이 이를 검증한 후 블록에 거래 내역을 기록하여 거래가 성사되는데 이때 A가 거래를 도와준 채굴자들에게 수수료를 지급하는 것

디스크 공간 회수

  • 블록이 여러 개 쌓였을 때 쌓인 블록의 해시를 깨지 않고 디스크 공간을 확보하기 위해 머클트리 구조로 거래를 해싱, 머클트리의 루트해시값만 블록에 포함되게 됨

    -머클트리의 방법:
    거래의 해시값을 두개씩 쌍을 지어 더함>그 값을 해시화>해시화한 값을 두개씩 쌍을 지어 더한 후 다시 해시화>무한반복하면 마지막에는 1개의 값만 남게되고, 이 값이 '머클루트'

간소화한 결제 검증(SPV: simple payment verification)

  • 사용자는 풀노드로부터 검증대상 거래(그림 T*3)에서부터 이 거래를 기록한 블록까지 연결하는 머클트리 데이터를 획득, 거래가 블록에 포함된 위치까지 연결해 봄으로써 거래 유효성 검증 가능
    -공격자가 네트워크에서 우위를 점하는 동안은 조작된 거래에 속을 수 있기 때문에 정직한 노드들이 네트워크를 제어하는 상황이어야 신뢰가능

    -풀노드 란?
    : spv(라이트웨이트 노드)에 반대되는 개념. 블록체인의 모든 데이터들을 본인의 로컬 데이터베이스에 저장한 개체로 다른 노드들의 도움없이 블록과 거래의 유효성 검증이 가능하다는 장점이 있다.

가치 합치기와 나누기

  • 가치를 합치고 나눌 수 있도록 거래는 복수의 입출금을 포함
  • 여러 거래들이 이어져 연쇄적으로 펼쳐지는 형태지만 '팬아웃 문제' 발생하지 않음

    - 팬아웃 문제 란?
    : 여기서 팬아웃은 '부채꼴'을 의미하는데, 부채꼴 모양처럼 하나의 거래가 여러 거래에 의존하고, 각각의 여러 거래들은 또 다른 여러 거래에 의존하여 그 의존성이 연쇄적으로 펼쳐 나가 발생하는 문제를 말한다.

프라이버시

  • 전통적 은행 모델은 당사자와 신뢰할 수 있는 제3자(은행)만이 정보에 접근 가능하도록 하여 사생활을 보호하였으나 정보접근의 제한이 불가능한 비트코인은 이 방법의 사용이 불가능
  • 대신 공개키를 익명으로 유지하는 방법을 사용, 이 경우 거래 자체는 공중에게 공개되지만 누가 거래를 했는지는 알 수 없으므로 사생활 보호 가능
  • 거래들이 공통된 소유자를 가리키는 것을 방지하기 위한 추가적 안전장치로 매 거래마다 새로운 키 쌍을 사용할 수 있음

결론

  • 비트코안은 신뢰할 수 있는 제3자 없이 전자거래 가능한 지불시스템
  • 거래내역을 공개적으로 저장할 수 있는 작업증명 방식을 활용, 기존 p2p 전자지불 시스템의 한계인 이중지불을 해결
  • 각각의 노드들은 자유롭게 네트워크 이탈과 합류가 가능하며 가장 긴 작업 증명체인을 채택해 그가 부재중에 일어난 거래들을 파악 가능

0개의 댓글