Bitcoin(2)

이전 포스트에서 말했던것과 같이 Bitcoin을 신뢰성있고 투명하지만 익명성있는 그렇게 만 있었던 algorithm, Block chain에 대해서 파고 들어가보자. Block chain은 말그대로 Block이 chain을 형성하여 여러개가 얽혀있는 관계다. 종이가 없던시절 대나무를 종이처럼쓰던 시절이 있을것이다. 이때 대나무를 여러개 엮어서 하나로 가지고 다녔다고 하는데 맞는것인진 모르겠다. 그래서  이 책이라는 한자가 이러한 모양이 나왔다고 어디서 주어들었는데 찾아보진않았다. 여튼 이렇게 하나로 엮은 모양의 Block이라는 것이다. 그럼 흐름을 보면서 이해해본다. 운이좋게도 누군가 인포그래픽을 사용해서 한눈에 보여주었다.

Joshua라는 친구가 이렇게 한눈에 보기쉽게 만들어줬다. 고마워 Joshua. 그럼 하나하나 짚고 넘어가보자. 

우선 내가 곽진산한테 비트코인을 보낸다. 이때 필요한게 비트코인 지갑인데, 컴퓨터에 설치되어있는 프로그램이라고 생각하면되겠다. 이 프로그램은 내 지갑이되며 이 지갑내에서 여러개의 계좌를 관리할 수 있다. 계좌는 복잡한 여러글자로 되어있다. 아마 곽진산도 이런 복잡한 계좌글자를 가지고 있을것이다. 하지만 이 컴퓨터 세상에서는 복잡함은 필요없다는 걸 알고있다. 왜냐하면 control+C,V가 있기 때문이다.

나의 계좌에서 상대방의 계좌로 이제 비트코인을 쏴줄것이다. 그럼 이제 계좌를 고르고 얼마를 보낼지 정한다음에 "쏴주기"를 클릭하는 순간, 사용자는 모르는 엄청난 일을 하게된다.

우선 첫번째로 내 계좌인지 알아보기 위해 암호를 풀어야한다. 이때 자신이 가지고있는 비밀키로 이 암호를 풀면 내가 이 계좌의 주인이라고 확인을 시켜줄 수 있다. 비밀키-공개키 알고리즘은 암호학의 기초로서 단방향성을 가진 함수를 사용한다. 즉, 2개의 수를 곱하는건 누워서 떡먹는 수준이다. 하지만 어떠한 큰수가 어떤 소수들로 나누워질수 있는진 알기힘들다. 소인수분해의 어려움을 가지고 이 알고리즘이 작동하는것이다.

여기서 두 수를 곱한건 공개키가 되고 이 공개키를 소인수분해 한 것이 비밀키가 된다. 즉, 공개키를 보여줘도 다른사람들은 이 암호를 풀지 못하게 된다. 이  자세한건 이 글 전체의 몇배를 써야될지 모르기 때문에 기회가 되면 따로 포스팅하겠다. 

여튼 비밀키로 내 계좌인것을 입증시켜주면 이제 그사람한테 보내면끝인가? 아니다. 이 것은 내 계좌가 맞는지 아닌지만 확인한거다. 이제 이 계좌에 돈이 있는지 없는지를 확인해야한다. 이것을 확인하는 방법이 블록체인 알고리즘으로서 향후 여러 확인시스템, 공유시스템을 이루는데 많이 사용될것으로 보인다. 귀아프게 들었을지 모르겠지만 이제 사물인터넷, 유비쿼터스니 뭐니하며 컴퓨터의 연결에 대한 새로운 이름을 붙이는 것 자체가 진부해져버린 세상이 되어버렸다. 이제 너무 당연하게 네트워크로 연결되어 데이터를 공유하며 작동한다. 이런 공유시스템에서는 어떤 작업을 했니, 안했니, 그렇다면 안전하게 잘해서끝냈니 안끝냈니등의 협업 시스템이 구축되어야 한다. 이러한 문제들은 컴퓨터가 작업을 공유할 때부터 논의되어왔다. 하지만 풀기어려운문제로 남겨져있었다. 비잔틴장군의 문제로 알려져있다.

비트코인은 이 확인하는 방법에 있어서 비트코인이 근간이되는 핵심적인 알고리즘을 사용한다. 블록체인이라는 것인데, 거래 내역이 적혀있는 블록을 연결고리처럼 생성하므로 붙여진 이름이다. 이 거래내역서를 네트워크에 연결되어있는 사용자들이 모두 가지고 있다. 그리고 이 거래내역서는 중앙에서 관리하는것이 아니라 모두가 같이 관리한다. 

이 거래내역서에 10분에 한번씩 거래내역을 추가하게 되는데, 추가할때 상당한 연산이 필요한 계산을 하게된다. 그리고 거래내역에 안정성을 위해 네트워크에 연결된 과반수가 인정하는 거래만을 기록한다. 즉, 이때 악의적인 이용자가 거래내역서를 조작해서 네트워크에 뿌려봤자 채택이 되지않는다. 왜냐하면 악의적인 이용자보다 그렇지 않은 사람이 많기 때문이다. 2013년 말에 벌써 세계의 슈퍼컴퓨터 1~500위까지의 연산능력을 더한 것보다도 더 많은 컴퓨팅 능력을 비트코인 네트워크가 가지고있다고한다.

그리고 이것을 만든 사토시님이 머리를 잘쓴게, 블록체인을 생성하는 계정에게 인센티브를 제공한다. 그리고 이 블록체인을 생성하는것을 채굴이라고하는데, 인센티브가 주어지므로 금을 캐는 것에 빗댄표현이다.

인센티브는 갈수록 연산이 어려워지고(매 2016블록 마다), 채굴로 제공되는 비트코인은 4년마다  기하급수적으로 줄어든다. 그리고 2100만개가 다 공급되면 더 이상의 채굴은 없어진다. 즉 비트코인의 총량이 정해진것이다. 아마 그이후에는 거래수수료가 인센티브로 돌아올것이다. 

그럼 총량이 정해져 있다면 점점 화폐가치가 올라가는 디플레이션이 올것이다. 이 문제는 1비트코인을 소수점 8자리까지 분할해사용할 수 있으므로 상품의 가격하향에 반응 할 수 있게 했다.