비트코인을 구하는 방법

마지막 업데이트: 2022년 1월 17일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기

[Go로 구현하는 블록체인] Part 2: 작업 증명

May 18, 2018 00:00 · 3549 words · 8 minute read blockchain pow

이전 파트에서 블록체인 데이터베이스의 핵심인 매우 간단한 데이터 구조를 만들어보았다. 그리고 각 블록을 이전 블록에 연결함으로써 체인에 블록을 추가할 수 있도록 만들었다. 하지만 우리가 구현한 블록체인 구현체에는 심각한 결함이 하나 있는데 바로 체인에 새 블록을 추가하기가 쉬우며 비용이 낮다는 것이다. 블록체인과 비트코인의 핵심은 새 블록을 추가하는 작업이 어렵다는 것이다. 이번 파트에서는 이 결함을 개선해보도록 하자.

작업 증명 (Proof of Work)

블록체인의 핵심 아이디어는 데이터를 추가하기 위해선 어떤 어려운 작업을 수행해야 한다는 것이다. 이 작업이 블록체인을 안전하고 일관성있게 만들어준다. 또한 이 어려운 작업을 수행한 참여자에게는 보상이 주어진다 (사람들이 채굴을 통해 코인을 얻는 방식이다).

이 메커니즘은 실생활과 아주 흡사한데 보상을 받으며 생계를 유지하기위해 열심히 일을 하는것과 유사하다. 블록체인에서 네트워크의 일부 참여자들 (채굴자)은 네트워크를 유지하기 위해 블록을 생성하고 이에 대한 보상을 받는다. 이 작업의 결과로 블록은 블록체인에 안전하게 추가되어 전체 블록체인 데이터베이스의 안정성을 유지한다. 작업을 마친 사람이 이 작업을 증명해야 한다는것에 주목할 필요가 있다.

“어려운 작업을 수행하고 이를 증명한다"의 전체 메커니즘을 작업 증명 (Proof of Work, PoW)비트코인을 구하는 방법 이라고 부른다. 이는 엄청난 컴퓨팅 파워를 요구하기 때문에 작업이 무거우며 고성능 컴퓨터에서조차 빠르게 수행하기 어렵다. 또한, 블록 생성 속도를 시간당 약 6 블록으로 유지하기 위해 작업의 난이도는 시간이 지남에따라 증가한다. 비트코인에서 이 작업의 목표는 특정 요구사항을 충족하는 블록의 해시를 찾는 것이다. 그리고 이 해시가 증명 역할을 하기 때문에 증명을 찾는 작업이 실질적인 작업이다.

마지막으로 주의해야할 점이 있다. 작업 증명 알고리즘은 작업 수행은 어렵지만 증명 검증은 쉬워야한다는 요구사항을 충족해야한다. 증명은 대개 다른 사람에게 넘어가기 때문에 검증 작업에 많은 시간이 소요되서는 안된다.

이 절에서는 해싱에 대해 다룰 것이다. 해싱이라는 개념에 익숙하다면 이 부분은 넘어가도 좋다.

해싱이란 어떤 특정한 데이터에 대한 해시를 얻는 과정이다. 해시란 계산된 데이터의 고유한 표현값이다. 해시 함수는 임의의 길이를 가진 데이터를 입력으로 받아 고정된 길이의 해시값을 생성하는 함수이다. 다음은 해싱의 핵심 기능이다.

  1. 원본 데이터는 해시에서 복원할 수 없다. 즉, 해싱은 암호화가 아니다.
  2. 특정 데이터는 단 하나의 해시값만 가지며 해시는 고유하다.
  3. 입력 데이터에서 하나의 바이트만 수정해도 완전히 다른 해시값이 생성된다.

Hashing Example

해시 함수는 데이터의 일관성을 검사하는데 널리 사용된다. 일부 소프트웨어 제공 업체는 소프트웨어 패키지와 함께 체크섬을 퍼블리싱한다. 파일을 다운로드한 후 이를 해싱 함수에 넣어 생성한 해시를 소프트웨어 비트코인을 구하는 방법 개발자가 제공한 해시와 비교할 수 있다.

블록체인에서 해싱은 블록의 일관성을 보장하는데 사용된다. 해싱 알고리즘의 입력 데이터에는 이전 블록의 해시값도 포함되어 있기 때문에 체인상의 어떤 한 블록을 변경하는건 불가능하다 (또는 아주 어렵다). 하나의 블록을 변경하면 해당 블록에 대한 해시와 그 이후의 모든 블록들에 대한 해시를 다시 계산해야하기 때문이다.

해시캐시 (Hashcash)

비트코인은 초기에 이메일 스팸을 방지하기 위해 개발된 작업 증명 알고리즘인 해시캐시를 사용한다. 알고리즘은 다음 스텝들로 나눌 수 있다.

  1. 공개적으로 알려진 데이터를 가져온다 (이메일의 경우 수신자의 이메일 주소, 비트코인의 경우 블록의 헤더를 들 수 있다)
  2. 여기에 카운터를 더한다. 카운터는 0부터 시작한다.
  3. data + counter의 해시를 구한다.
  4. 해시가 특정 요구사항을 충족하는지 확인한다.
    1. 만족한다면 알고리즘을 끝낸다.
    2. 그렇지 않다면 카운터를 증가시켜 3번과 4번 스텝을 반복한다.

    즉, 이는 무차별 대입 (Brute-force) 알고리즘으로 카운터를 늘리고 새로운 해시를 계산하고 검증하는 과정을 반복한다. 이게 바로 작업 증명의 계산 비용이 높은 이유이다.

    이제 해시가 충족해야하는 요구사항이 무엇인지 자세히 살펴보도록 하자. 원래의 해시캐시 구현체에서의 요구사항은 “첫 20비트가 모두 0이어야함"이다. 비트코인의 요구사항은 종종 조정되는데, 시간이 지남에 따라 연산 능력이 증가하고 네트워크에 참여하는 채굴자들이 늘어남에도 불구하고 설계상 10분마다 하나의 블록이 생성되어야하기 때문이다.

    알고리즘 시연을 위해, 이전 예제의 데이터 (“I like donuts”)를 가지고 3개의 제로 바이트로 시작하는 해시를 찾았다.

    Hashcash Example

    ca07ca는 10진수로 13240266인 카운터의 16진수값이다.

    이론은 다 살펴보았으니 이제 코드를 작성해보자! 먼저 채굴 난이도를 정의하자.

    비트코인에서 “목표 비트 (target bits)“란 블록이 채굴되는 난이도를 저장하고 있는 블록 헤더이다. 현재는 목표 조정 알고리즘을 구현하진 않을 것이므로 난이도를 전역 상수로 정의할 수 있다.

    24는 임의의 숫자이고, 우리의 목표은 256비트 이하의 메모리를 차지하는 타겟을 갖는 것이다. 그리고 차이가 커질수록 적절한 해시를 찾는 것이 어려워지기 때문에 차이가 충분히 크지만 너무 크지는 않길 바란다.

    블록 포인터와 타겟 포인터를 가진 ProofOfWork 구조체를 만들었다. “타겟 (target)“이란 이전절에서 언급했던 요구사항의 또 다른 말이다. 해시와 타겟을 비교할 수 있도록 큰 (Big) 정수를 사용했다. 우리는 해시를 큰 정수로 변환하여 이 값이 타겟보다 작은지 검사할 것이다.

    NewProofOfWork 함수에서 bit.Int을 1로 초기화하고 256 - targetBits 비트만큼 좌측 시프트 연산을 취했다. 256은 SHA-256 해시의 비트 길이로 SHA-256이 우리가 사용할 해시 알고리즘이다. target의 16진수값은 다음과 같다.

    이 값은 메모리에서 29바이트를 차지한다. 이전 예제의 해시값을 가져와 시각적으로 비교해보자.

    첫 번째 해시값 (“I like donuts"의 해시)은 타겟보다 크기 때문에 유효한 작업 증명이 아니다. 두번째 해시값 (“I like donutsca07ca”)은 타겟보다 작기 때문에 유효한 증명이다.

    그렇다면 이 타겟값을 유효 범위의 상한선으로 생각할 수 있다. 해시가 이 경계값보다 작으면 유효하고 그 역도 마찬가지이다. 경계값을 낮추면 유효한 해시값의 범위가 줄어들어 이 값을 찾는 작업이 더욱 어려워진다.

    이제 해시 계산을 위한 데이터가 필요하므로 데이터를 준비하도록 하자.

    단순히 블록의 필드값들과 타겟 및 논스값을 병합하는 직관적인 코드다. **논스 (nonce)**란 해시캐시에서의 카운터와 동일한 역할을 하는 암호학 용어이다.

    모든 준비는 끝났다. 이제 PoW 알고리즘의 핵심 코드를 구현해보자.

    먼저 변수들을 초기화한다. hashInthash의 정수 표현값이며 nonce는 카운터이다. 다음으로 “무한” 루프를 실행한다. 이는 최대 maxNonce만큼만 실행되며 이 값은 math.MaxInt64와 같다. 루프 횟수를 제한하는 이유는 nonce의 오버플로우를 막기 위해서이다. 물론 우리의 PoW 구현체의 난이도는 카운터가 오버플로우 나기에는 아주 낮지만 경우에 따라서는 오버플로우 검사를 하는게 더 좋다.

    루프에서는 다음의 작업들이 수행된다.

    1. 데이터 준비 (생성)
    2. SHA-256 해싱
    3. 해시값의 큰 정수로의 변환
    4. 정수값과 타겟값 비교

    이전에 설명된것처럼 쉽다. 우리는 이제 BlockSetHash 메서드를 제거하고 NewBlock 함수를 수정할 수 있다.

    nonceBlock의 프로퍼티로 저장되고 있음을 볼 수 있다. 증명 검증에 nonce가 필요하기 때문에 이는 필수적이다. Block 구조체는 이제 다음과 같이 작성할 수 있다.

    완성되었다! 잘 동작하는지 확인하기 위해 한 번 실행해보자.

    와우! 모든 해시가 3개의 제로 바이트로 시작하고 있음을 볼 수 있다. 또한 해시값들을 얻는데 일정 시간이 소요되었음을 확인할 수 있다.

    마지막으로 할 일이 하나 남았다. 작업 증명을 검증할 수 있는 기능을 만들어보자.

    위에서 저장한 논스는 바로 이 검증 로직에서 필요하다.

    잘 동작하는지 한 번 더 확인해보자.

    우리의 블록체인은 실제 아키텍처에 한 발 더 가까이 다가갔다. 블록 생성은 이제 어려운 작업을 요구하고 있으며 채굴이 가능해졌다. 그러나 아직도 일부 중요한 기능들이 빠져있다. 블록체인 데이터베이스가 영구적이지 않으며 지갑, 주소, 트랜잭션 및 합의 메커니즘 또한 없다. 이 모든건 이후의 파트들을 통해 구현해 나갈 것이다.

    [블록체인어스 전시현 기자] 코인은 아무런 가치가 없다는 이야기를 한다. 대부분 코인은 아무런 현금흐름을 창출하지 못하고 담보로 잡혀 있는 자산도 없기 때문이다. 따라서 코인 가치평가시 미래의 현금흐름을 할인하거나 PER, PBR 등을 활용할 수도 없다. 그럼에도 불구하고 코인을 가치평가 하려는 시도는 이어지고 있다.

    암호화폐 가치를 평가할 때 고려해야 할 지표들이 몇 가지 있다. 통상 가장 많이 사용되는 지표는 암호화폐의 시가총액이다. 코인의 가치를 구하는 가장 직관적인 방법은 전체 시장 규모를 계산하고 코인이 그 시장에서 차지할 것이라 예상되는 비중을 구한 뒤 코인 전체의 가치를 구하고 이를 코인 비트코인을 구하는 방법 개수로 나누어 코인의 적정 가격을 산출하는 것이다.

    하지만 수많은 암호화폐가 생기고, 시장 전체가 커지면서 암호화폐의 가치를 평가하기 위해서는 시가총액을 포함한 더 많은 지표들이 필요하다.

    암호화폐 투자에 관한 책 ‘크립토에셋츠’의 저자이자 투자그룹 플레이스홀더 벤처의 공동창업자인 크리스 버니스케(Christ Burniske)가 분석한 것에 따르면 2014년 송금 시장의 규모는 4,360억 달러 규모이며 비트코인이 송금 수요의 10% 정도를 차지할 것이라는 가정을 한다면 436억 달러가 계산된다.

    비트코인의 회전율이 1.5라고 가정한다면 비트코인은 436/1.5 = 300억 달러의 가치를 지니고 있어야 한다는 계산이 나온다. 당시 시중에서 유통되던 비트코인 개수인 1,470만 개의 비트코인으로 300억 달러를 나누면 비트코인 하나의 적정 가격은 2,000달러가 된다. 버니스케도 인정하듯 많은 오류가 있는 방법이지만 이 방법은 직관적으로 이해하기 쉬운 방법이다.

    코인 가치 평가를 도와주는 교환방정식(equation of exchange)

    코인 가치 평가를 위해서는 먼저 교환방정식을 이해할 필요가 있다. MV=PQ, M은 통화량을 V는 통화의 회전율 P는 물가 Q는 재화 및 서비스의 양이다. 통화량을 회전율로 곱한 것은 한 국가 안의 모든 재화 및 서비스의 가치와 같다는 의미이다. 재화와 서비스를 사용한만큼 누군가는 돈을 지불하면 둘이 서로 일치가 된다.

    회전율 V가 1 이라는 것은 같은 화폐가 1번 쓰였다는 의미이며 2라는 것은 2번 쓰였다는 의미이다. 시중에 비트코인을 구하는 방법 10달러 밖에 풀리지 않았는데 일어난 거래의 규모는 20달러 라면 같은 달러가 두 번 쓰인 것이고 이 경우 V는 2가 된다.

    미국 경제학자이자 계량 경제학회 초대 회장인 어빙 피셔 교수는 V와Q가 일정하다고 가정하면 M을 증가시키면 P가 증가하므로 물가를 조절하기 위해서는 통화량을 조절하면 된다고 주장했다. 어빙 피셔 교수는 근대 경제 이론의 개척자이며 화폐 수량설과 물가 지수론을 주장한 사람으로 유명하다.

    하지만 코인 가치는 M=PQ/V이므로 PQ와V를 알면 M을 구할 수 있다. 코인 세계에서는 현재 유통되고 있는 코인 양이 얼마나 되는지 확인이 가능하다. 그렇다면 M을 코인의 개수로 나누어 코인의 개당 가격을 구할 수 있다.

    코인 가치는 P는 코인 자체의 가격을 나타내지 않는다. P는 코인네트워크 상에서 거래되는 아이템의 가치를 의미한다. 예를 들어 파일코인이라는 저장공간 공유 코인의 P는 1GB의 저장공간당 드는 달러라고 할 수 있다. Q는 네트워크가 제공하는 아이템의 양을 의미한다. 파일코인은 총 제공 가능한 저장공간의 크기라고 할 수 있다. 이 둘을 곱한 것이 PQ이며 파일코인이라는 경제의 GDP라고 이해할 수 있다.

    V는 동일한 토큰이 일정 기간 동안 사용된 횟수를 의미한다. 2016년 비트코인 네트워크는 하루 평균 1억 6천만 달러의 거래를 처리하였고 1년으로 환산하면 580억 달러가 된다. 2016년의 평균 비트코인의 가치는 89억 달러였으므로 V=580억 달러/89억 달러 = 6.5로 계산된다.

    암호화폐, 가치 저장수단으로 본다면

    암호화폐 = 디지털 금

    암호화폐를 가치 저장수단으로 보는 관점에서 보면 다음과 같다. 현재 전 세계 금의 총량을 달러로 환산하면 약 8,000조 달러가 된다. 비트코인이 금의 10%를 대체한다고 가정하면, 비트코인의 시가총액은 800조 달러가 된다. 이것을 비트코인 총 발행량으로 나누면 비트코인 가격은 약 4만 달러가 된다.

    암호화폐 = 블록체인 시스템에서의 교환수단

    새로운 형태의 화폐라고 보는 관점에서 달리 해석된다. 새로운 화폐를 발행한다는 것은 주식을 발행하는 것과는 다르다. 투자자의 관점에서 살펴보면. 주식을 발행한 기업이 창출하는 부가가치가 늘어날수록 보유한 주식의 가치는 증가한다. 그런데 투자한 화폐의 가치는 어떤 경우에 증가할까? 해당 블록체인에서 거래가 활발히 일어나면 그 화폐의 가치도 올라갈까?

    직접적인 연관관계가 있다고 하기는 힘들다. 단, 발행량이 제한되어 있는 화폐의 경우, 화폐유통속도(=거래액/화폐발행액)가 일정하다면, 화폐의 가치가 거래액에 비례해 증가한다고 볼 수 있다. 암호화폐의 거래액과 화폐유통속도를 추정할 수 있다면 그 가치를 구할 수 있다. 현재 교환수단으로서 암호화폐 거래액은 미미한 수준이지만, 미래에는 법정화폐에 버금가는 교환수단이 될 것으로 전문가들은 전망한다. 암호화폐는 신용창출 과정이 없는 통화이고, 중앙은행 예치금도 없으므로, 법정통화의 현금통화 규모와 비교하는 것이 적절하다.

    통화별 현금통화 규모는 다음과 같다.

    현재 비트코인의 시가총액은 약 200조원으로 주요통화에는 미치지 못하지만 원화의 현금통화 규모보다는 높다. 미래에는 원화 거래액보다 비트코인 거래액이 더 많아 질 것이라는 기대가 반영된 것으로 보인다. 암호화폐의 가치를 평가하는데 절대적인 지표는 없겠지만, 그 중 누구나 쉽게 사용할 수 있는 유용한 지표 4개를 조사해 보았다.

    시가총액

    암호화폐의 시가총액은 암호화폐가 보유한 본질적인 가치의 일부를 반영하는 지표이다. 하지만 수많은 투자자들이 가장 유심히, 그리고 자주 지켜보는 지표가 시가총액이다. 비트코인의 시가총액이 암호화폐 시장 전체 시가총액에서 차지하는 비율은 33.8%에 달한다. 33.8%가 그렇게 크지 않아 보이지만 실제로는 암호화폐 시장의 1/3은 비트코인이 차지하고 있다고 해도 과언이 아니다.

    시가총액은 코인마캣캡(Coinmarketcap) 암호화폐의 창립자, 재단, 운영 등을 목적으로 발행된 지분을 제외한 유통 발행량(Circulating supply)을 기준으로 측정된다. 몇몇 암호화폐는 총 발행량을 고려하지 않고 오직 유통 발행량 기준으로 가격이 형성되었기 때문에 해당 암호화폐가 금전적으로 과대평가된 암호화폐는 아닌지 고려해볼 필요가 있다. 하지만 각각의 암호화폐는 고유한 특성과 경제구조, 그리고 기술적 발전단계를 가지고 있기 때문에 암호화폐의 가치를 평가할 때 단순히 시가총액만 가지고 비교하는 것은 현명하지 못하다.

    최대 발행량

    암호화폐 시장에 익숙한 사람들은 각각 암호화폐의 가치가 최대 발행량에 영향을 받는다는 사실을 알고 있다. 특히, ICO(Initial Coin Offering)을 통해 암호화폐가 발행되는 경우에는 초기 발행량과 최대 발행량은 투자자들 에게 중요한 지표가 된다. 이더리움의 경우 최대 발행량은 정해져 있지 않고 시간이 흐름에 따라 매우 소량의 이더리움이 꾸준히 발행되는 방식을 사용하고 있다.

    이렇게 토큰이 숫자가 지속적으로 증가하는 경우 시간이 지남에 따라 시가총액이 지속적으로 증가할 가능성이 높다. 사람들 인식 속에 비트코인은 2,100만 개, 라이트코인은 8,400만 개의 최대 발행량을 가지기 때문에 그보다 발행량이 적거나 혹은 많거나를 기준으로 가치가 판단되기도 한다.

    많은 사람들이 총 발행량(Total supply)과 최대 발행량(Maximum supply)의 차이점에 대해 헷갈려하는 경우가 많다. 하지만 이 두 가지 단어는 전혀 다른 의미를 가지고 있다. 예를 들어, 스텔라루멘(Stellar Lumens)의 경우에는 1,035억 개의 루멘(Lumens)이 지금까지 발행되었다. 하지만 스텔라루멘은 중앙 기관에서 토큰을 추가로 발행할 수 있기 때문에 스텔라루멘스 토큰은 현재 1,035억 개의 총 발행량을 가지고, 최대 발행량은 존재하지 않는다.

    채굴을 통한 발행 유무

    코인마켓캡의 경우 암호화폐의 발행량 옆에 별표(*)가 된 암호화폐가 있다. 이는 해당 암호화폐가 더 이상 POW(Proof Of Work)를 통해 발행되지 않음을 의미한다. 하지만 암호화폐가 POW를 통해 발행되지 않고 POS(Proof Of Stake)를 통해 발행되어도 발행량 옆에 별 표시가 붙는다. 그러므로 별 표시가 붙어 있다고 해서 발행이 멈춘 암호화폐라고 인식해서는 안 된다. 통상 발행이 멈춘 경우 암호화폐의 가격이 증가할 것이라는 기대심리가 있기 때문에 별 표시가 붙은 암호화폐의 발행이 멈췄다고 오해하는 것은 위험하다.

    전용 거래소의 존재 유무

    전용 거래소 존재 유무는 흔히 간과되는 중요한 지표이다. 일부 암호화폐인 경우 해당 암호화폐 개발자들이 직접 운용하는 전용 거래소에서만 거래되는 경우가 있다. 빗커넥트(BitConnect)의 경우 전 세계 거래의 95%가 빗커텍트 전용 거래소에서 발생한다. 이렇게 전용 거래소에서 대부분의 거래가 발생하는 경우 가격 조작의 위험이 매우 높다. 이러한 전용 거래소에서만 거래가 이뤄지는 암호화폐는 점차 투자자들이 현명해지며 외면 받고 있지만 암호화폐 투자 전 반드시 해당 사항을 확인해야 할 필요성이 있다.

    [기승전 비트코인] 비트코인이 전진하는 법… 실패와 도전

    [기승전 비트코인] 비트코인이 전진하는 법… 실패와 도전

    [블록미디어 프로메타 연구소 최창환 소장] 암호화폐 시장이 참담하다. 2018~2019년 극심한 겨울(크립토 윈터)보다 심하다. 시가총액 2조 달러를 웃돌던 시장은 8,000억 달러대로 쪼그라들었다.

    전 세계적인 인플레와 금리 인상이라는 악조건 속에 테라 사태가 몰고 온 후폭풍이 거세다. 암호화폐를 담보로 대출해주고, 이자 장사를 했던 업체들이 연쇄 부도 위기에 몰렸다.

    비트코인 가격이 떨어지는 것 이상으로 ‘탈중앙’이라는 원칙이 흔들리는 것이 더욱 걱정이다. 그러나 비트코인의 탄생부터 12년간 걸어온 길을 생각하면, 암호화폐는 늘 실패와 도전을 반복했다. 역사가 전진하는 방법이기도 하다.

    # 전진을 위한 고통

    이 칼럼에서 한 번 얘기했던 아래 그림을 봐주시면 좋겠다. 프랑스 혁명 정신을 화폭에 담은 그림이다.

    ‘민중을 이끄는 자유의 여신’. 외젠 들라크루아

    깃발을 든 자유의 여신을 따르는 무리들이 혁명을 성공으로 이끈다. 여신과 전진하는 군중들의 발 아래에는 많은 사람들이 쓰러져 있다. 부랑아, 농민, 노동자, 퇴역 군인, 시민 등. 이들이 어떤 강한 논리나 지식으로 혁명의 대의에 참여했을까? 그렇지 않다. 켜켜이 쌓여 있는 부조리와 모순들이 이들을 새로운 세상을 꿈꾸는 전사로 만들었을 뿐이다. 지금 암호화폐 시장이 겪고 있는 고통은 혁명 전선에서 쓰러진 사람들의 고통과 유사하다. 그 위에 새 살이 돋고, 새로운 금융, 새로운 경제가 탄생할 수 있다고 믿는다.

    암호화폐 시장의 모든 것을 혁명이란 이름으로 미화하자는 게 아니다. 어떤 부분이 위기이고, 실패일까? 단적으로 테라 사태는 너무나 급속한 확장이 가져온 참사다. 모든 새로운 것은 위험을 잉태한다. 그 위험을 간과했다는 점은 부인할 수 없다. 또 하나 중요한 고민은 이렇게 시장이 흔들릴 때 대원칙이 휘청거려서는 안 된다는 인식이다.

    # 과도한 레버리지 투자

    지금 암호화폐 시장을 휩쓸고 있는 연쇄 청산, 부도 위험은 우리가 겪은 1997년 IMF 위기, 2008년 금융위기와 너무나 유사하다. 테라 사태가 발발한 직후 셀시우스라는 암호화폐 대출업체가 고객 자금 인출을 중단했다. 셀시우스는 테라와 밀접하게 연결돼 있는 앵커 프로토콜이라는 디파이(DeFi·탈중앙금융)에도 자금을 맡겼고, 다른 유사한 디파이에도 돈을 굴렸다.

    셀시우스는 고객이 맡긴 돈을 디파이에 예치해 놓고 이자를 받았다. 여기서 그치지 않고, 디파이에서 다시 대출을 받아 또 다른 디파이를 통해 이자를 받는 ‘레버리지’ 장사를 했다. 부동산 시장에서 봐온 갭투자, 2008년 금융위기의 단초가 된 서브프라임 모기지를 연상시키는 고위험 투자를 한 것이다. 암호화폐 가격이 갑자기 떨어지자, 담보 가치가 떨어졌고, 셀시우스는 눈덩이처럼 불어난 대출을 갚아야 하는 처지가 됐다. 결국 끌어다 쓴 고객 자금을 날릴 처지가 됐다.

    # 시스템을 지킬 것이냐, 원칙을 지킬 것이냐

    셀시우스가 무너지자, 유사한 레버리지 투자를 한 암호화폐 투자 펀드들도 위기에 처했다. 스리애로캐피털이라는 펀드도 똑같은 방식의 레버리지 투자를 했다가 파산 위기에 물렸다. 꼬리에 꼬리를 무는 연쇄 청산과 파산이 암호화폐 시장을 더욱 궁지로 몰아넣었다.

    셀시우스나 스리애로캐피털은 기존 금융회사들처럼 암호화폐를 담보로 투자를 했지만, 순수 디파이에서도 우려할 만한 일이 벌어졌다. 디파이는 원래 중간자가 개입하지 않는 것이 원칙이다. 그 점이 최대의 강점이고, 기존 금융의 문제점을 뛰어넘을 미래의 금융으로 주목을 받았다. 그런 디파이가 스스로 개입을 선언한 사건이 벌어졌다. 탈중앙, 중간자 없는 금융이라는 원칙을 지킬 것이냐, 연쇄 청산의 위험을 일단 벗어나 시스템 전체를 구할 것이냐 선택의 갈림길에 내몰린 것이다.

    # “고래 지갑을 직접 관리하겠다”

    솔라나라고 하는 블록체인이 있다. 솔라나 체인에서 가동하는 솔렌드라는 디파이 프로젝트가 암호화폐 시장 전체에 충격을 줄 결정을 내렸다. 솔렌드는 솔라나 코인을 담보로 예치하면, 다른 암호화폐를 대출해주는 디파이다. 솔렌드에는 엄청나게 큰 고객이 하나 있었다. 예치 금액의 95%, 대출 금액의 88%를 이 고객이 차지했다. 암호화폐 시장이 안정적이고, 좋을 때는 이 대형 고객은 VVIP 고객이었다. 그런데 솔라나 코인 가격이 떨어지자 셀시우스와 똑같은 위험이 발생했다.

    솔렌드를 운영하는 솔렌드 랩스는 해당 큰손(고래)과 연락을 취했다. 위험도가 너무 크니, 예치와 대출을 줄였으면 좋겠다는 뜻을 전달했다. 이 자체도 디파이 취지에 맞지 않는다. 왜냐하면 디파이는 프로그램에 따라 누구든 코인을 맡기고, 대출을 할 수 있기 떄문에 누가 나서서 줄여라 말아라 해서는 안 된다.

    고래는 응답이 없었다. 그러자 솔렌드 랩스는 해당 고래 계좌(지갑)를 트위터에 공개하고, 너무 위험이 크니 다른 고객들은 조심하라는 공지까지 올렸다. 다른 사람의 통장 내용을 보여준 것이나 마찬가지다. 솔렌드 랩스는 심지어 솔라나 코인 가격이 22.27달러로 떨어지면 이 지갑 주인이 청산을 당한다는 사실도 공표해버렸다.

    그래도 고래가 포지션을 줄이지 않자, 솔렌드 랩스는 긴급 제안을 내놓는다. 해당 고래의 지갑을 몰수해서 자신들이 청산을 진행하겠다는 것이다.

    솔렌드 랩스가 고래 지갑을 몰수해도 좋다는 제안에 대한 찬성 투표 결과. 자료=솔렌드 트위터

    이 고래가 가진 솔라나 코인이 자동으로 한꺼번에 청산이 되면 코인 값이 폭락할 것이고, 그렇게 되면 다른 대출 포지션들도 연쇄적으로 청산이 될 수 있다는 이유 때문이다. 은행이 고객의 통장을 압수해서 통장의 돈을 부채 상환에 임의로 써버리겠다고 선언한 셈이다.

    탈중앙 이념에 맞지 않는 이 제안은 “오직 솔렌드 시스템과 솔라나 블록체인 시스템을 위기에서 구하기 위한 충정”이라고 강변했다. 솔렌드의 이 제안은 우여곡절 끝에 비트코인을 구하는 방법 철회됐다. 그 사이 솔라나 코인 가격이 오르기도 했고, 암호화폐 업계의 비난도 컸기 때문이다.

    # 암호화폐 발전을 위한 인간학

    솔렌드 해프닝은 단순한 해프닝이 아니다. 블록체인 기술은 사람을 신뢰하지 않고, 시스템을 신뢰한다는 철학에서 출발한다. 블록체인 기술로 만들어진 최초의 암호화폐 비트코인은 그래서 운영 주체가 없다. 네트워크에 참여하는 개개인이 프로그램에 따라 움직일 뿐이다.

    디파이도 같은 원리로 작동한다. 그런데 솔렌드가 그 원칙을 깨고 네트워크, 시스템을 보호한다는 명분으로 개입을 하겠다고 했다. 이렇게 해서 시스템이 살아나더라도 솔렌드는 더 이상 디파이는 아니다.

    컴퓨터 프로그램을 짤 때 인간의 욕심까지 제어하는 그런 코딩을 할 수는 없다. 결국 디파이도 사람들이 만든 것이다. 일부 힘있는 사람들이 만든 금융시스템을 분산을 통해 더 나은 시스템으로 만들겠다는 블록체인혁명은 지금 위기에 처해있다. 분산 정신에 공감하거나, 이를 기반으로 한 시스템이 부를 가져다 줄 것으로 믿고 투자했던 많은 사람들과 프로젝트들은 지금 많은 상처를 입고 커다란 위기에 처해있다. 고난에 처한 암호화폐 프로젝트와 투자자들에게 다시 일어날 수 있는 희망과 힘이 찾아들기를 고대한다.

    비트코인을 구하는 방법

    최초의 블록체인기술 기반의 암호화폐이다.

    비트코인에서 코인은 전자 서명의 연결로 정의된다. 코인이 트랜잭션될 때, 코인의 주인은 이전의 트랜잭션과 다음 주인의 공개키로 이루어진 해시를 자신의 비밀키로 서명하여 코인의 뒤에 덧붙인다. 이 방식으로 코인의 주인은 이전 주인들을 확인할 수 있게 된다. 이 방식이 가지는 가장 큰 문제점은 이전의 트랜잭션들에서 이중결제의 여부를 확인할 수 없다는 것이다.

    Proof-of-Work

    이 문제를 해결하기 위해서 비트코인에서는 유저-유저 기반의 타임스탬프 서버(Timestamp Server)를 도입한다. 타임스탬프 서버는 어떤 일련의 정보들을 해시로 변환한 뒤 시간 순으로 나열하여 공공에 이 정보를 공개하는 역할을 한다. 각 타임스탬프들은 직전의 타임스탬프의 정보(ex. 트랜잭션)를 해시에 포함하고, 거래가 진행될 수록 더 많은 타임스탬프들이 이어지게 되어 하나의 체인을 형성하게 된다.

    타임스탬프의 정보를 검증하고 더 이어가기 위해 비트코인에서는 Proof-of-Work라는 개념을 사용한다. 비트코인의 타임스탬프는 직전의 해시, Nonce값, 트랜잭션의 정보를 담은 머클 트리(해시 트리) 등의 정보를 이어붙여 해시를 구하는 방식으로 이루어진다. 여기에서 Nonce의 값을 구하여 블록의 정당성을 검증하는 것을 Proof-of-Work라고 하는데, 비트코인에서 이 과정은 주어진 문자열에 대해 문자열을 이어붙여 SHA-256 인코딩했을 시 앞에 나오는 0의 개수를 구하는 방식으로 이루어진다. 네트워크의 모든 노드들은 가장 긴 블록의 체인에서 이 작업을 시행하여 네트워크를 유지하게 되고 Nonce의 값을 찾아내는 노드에게는 코인이 보상으로 주어지게 된다(블록 체인의 정보에서 가장 첫번째 트랜잭션이 새로운 코인을 발행하여 전달하는 과정을 나타냄).

    비트코인 네트워크의 작동 과정

    1. 새로운 트랜잭션이 모든 노드들에 대해서 broadcast된다.
    2. 각 노드들은 트랜잭션 정보를 블록으로 가지고온다.
    3. 각 노드들은 그 블록에서 Proof-of-Work 작업을 시행한다.
    4. 어떤 노드가 그 블록에서 Proof-of-Work를 찾았다면, 그 블록을 다른 모든 노드에 broadcast한다.
    5. 각 노드들은 그 블록의 트랜잭션들이 정당하다는 것이 확인되면 그 블록을 체인에 연결시킨다.
    6. 각 노드들은 받아들인 블록을 이전의 해시로서 사용하여 1의 과정을 반복한다.


    모든 노드들은 가장 긴 체인에 대해서 새로운 블록을 찾아내는 작업을 한다. 만약 더 긴 체인이 발견된다면 그 체인으로 이동하여 작업을 계속하게 된다. 이 방식으로 비트코인 네트워크 상의 모든 트랜잭션을 기록할 수 있다.

    머클 트리

    머클 트리(해시 트리)는 짧은 시간 내에 트리의 노드들에 접근할 수 있도록 고안된 트리 자료구조로 각 부모 노드들은 자식 노드의 해시값들을 특정 방식으로 해시한 값을 가지게 된다. 이 방식은 트리를 최적화함으로써 저장되는데 필요한 메모리 공간을 줄일 수 있다는 특징이 있다. 비트코인 상의 모든 노드들은 필연적으로 전체 비트코인의 체인을 가지고 있어야 하기 때문에 트랜잭션 정보를 저장할 때 머클 트리를 이용하여 메모리 공간의 사용을 최소화한다. 여기에서 머클 트리의 루트 노드의 해시는 블록의 해시를 구성하는 데에 사용된다.

    트랜잭션의 상세

    트랜잭션 과정은 하나의 코인을 여러 부분으로 나누거나 분해된 코인들을 하나로 합치기 위하여 복수의 입력과 2개 이하의 출력을 나타낸다. 특히 출력이 2개일 때 각각의 정보는 결제와 그 거스름을 나타낸다.

    하드포크 소식으로 다 죽을 줄 알았던 비트코인이 2017/08/06 기준 국내 최고가 약 380만원을 찍었다!

    Reference

    Nakamoto, Satoshi. "Bitcoin: A peer-to-peer electronic cash system." (2008)

    이 생경한 질문을 기사 제목에 턱하니 붙이기도 했으니 뭔가 답을 주기는 줘야 할 것 같습니다. 그러나 이 말을 먼저 하고 싶어요. 제가 그걸 알면 여기서 기자하고 있겠습니까? 몰라요. 실망하신 독자분은 여기서 '뒤로가기' 누르셔도 슬프고 절망스럽고 피눈물이 흐르지만 넘어가겠습니다. 다만 남아 있는다면 분명 얻어가는 것이 있을 겁니다. "비트코인을 지금 사세요!"라고 말은 못하지만 최소한 최근의 상황과 유의미한 변화, 나아가 진짜 중요한 트렌드를 소개해 드리겠습니다.

    가상화폐, 그리고 블록체인
    가상화폐의 대명사로 불리는 비트코인부터 시작하겠습니다. 최근 비트코인 열풍이 불면서 크게 각광을 받고 있지만 의외로 역사가 깁니다. 2009년 나카모토 사토시라는 사람이 만들었습니다.

    그의 정체는 아직 밝혀지지 않았습니다만, 이름으로 보아 일본인이 아닌가라고 추론하는 수준입니다.

    초창기 비트코인은 당연히 이목을 끌지 않았습니다. 첫 거래는 언제일까요? 2010년 5월입니다. 미국 비트코인을 구하는 방법 플로리다에 거주하는 한 네티즌이 1만 비트코인과 피자 2판을 바꾸자는 글을 올렸는데, 이것이 비트코인 역사상 첫 거래라고 합니다. 자기에게 피자 2판을 보내주면 1만 비트코인을 보내겠다고 했어요. 거래는 성사됐으며, 비트코인을 통한 실물거래가 발생했습니다.

    재미있지 않습니까? 월세사는 비루한 처지인지라 피자와 같은 고급음식을 먹어보지 못해 요즘 얼마인지는 모르겠지만, 지금 비트코인 가격은 420만원(26일 기준) 입니다. 아, 피자가 이렇게 고급스럽고 위험한 음식인줄은 몰랐습니다.

    이후 비트코인은 서서히 업계의 관심을 끌기 시작합니다. 초창기 세계 최대의 비트코인 거래소인 마운트 곡스가 일본에 설립되며 그 열기는 절정으로 치닫습니다. 그러나 비트코인 거래소인 마운트 곡스는 2014년 2월 파산했으며 소위 ‘선각자’로 불린 비트코인 초창기 멤버들도 불법거래 혐의로 줄줄이 기소돼 유죄를 받았어요. ‘비트코인의 왕’이라 불리던 로버트 파이엘라와 비트코인 거래소 ‘비트인스턴트’를 운영하던 찰리 슈렘이 감옥신세를 지기도 했습니다.

    이후 몇 번의 부침을 겪으며 비트코인 자체에 의구심이 일기 시작했고, ICT 업계는 비트코인 대신 비트코인을 운영하는 블록체인 기술에 관심을 가지기 시작합니다. 아무래도 비트코인이 가상'화폐'인 관계로 금융업계에서 비트코인에 빠르게 집중해요.

    사실 ICT 업계 기자 입장에서 가상화폐, 비트코인도 관심사지만 블록체인이라는 아이템은 더욱 매력적입니다. 분산장부의 개념으로 보면 됩니다. 예를 들어 A라는 사람이 B라는 사람과 거래를 했다고 생각합시다. 그리고 B라는 사람이 C라는 사람과 거래를 했다면 이러한 과정은 각자가 가진 모든 거래장부에 자동으로 기입되는 것이 블록체인 방식입니다. 여기에서 누군가 장난을 치고 싶다면 기존 은행의 경우 거래장부를 해킹하거나 훼손하면 그만이지만, 블록체인의 경우 사실상 불가능해요. 모든 사람의 장부를 동시에 위조해야 하기 때문입니다.

    여기에도 문제가 있어요. 만약 누군가 체인을 이어가며 위조를 시도한다면? 51%의 마법이 등장할 차례입니다. 거래가 연속으로 벌어지다 여러 줄기로 거래로 나눠지면, 거래가 짧은 거래가 자동으로 취소되는 방식입니다. 네, 맞아요. 그 유명한 비잔틴 장군의 딜레마가 나옵니다.

    100명의 병력을 가진 비잔틴 장군 5명이 하나의 성을 정복하기 위해 모였다고 합시다. 이들은 성을 공격해야 하지만 서로를 완전히 신뢰할 수 없으며, 각자의 진영은 사로 떨어져 있어 전령을 보내 통신할 수 밖에 없다고 생각합시다. 적의 성에는 300명의 병사가 있고 장군들은 최소 300명이상의 아군이 동시에 움직여야 승리할 수 있습니다. 자. 어떻해야 할까요?

    서로 사이좋게 믿고 성을 공격하면 문제가 너무 쉽겠죠? 이때 누군가 꾀를 냅니다. 공격 시간을 확인할 수 있는 편지를 돌려보는 겁니다. 이렇게요. 모든 장군은 10분의 시간을 들여 문제 하나를 풀고, 문제를 풀면 공격시간을 알 수 있도록 합니다. 그렇게 다음 공격시간을 공지한 후 다른 장군에게 넘겨요. 이 과정에서 시간과 문제를 푼 흔적은 반드시 다른 장군에게 전해져야 합니다. 즉 1번 장군이 오후 11시라는 공격시간과 함께 10분간 문제를 풀어 두 정보를 2번 장군에게 보내면 2번 장군도 문제를 풀고 1번 장군으로부터 받은 공격시간과 함께 자신이 푼 문제 내역과 1번 장군의 문제 내역을 3번 장군에게 보내는 겁니다.

    여기서 3번 장군이 배신자라면 어떻게 될까요? 3번 장군은 오후 9시라는 공격시간을 적고 1, 2번 장군의 문제 내역과 자기의 문제 내역을 4번 장군에게 보낼겁니다. 다만 이렇게 되면 체인이 갈라져요. 앞에서 설명했듯이 모든 장군들은 자기에게 도착한 편지의 내역을 알 수 있다고 했죠? 이렇게 되면 4번과 5번 장군은 오후 11시라는 1, 2번 장군의 시간과 오후 9시라는 장군의 3번 장군 중 누가 거짓말을 할 수 있는지 알게됩니다. 비트코인으로 보면 블록에 담긴 거래 내용을 암호화한 상태에서 그 해시 값을 다음 블록으로 이어지는 과정을 계속 반복(Proof-of-Work, PoW)하는 방식입니다.

    비트코인을 인증의 단계에서 주로 사용하지만, 정치와 사회, 경제, 문화 유통 전 영역에서 활용할 수 있는 이유도 여기에 있습니다. 중앙집권이 아닌 철저한 분산엔진 방식으로 작동하기 때문에 '내역'이 남는다는 점이 중요해요. 중고차 판매를 예로 들어보면, 딜러가 중고차 기록을 조작하는 것이 원천적으로 불가능해집니다. 왜? 제조부터 이동, 주유, 수리, 딜러에게 넘어간 순간이 모두 공유되기 때문입니다.

    가상화폐 쇼크

    너무 장황한 블록체인 이야기만 했습니다. 그러나 가상화폐에 관심이 많다면, 이를 기반으로 작동하는 블록체인이 무엇인지 알아두는 비트코인을 구하는 방법 것도 좋은 생각이라고 확신합니다. 세상을 조금 더 빠르게 파악하는 방법이니까요.

    이제부터는 가상화폐 이야기를 하겠습니다. 사실 가상화폐는 비트코인만 있는 것이 아닙니다. 대시와 이더리움, 라이트코인 등 약 800종에 이르는 가상화폐가 존재하기 때문입니다. 비트코인 외 가상화폐는 모두 알트코인(Altcoins)이라고 부르며 비율로 따지면 아직은 비트코인이 90%, 알트코인이 10% 수준입니다.

    이더리움 이야기를 들어봤을겁니다. 러시아의 프로그래머인 비탈리크 부테린이 개발했으며 C++, 자바, 파이썬, GO 등 주요 프로그래밍 언어까지 지원해요. 다만 지난해 6월 해킹을 통해 약 360만개의 이더리움이 해커에게 탈취되는 등, 가상화폐의 근원적인 약점은 그대로 가지고 있습니다. 코인 생성 주기를 크게 당겨 편의성을 올렸으며 자연스럽게 대량의 결제를 빠르게 처리할 수 있는 라이트코인도 있어요.

    그래도 대세는 아직 비트코인. 특징은 세가지입니다. 발행주체가 없고, 엄밀한 의미의 주인이 없으며, 누구든지 만들 수 있다는 것. 분산엔진인 블록체인으로 생성하니 발행주체가 없는 것이고 모두가 발행주체가 될 수 있으니 영원한 주인도 없어요. 그리고 PC로 수학문제를 푸는 과정인 채굴로 누구나 비트코인을 구할 수 있습니다. 물론 당신의 컴퓨터가 슈퍼 컴퓨팅 기능을 가져야 하지만. 그래서 비트코인을 더욱 일반적인 방식으로 구하는 것은 거래소를 통해 구입하는 겁니다.

    문제는 중국이에요. 가상화폐 시장의 큰 손인 중국이 최근 ICO를 중단하는 등, 시장의 파괴적인 영향력을 미치고 있습니다. 소위 '포괄적 금지 정책'입니다. 쉽게 말하면 가상화폐 거래를 인정하지 않는다는 중국 정부의 '신호'입니다. 중국 정부는 이미 중국의 3대 비트코인 거래소에 폐쇄 명령을 내린 상태입니다.

    덕분에 비트코인 가격이 출렁이고 있습니다. 중국발 악재가 전해지기 전 비트코인 가격은 4500달러에 이르렀지만 18일 3500달러로 내려앉으면서 약 22% 가량 가격이 하락했습니다. 지금은 다소 반등해 420만원 수준을 유지하고 있지만 언제 등락을 거듭할 것인지는 아무도 모르죠.

    국내에는 소위 3대 거래소가 있습니다. 바로 코빗과 빗썸, 그리고 코인원이에요.

    코빗은 26일 넥슨에 인수됐습니다. 넥슨의 지주사 NXC가 코빗 주식 12만5000주(지분율 65.19%)를 912억원에 취득했기 때문입니다. 코빗은 올해 기준 약 8억원의 손순실을 기록하는 등 비트코인을 구하는 방법 주춤하고 있지만, 가상화폐 시장에 게임 대기업이 진입한 것은 그 자체로 의미가 있다는 평가입니다.

    코인원은 중국의 퀀텀 등과 빠르게 협력하는 등, 기술기반 플랫폼을 내세운 특이한 거래소입니다. 26일 센트비 투자로 확인할 수 있어요. 코인원은 센트비 투자를 시작으로 국내외 성장 잠재력을 지닌 핀테크와 블록체인 관련 스타트업에 적극적인 투자를 진행할 예정입니다. 또 크로스라는 자체 소액해외송금 서비스를 키우기 위한 포석으로 풀이됩니다. 빗썸은 다소 조용하지만, 역시 중요한 플레이어 중 하나입니다.

    최근에는 카카오가 가상화폐 시장에 진입할 것이라는 말이 나오기도 했어요. 카카오는 정식 입장자료를 내어 부정했습니다. 다만 카카오가 투자한 두나무의 업비트 런칭은 주시할 필요가 있어 보입니다. 두나무는 글로벌 가상화폐 거래소 비트렉스(Bittrex)와 독점 제휴를 체결, 국내에서 가장 많은 코인과 마켓을 지원하는 가상화폐 거래소 업비트를 출범할 예정이기 때문입니다. 당장 판도를 흔들 수준은 아니지만, 카카오까지 이어지는 큰 그림을 조심스럽게 예측할 수 있습니다.

    그래서, 사라는 거야?

    비트코인도 마찬가지지만 가상화폐 시장의 미래를 섣부르게 예단할 수는 없습니다. 워낙 등락이 큰데다 가장 중요한 '이유'가 설명되지 않기 때문입니다. 순수하게 거래량에 가격이 결정되는 구조이기 때문에 하드포크 후에도 뚜렷한 등락의 동력을 파악할 수 없어요. 게다가 중국 리스크는 시장에서 꽤 비중있는 변수로 꼽힙니다.

    그러나 현금없는 사회가 도래하고 있으며, 그 연장선에서 동전없는 사회가 이미 현실로 다가오기 시작한 점을 고려할 필요가 있습니다. 현재의 화폐거래 '방식'은 분명 변할 가능성이 높습니다. 방식이 변한다고 당장 비트코인이 기축통화로 우뚝 서는 황당한 상황이 발생할 가능성은 낮지만, '방식'의 대안으로 가상화폐가 유력한 차기 후보군에 이름을 올리고 있다는 점만 말하겠습니다.

    비트코인은 '거품'이라고 비판한 억만장자 마크 큐반이 비트코인 투자를 시작했다고 하네요. 비트코인 가격은 중국 리스크 후 100달러 이상 떨어졌습니다. 미국 최대 옵션거래소인 시카고옵션거래소(CBOE)는 올해 말 비트코인 선물 상품을 상장하는 것을 목표로 하고 있다고 합니다. 제이미 다이먼 JP모건 최고경영자(CEO)는 "비트코인은 튤립사기보다 더 나쁘다"고 비판했다고 하네요. 자, 선택은 당신의 몫입니다.


0 개 댓글

답장을 남겨주세요