4차 산업혁명에서 사물인터넷(IoT), 인공지능(AI), 자율주행 등과 더불어 이야기하고 있는 것이 바로 블록체인이다. 블록체인 기술은 현재 성장중인 기술이며, 어디까지 갈 수 있을지는 알 수 없다. 나는 개발자로서 블록체인 업계로 진출하고자 하고 있기때문에 이에 관한 관심이 최근 많아진 상태다.
정부에서도 블록체인 시범사업 등을 통하여 여러가지 시도를 해보고 있는 중이나, 일각에서는 블록체인 기술은 실체에 비해 뻥튀기가 되어있어 과도하게 큰 가능성으로 측정되어지고 있다는 이야기도 들려오고 있다. 또한 블록체인이라는 기술이 암호화폐로만 일반인들에게 알려져 있기 때문에 이에 대한 인식개선도 필요하다는 의견도 있다.
최초의 블록체인, 비트코인
몇 년전에 있었던 비트코인 열풍때문에 블록체인이라는 기술이 세상에 알려지고 나도 관심을 갖게 된 계기가 되기는 했으나 암호화폐가 투기의 대상으로만 여겨져 하이에나마냥 사람들이 몰렸던 것으로 인해 공급에 비해 수요가 높아져 속된말로 김치 프리미엄까지 붙으면서 가격이 상승했던 것을 생각하면 여전히 갈길은 먼 것으로 생각된다. 그 덕에 비트코인은 개당 한 순간 3000만원이 넘는 가격에 거래되기도 했었다. 이러한 상승세 덕에 마치 급등주만을 찾는 불나방같은 개미들이 코인시장에 달라붙기 시작했고, 바로 폭락했던 역사가 있다.
비트코인이 물론 투기의 대상이 되어지긴 했으나, 비트코인은 세상에 등장한 첫 번째 블록체인으로서 의미를 갖는다. 비트코인의 창시자 나카모토 사토시*가 《비트코인: P2P 네트워크를 기반으로 하는 전자화폐시스템》 이라는 논문을 게재한 것으로 세상에 알려지게 되었다. 비트코인은 진짜 코인은 아니며 기술적으로 비트코인 채굴자가 블록체인에 블록을 추가함으로서 얻는 보상이라고 생각할 수 있으며, 최대 블록의 개수는 이미 정해져 있기때문에 추가로 발행한다거나 하는 행위는 할 수 없다.
*나카모토 사토시는 가명이며, 실체가 알려지지 않은 인물이다. 이름은 일본식이지만, 사토시로 의심받고 있는 인물 중에는 일본인이 없는 것으로 알고 있다.
블록체인이 뭘까?
지금까지 우리가 사용하던 대부분의 서비스들, 카카오톡이나 네이버와 같은 것은 모두 기업에서 소유하거나 빌린 서버에서 어플리케이션이 움직이고 있다. 이를 서버-클라이언트 구조라 이야기한다. 아키텍쳐 상으로는 중앙 통제 시스템이다. 클라이언트는 쉽게 말하면 브라우저이며 데이터를 서버에 요청하면 처리를 해줘서 우리에게 보여주는 것이라 보면 된다. 우리가 원하는 데이터는 단개의 서버, 혹은 복수의 서버로 구성된 분산 서버로 구성되어 있다.
블록체인은 탈중앙화 시스템이다. 즉, 서버라고 할 마땅한 것이 없고 블록체인에 연결된 개별 컴퓨터가 서버의 역할을 대신한다. 블록체인에 참여하는 방법은 간단하다. 그저 블록체인 프로그램을 다운 받고 실행시키만 하면 누구나 참여할 수 있다. 그들은 월드컴퓨터라는 느낌으로 전세계에 번져있는 개별 시스템이 마치 하나의 컴퓨터에서 동작하는 것처럼 여긴다. 이를 컴퓨터 과학적 용어로 글로벌 싱글톤(Singleton)* 상태라 이야기하며, 블록체인에 참여한 노드들은 우리가 보내는 요청을 처리하고, 블록체인에 반영될 수 있도록 해준다.
*싱글톤이란 어플리케이션 전체를 통틀어 존재하는 단일 인스턴스를 칭하는 것이다.
블록체인하면 이야기하면 간혹 들리는 합의 알고리즘이니 하는 것들은 신뢰할 수 있는 블록체인의 단일 상태를 유지하기 위한 것이다. 사실 블록체인이라는 이름으로 세상에 처음 알려지긴 했지만, 탈중앙화 시스템이라는 것이 본래 없었던 것은 아니고 P2P(Peer-to-peer)라는 것으로 존재 했었으나, 이중지불문제*를 해결하지 못하는 등 보안의 취약성 때문에 일부 파일 공유과 같은 서비스에서 사용되고 있었다. 그렇다! 블록체인은 신뢰성과 무결성을 확보할 수 있기에 이렇게 언급되고 있는 것이다.
*이중지불문제는 이미 암호화폐를 사용하였음에도 불구하고, 네트워크 속도 등의 이유로 노드의 반영속도가 느릴 수도 있다는 점을 악용하여 한 번 더 사용하는 것을 말한다.
블록체인은 기존의 시스템이 가지던 보안의 취약점을 암호학적으로 해결하였고, 기존의 탈중앙화 시스템이 가질 수 있었던 비잔틴 장군 문제* 를 어느정도 해결할 수 있었기에 실용화될 가능성으로 주목받고 있다. 이 문제는 합의 알고리즘으로 해결가능하며 비트코인에서는 작업증명(PoW. Proof of Work)으로 해결한다. 이러한 합의 알고리즘은 블록체인 플랫폼마다 다를 수 있다.
*비잔틴 장군 문제는 '레슬리 램포트' 라는 컴퓨터 학자가 발표한 연구 논문에서 사용된 표현으로 탈중앙화 시스템에서 네트워크에 연결된 악의적인 노드에 의해 잘못된 메시지를 전달 받아 의도와는 다른 결정을 내리거나 의사결정을 하지 못하는 것을 말한다. 이는 노드가 합의가 이루어지지 않았음을 의미한다.
채굴과 암호화폐
여기서 암호화폐라는 것은 퍼블릭 블록체인에서 필요한 일종의 보상같은 것이다. 퍼블릭 블록체인은 공개되어 있어서 누구나 노드가될 수 있다. 노드가 될 수 있다는 것은 요청을 보내기만 하는 단순 참여자가 될 수도 있고, 채굴자가 될 수도 있다는 것인데, 일반적으로 채굴자라고 생각하면 좋다.
채굴자는 흔히 수가 제한된 암호화폐를 얻기 위해 컴퓨팅 시스템을 학대시키는 시스템이나 사람을 말하는데 이러한 채굴자들은 블록체인에 자신이 발굴한 블록을 포함시키기 위해 안달이 난 상태다. 자신이 생성한 블록을 블록체인에 포함시키면 그에 대한 보상으로 암호화폐가 지급되기 때문이다.
퍼블릭 블록체인은 채굴자가 없으면 돌아갈 수 없다. 왜냐하면 채굴자들이 블록체인 플랫폼을 이용하는 사람들이 보내는 모든 거래(요청, 트랜잭션)을 수집하고 블록에 포함시키고 처리할 수 있도록 해주기 때문이다. 즉, 암호화폐라는 것은 우리가 보낸 요청을 처리한 것에 대한 보상이기도 하고, 작업 증명과 같은 합의 알고리즘에 응하고 문제를 블록을 블록체인에 포함시키기 위한 문제를 풀어낸 댓가로 얻은 것이다. 이는 퍼블릭 블록체인이 돌아가기 위해 꼭 필요한 필수 불가결한 요소이다.
노드의 참여자가 제한적인 프라이빗 블록체인에선 암호화폐가 필요하지 않다.
블록체인을 어떻게 활용하면 좋을까?
블록체인도 공학이다. 우리가 실제로 사용하기 위해 만들어진 기술이다. 블록체인은 기술적으로 많은 것을 포함한다. 원리상으로 꼭 필요한 암호학을 기반으로 하는 공개키-개인키 기반구조, 해시(Hash), 머클트리, 합의 알고리즘, 트랜잭션, P2P 네트워크, 클라이언트 등 여러가지 복합적 요소등이 블록체인을 구성한다. 이더리움에는 스마트 컨트랙트라는 요소까지 등장하여 이제는 프로그래밍 가능한 블록체인이 되었다.
그러나 나와 같은 개발자가 아닌 이상은 이를 활용하려는 사람에게 기술적 요소를 굳이 알아둘 필요는 없고, 사실 중요한 것은 이를 어떻게 활용할까에 대한 것이다. 나는 최근 2020 블록체인 국민참여단에 선정되면서 국가에서 진행하고 있는 다양한 블록체인 시범사업들에 대해서 알게 되었다. 이를테면, '디지털 증거 플랫폼' 이라든지, '식품안전 데이터 플랫폼' 등이 있고, 우리에게 가장 필요하면서도 중요한 '디지털 화물 운송장 플랫폼', '복지급여 중복수급 관리 플랫폼' 등이 있다.
이와 같은 활용이 가능한 것은 블록체인에는 우리가 기록하거나 요청한 데이터가 모두 블록에 남아있기 때문이며 이는 조작되거나 임의로 삭제될 수 없다. 우리가 주목해야 할 키워드는 이력과 신뢰성이다. 블록체인은 블록에 거래 이력을 남김으로써 정보를 유지하며 합의 알고리즘으로 신뢰성을 확보한다. 누군가가 조작할 수 없다는 것은 정확한 정보가 필요한 우리들에겐 큰 도움이 된다.
블록체인은 탈중앙화 시스템이기에 정부와 기업에서 제공하는 서비스라 할 지라도 그들이 우리의 정보를 독점할 수 없다. 따라서 개인정보는 스스로 관리해야 하는 막중한 책임감이 있으나, 정보의 독점을 막을 수 있다는 것은, 그들이 그것을 인질로 삼아 우리에게 해할 수 없음을 이야기한다.
정부에서는 2019년부터 블록체인 국민 참여단을 모집하여 블록체인이 가지고 있는 가능성을 시험해보고 있다. 이러한 시범사업을 중점으로 블록체인 산업이 성장하고 나아갈 방향을 조금이나마 알 수 있을 것이다. 블록체인은 암호화폐만을 위한 기술이 아니며, 암호화폐 또한 그저 블록체인을 구성하는 요소일 뿐이라는 사실을 알아두었으면 좋겠다.