Blockchain 시리즈 – 블록체인의 근본적인 문제점들

0
449

처음 데이터 사이언스로 사업하겠다고 나선 다음, 한국에서 만난 VC들, 수업에 찾아온 수강생들, 외부 미팅에서 만난 관계사 직원 분들 모두에게는 다들 뭔가 “머신러닝이 모든 걸 다 해결하는 마술이다”는 사고방식이 자리잡고 있는 걸 느낄 수가 있었다. 개발자, 혹은 그 근처에서 IT업무를 하는 사람들은 머신러닝이 데이터 관련된 업무를 알아서 척척척 다 해주니까 통계학 같은 구시대(?) 학문은 필요없다고 목소리를 높여서 미팅이 굉장히 어색하게 끝나는 경우도 있었고, 수업에 찾아온 학생들은 “이게 머신러닝이냐?”, “그럼 알파고는 어떻게 이세돌 이겼냐?”, “겨우 이런걸 머신러닝이라고 주장한거냐?”는 식으로 회의감에 빠지는 경우도 있었다.

요즘 블록체인 Hype를 보면 똑같은 느낌을 받는다. 어느 VC는 블록체인으로 코인 찍어내고 보안이 유지되는 것 까지 확인했으니 이제 화폐 시장을 뒤바꾸는건 시간문제라고 주장하기도 했고, 더 심한 분은 코인으로 기본 소득이 배정되면서 좌파 정권이 오랫동안 주장했던 기본소득제가 시행될 수 있게 되었다고, 머신러닝이라는 구시대(Really?) 기술로 사업하는건 손을 떼고, 블록체인이나 배워라고 하시더라. 그러면서 정작 블록체인에서 BGP 문제는 어떻게 해결되고 있고, 각 코인 별로 무슨 아이디어가 적용되었는지 알고 있기는 하냐는 질문에, 그런건 블록체인 “개발자”가 할 일이라시더군ㅋㅋㅋ

이미 다른 글에서 여러번 언급했듯이, 한국 땅에서 블록체인 개발자라고 불리는 사람들 중 99.9%는 블록체인용 Github 코드 따 와서 사업에 갖다붙히는 수준인 코더들이다. 그런건 그냥 GitHub 같은데 잘 뒤져보면 step-by-step 설명들 널려있다. 정말 BGP 문제를 풀려고 수학적인 이해를 공학적으로 적용하는 능력을 갖춘 사람은 정말정말정말 극소수에 불과하고, 할 수 있다고 주장하는 분들도 만나봤지만, 수학적으로는 굉장히 얕은 이해를 갖고 있는 경우가 아닌 사례가 아직까지 없다.

그럼에도 불구하고 블록체인이 뭔가 섹시하고 새로운 신기술인 것 같으니까 이걸 적용만하면 모든 문제가 싹 다 해결되는 것처럼 주장하는 사람들에게 아래의 글을 바친다.

 

1. 블록체인이란?

블록체인이란 사실 거래 정보를 기록해놓은 블록을 묶어놓은 그룹에 불과하다. 블록은 데이터 저장소, 즉 여러분의 하드 디스크를 연상하면 되고, 그룹은 다른 글에서 계속 언급했듯이 Network을 형성해놓은건데, (불법 다운로드에 자주 쓰실) 토렌트를 생각하면 딱 맞다.

이런 저장소 네트워크가 기존의 데이터 베이스와 다른 점이 있다면, 아무 데이터나 무작정 기록하는 것이 아니라, 정확한 룰이 있어서 거기에 맞춘 데이터만 기록할 수 있다는 점이다. 덕분에, 아래의 눈에 띄는 특징을 가질 수 있게 되었다.

  • Consistent – 이미 기록된 데이터와 다른 형식, 다른 내용을 기록할 수 없다
  • Immutable – 기존 데이터는 그대로 두고, 새롭게 “추가”하는 형태로만 기록이 가능하다
  • Ownable – 데이터 블록 각각은 소유주가 있고, 그 소유주가 독점적인 소유권을 가진다
  • Canonical – 모든 사람이 새롭게 기록되는 내용에 동의해야 한다
  • Decentralized – 중앙 서버 없이 모든 사람들이 데이터 기록에 동참한다

실리콘 밸리가 블록체인에 열광하는 가장 큰 이유는 마지막 항목, Decentralized 때문이다. 캘리포니아 날씨에서도 느껴지듯이, 그 동네는 뭔가 약간 뽕맞은 것 같은 히피족들 스타일 문화가 강한데 (표현이 과격해서 죄송합니다만… for lack of better expression), 블록체인도 중앙 정부의 통제를 벗어나는 구조라는 부분이 실리콘 밸리人들에게 강한 인상을 심어준 듯 싶다. (사실은 코인 찍어내서 그걸로 일확천금을 얻겠다는 욕심이 뒤에 자리하고 있는지는 모르지만…)

Decentralization이 특정 구조에서 오차 Zero를 만들어 낼 수 있기 때문에 (ex. 이전 글 비트코인 구조 참조), 굉장히 매력적인 데이터 베이스 구조라고 할 수 있다. 과거 왕조 시절, 혹은 군사 독재 시절처럼 중앙 정부가 “까라면 까”라는 방식으로 중앙 집권체제를 구축하고 있으면 변방에 있는 구성원들 하나하나는 중앙에 의존할 수 밖에 없다. 그러나 아무도 내가 가진 물건에 손을 못 대도록 구조화가 잘 되어 있는데, 그게 하필 중앙 정부를 없애는 거라면? 히피들이 혹~ 할 것 같지 않은가?

 

2. 블록체인의 문제점

A. 제한적인 개발 구조 & 느린 속도

모두가 쪼개져 있는데, 각각이 동일해서 전체적으로 유기적인 구조를 만들어내는건 굉장히 어려운 일이다. 아주 사소한 bug 하나만 생겨도 전체 시스템에 장애를 일으키거나, 그 시스템이 다른 시스템과 연동되질 못하도록 만든다. 앱 개발 하시는 분들, 앱 유저 사용 데이터 추적한다고 Tracking solution들한테서 SDK를 받아서 자기 앱에 입력하는 일을 해 본적이 있을 것이다. 객체 지향적으로 아주 깔끔하게 앱을 만들었다면 SDK가 자기네 시스템과 충돌을 일으킬 일이 별로 없겠지만 (그 SDK가 별로 대단한 코드는 아니니까), 정작 실제로 SDK 적용하고나면 어디에서 무슨 에러가 터질까 일촉즉발의 긴장상태로 있어본 적도 있을 것이다. 사실은 본인이 앱을 객체 지향적으로 못 만드는 실력없는 개발자여서가 아니라, 통일된 방식으로 앱을 만드는게 불가능하기 때문에, 플랫폼이 아무리 Java고 Android Studio에서 지정해주는 방식대로 앱을 만들었다고해도, 앱 개발자 한 명, 한 명이 만들어 내는 구조들은 조금씩 다르기 때문에, SDK가 언제 어느곳에서 어떤 방식으로 충돌을 일으킬지 예측하기 힘든건 어쩔수가 없는 일이다.

자, 앱 하나만해도 이런 문제가 있는데, 더 큰 시스템은 어떻게 될까? Decentralized라고 열심히 강조해서 마치 개개인의 특성을 살릴 수 있는 진정한 민주주의 시스템인 것처럼 홍보해놓고, 시스템이 돌아가도록 만들려니 모두가 구조가 동일해야한다고? 모두가 똑같은 옷을 입고, 모두가 똑같은 삶을 살아라고 하는 사회 구조가 싫다는 히피들이 좋아하던 Decentralization을 완성하려니 모두가 동일해야한단다. Such a paradox, isn’t it?

블록체인 안에서는 “뭔가 대충”, “일단 좀 만들어놓고” 같은 방식이 불가능하다. 한번 써 놓고 난 뒤에 다시 기록하려면 모든 블록의 동의를 받아야하니까. 말이 쉽지, 새로 다시 뭔가를 고쳐쓰는게 거의 불가능하다는 뜻이다. 중앙 서버 운영하고 있으면 어떻게 되냐고? 이번에 홈페이지 개편하는데, 코딩이 어려워서 그냥 밀고 새로 만들었다. 내가 내 홈페이지에 손 대는데 누가 뭐라 그래?

B. 인센티브 구조 설정의 어려움

1994년 노벨경제학상을 받은 수학자 존 내쉬의 게임이론은 인간의 모든 활동은 유무형의 인센티브 구조를 기저에 깔고 있다는 가정에서 출발한다. 봉사활동은 인센티브 구조가 아니지 않냐는 주장도 있는데, 그마저도 봉사로 얻는 마음의 안정, 평판 증대, 혹은 세금 혜택 같은 부분에서 원인을 찾기도하고, 이 문제는 수학적이라기보다는 도덕적인 부분이니까 자세한 내용은 생략하겠다.

블록체인에서 갑자기 왠 인센티브 구조냐고? 블록 네트워크가 원래의 목적대로 잘 작동하고 있도록 각각의 블록들에게 적절한 보상이 돌아가야할텐데, 그런 보상체계 구축이 여간 어려운 일이 아니다.

예를 들어, 데이터 기록이 이어지다가 그 특정 쓰레드는 기록 종료라고 정리하려면 (그래서 다른 쓰레드에 자원을 넘겨주고 처리 속도를 좀 높이려면), 누가 그 결정을 내려야할까? Decentralized라며?

각각의 블록들이 계속해서 데이터를 저장하고 업데이트 해야할 이유가 있나? 한 블록이 두 개의 상충되는 정보를 받았을 때, 어떤 정보를 선택하도록 할 지 구조는 어떻게 짜는 걸까?

이런 질문들에 대한 대답은 사실 인센티브를 어떻게 주느냐, 즉 게임이론을 어떻게 블록 시스템 안에 녹여넣느냐에 달려있다. 하나 더 추가하면, 처음에 인센티브 구조 좀 잘못 만들었어도 계속 고쳐나가면 되는거 아니냐고? 위의 문제점 A에서 썼듯이, “고치기”는 중앙 서버에서는 쉬울지 몰라도 블록체인에서는 대단히 어려운 일이 되어 버린다.

 

C. 고가의 유지 비용, 확장성 문제

중앙 서버는 한번만 기록하면 된다. 블록체인은? 모든 블록에게 다 써야 한다. 모두가 그 정보를 공유해야 통일성도 유지되고, 보안도 유지되니까. 데이터가 제대로 찍혔는지 확인은 어떻게 할까? 중앙 서버는 한번만 하면 된다. 블록체인에서는? 역시 블록의 숫자만큼 해야된다.

만약에 서버 이전을 한다고 쳐보자. 이 블로그의 글들을 다른 곳으로 이전한다고 생각해보면 쉬울 것 같다. 모두가 블로그 글을 다 갖고 있어서 필자가 마음대로 글을 못 고치는 블록 네트워크를 생각해보자. 서버 이전을 하려면 모든 블록들의 정보를 다 이전해야한다. 중앙 서버는? 한 번만 처리하면 된다.

말을 바꾸면, 확장성에 치명타를 안고 있는 서버 구조다. 블록체인 관련된 모임을 가보면 좀 실력있는 사람들은 모두 Scaling 이슈가 얼마나 해결되었냐를 쳐다보지, 코인 가격이 얼마만큼 폭락했는지 이야기하질 않는다 ㅋ

왜 블록체인에 사람들이 저렇게 열광하는지, 그게 좀 이상하다는 의심이 들기 시작하는가?

 

D. 데이터 소유권은 개인에게

요즘 개인정보보호법 때문에 유저의 활동 내역 데이터를 기업들이 활용하는 것에 대한 거부감, 그 거부감에 편승한 정부의 가이드라인 강화가 이쪽 업계에서 큰 화두가 되어 있다. 어차피 못 막는데, 미국에서도 하는데, 이상하게 적용하지 말고, 기술 개발을 방해하지 않는 차원에서… 와 같은 명목으로 유저의 활동 데이터를 기업들이 쓰는걸 눈감아주고 있는 판국인데, 블록체인은 언뜻보면 이 문제에 대한 완벽한 해결책이다. 유저 데이터는 유저만 갖는다. 기업은 소유권이 없고, 유저 스스로가 알아서 자신의 데이터를 보관하면 된다.

그런데, 블록체인은 자기 혼자만의 하드디스크에 데이터를 저장하는 방식이 아니라, 하드디스크 여러개를 연결해놓은 방식이라는 점에 주목해야 한다. 좀 더 쉽게 설명하기 위해서 토렌트를 예로 들어보자. 100명한테서 잘게 쪼갠 영화 파일을 다운받고 있는데, 어떤 악마같은 자식분이 파일 내용을 살짝 바꾼 다음 그 내용을 토렌트로 뿌리고 있다고 해 보자. 1시간동안 고생해서 영화를 다운 받았는데, 처음에 받았던 몇 명은 정상 영화 파일을 받아서 Security check을 피했을텐데, 어느 순간 그 악마가 파일 내용 일부를 바꾼 탓에 n명째 다운로더부터는 malware를 받고 있다면? 영화 파일을 여는 순간 내 컴퓨터가 해킹된다면?

블록체인에서는 얼마든지 가능한 이야기다. 모든 블록은 개인 소유이기 때문에, 자기 마음대로 고쳐쓰고 상대방에게 이상한 정보를 뿌리기 시작하면 전체 네트워크는 오염이 되거나, 오염이 되지 않더라도 확인 절차가 길어지기 때문에 처리 속도가 엄청나게 느려지게 된다.

그럼 그런 유저는 쫓아내면 되지 않냐고? 중앙 서버일 때는 쉬웠다. “강퇴” 한방으로 해결되니까. 근데 블록체인에서는? 모두가 똑같은 권한을 가진 참여자인데? 누가 결정하지? 도편추방제를 도입한다고 쳐도, 투표는 또 언제 할래? 만약에 그 유저가 자기 잘못이 아니라 바이러스에 오염되어서 억울한 케이스라면?

 

E. 업그레이드는 자율적으로

2016년 가을, 삼성 갤럭시 노트 7이 출시된지 한 달도 지나기 전에 자기 폰이 “폭발”했다고 주장하는 글들이 커뮤니티 여기저기에 올라오기 시작했다. 제조사는 유저 책임이라고 도망을 가다가 채 한 달이 지나기 전에 배터리 문제 or 설계 문제임을 인정하고, 대량 리콜 및 배터리 충전 차단 업데이트를 배포하기 시작했다.

당시 갤럭시 노트 7을 들고 있으면 비행기 탑승도 불가능했던 시절이기 때문에, 제조사에서는 리콜로 생기는 비용 및 상품 신뢰도 하락은 둘째 문제고, 또 터졌다는 뉴스가 그만나오도록 배터리 충전이라도 최대 70%, 80%로 차단해서 배터리가 완충되었을 때 터지는 사태를 막아야하는 다급함이 있었을 것이다.

그 때 외부 인터넷 망에 접속만 되어 있으면, 유저 동의도 받지않고 거의 반강제로 펌웨어가 업데이트 되었다.

블록체인에서는 같은 일이 가능할까?

데이터가 유저 소유인만큼, 업데이트도 유저의 의지에 달려있다. 이런 상황을 인지하고 있으면 새로 업데이트되는 펌웨어를 만드는 개발자들은 언제나 예전 버젼에서도 “충돌이 없는” 형태로 최신 버젼을 만들어야한다는 압박에 시달린다. 펌웨어 업데이트 한번하기 진짜 엄청 어려울 것이다.

 

3. 중앙 통제 시스템이 훠~얼~씬 간편하다

블록체인은 장점이 많은 서버 관리 체제, 보안 체제다. 하지만 위에서 봤다시피 그에 따른 부작용도 엄청나게 많다. 그럼에도 불구하고 블록체인 사업한다는 분들은 (특히 코인에 투자를 많이하신 분들은) 계속해서 블록체인으로 노래를 부르고 있다.

사실 금융권의 데이터 베이스는 거의 대부분 70, 80년대 스타일로 짜여져 있어서, 이걸 새로운 뭔가로 바꾼다는게 거의 불가능하다. 아마 금융권에서 회사 데이터 서버 운영하는 개발자 분들에게 블록체인 적용할 수 있도록 서버 갈아엎자고 그러면 그날부터 이직을 고민하기 시작할 것이다. 어찌어찌 인력을 확보해서 블록체인 도입을 위한 서버 업그레이드를 한다고해도, 엄청난 정보의 손실과 전환 비용이 후폭풍으로 따라올 것이 확실하다. 당장 허접한 블로그 홈페이지 하나 갈아엎는 것도 데이터 Loss 최소화하기 위해서 얼마나 많은 Trial and error 가 있었는지….

중앙 통제 시스템을 싫어하는 몇몇 산업의 관계자 분들을 만나보면, 블록체인이 무슨 요술봉인 줄 알고 계신다. 미국에는 이미 다 적용되었는데 한국은 시스템이 느리고 인력이 부족해서 안 된다고 하셨던 분을 꼭 미국에 한번 데려가서 견학시켜드리고 싶더라. 그 동네에서도 블록체인을 서버 시스템에 도입하는 회사는 극소수다. 저 위의 모든 문제들을 다 인지하고 있는 사람들, 혹은 그렇지 않더라도 새로운거 배우기 싫어하는 복지부동의 서버 개발자들을 설득해야하는 전환이기 때문이다.

그런면에서 본다면, 아마 가장 큰 문제는 블록체인 자체가 가지는 기술적인 제한이 아니라, 남들이 말하는대로 그대로 믿고 블록체인 노래를 부르고 있는 기업 고위직들, 블록체인 이야기 안 하면 시대에 뒤떨어지는 것처럼 무시하려는 풍조 같은 사회적인 원인이지 않을까 싶다. 글 초반부에 언급한대로 “머신러닝”, “딥러닝”, “인공지능”으로 buzzword를 바꿔가던 사람들은 자기가 트렌드를 잘 따라가는 “전문가”라는 이미지를 주고 싶었기 때문에 정작 이게 별 대수롭지 않은 비선형 함수 찾는 통계학 응용이라는 걸 모르는채로 넘어갔던 것과 하등 다를 바 없는 상황이 진행되고 있는 것이다.

정말, 거의 대부분의 기업들은 여전히 중앙 통제화된 서버 구조를 운영하는 편이 맞고, 설령 블록체인으로 서버 구조를 개편하는게 더 나을 수 있는 여지가 있는 산업도 위에 지적한 내용들 때문에 생기는 비용을 감당하기가 쉽지 않을 것이다.

중앙 통제 시스템이 정말 훠~얼~씬 간편하다.

 

나가며 – 그럼 어디에 써야?

“블록체인 = 코인”이라고 놓고, 어느 스타트업에서는 SNS 시스템을 블록체인으로 만든 다음, 유저들이 Like를 누르거나 comment를 달아서 글을 퍼뜨리면 코인을 주는 사업 모델을 만드는 걸 봤다. 일부러 코인을 받으려고 싫어하는데도 Like를 누르면 어떻게 할꺼냐, 그런 Malware 같은 글들은 어떻게 퇴출시킬꺼냐고 되물어 봤다. 뭔가 말도 안 되는 답변을 한참 늘어놓으면서 유저를 믿어야한다는 결론을 도출하던데, 당장 블록체인이 뭔지 모르지만 일단 트렌드 단어니까 무조건 입에 올리고 보는 수 만명의 “전문가”들을 보고서도 이해가 안 되는가? 유저를 믿을 수 있다면 전세계는 오래전부터 전쟁과 분쟁이 없는 평화상태를 유지했어야한다. 말을 바꾸면, 중앙의 개입은 어느 시스템이건 그 시스템을 제대로 돌아가도록 하기 위해서는 필수적인 요소다. 작은 정부 vs. 큰 정부 같은 논쟁은 할 수 있을지 몰라도, Anarchy vs. Central 같은 논쟁은 시스템의 효율성이라는 측면에서는 합리적인 논쟁 대상이 아니다.

그럼 정말 아무데도 쓸데가 없는건가? 블록체인이 쓰일데는 있는건가?

한번 시스템을 갖춰놓고나면 아주 오랫동안 안 바꿔도 되는 산업은 어디에 있을까? 그런 산업을 찾아보려 글 쓰기를 10분 정도 중단하고 고민해봤는데, 잘 모르겠다. 혹시나 알고 있으신 분이 있으면 아래 댓글로 꼭 답변을 주셨으면 좋겠다.

아, 돈은 찍어놓고나면 화폐개혁을 하지 않는 이상 바꿀일이 없긴 하네. 근데 그렇게 중앙 통제를 벗어나게 해 놓고 나면 금융위기가 왔을 때 누가 시장에 개입해서 금융시장을 안정화시킬 수 있을까?

 


위의 글에 나온 이미지는 링크에서 참조했습니다.