비트코인이 탄생하기 전까지의 기술

비트코인은 블록체인이라는 기술을 통해 만들어진 암호화폐입니다. 블록체인 기술은 또한 여러 기술들이 합쳐져 만들어진 결과물입니다. 그렇다면 오늘은 어떤 기술들이 합쳐져 만들어진 것인지 알아봅시다.

1. 장부에 사용된 기술

(1) Linked timestamping
(2) Merkle trees
(3) State Replication

(1) Linked timestamping
첫번째로 장부에 사용된 기술인 Link timestamping부터 살펴봅시다. 비트코인의 기본적인 장부 데이터 구조는 Stuart Harber와 Scott Stornetta이 1990년부터 1997년도까지 연구한 논문에서 가져온 것입니다. 비트코인은 논문과 함께 PoW 방식을 추가하면서 보안성을 좀 더 강화하였습니다. 스튜어트와 스캇은 디지털 공증 서비스를 만들어 문서에 시간을 기록할 수 있는 타임스탬프 문제를 해결하였습니다.

스튜어트와 스캇의 논문을 한 문단으로 요약하자면, 서류를 만든 사람이 모든 서류의 생성시간을 확인하고 서류에 타임스탬프를 통해 서명을 합니다. 또한, 이전에 전송하였던 문서에도 서명을 합니다. 이전의 문서는 또 그 이전의 문서의 서명을 가지고 있습니다. 이런식으로 문서들은 긴 체인들을 가지게 되고, 이 체인들의 이전의 시간을 가르키는 서명들의 연결을 통해 블록체인에 기술에 기본적으로 사용되는 연결된 타임스탬프 기술을 말합니다.

이어 두번째 논문에서는 서명보다는 해시라는 방법을 통하여 문서들을 연결하는 방법을 만들어내는 것이 PKI관련 위험요소들을 피하며 훨씬 간단하고 빠르게 만들어낼 수 있습니다. 각각의 문서들을 연결하는 대신 문서를 그룹으로 나누어 블록들에 넣는 방법도 고안하였습니다. 각각의 블록들은 머클트리를 통하여 문서들을 연결합니다.

https://en.wikipedia.org/wiki/Linked_timestamping#/media/File:Hashlink_timestamping.svg

(2) Merkle trees
이번엔 장부에 사용되는 머클트리라는 기술에 대해서 알아봅시다. 머클트리는 Ralph Merkle의 이름에서 가져온 것인데요, 랄프 머클은 1980년 비대칭 암호학의 선구자입니다. 랄프 머클은 digital certificates에서 퍼블릭 디렉토리를 위한 digest를 만들 수 있도록 하였습니다.

머클 트리는 두 가지의 중요한 특징을 가지고 있습니다. 첫번째로, 해시는 가장 마지막의 블록의 해시를 digest로 지정합니다. 그러므로 만약 가장 마지막의 해시를 알고있다면, 장부의 나머지 부분을 다운로드하여 아무것도 변하지 않았다는 것을 증명할 수 있습니다. 또한, 특정 트랜잭션이 장부에 포함되어 있다는 것도 효율적으로 증명할 수 있습니다.

(3) PBFT
분산장부는 포크를 피해갈 수 없습니다. 어떤 노드에서는 블록 A가 가장 마지막 블록이고, 또 다른 노드에서는 블록 B가 마지막 블록이라고 생각할 때, 이러한 문제점을 Linked stamping은 포크를 피해갈 수 없습니다. Fault-tolerant distributed computing field는 이 문제를 연구하였고 state replication model (SRM)을 만들어냈습니다. State replication이란, 노드들을 똑같은 상태의 변화를 순서대로 할 수 있도록 만드는 것을 말합니다.

-SRM: Paxos는 Leslie Lamport가 1998년 Turing Award에서의 수상으로 
Paxos는 전체노드의 2분의 1미만이 정지해도 시스템이 동작합니다. 만약 최대 f개의 노드가 정지할 수 있다면, 최소 2f + 1개의 (Replica) 노드가 필요합니다. PBFT란 Miguel Castro와 Babara Liskov가 1999년 발표한 논문에 나온 기술을 말합니다. 특징은 전체 노드의 3분의 1 미만이 규칙을 거기고 무작위로 행동해도 시스템이 정상동작하는 최대 f개 노드가 무작위로 동작할 수 있다면 최소 3f + 1개 (Replica)의 노드가 필요합니다.

2. PoW에 사용된 기술

(1) The orgins
(2) Hashcash
(3) Proof of work & Reusable PoW

(1) The orgin
PoW와 관련된 기술은 1992년 Cynthia Dwork와 Moni Naor가 스팸문제를 해결하기 위해 (또한 시빌 공격이나 서비스 거절 문제에도 적용되어 사용할 수 있습니다.) 만들어졌습니다. 이메일 수신자는 오직 보낸이가 어느정도의 컴퓨터 연산의 작업을 거쳤다는 증명을 가진 이메일들만을 확인하는 것을 말합니다. 
Trapdoor란 중앙권한을 가진 사람들만이 문제를 풀 수 있도록 하는 기능을 말합니다.

1933년 발표된 Pricing via Processing or Combating Junk Mail이라는 논문의 초록을 보면 “우리는 정크메일을 막기위해, 공유된 자료에 대한 접근을 통제하기 위한 연산 기술을 고안하였습니다. 주요 아이디어는 사용자로 하여금 어렵지만 그렇게 어렵지 않은 연산을 하도록 하여 자잘한 사용을 방지하는 것입니다.

(2) Hashcash
Hashcash는 Adam Back이 1997년 고안한 것으로 David Chaum의 DigiCash에 대한 대안책으로 등장하였습니다. 해시캐시는 trapdoor가 없고 중앙 권한도 없습니다. 또한, 디지털 서명 대신 오직 해시 기능만 사용하는 것이 특징입니다. 해시캐시는 POW자체를 cash (hash stamp)로 보았습니다. 하지만, 해시캐시를 돈으로 볼 수 없는 이유는 이중지출 문제를 해결하지 못하였고, 주고받을 수도 없습니다.

(3) Proof of work & Reusable PoW
POW는 스팸을 방지하려 했지만, 실패하였습니다. 가장 큰 차이점은 서로 다른 장비의 퍼즐을 해결하는 속도입니다. (Spammers could be make custom H/W with small money) 이러한 문제에 대한 해결방법은 해시캐시가 제안했던 것처럼, 퍼즐 솔루션을 캐시화 할 수 있게하는 것입니다. 예를 들어, 돈을 Puzzle solution으로 해결하려는 프로젝트에는 Wei Dai의 B-money와 Szabo의 Bit gold가 있습니다.

2004년에 Harold Thomas Finney는 B-money와 hashcash를 합친 Reusable proofs of work을 만들어냈습니다. Finney는 사이버펑크에 메일을 보내며 자신이 만든 hashcash를 베이스로 한 새로운 서버를 사용하고 싶다고 하였습니다.

이 시스템은 해시캐시를POW 토큰으로 받습니다. 그리고 그 댓가로 RSA 사인된 토큰들을 생성합니다. 이 토큰들은 Reusable Proof of Work (RPOW)라고 부릅니다. RPOW는 사람들 간에 전달을 할 수 있고, 각각의 단계마다 새로운 RPOW로 교환될 수 있습니다. 각각의 RPOW나 혹은 POW토큰은 오직 한 번만 사용될 수 있습니다.

하지만 새로운 토큰을 만들어 내기 때문에 마치 같은 토큰을 다른사람에게 주는 것과 같은 결과를 냅니다. RPOW는 같은 가치를 가진 POW나 RPOW에서만 만들어지기 때문에 희소성이 있고 해시캐시와 같이 가치성이 있다고 할 수 있습니다. 하지만, 해시캐시와의 차이점은 다시 사용할 수 있다는 것입니다.

3. Public key as identities
비트코인의 트랜잭션은 퍼블릭 키를 이용하여 가치로 전환될 수 있습니다. 언제든지 새로운 짝키를 만들어내어 새로운 정체성(혹은 registry)을 만들어낼 수 있습니다. 이러한 특징은 탈중앙화된 정체성을 관리하는 방법을 말하는데, 사이버 펑크는 이러한 퍼블릭키의 익명성의 특징을 단어 ‘Pseudonyms’에서 이름을 따와 NYM이라고 불렀습니다. 사이퍼 펑크는 Cipher 암호학과 Cyberpunk 사이버 펑크라는 이름을 합쳐 Cypherpunk라는 이름을 만들어냈습니다. 사이버 펑크는 암호학과 개인정보를 숨길 수 있는 기술을 사회적, 정치적 변화를 일으키기 위해 사용하는 운동가를 지칭합니다.

4. Smart contract
1994년 스마트 컨트랙트는 Nick Szabo에 의해 신뢰할 수 없는 컴퓨터 인터넷 환경에서 고도로 발달된 계약을 준수하도록 하는 프로토콜을 최초로 만들어냈습니다.

5. 비트코인에 사용된 기술 총정리

-퍼즐 솔루션 기술: 위의 모든 기술을 합쳐 사토시 나카모토는 비트코인을 만들었습니다. 비트코인의 퍼즐 솔루션만으로는 cash가 되지는 못합니다. 하지만, 장부의 보안성 강화에는 기여를 합니다. 
- POW 기술: 비트코인은 채굴자들에 의한 POW 문제를 해결하는 방식을 사용하였습니다.
-Linked timestamping: 채굴자들은 퍼즐을 풀고 새로운 블록을 만들어 장부에 연결하는데 이것은 linked timestamping 기술을 사용한 것입니다. 
-채굴자들이 새로운 블록을 만들면 새로운 단위의 화폐로 보상을 받는다.
-가치가 있는 화폐를 통해 채굴자들에게 보상을 하는 것은 꼭 필요합니다.
-Timestamping과 Byzantine agreement 연구진들은 노드들이 정직할 수 있도록 보상한다는 생각을 하지 못했습니다. 2005년도까지 익명성을 보장하기 위해 POW를 사용해야 한다는 생각도 하지 못했습니다. 또한 해시캐시, 비머니,빗골드는 이중지출 문제를 해결하기 위해 합의 알고리즘을 도입해야된다는 생각을 하지 못했습니다. 
-하지만, 위의 모든 내용들은 사토시 나카모토가 조합하여 이중지출 문제를 해결하고 비트코인을 만들어낼 수 있게 되었습니다.