비트코인이란 무엇인가

IT 2018. 2. 11. 10:50

- 13년 12월 중국정부는 자국 화폐경제의 통제에 대한 방해물로 등장한 비트코인을 거래중지시킴. 하지만 지금도 전세계에서 비트코인 거래가 많은 국가중 한 곳이 중국이다. 중국정부가 규제를 하려 해도 그 비트코인의 주체는 실체가 있는 화폐발행집단도 아니고 특정 국가도 아닌 우리가 사는 세상의 질서(수학)이어서 할 수가 없다. 이런 비트코인은 자기자신의 논리외엔 누구의 간섭없이 정해진대로의 화폐기능을 하며 심지어 현재 벌어지는 간편결제에 대한 가장 뛰어난 방법을 갖고 있음. 또한 수학의 논리가 중재를 하기 때문에 우리에게 터무니 없는 결제수수료 등도 요구하지 않는다.
- 비트코인에는 코인은 없다. 붕어빵에 붕어가 없듯이 기존의 화폐처럼 지폐의 실물을 대체하는 비트가 있는 것이 아니라, 단지 거래 당사자들 간의 암호화된 의사표시만 있을 뿐. 예를 들어 내가 지금 '내 소유의 10BTC를 당신에게 보낸다'는 의사표시를 하고 그 내용이 모든 비트코인을 이용하는 사람이 인지할 수 있는 상태에 놓이면 내 소유의 10BTC는 책을 읽는 여러분의 것이 된다. 상대에게 전달되는 것은 이런 의사표시를 암호화해서 보내는 것이지 가치있는 실제의 그 무엇이 움직이는 것이 아니다.
- 전자화폐를 이용한 거래과정을 이해하기 위해 먼저 전자화폐의 정의부터 정확히 내려보아야 하는데 이를 '디지털 서명이 된 거래내역 기록'이라 할 수 있음. 즉 특정개인이 소유하는 전자화폐라 함은 특정 컴퓨터나 물리적 장소에 들어 있는 실재적, 또는 MP3의 음악같이 존재하는 특정 파일이 아니라 디지털 서명이라는 컴퓨터의 암호화 방식으로 기록된 금융거래의 기록을 가리킴. 따라서 전자화폐를 이용한 거래라 함은 이전에 기록된 내역에 기반하여 거래를 하고자 하는 당사자가 새롭게 의도하는 거래내역을 기록하여 상대방에게 전달하는 과정. 이 과정은 컴퓨터 네트워크를 통해 전달되며 디지털 서명기술을 사용하여 내역을 암호화한 다음 전달하게 됨.
- 디지털 서명이라는 개념이 익숙하지 않는 독자들이 많다. 내가 온라인 상에서 어떤 메시지를 타인에게 보내는데 그 타인의 입장에서 자기가 받은 메시지가 내가 보낸 메시지라고 확신을 갖도록 그 메시지에 내가 어떤 조작을 하는 것이 디지털 서명이다.
- 거래내역을 전달하는 시스템의 문제점 중 하나는 돈을 받는 수취인 입장에서는 보내는 송금인이 이런 내역을 자기 말고 타인에게 먼저 사용하고 나서 자기에게 중복 사용할 수 있는 가능성이 있어, 이 거래에 대한 신뢰성 확보가 필요. 즉 자기가 받은 이 거래내역이 결코 취소되지 않고 언제든지 모두에게 인정 받을 수 있어야 한다는 것. 현재는 이런 거래의 신뢰성 확보방안으로 이 거래내역을 은행과 같은 금융기관에 보내 확실한 인증을 거치는 방법이 있는데 이는 결국 순수한 당사자들만 개입시키려 하는 우리의 새로운 금융시스템의 원리를 벗어나게 됨. 따라서 제시하고자 하는 새로운 방식에서는, 은행과 같은 중재금융기관의 개입없이 수취인이 받은 거래내역이 거의 취소될 수 없고 모두 인정받을 수 있는 방식을 제안. 구체적으로 이런 방식을 컴퓨터 네트워크를 통한 공개검증방식이라 부를 수 있는데, 이런 공개검증을 통한 거래가 확인되면 수취인은 그 기반위에서 새로운 거래를 타인과 할 수 있으며, 그 타인또한 공개금증된 내역을 받아들임으로서 새로운 소유권을 획득하는 방식이다.
- 온라인상에서 전자화폐를 이용한 새로운 거래내역들이 일어나면 이 거래내역은 일어난 시간과 함께 전 네트워크로 퍼지게 되는데, 이런 거래내역을 10분마다 모아 블럭이라 불고, 이 블럭속에 있는 거래들을 네트워크상의 누군가가 인증하면 이 블럭속의 모든 거래는 인정되어지고 다른 사람들에게도 알려지게 되어 공신력을 얻게 됨. 즉 거래가 체결되었음을 보장받는 것. 또 다시 10분간 거래를 수집하여 이같은 과정을 반복하여 거래를 기록하게 되며, 이렇게 함으로써 매 10분마다 공신력을 얻은 거래의 블럭들이 순서대로 존재하게 되는데 이의 기록들은 암호화되어 네트워크를 통해 컴퓨터상의 전자화폐 이용자의 컴퓨터에 저장되고 업데이트되어 계속적인 거래에 이용되게 된다. 여기서 타임스탬프(즉 공신력을 얻은)가 찍혀진 연속된 블럭들을 블럭체인이라고 부르며 이는 성격에 있어, 이미 인증된 전자금융 거래의 공적장부라 할 수 있다.
- 공신력을 부여하는 단계
(1) 네트워크에서 10분간 발생한 거래를 모아 이것을 블록이라 부르고, 이 블록을 특정 조건에 따라 공인함으로써 그 블록속의 거래를 모두 공인하는 효과를 줌. 그 이후에 또 블록을 만드는 과정을 반복함으로써 이런 블록들을 연속으로 이어지게 하는 블록체인을 유지하는 과정을 반복. 공신력을 주는 주체와 그 방법은 어떻게 되는가. 먼저 공신력을 주는 주체에 있어서는 누구나 참여할 수 있게 만들고 그들이 참여하여 특정 블록에 공신력을 주게 되면 그 댓가로 새로운 비트코인을 부여받게 해줌. 현재 운영되는 비트코인 시스템상 알고리즘에 따라 25BTC에 해당하는 권리가 생기도록 되어 있는데, 이들을 비트코인 시스템에서는 마이너라고 부름. 공신력을 주는 방법을 마이닝이라 부르며, 이들을 컴퓨터 네트워크 관점에서 노드라고 칭하며, 그 기능적인 면을 타임서버라 부름
(2) 일정조건 충족, 소위 마이닝 부분인데, 이는 마이너로 하여금 자기가 수집한 블록과 관련된 특정 계산을 시켜 답을 찾도록 하는 것이며, 이 답을 찾은 마이너의 블록을 그 단계의 공신력 있는 블록으로 인정. 이 특정 계산은 예를 들어 26*35=910인데, 답이 91000000처럼 다음에 나오는 0의 갯수가 6개 이상 나오게 하되 26에다 35가 들어 있는 숫자(즉 1243547이라던지 35014라던지...여하튼 35의 3과 5라는 숫자가 인접하게 해서 만든 숫자)의 곱으로 만들어 보라는 식이다. 이는 특정 공식이 있는 것이 아니라 35가 연속으로 들어있는 숫자를 임의적으로 만들어 계속적으로 곱해보는 방법밖에 없는데 이렇게 하는 이유는 인증에 앞서 특정량의 노력이 들어가게 하는 의도로서 거래의 취소방지 및 기타 비트코인 시스템의 안정성을 부여하는 중요 역할을 함
- 비트코인 거래방식은 주식시장에서 주식이 체결될 때 보여지는 것처럼 거래내역과 시간만이 보여지게 되는 것이지 거래 당사자가 노출되지 않음. 비트코인 거래시 한 사람이 하더라도 각 거래마다 새로운 주소를 발생시켜 거래를 함으로써 동시에 여러 거래를 체결하여도 네트워크상에서는 동일인이라는 것이 나타나지 않게 되어 더욱 추가적 보호사항이 됨.
- 논의의 시작을 기존의 전자서명이론으로부터 이의 단점인 이중지불 문제를 극복하는 방식을 제시하였다. 이를 위하여 당사자간 전자거래에 대한 내역을 공적 장부에 모두 공개하고 이의 검증을 정직한 노드들의 CPU파워에 의존한 방식으로 대체하여 이 금융거래 시스템에 해커들의 공격에 대비할 수 있도록 하였다. 이를 위하여 제시한 컴퓨터 네트워크의 운용구조는 단순하고 또한 노드들 역시 서로 독립적으로 운용되도록 구성되었으며 개별 노드 자체의 네트워크 참여여부도 유연성 있게 설계됨. 따라서 거래내역을 전체에 알리는 방식도 네트워크상의 특정한 부분에 얽매이지 않고 단지 컴퓨터 네트워크 상의 정상적인 통신룰로 운용되기만 하면 된다. 네트워크에 참여하지 않았던 노드들도 다시 네트워크에 참여하게 되면 기존에 체결된 블록들을 다운받아 새롭게 시작하게 됨. 이 노드들은 유효하지 않은 블록을 거부하고 유효한 블록만을 대상으로 작업을 수행하며 그들의 CPU파워에 비례하여 유효블록의 체결인증 기회를 가짐. 필요한 다른 룰이나 추가 인센티브에 관한 사항들도 네트워크 참여자들의 이와 같은 합의 메커니즘에 따라 강제되어질 수 있다.
- 해시 함수를 직관적으로 분석해보면 일단 함수란 말이 사용되므로, 이는 어떤 숫자가 입력값으로 사용되어 유일한 숫자(치역값, 해시값)를 만들어내는 공식이라 할 수 있다. 특히 해시라는 단어가 사용될 정도로 이 함수의 결과로 나오는 값으로, 마치 요리를 할때 원재료들이 모두 잘게 썰어지고 변형되어 최종요리를 보고 원재료들을 도저히 맞출수 없듯이, 입력값을 어떤 방식으로도 추론할 수 없는 그런 함수란 의미. 이런 수학적 성질을 고급지게 표현하면 다음과 같은 세가지 성질을 만족하는 함수라 표현 가능
* 역상저항성(preimage resistance) : 해시값과 함수를 안다고 해도 그 입력값을 찾을 수 없다. 역함수는 물론 심지어 그 입력값도 찾을 수 없다는 의미
* 제2역상 저항성(second preimage resistance) : 해시값과 함수를 안다고 해도 같은 해시값을 만드는 다른 입력값을 찾을 수 없다
* 충돌저항성(collision resistance) : 같은 해시값을 찾는 두개의 다른 입력값을 찾는 것은 거의 불가능하다. 하나의 해시값을 갖는 두개의 입력값을 특정 방식으로 만들 수 없다는 의미
- 결론적으로 해시함수를 비트코인을 이해함에 있어 우리가 아는, 숫자를 넣고 값을 받는 일반적 함수의 특별한 모습 정도로 이해하고 있으면 된다는 것인데, 다만 거기의 입력값이 각종 필요한 해당 데이터의 이진 배열을 우리의 숫자체계로 환산한 값이 사용된다는 것이며 함수의 결과값, 즉 해시값이 256자리의 이진수라는 정도를 이해하면 됨
- 비대칭 암호화 기법이 비트코인 거래에서 이용되는 모습은 다음과 같음. 상대방에게 전하고자 하는 메시지가 있다고 하자. 아마도 거기에는 보내고자 하는 돈의 액수도 있을 것이며, 지금 보내는 돈의 출처가, 즉 이 돈을 내가 누구에게 받았는지 그 사람의 주소가 있을 것이며 또한 보내는 사람의 주소도 있을 것임. 이런 것을 텍스트 문자로 기술하여도 이는 결국 바이너리 비트의 연속으로 표현됨. 이 메시지의 이진표현 즉 바이너리 비트를 SHA-256해시함수를 이용하여 해시값을 구해낸다. 결과값으로 유일한 256비트의 이진수를 얻는데, 이를 다시 비대칭 암호화 방법을 이용하여 즉, 나의 비밀키로 다시 암호화시킴 그리고 나서 최종적으로 상대방에게 모든 정보패키지를 모아 전하게 되는데, 그 패키지에는 내가 전하고자 했던 메시지의 이진표현, 그리고 암호화된 해시값, 마지막으로 나의 공개키가 포함되어 있다. 이 패키지를 받은 상대방은 그 패키지를 열어 약속된 규칙에 의해 메시지와 암호화된 해시값, 나의 공개키를 분류해서 일단 암호화된 해시값을 복원시키고, 또한 추출한 나의 메시지 부분을 알려진 SHA-256 해시함수로 해시값을 구해보고 위에서 복원시킨 값과 자기가 구한 해시값이 같음을 확인. 만약 이것이 같으면 이 메시지는 그 비밀키를 혼자 간직하고 있는 나에게서 전달된 메시지임이 확인되는데, 마치 실생활에서 나의 사인과 같은 역할을 하게 됨.
- 비트코인의 총 발행량ㅇ니 2100만BTC가 채굴되는 2140년 이후의 인센티브는 무엇으로 충당할까? 시스템에 의해 더이상 새로운 비트코인으로 인센티브를 줄 수 없음을 의미하게 된다. 하지만 이 인센티브 제도가 비트코인 시스템을 유지하는 하나의 큰 축이므로 이를 점점 비트코인 사용자에게 거래세를 부과하여 그것으로 대체하도록 되어 있음. 비트코인 거래시 아주 작은 거래세를 걷더라도 10분간의 거래수가 많으면 현재의 25BTC를 넘는 인센티브를 마이너에게 줄 수 있게 됨
- 각 노드에서는 비트코인 거래, 블록체인 채굴 등의 각종 메시지를 획득하여 처리하게 되는데 그 노드들, 즉 타임스탬프 서버에서 처리하는 핵심작업을 네트워크 룰로 정리하면 다음과 같음
* 모든 거래는 컴퓨터 통신망에 TCP 프로토콜을 사용하여 뿌려지게 되는데, 이때 각 노드들은 새로운 거래를 수집하여 블록을 만든다
* 각 노드에서 Proof of work라 불리는 방법을 수행해 블록채굴을 시도하여 성공하며 전 노드에게 같은 방식으로 블록채굴을 알린다.
* 각 노드는 채굴된 블록내의 거래를 조사하여 이전에 채굴되어 이전 블록체인에 들어있는 거래라 하더라도 금범의 채굴된 블록내에 포함되어 있지 않으면 이를 새롭게 받아들인다
* 받아들인 블록의 해시값고 또 다시 새로운 거래를 모아 만든 블록으로 이를 체결하기 위한 proof of work를 새롭게 수행한다

'IT' 카테고리의 다른 글

알기 쉬운 블록체인  (0) 2018.04.07
핀테크 세상을 열다  (0) 2018.02.11
카오스 멍키  (0) 2018.02.06
챗봇혁명  (0) 2018.01.17
블록체인 거번먼트  (0) 2018.01.11
Posted by dalai
,