2018.01.11
한국 법무부장관, 거래소 폐쇄까지 포함된 초강경규제안 공표

박상기 법무부장관은 신년 기자 간담회 중 거래소 폐쇄를 포함한 초강경 규제안을 준비중이라 공표했습니다.

그리고 이는 정부부처 간 합의된 내용이라 발표하였으나, 발표후 타부처 및 청와대의 입장은 이와 달라 시장은 혼란에 빠졌습니다.

2018.02.05
Coinbase 세그윗 적용 최종 점검 중

미국 내 가장 사용자가 많은 비트코인 구입처 Coinbase 측은 개발 팀에서 세그윗 적용을 위한 최종 테스트를 진행 중이라고 밝혔습니다. Blockchain.info 웹 지갑도 2018년 1분기 이내에 세그윗 적용을 앞두고 있는 등 많은 서비스들이 세그윗 적용에 동참하고 있어 전송 수수료를 낮추는데 큰 도움이 될 것으로 보입니다.

2018.02.05
피치 항공, 비트코인 결제 수용을 위해 노력 중

일본의 피치 항공은 비트코인을 포함한 다른 암호화화폐를 티켓 결제에 수용하기 위해 노력 중이라 전했습니다.

실제 피치 항공은 ATM업체인 Bitpoint와 협업하여 이미 결제 서비스를 시작하고자 하였으나 3월로 연기한 바 있습니다.

우리는 서비스 개시 타이밍을 분석하고 있습니다.

2018.02.06
비트코인 $6,000 붕괴

비트코인 가격이 한 때 6,000 USD 아래로 떨어졌습니다. 테더(USDT)의 비정상적인 발행과 한국과 중국을 포함한 동아시아 국가에서의 규제가 원인으로 보입니다.

2018.02.07
미국 암호화화폐 규제 관련 청문회 도중, HODL 언급

미국 암호화화폐 규제 관련 청문회에서 미국상품선물거래위원회(CFTC) 의장인 Christopher Giancarlo는 비트코인에 대한 설명 중 HODL(죽어도 안팔고 가지고 있는 행위)이란 비트코인 커뮤니티 용어를 언급해 눈길을 끌었습니다.

트위터 공간에 가보시면 HODL이란 용어를 접할 수 있습니다. HODL은 Hold on for dear life란 뜻으로 매수한 뒤 팔지 않고 죽자사자 보유하는 것입니다. 제 조카도 HODLer 입니다. 그녀는 비트코인 어떻게 될지는 잘 모르겠지만 게속 보유할 거라고 합니다. 그녀는 사기꾼이 아닙니다. 단지 비트코인을 믿을 뿐 입니다.

Christopher는 상원 의원들의 암호화화폐 관련 다양한 질문에 상당히 해박한 지식을 기반으로 한 답변을 내놓았습니다.

2018.02.09
세그윗(Segwit)이란 무엇인가?

세그윗은 Segregated Witness의 약자로, 굳이 번역하자면 ‘분리된 증인’ 이라 할 수 있습니다.

분리된 증인을 통해 얻을 수 있는 주된 효과는 거래 가변성(Transaction Malleability) 문제를 해결하는 것이지만, 부가적으로 블록 사이즈가 늘어나는 효과를 기대할 수 있습니다. 세그윗 채택 당시 비트코인 블록 사이즈의 포화로 전송 수수료가 지속적으로 오르는 상황이었기 때문에 거래 가변성을 원천 차단하는 보안 강화 효과보다 블록 사이즈 해소가 더 큰 주목을 받았습니다.

세그윗 적용이 어떻게 블록사이즈와 연결되는지 이해하기 위해서는 비트코인 거래의 구조를 이해할 필요가 있습니다.

비트코인의 거래는 입력(input)과 출력(output), 크게 두 가지 영역으로 구분할 수 있습니다.

가령 A 주소에서 B 주소로 0.1 BTC를 보낸다고 하면,

  • 입력에는 A 주소의 0.1 BTC를 잠그는 내용이,
  • 출력에는 B 주소에 0.1 BTC를 허용하는 내용이

포함되어 하나의 거래를 이루게 됩니다. 이 때 실제 A 소유자가 승인한 것이 맞는지 확인하기 위한 서명이 입력 부분에 함께 포함되어야 합니다. 아래 그림에서 주황색 영역이 입력, 분홍색 영역이 출력에 해당하는 부분이고 주황색 입력 안쪽의 회색 부분이 전자서명입니다.

비트코인의 블록에는 이런 거래들이 모여 있습니다. 그리고 세그윗이 적용되지 않은 기존 버전은 이런 거래를 모아 최대 1MB 용량 이내로 하나의 블록을 만들도록 되어있습니다.

세그윗은 ‘분리된 증인’ 이라는 말 그대로, 전자 서명을 인풋에 포함시키지 않고 별도로 모아 1MB 블록을 만듭니다. 그리고 분리된 증인들은 블록 뒤에 별도로 붙여둡니다. 이렇게 하면 기존 1MB 영역에 서명 부분이 제외된 만큼 더 많은 거래를 담을 수 있게 됩니다. 이를 통해 실제 최대 4MB까지 블록 사이즈를 늘린 것과 동일한 효과를 얻을 수 있습니다.

기존 버전과 호환 가능한 이유

세그윗은 하드포크가 아닌 소프트포크입니다. 이는 비트코인 소프트웨어의 업그레이드를 하지 않더라도 세그윗 이전과 세그윗 적용 버전을 모든 노드에서 사용할 수 있다는 뜻입니다.

세그윗 미적용 노드비트코인 코어 기준 0.13.1 이전)은 1MB 이상의 블록은 읽을 수 없지만 거래의 중요한 입, 출력 내용은 1MB 이내에 들어 있기 때문에 호환이 가능합니다. 서명 부분이 빠져 있기 때문에 구버전의 노드는 이를 검증하지 않고 그냥 받아들이지만, 세그윗이 가능한 버전의 노드들이 이를 증명해주기 때문에 문제가 되지 않습니다.

거래 가변성(Transaction Malleability)의 문제

거래 가변성 문제는 일반적인 지갑간 송금에서는 크게 문제되지 않습니다. 하지만 거래소처럼 블록체인을 전산과 연동하여 사용하는 어플리케이션에서는 자칫 문제를 야기할 수 있습니다.

  • 해커 B가 거래소 A 에서 자신의 지갑주소 B1으로 0.1 BTC를 출금합니다.
  • 거래소 A는 거래소가 관리하는 지갑주소 A1에서 B1으로 0.1BTC를 보내는 거래번호(TXID) C1을 네트워크에 전파합니다.
  • 거래소 A는 거래번호 C1을 자신의 전산에 기록합니다.
  • 해커 B는 네트워크 전파를 확인하는 동시에 이 거래의 거래번호만 C2로 바꾸어 네트워크에 전파합니다.
  • 거래 C1과 C2는 거래번호는 다르지만 같은 거래이므로 하나가 채택되면 다른 하나는 거부됩니다.
  • 해커의 운이 좋아 C2가 블록에 포함되어 C1은 지워졌습니다.
  • 해커 B는 거래소 A에게 자신의 거래가 출금되지 않았으니 다시 0.1BTC를 출금 해줄 것을 요청합니다.
  • 거래소 A는 전산에 기록한 C1거래를 네트워크에서 찾아봐도 없으니 다시 B에게 0.1BTC를 송금합니다.

비트코인 외적인 부분의 전산 처리를 잘 하면 큰 문제가 되지 않습니다만 초기에는 이를 악용한 해킹사례가 종종 있었으며, mtGox도 대규모 유실 사태 초기에는 거래 가변성 문제를 핑계 삼기도 했습니다.

세그윗이 적용되면 거래의 입력란에 서명이 포함되지 않으므로 이를 악용하는 방법이 원천적으로 차단됩니다.

2018.02.14
비트코인 백서

역자의 말. Satoshi Nakamoto의 비트코인 백서는 암호화 화폐를 공부하는 이들에게 바이블이라 할 수 있습니다. 하지만, 기술적인 용어가 많이 사용된터라, 짤막한 단문을 그대로 우리말로 옮기면 내용의 전달이 어려운 경우가 많습니다. 이 번역본은 이러한 점을 최대한 해소하고자 필요에 의해 내용을 길게 풀어 쓴 경우가 있습니다. 평역(評譯)에 가까운 것은 아니지만, 역자의 해설이 중간중간 들어갔음을 감안하여 읽어주시기 바랍니다.
- misskiwi

비트코인 : P2P 전자 화폐 시스템

Satoshi Nakamoto
satoshin@gmx.com
www.bitcoin.org


초록. 완전한 P2P 방식의 전자 화폐를 이용하면 금융기관을 통하지 않고 온라인 송금이 가능하다. 전자 서명을 사용하는 것이 일반적인 해결책이지만, 이중지불(double-spending)을 방지하기 위해 신뢰받는 제3자의 개입을 필요로 한다면, 이 역시 우리가 원하는 것은 아니다. 이 문서를 통해 P2P 네트워크를 이용하면서도, 이중지불을 막는 해결책을 제시하고자 한다. 이 네트워크는 암호화 함수를 실행하는 해싱(hashing) 작업을 통해 해시 기반 작업증명(proof-of-work) 체인(chain)에 타임스탬프(timestamp)를 통해 시간을 기록하는데, 이는 작업증명을 다시 수행하지 않고서는 변경할 수 없는 안전한 형태로 저장된다. 가장 긴 체인은 네트워크에 의해 검증된 거래의 연속적인 기록일 뿐만 아니라 가장 큰 연산능력(CPU power)의 결과물이기도 하다. 다수의 연산능력이 네트워크를 공격하는데 동조하지 않는 한, 가장 긴 체인을 만들어 공격자를 무력화할 수 있다. 또한, 네트워크의 구성 요소도 최소한의 것 만을 필요로 한다. 메시지는 가능한 최상의 범위까지 네트워크에 전파되고, 노드는 네트워크에서 언제든 이탈하고 재접속할 수 있으며, 이탈한 기간동안 네트워크가 형성한 가장 긴 작업증명 체인을 받아들이면 된다.

1. 서론(Introduction)

인터넷 상거래는 대부분 금융기관을 신뢰받는 제3자의 역할로 사용하는 전자지불 방식에 의존하고 있다. 이 시스템은 일상의 대부분의 거래에서 큰 무리 없이 작동하지만, 신뢰를 기반으로 한 구조라는 원천적인 약점을 지니고 있다. 금융기관은 중재를 위한 분쟁을 피할 수 없기 때문에 취소 불가능한 거래를 보장하기 어렵다. 게다가 중재에 사용되는 비용으로 인한 거래 비용의 상승, 가능한 최소 거래규모의 제한, 작고 간단한 거래의 원천적인 봉쇄와 같은 문제를 야기하고, 취소 불가능한 서비스가 필요로 하는 지불 방식을 만들지 못해 결국 더 많은 비용을 소진하게 된다. 거래의 취소가 가능한 시스템에서는, 상대적으로 더 많은 신뢰를 필요로 한다. 판매자는 고객을 더 경계하게 되어 그자디 필요하지 않은 정보들도 귀찮게 요구할 것이다. 그럼에도 불구하고 일정 비율의 사기가 발생하는 것은 감내할 수 밖에 없다. 이러한 비용의 증가, 지불 불확실성의 증가는 사람이 직접 실물 화폐를 사용하여 거래하면 해결될 문제지만 이렇게 처리해버리면 신뢰기관 없이 통신 채널만을 통해 지불하는 방법이 없다는 것과 같다.

신용 기반이 아닌 암호화 기술에 기반한 전자 지불 시스템을 이용하면, 신뢰받는 제3자 없이 당사자간 직접 거래가 가능해진다. 전산을 통해 취소가 불가능한 거래는 판매자를 사기로부터 보호할 수 있고, 에스크로 방식을 통해 구매자도 보호할 수 있다. 이 문서에서 P2P 타임스탬프를 이용하여 거래의 시간 순서를 전산을 통해 증명하는 방식으로 이중지불을 해결할 수 있는 방안을 제시하고자 한다. 이 시스템은 공격자 그룹의 연산능력보다 정직한 노드가 더 많은 연산능력을 보유하고 있는 한 안전하다.

2. 거래(Transactions)

전자 화폐를 디지털 서명이 연결된 형태라고 정의하도록 하자. 소유자들은 이전 거래와 다음 소유자의 공개키를 해시하여 전자 서명하고 이를 코인의 뒤에 붙이는 형태로 전송한다. 수취인은 소유권 체인의 확인을 통해 서명의 유효성을 검증할 수 있다.

문제는 수취인의 입장에서 원 소유주가 이중지불을 행하였는지 검증할 수 없다는 점이다. 보편적인 해결책은 이중지불을 확인하는 신뢰할 수 있는 중앙기관, 혹은 조폐국을 두는 것이다. 거래가 발생하면 모든 코인은 조폐국으로 들어가 새 코인이 발행되도록 하고 조폐국을 거친 거래만을 유효한 것으로 인정하면 이중지불의 위험에서 벗어날 수 있다. 그러나 이 방식은 전체 시스템의 운명이 모든 거래에 개입하는 조폐국을 운영하는 주체에 달려있다는 점에서 문제가 있다.

수취인의 입장에서 자신이 받은 코인은 이전 소유자가 어떤 거래에도 (기존 코인의 잔액을 이용한) 서명을 사용하지 않았다는 것을 확인할 방법이 필요하다. 이를 위해서 해당 서명을 사용한 가장 최초의 거래만 계산하면, 뒤에 이어지는 거래에 이중지불이 있는지는 굳이 확인할 필요가 없다. 누락된 거래가 있는지 확인하는 유일한 방법은 모든 거래를 확인하는 것이다. 조폐국을 기반으로 한 모델에서는 조폐국이 모든 거래를 확인하여 어떤 거래가 먼저 이루어진 것인지 결정을 해주면 된다. 이를 조폐국처럼 신뢰받는 주체가 없는 상태에서 해결하고자 한다면, 거래는 공개적으로 알려져야 하며[1], 참가자들이 그들이 받은 것을 순서대로 정리한 단일한 이력을 사용하는 시스템이 필요하다. 수취인은 거래가 발생하면 노드의 대다수가 이중 수취가 아닌 최초의 수취라고 인정하는 증명을 필요로 한다.

3. 타임스탬프 서버(Timestamp Server)

제시하려는 해결책은 타임스탬프 서버에서 시작된다. 타임스탬프 서버는 시간 순으로 기록된 블록들의 해시를 취하고, 신문이나 유즈넷 포스트[2-5]처럼 해시를 발행하는 역할을 한다. 타임스탬프는 해시의 형태로 취합되기 위해 해당 시간에 그 데이터가 존재했음을 증명해야한다. 각각의 타임스탬프는 이전 타임스탬프를 해시의 형태로 포함하는 구조로 결국, 각 타임스탬프는 이전 타임스탬프를 강화하는 형태로 체인을 형성한다.

4. 작업증명(Proof-of-Work)

P2P를 기반으로 한 분산형 타임스탬프 서버를 실현하기 위해서는 유즈넷이나 신문 등의 방식이 아니라, Adam Back의 Hashcash[6]와 유사한 작업증명 시스템을 이용해야 한다. 작업증명 방식은 SHA-256 같은 알고리즘을 통해 해시되었을 때 0(zero)으로 시작되는 값들을 찾는 과정을 수반한다. 해시를 한번 수행하는 것으로 확인하는 이 작업의 소요 시간은 어떠한 평균치에 수렴하며, 요구하는 0의 숫자가 많을수록 소요 시간이 지수의 형태로 늘어나는 특성을 가진다.

타임스탬프 네트워크는 블록 해시를 수행한 결과 만족하는 0비트를 가질때까지 임의의 값인 논스(nonce)를 증가시키는 방식으로 작업증명을 구현한다. CPU가 노력한 결과가 작업증명 조건을 충족하게 되면, 이 블록은 수행한 작업증명과 같은 노력의 일을 반복하지 않는 한 변경할 수 없다. 하나의 블록을 변경하기 위해서는 그 블록만이 아니라 해당 블록에 연결된 모든 블록에 작업증명을 다시 진행해야 하는 것이다.

또한, 작업증명 방식은 다수결 의사결정에서 대의(代議)의 문제를 해결한다. 만약, IP 주소당 하나의 투표권을 부여하게 되면 누구나 IP 주소를 많이 확보하는 것 만으로 시스템을 전복시킬 수 있다. 이에 반해, 작업증명은 연산 능력에 비례하여 투표권을 주는 것이다. 가장 긴 체인은 가장 많은 연산능력(작업증명)을 포함하고 있으므로 이것이 곧 다수의 결정이 된다. 정직한 노드들이 연산능력의 대부분을 차지하고 있다면, 정직한 체인이 가장 빠르게 늘어나 여타 경쟁 체인을 압도할 것이다. 과거의 블록 한 개를 수정하려면 공격자는 해당 블록과 이후의 모든 블록에 작업증명을 과정을 수행하여 정직한 노드의 블록 길이를 추월해야 한다. 느린 공격자가 블록을 따라잡을 가능성은 뒤에 추가로 언급하겠다.

증가하는 하드웨어 속도와 노드를 실행하는 동기를 보상하기 위해 작업증명의 난이도는 시간당 생성되는 블록의 이동평균을 통해 정해진다. 만약 블록이 빠르게 생성되면, 난이도는 증가한다.

5. 네트워크(Network)

네트워크는 아래와 같은 과정으로 동작한다.

  • 새로운 거래들이 전체 노드에 전파된다.
  • 각 노드들은 신규 거래들을 블록에 취합한다.
  • 각 노드들은 블록에 가장 어려운 난이도로 행해진 작업증명을 찾는다.
  • 노드가 새로운 작업증명을 발견하면 해당 블록을 전체 노드에 전파한다.
  • 노드들은 모든 거래가 유효하고, 이전에 사용되지 않은 경우에만 블록을 받아들인다.
  • 노드들은 체인 위의 다음 블록에 이전 블록을 해시 형태로 추가하는 것으로 해당 블록을 받아들였다는 의사를 표시한다.

노드들은 항상 가장 긴 체인을 옳은 것으로 간주하고 인증된 체인을 이어간다. 만일 두 개의 노드가 각기 다른 버전의 다음 블록을 동시에 전파하는 경우, 다른 버전의 블록을 전달받는 노드들이 발생한다. 이 경우, 먼저 전달 받은 블록을 기준으로 작업을 수행하지만, 다른 갈래의 블록도 저장하여 해당 블록이 더 길어질 것에 대비한다. 다음 작업증명이 완료되어 둘 중 하나가 더 긴 체인이 되는 경우, 더 이상 두 블록을 대등하게 취급하지 않고 긴 체인을 형성한 블록을 기준으로 작업한다.

새로운 거래가 꼭 모든 노드에 전파되어야 할 필요는 없다. 최대한 많은 노드에 전파 된다면 이 거래는 블록이 길어지기 전에 포함될 것이다. 블록의 전파가 누락되는 경우에도 크게 걱정할 필요가 없다. 만약 노드가 중간 블록을 전달받지 못하더라도, 이를 요청하여 받게 되면 정상적인 체인을 만들 수 있다.

6. 보상(Incentive)

블록의 첫 거래는 블록의 생성자에게 새로운 코인을 보내는 특별한 거래가 된다. 이는 네트워크를 유지하는 노드들에게 보상이 되고, 중앙관리기구 없이 분산된 형태로 유통되는 구조를 만들 수 있다. 새로운 코인이 지속적으로 공급되는 것은 흡사 금광을 캐는 광부들이 자원을 소진하여 금의 순환구조를 만드는 것과 비슷하다. CPU 사용시간과 전력이 소비되는 자원에 해당한다.

거래 수수료도 보상 중 하나다. 거래에서 출력되는 돈보다 입력되는 금액이 작다면 그 차이는 거래 수수료의 형태로 블록을 생성하는 보상으로 제공된다. 초기 예상 발행량이 모두 발행된 이후에는 거래 수수료만 보상으로 주어지며, 이를 통해 인플레이션에서 벗어날 수 있다.

이러한 보상 체계는 노드들이 선의의 행동을 하도록 독려한다. 만약 이기적인 공격자가 선의의 노드보다 많은 연산능력을 끌어모을 수 있다면, 다른 이의 지불을 갈취하거나, 새로운 코인을 생성하여 사적인 이익을 취하려 할 것이다. 하지만 이러한 방법보다 정해진 규칙에 순응하는 것이 더 많은 코인을 가져다 주기 때문에 공격자가 굳이 공격을 해야할 이유는 없다.

7. 저장 공간의 재사용(Reclaiming Disk Space)

코인을 기준으로 충분히 많은 블록이 이어지게 되면 지난 거래 내역은 저장 공간의 확보를 위해 폐기해도 된다. 블록 해시를 깨지않고 이를 가능하게 하려면 거래가 머클 트리(Merkle Tree)[7][2][5]안에 해시되고, 머클트리의 루트 부분만 블록 해시에 포함되면 된다. 오래된 블록은 나무의 가지를 치는 것처럼 최소화할 수 있다. 내부의 해시는 굳이 저장할 필요가 없다.

거래가 하나도 포함되지 않은 블록의 헤더는 80 바이트(byte)이다. 만약 블록이 매 10분마다 생성된다고 가정하면, 연간 소요되는 데이터는 80 bytes x 6 x 24 x 365 = 42MB가 된다. 2008년에 보편적인 컴퓨터가 2GB 램(RAM)을 장착하고 있으며, 무어의 법칙에 따라 현재 기준으로 1.2GB가 1년에 증가하므로, 블록 헤더가 메모리에 저장되더라도 큰 문제가 되지 않는다.

8. 지불 검증의 간소화(Simplified Payment Verification)

풀 노드(full network node)를 운용하지 않더라도 지불을 검증하는 것은 가능하다. 사용자가 자신이 가장 긴 체인임을 확인할 수 있을 때까지 네트워크 노드들에게 요청하여 가장 긴 작업증명 체인의 블록 헤더의 사본(copy)을 가지고 있으면 해당 거래가 포함된 블록의 머클트리의 가지(branch)를 얻어올 수 있다. 사용자 스스로 거래의 유효성을 체크할 수는 없으나, 체인에 연결된 것을 확인하고, 네트워크 노드들이 이를 받아들이는지 확인한 뒤, 블록이 뒤에 연결되는지 확인하면 할 수록 네트워크가 이를 유효한 것으로 인식하는지 확신할 수 있다.

정직한 노드들이 네트워크를 제어하는 상태에서 이뤄지는 검증 작업은 신뢰할 수 있으나, 공격자의 힘이 강한 네트워크에서는 신뢰가 어렵다. 네트워크 노드들이 검증 절차를 가지고 있다하더라도, 공격자가 지속적으로 네트워크에서 힘을 유지하고 기록을 날조하여 잘못된 거래 내역을 퍼뜨리면 속을 수 밖에 없다. 이러한 문제를 막기 위한 하나의 방편은, 사용자의 소프트웨어가 블록 전체를 다운로드 받아 모순점이 있는지 확인할 수 있도록 하고, 유효하지 않은 블록을 발견했을 때 네트워크 노드들에게 경고성 알림을 보내는 것이다. 이런 면에서, 잦은 거래를 필요로하는 사업분야에서는 빠른 검증과 독립적인 보안체계를 유지하기 위해 자신의 노드를 직접 운용하고자 할 것이다.

9. 가치의 병합과 분할(Combining and Splitting Value)

코인을 중심으로 개별적 관리하는 것도 가능하지만, 이 경우 작은 단위의 거래를 하기는 여러모로 불편하다. 가치가 나누어지거나 합쳐질 수 있도록 하기 위해 다수의 입력과 다수의 출력을 허용한다. 보통, 큰 규모의 단일한 입력이거나 다수의 소액을 합친 입력일 것이며, 출력은 지불을 위한 것 하나와 남는 잔액을 송금자에게 돌려주는 출력 두 개일 것이다.

하나의 거래가 여러 거래들로부터 비롯되고, 이 거래들은 더 많은 거래들로부터 비롯되는 팬아웃(fan-out)형태는 여기서 문제가 되지 않는다. 거래 기록의 완전한 독립 사본을 추출할 필요가 없기 때문이다.

10. 프라이버시(Privacy)

기존의 은행 구조는 담당하는 그룹과 신뢰받는 제3자의 정보 접근 권한을 제한하는 방식으로 프라이버시를 보호한다. 모든 거래를 공개하는 방식에서 은행 형태의 모델을 차용할 수는 없지만, 프라이버시를 유지하면서 모든 거래를 공유하는 것이 불가능한 것은 아니다 : 공개 키들을 익명으로 사용하면 된다. 참여자 모두는 어떤 이가 다른 이에게 얼마를 보냈는지 확인할 수는 있지만, 정작 거래가 누구에 귀속되는지에 대한 정보는 공개하지 않기 때문에 확인할 수 없다. 이는 마치 증권 거래소에서 정보를 공개하는 것과 비슷하다. 시간과 거래량은 공개되지만 누구의 거래인지 알 수 없는 것처럼 말이다.

추가적인 방화벽으로서, 매 거래마다 새로운 키를 사용하도록 하여 소유자 분별이 어렵도록 한다. 다수의 입력이 존재하는 거래일 경우 입력들이 동일한 소유자에서 온 것이 밝혀질 수도 있다. 만약 소유자의 키가 공개되면, 다른 거래의 것도 동일한 소유자라는 것이 밝혀질 위험성이 있으므로 새로운 거래를 행할때 매번 새로운 키를 사용하는 것을 권장한다.

11. 계산(Calculations)

공격자가 정직한 체인보다 빠르게 체인을 이어가려는 경우를 생각해보자. 이 공격이 성공한다해도 시스템에 없던 돈을 새로 만들어내거나 하는 식의 터무니 없는 방식으로 망가뜨릴 수는 없다. 노드들은 유효하지 않은 거래는 받아들이지 않을 것이고, 정직한 노드는 아예 해당 내용이 블록에 포함되는 것조차 허용하지 않는다. 공격자는 오직 자신이 소비한 거래의 코인을 되찾는 공격만 가능하다.

정직한 체인과 공격자 체인의 경쟁은 이항무작위행보(Binomial Random Walk)의 특성을 지닌다. 정직한 체인이 블록 한 개를 성공적으로 생성하는 사건에 +1을 부여하고, 공격자 체인이 블록 한 개를 성공적으로 생성하는 사건에 -1을 부여한다고 하자.

공격자가 적자의 상태에서 시작하여 선의의 체인을 따라잡을 가능성은 도박사의 파산 문제(Gambler's Ruin problem)와 유사하다. 적자 상태의 도박사가 무제한의 신용을 바탕으로 무한대로 게임을 시도하여 손익분기점에 도달했다고 하자. 그가 손익분기점에 도달할 확률, 혹은 공격자가 정직한 체인을 따라잡을 확률은 다음과 같이 계산할 수 있다.[8]

p > q 라 가정한다면, 공격자가 블록을 따라잡을 확률은 블록 수의 증가분에 지수로 감소한다. 공격자가 가능한 빨리 시도하여 운좋게 성공하지 못한다면, 가능성은 시간이 흐를수록 희박해진다.

수신자의 입장에서 송금자가 거래를 변조하지 못할거라 판단되는 충분한 기간은 얼마인지 고려해보자. 공격자인 송금자가 수신자로 하여금 일정 기간동안 자신은 돈을 받았다고 믿도록 하다가 다시 돈을 자신에게 되돌리는 시도를 할 것이다. 수신자는 이에 대한 경고를 받겠지만 공격자의 입장에서 이 알림이 이미 늦은 상태에서 전달되기를 원한다.

수신자는 새로운 키 쌍을 생성하여 송금자에게 공개키를 보낸다. 이는 공격자가 미리 멀리 달아나기 충분한 만큼의 블록을 체인의 형태로 미리 만들어 두는 것을 방지한다. 거래가 전송되면, 정직하지 않은 송금자는 비밀리에 다른 거래 내역을 포함하는 체인의 생성을 시작할 것이다.

수신자는 거래가 블록에 포함되고 z개의 블록만큼이 추가되길 기다린다. 그는 공격자가 어느 정도의 작업을 진행했는지는 모르지만, 정직한 블록들은 평균 블록 생성시간에 따라 생성될 것으로 유추할 수 있다. 공격자의 잠재적 진행률은 포아송 분포의 기대값인 다음과 같다.

공격자가 해당 시점에도 따라잡을 수 있는 확률을 계산하기 위해, 포아송 분포를 공격자가 따라잡을 매 진행률에 곱한다.

분포 상의 무한 소수를 더하지 않기 위해 식을 정리하면...

이를 C언어 코드로 구현하면...

#include 
double AttackerSuccessProbability(double q, int z)
{
	double p = 1.0 - q;
	double lambda = z * (q / p);
	double sum = 1.0;
	int i, k;
	for (k = 0; k <= z; k++)
	{
		double poisson = exp(-lambda);
		for (i = 1; i <= k; i++)
			poisson *= lambda / i;
		sum -= poisson * (1 - pow(q / p, z - k));
	}
	return sum;
}

실행 결과를 보면 z의 증가에 따라, 지수 형태로 확률이 감소하는 것을 확인할 수 있다.

q=0.1
z=0    P=1.0000000
z=1    P=0.2045873
z=2    P=0.0509779
z=3    P=0.0131722
z=4    P=0.0034552
z=5    P=0.0009137
z=6    P=0.0002428
z=7    P=0.0000647
z=8    P=0.0000173
z=9    P=0.0000046
z=10   P=0.0000012
   
q=0.3
z=0    P=1.0000000
z=5    P=0.1773523
z=10   P=0.0416605
z=15   P=0.0101008
z=20   P=0.0024804
z=25   P=0.0006132
z=30   P=0.0001522
z=35   P=0.0000379
z=40   P=0.0000095
z=45   P=0.0000024
z=50   P=0.0000006

P가 0.1%보다 작은 경우를 계산하면...

P < 0.001
q=0.10   z=5
q=0.15   z=8
q=0.20   z=11
q=0.25   z=15
q=0.30   z=24
q=0.35   z=41
q=0.40   z=89
q=0.45   z=340

12. 결론(Conclusion)

지금까지 신뢰에 기반하지 않은 전자 거래 시스템을 제안하였다. 전자 서명으로 이뤄진 기존의 보편적인 형태는 소유권에 대한 강한 통제권을 제공하지만 이중지불을 막지 못하면 불완전할 수 밖에 없다. 이를 해결하기 위해 작업증명을 이용하여 공개적으로 거래를 기록하는 P2P 네트워크를 제안하였다. 이 방식은 정직한 노드들이 다수의 연산능력을 확보하고 있다면 공격자가 쉽게 조작하는 것이 불가능하다. 이 네트워크는 간결하게 설계되어있지만 충분히 견고하다. 노드들은 약간의 협력만으로 합일이 가능하다. 특정한 위치까지 메시지가 전달되지 않더라도 최선을 다하는 것을 기반으로 전달되기만 하면 되기 때문에, 굳이 신원을 밝힐 필요가 없다. 노드들은 언제든지 네트워크에서 이탈했다가 재접속할 수 있으며, 그들이 이탈한 동안 이뤄진 작업증명의 체인을 받아들이기만 하면 된다. 유효한 블록의 뒤에는 블록을 연장하고, 유효하지 않은 블록은 거부하는 행위를 통해 작업증명 연산 능력은 참여자들의 의사표현의 수단이 된다. 이러한 합의 구조는 규칙 및 보상을 통해 유지된다.

참고문헌(References)

[1] W. Dai, "b-money," http://www.weidai.com/bmoney.txt, 1998.
[2] H. Massias, X.S. Avila, and J.-J. Quisquater, "Design of a secure timestamping service with minimal trust requirements," In 20th Symposium on Information Theory in the Benelux, May 1999.
[3] S. Haber, W.S. Stornetta, "How to time-stamp a digital document," In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991.
[4] D. Bayer, S. Haber, W.S. Stornetta, "Improving the efficiency and reliability of digital time-stamping," In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993.
[5] S. Haber, W.S. Stornetta, "Secure names for bit-strings," In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997.
[6] A. Back, "Hashcash - a denial of service counter-measure," http://www.hashcash.org/papers/hashcash.pdf, 2002.
[7] R.C. Merkle, "Protocols for public key cryptosystems," In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980.
[8] W. Feller, "An introduction to probability theory and its applications," 1957.

2018.02.15
비트코인 가격 다시 $10,000 대에 진입

비트코인 가격이 다시 $10,000 대에 진입했습니다. $10,000대에서 이탈 후 재진입까지는 약 2주(14일) 정도가 소요되었습니다.

2018.02.20
Bitfinex 거래소 세그윗 지원

Bitfinex 거래소가 세그윗 지원을 공식 발표했습니다.

2018.02.26
완전한 세그윗 지원 버전의 비트코인 코어 배포

비트코인 코어 0.16.0 버전이 배포되었습니다. 이 버전부터 세그윗을 완전하게 지원합니다.

2018.03.07
Mt.Gox의 신탁 관리자 400만 달러 규모의 비트코인 처분

파산한 거래소인 Mt.Gox의 신탁 관리자는 최근 몇 주간 미화 400만 달러 규모의 비트코인을 처분했다고 밝혔습니다.

법원과 협의한 결과 일정량의 비트코인과 비트코인 캐시를 지금 시점에 매각하여 안정적인 분배를 위한 자금을 확보하는 것이 필요하다고 판단하였습니다. 가급적 높은 가격에 처분하고자 노력했습니다.

2018.03.15
미국의 스타트업, 라이트닝 네트워크 베타 공개

미국 캘리포니아 소재의 스타트업인 Lightning Labs는 자사의 라이트닝 네트워크 소프트웨어 LND의 베타 버전을 공개했습니다.

주요 특징은 다음과 같습니다.

  • 비트코인 코어 지원
  • 새로운 키 생성 방식
  • 광범위한 부분의 보안 문제 해결
  • 경로 찾기 개선
  • 자동화된 계약 처리 방식
  • Segwit 전용
  • 라우팅 노드를 통한 최적화
2018.03.21
트위터 CEO, 비트코인은 세계의 단일 통화가 될 것이라 발언

트위터와 결제 회사 Square의 CEO인 Jack Dorsey는 타임즈에 실린 인터뷰에서 비트코인의 미래에 대한 자신의 생각을 밝혔습니다.

세계는 결국, 단일 통화를 갖게 될 것이고 인터넷도 단일 통화를 사용할 것이다. 개인적으로 나는 그것이 비트코인일 것이라 생각한다.

비트코인이 현재는 '느리고 비싼' 문제에 직면해 있지만, Dorsey는 이 부분 또한 해결될 것이라 믿고 있습니다.

더 많은 이들이 사용할 수록 그런 문제는 사라질 것입니다. 블록체인 위에 구현되는 새로운 기술들이 있으며, 이를 통해 더 쉽게 사용할 수 있을 거라 생각합니다.

2018.04.18
뉴욕주 법무장관, 암호화폐 거래소 13곳 자료요청

뉴욕주 법무장관은 제미니(Gemini), 비트플라이어(BitFlyer), 코인베이스(Coinbase) 등 주요 거래소에 고객자산 보호 방침과 내부통제 관련 정보를 요구하였습니다. 암호화화폐 거래소들의 투명성과 책임성을 강화하기 위함이라고 밝혔습니다.

보도 직후 비트코인 가격은 20분만에 200달러 하락했습니다.

2018.04.26
Mt.Gox가 보관 중이던 16,000 BTC가 이동

Mt.Gox의 콜드 월렛에서 16,000 BTC가 출금된 사실이 Crypto Ground에 의해 알려졌습니다.

해당 지갑은 Mt.Gox의 파산 관리인인 Nubuaki Kobayashi가 관리 중입니다. 비트코인 커뮤니티는 이번 이동이 시장에 판매하기 위한 목적인지 우려하고 있습니다.

2018.04.29
워렌 버핏, 비트코인 투자는 도박과 같다고 언급

워렌 버핏(Warren Buffett)은 지속적으로 비트코인에 대한 부정적인 입장을 밝힌 바 있습니다. Yahoo Finance에 다음과 같은 입장을 밝혔습니다.

당신이 비트코인이나 다른 비슷한 암호화화폐를 구입하는 행동은 실제로 어떤 일도 야기자힞 않습니다. 당신은 그저 다음 사람이 더 비싸게 사기를 바랄 뿐입니다. 그것이 잘못된 것은 아닙니다. 다른 누군가 내일 더 비싸게 사는 도박은 게임과 같습니다. 투자가 아닙니다.

2018.08.09
ETF 연기 소식에 비트코인 $7,000선 붕괴

SEC는 비트코인 ETF의 승인을 9월 말로 연기한다고 밝혔습니다. 이 소식에 비트코인은 미국 달러 $7,000 아래로 급락하였습니다.

2018.08.23
뉴욕증권거래소가 제안한 두 건의 ETF 승인 거절

SEC는 뉴욕증권거래소(NYSE)가 제안한 ProShares와 Direxion ETF의 승인을 거부하였습니다.

2018.08.31
비트코인 트랜잭션이 페이팔 사용액을 추월

비트코인 트랜잭션이 총 1.3조 USD를 기록하였습니다. 이는 송금 서비스인 페이팔(PayPal)보다도 많은 금액입니다. 비트코인 트랜잭션 중 거래소의 내부 관리를 위한 이동이 포함되어 있어 전체가 순수 전송액이라 보기는 어렵지만, 페이팔이라는 상징적인 서비스의 사용액을 넘어선 것은 의미있는 사건 입니다.

2018.09.06
골드만 삭스의 암호화화폐 거래 데스크 연기 소식에 비트코인 급락

비지니스 인사이더(Business Insider)는 골드만 삭스(Goldman Sachs)가 당장, 암호화화폐 거래 데스크를 개설하는 것보다 비트코인을 안전하게 보관할 수 있는 서비스에 우선 집중할 것이라고 언급하였습니다.

이 뉴스로 비트코인 가격은 하루만에 미국 달러기준 $7,300 수준에서 $6,200까지 하락하였습니다.

2018.09.07
골드만 삭스 CFO, 암호화화폐 거래 데스크 연기는 허위 보도라 주장

골드만 삭스의 CFO인 Martin Chavez는 골드만 삭스가 암호화화폐 거래 데스크를 연기한다는 주장이 허위 보도(fake news)라고 주장하였습니다.

제가 이런 단어를 사용하게 될 줄은 꿈에도 몰랐습니다. 하지만 사용할 수 밖에 없네요. 그건 허위 보도입니다.

CFO의 철회 발언에도 비트코인 시세는 $100 정도 소폭 상승하는 정도에 그쳤습니다.

2018.09.18
비트코인 CVE-2018-17144 버그 패치

비트코인 코어 팀은 2018년 9월 17일 반결된 CVE-2018-17144 버그에 대한 패치 버전인 0.16.3을 새롭게 배포했습니다. 해당 버그는 비캐시(BCH) 개발자 중 한 명인 Awemany가 제보한 버그로 이중 지불을 야기할 수 있는 심각한 문제가 있는 버그입니다.

2018.10.04
Mike Novogratz, 올해 비트코인 가격은 9,000 달러가 한계라고 전망

2017년 12월 비트코인 급등기에 비트코인의 8,000달러 부근으로 하락할 수 있다는 정확한 분석을 했던 Mike Novogratz는 올해 비트코인 가격이 9,000 달러를 넘기기 어려울 거승로 전망했습니다.

암호화화폐 관련 업계 전체가 어렵고, 이로 인해 업체들이 자산을 매도하고 있는 상황이라고 진단하였습니다. 비트코인이 10,000 달러를 넘기려면 2019년 1분기 정도 까지는 기다려야 할 것이라며, 지난해 비트코인이 2018년 40,000 달러까지 상승할 수 있다던 입장을 번복했습니다.

2018.10.15
테더 불안감으로 20% 가까이 급등

테더(USDT)에 대한 불안감으로 Bitfinex 거래소 내에서 비트코인 가격이 7,800 달러 가까이 치솟았습니다.

다른 거래소도 소폭 상승하는 양상을 보이긴 했지만, 가장 많은 상승을 기록한 곳은 테더 이슈에 가장 민감한 Bitfinex에서 발생헀습니다.

2018.11.02
윙클보스 형제, 찰리 슈렘을 비트코인 사기 혐의로 고소

윙클보스(Winklevoss) 형제는 찰리 슈렘(Charlie Shrem)을 자신들의 5,000 BTC 횡령 혐의로 고소하였습니다.

슈렘은 변호사를 통해 이는 사실이 아니라고 주장하고 있습니다.

2018.11.06
기네스 팰트로, 트위터를 통해 비트코인 투자 가이드 홍보

기네스 팰트로(Gwyneth Paltrow)가 만든 라이프 스타일 브랜드 GOOP은 '비트코인과 암호화화폐의 기초 - 그리고 투자하는 방법(The Basics of Bitcoin and Cryptocurrency - and How to Invest)' 이란 Q&A 형식의 글을 등록하였습니다.

이 글은 비트코인이 무엇인지에 대한 간단한 내용부터 블록체인, 채굴 등에 대한 내용과 함께 Abra 지갑을 통해 구매하는 법을 담고 있습니다.

기네스 팰트로는 자신의 트위터에 이를 소개하는 트윗을 작성하였습니다.

2018.11.15
비캐시의 내란으로 인해 비트코인 가격 급락

비캐시는 로저 비어와 우지한을 중심으로 하는 ABC와 크레이그 라이트를 중심으로 하는 SV진영으로 대립각을 세우고 있습니다. 비캐시의 내란으로 비트코인의 해시를 비캐시에 투입할 명분이 생겼고, 이로 인해 비트코인 가격은 미국 달러 기준 5천불 중반까지 급락하였습니다. 이 가격은 2018년 연내 최저 수준에 해당합니다.

2018.11.20
4천 달러대로 급락

하락이 가속되는 가운데 비트스탬프 기준 4,237 달러까지 급락하였습니다. 비캐시의 내분과 SEC의 암호화화폐 규제 강화가 주된 이유로 분석하는 이들이 많습니다.

2018.11.21
Bakkt, 비트코인 선물 거래 연기

Bakkt의 선물 거래 일정이 2019년 1월 24일로 연기되었습니다.

Bakke의 CEO Kelly Loeffler는 미디엄을 통해,

제품을 출시하는 것은 새로운 과정, 위험 완화를 위한 반복적인 테스트를 거치게 됩니다. 암호화 화폐의 경우, 새로운 자산이 이 과정을 제대로 거쳐야 합니다. 따라서 우리가 일정을 조정하는 것이 합리적인 결정일 것입니다.

와 같이 밝혔습니다.

2018.11.25
3천 달러대 진입

연일 하락을 지속하고 있는 비트코인의 4천 달러 지지가 무너지며, 3천 달러 구간에 진입했습니다. 다소 가격이 높게 형성된 Bitfinex 기준으로도 한때 3819 달러까지 급락하였습니다.

2018.11.25
미국 오하이오 주, 비트코인을 세금 납부 수단으로 허용

미국 오하이오 주는 비트코인을 통한 세금 납부를 허용하였습니다.

ohiocrypto.com을 통해 등록할 수 있으며, 비트코인 결제 시스템 운영사인 BitPay에 의해 처리됩니다.

2018.11.28
크레이그 라이트의 사토시 나카모토 인증은 거짓

크레이그 라이트(Craig Wright)는 본인이 사토시 나카모토임을 증명하기 위해 서명 증명을 자신의 블로그를 통해 공개했습니다.

크레이그가 증거를 제시한 직후, 사람들은 그가 정상적인 서명을 통해 증명에 성공했다고 파악했지만, 이 방식은 기술적인 트릭이 존재하고 결국 그가 제시한 증거라는 것은 유효하지 않습니다.

가장 간단하고 완벽하게 자신이 사토시 나카모토임을 증명하는 방법(다른 이가 불특정하게 제시하는 문자열에 개인키로 서명하여 서명을 검증하는 방식)을 두고, 굳이 이런 말도 안되는 방식을 택한다는 것부터 문제가 있습니다. 그는 어떤 것도 증명한 바가 없습니다.

비트코인의 서명 확인

비트코인은 ECDSA를 이용한 공개키와 개인키 쌍을 이용하여 권한을 관리합니다. 그리고 송금을 하지 않더라도(트랜잭션을 만들어 노드에 알리지 않더라도) 개인키의 소유권을 확인할 수 있는 방법이 있습니다. 개인키를 소유하고 있다면 자신의 개인키와 문자열을 가지고 서명 알고리즘을 거쳐 전자 서명을 만들 수 있습니다. 상대방이 임의의 문자열을 얼마든지 바꿔 요청하더라도 개인키의 소유자라면 유효한 서명을 만들 수 있습니다.

  • A : 내가 비트코인 XXX 주소의 소유자입니다.
  • B : 그렇다면 iamsatoshi 라는 문자열로 서명해보시지.
  • A : 여기 서명입니다.

받은 서명을 확인하여(대부분의 지갑 소프트웨어가 서명의 생성 및 확인 기능을 지원합니다.) 유효한 서명임이 입증되면 그가 개인키의 소유주임을 확인할 수 있습니다. 미심쩍다면 문자열을 바꿔가며 요청하면 더 확실하겠지만 굳이 수차례 반복할 필요까지는 없습니다. 불특정 문자열에 유효한 서명을 생성하는 것은 거의 불가능에 가깝기 때문입니다.

크레이그 라이트의 증명

크레이그 라이트는 사토시의 지갑임이 유력한 주소를 택하여 서명을 제시했습니다.

하지만 그가 제시한 방식은 개인키가 없어도 가능한 방법입니다.

사토시 지갑(으로 추정되는)에서 발생한 트랜잭션의 입력 스크립트를 보면 3045022100...cce01 라는 서명 부분을 확인할 수 있습니다.

이 서명은 OP_CHECKSIG라는 알고리즘을 통해 생성된 서명입니다. 이 알고리즘은 트랜잭션의 바디 부분을 추출하고 SHA 해시를 적용한 뒤 ECDSA를 거치는 순서로 제작됩니다. 그리고 여기서 사용된 모든 데이터는 당연히 이미 블록체인에 공개되어 있습니다.

위 트랜잭션에서 보면 12cb.. 주소로 출력하는 부분이 있습니다. 이 출력 스크립트는 0411db93e1dcd...656b412a3 입니다.

비트코인 클라이언트의 getrawtransaction을 통해 해당 트랜잭션의 raw 트랜잭션을 구한뒤 위 공개된 정보를 통해 변형하고, 해시코드 01000000을 더하면 서명을 위한 새로운 raw 트랜잭션 바디 데이터를 얻을 수 있습니다.

그리고 여기에 SHA 해시를 한번 적용한 결과를 자신의 웹사이트에 올려둔 것입니다. 그리고 보다시피 이 증명 과정에서 개인 키가 사용된 적은 없습니다.

이미 사용된 사인을 재사용한 것에 불과합니다. 새로운 메시지에 사인을 하는 것이 훨씬 쉽고 확실한 방법입니다. 그럼에도 불구하고 그는 말도 안되는(그가 사토시 나카모토 본인이라면 더더욱) 방법을 택했고, 더 쉽고 확실한 방법은 한 적이 없다는 점입니다.

그가 사토시 나카모토일수도, 아닐 수도 있습니다.

하지만 명확한 것은, 크레이그 라이트는 한번도 본인이 사토시 나카모토임을 증명하지 못했습니다.

2018.12.03
채굴 난이도 15% 이상 급락

비트코인 채굴 난이도가 약 15.13% 가까이 급락했습니다. 비트코인 가격의 하락으로 채굴 채산성이 악화되었고, 이에 따라 채굴을 멈춘 이들이 많은 것과 비캐시의 분열로 해시레이트가 일부 빠져나간 것이 주 원인으로 보입니다. 지난 회차에서도 약 7.39% 하락한 것에 이어 두 번 연속으로 큰 폭으로 난이도가 하락했습니다. 현재 비트코인 네트워크의 전체 해시레이트는 약 40,418 PH/s 입니다.

2018.12.07
비트코인 ETF를 재차 연기한 SEC

SEC가 비트코인 ETF 승인을 다시 연기했습니다.

Van Eck SolidX 비트코인 ETF에 대한 승인은 최대 2019년 2월 27일까지 연장할 수 있습니다.

2018.12.25
일본 GMO, 비트코인 채굴기 제조 중단

2018년에 비트코인 ASIC 채굴기 사업에 뛰어든 일본의 GMO가 제조 중단을 선언했습니다.

비트코인 시세의 급락과 채산성 악화로 2018년 4분기 심각한 손실을 입었고, 이로 인해 채굴기 제조를 중단하겠다고 발표했습니다. 기존의 채굴 장비는 채굴 비용이 효율적인 곳으로 이전하여 자체 채굴은 지속할 예정입니다.

2018.12.31
DMM도 비트코인 채굴 사업 중단

2017년말 부터 2018년 초, 일본의 두 거대기업 DMM과 GMO는 비트코인 채굴 사업에 진출하였습니다.

하지만 약세장으로 인한 손실을 극복하지 못하고 GMO가 이미 채굴 사업 축소를 발표한 이후, DMM도 채굴 사업 중단을 발표했습니다.