Automata와 블록체인. Elementh의 예시와 함께

in #blockchain6 years ago (edited)

블록체인 프로젝트의 투자자들은 굉장히 가볍게 컨텐츠를 소비한다. '떡락/떡상', '터진다', '들어가본다' 등등의 용어를 쓰는 것을 보면 그 시각을 알 수 있다. 그들에게 한 프로젝트가 추구하는 목표는 그저 그 투기자산의 가격을 올리고 내려줄 시그널을 주는 가벼운 소스일 뿐이다. 이런 세태 속에서 세력들이 일으키는 랜덤한 가격변동까지 있다는 것을 알고나면, 더욱 이 시장에 '가치'라는 것이 있는지 의심스러워지고 중심을 잡기가 쉽지가 않다.
요즘따라 시장이 다사다난해지고 덩달아 혼란스러워지는 머릿속을 스스로 정리해보고자 가볍게 고찰해보았다. 부족한 내공으로나마 컴퓨터 공학의 관점에서 각 블록체인 프로젝트를 어떻게 바라봐야하는가, 가치라는 것을 어떻게 알아 볼 수 있을까를 생각해보았다.

동기 - 소프트웨어 프로젝트는 쉬운 게 아니다



너무 당연한 말인가? ㅎㅎ;

소프트웨어를 만드는 것은 어렵다. 이 어렵다는 말이 100m를 빨리 뛰거나 엄청 어려운 수학 문제를 풀거나 일상에서 친구들끼리의 갈등을 해결하는 것과는 조금 다르다. 앞 예시들은 한정된 규칙 내에서 목표를 설정하고 해결한다는 공통점을 갖고 있다. 소프트웨어는 의외로 시작부터 끝까지 "목표을 설정할 수 없다는 점에서" 어렵다. 목표조차 설정하지 못하면 문제가 있는게 아닐까. 개인적으로는 그래서 IT의 눈부신 발전에는 본질적인 철학적 결함이 있다고 생각하고 있다. 하지만 그 문제는 건너 뛰고 왜 목표 설정이 어려운 지 보겠다.

인간사의 여러 측면을 분석해, 각 측면을 닮은 추상적인 자동화 기계 (automaton)를 만들어내는 것이 소프트웨어 프로젝트다. 그리고 살짝 자본주의의 양념을 쳐서 기왕이면 돈이 되는 automaton을 만들면 좋은 프로젝트가 된다. 이 인간사의 종류는 다양한 방식으로 학자나 통찰력 있는 사람들에 의해 도출되고, 그 중 자동화에 가능성이 있을 측면은 도메인(domain)이라 불리며 소프트웨어 주제로 등장하게된다.
그러므로 야심찬 소프트웨어 프로젝트일수록 목표를 설정하는 것이 불가능에 가깝다. 처음부터 무엇을 만들면 되는지 안다는 것은 그 복잡한 인간 활동들을 어떤 틀 안에서 완벽히 해석할 수 있다는 뜻이기 때문이다. 실제로는 그들이 도출해내는 인간 활동들의 해석이 지속적으로 바뀐다. 목표가 기대고 있는 근원 자체가 흔들리니 아이러니하게도 목표도 같이 바뀐다. 그래서 아주 구체적인 목표를 정하고 만들기 시작한 소프트웨어도 최종 결과물은 많이 달라지곤 한다. 그건 근본적으로 개발자와 기획자의 실력이 떨어져서가 아니라 소프트웨어가 가지는 특수성에서 나오는 재미있는 현상이다.

내 말이 맞다면, 즉 목표라는 것이 설정하기도 힘들다면 블록체인 프로젝트를 판단할 때 어떻게 가치를 알아볼 수 있을까? 개인적으로는 블록체인으로 해결 가능할 법한 문제를 잘 찾았고 그쪽으로 나아가고 있느냐에 달려있다고 본다. 즉, "이 프로젝트는 무엇을 하고 있느냐?"에 대해 "이것을 하고 있다"가 아닌 "이 문제를 해결하려하고 있다"라는 대답이 좋다는 것이다.

다음과 같은 순서를 밟아보았다. 만약 이 글의 독자가 그래서 무슨 프로젝트가 좋은 프로젝트냐라는 고민으로 평소에 고통 받고 있었다면 이런 관점도 있다는 것을 공유하고 싶다.

##목차

  1. 소프트웨어는 현대의 Automata의 일종
  2. 소프트웨어는 FSM을 이용해 구현한 언어를 사용한다
  3. 블록체인이 소프트웨어의 어떤 측면을 변화시킬 것인가
  4. dAPP는 인간사에서 해결할 문제를 잘 정의한 상태여야 한다.
  5. 현재 일반적으로 블록체인이 해결하는 문제
    예시 - Elementh 프로젝트
  6. 결론

1. 소프트웨어는 현대의 Automata의 일종



나는 컴퓨터 전공을 하지 않았기에 학부 졸업을 할때까지도 컴퓨터가 정확히 무엇인지 몰랐고, 그래서 처음 컴퓨터 교과서에서 Automaton를 설명하는 부분을 읽는 순간의 감동을 잊을 수가 없다.

Automata란 무엇인가

Automata는 그리스어 αὐτόματον로부터 왔으며 영어로 acting of one's own will 즉, 자기자신의 (내부로부터 나오는) 의지로 행동하는 것을 말한다. 그리고 Automaton이란 컴퓨터공학에 있어 계산 문제를 해결할 수 있는 추상적인 기계이다. 그러므로 컴퓨터 분야는 계산문제를 정의해 그것을 해결하는 Automaton을 만들어내는 것이라 봐도 무방할 것이다.

소프트웨어는 Automaton으로, 현대적 버전으로 Automata를 구현한 것이다. 그래서 소프트웨어는 Automaton이 해결하는 계산문제들만을 해결할 수 있다. 이 계산은 당연히 예상할 수 있듯이 일반인이 생각하는 1+1 산수 계산은 아니지만, 어떤 측면에서는 맞을 수도 있다. 현대의 소프트웨어는 모두 boolean circuit으로 만들어져있고, 그것은 디지털 로직을 구현한 것이며 디지털 로직은 1 and 1 --> 1, 1 and 0 --> 0 으로 구성되어있기 때문이다. 참/거짓의 형태는 인간의 로고스(logos)로부터 나오고 그래서 사람은 누구나 소프트웨어의 가장 기본단위를 이해하고 있다.

2. 소프트웨어는 FSM을 이용해 구현한 언어를 사용한다



위의 Automata 이론 구성 그림에서 보면, 안 쪽에 finite state machine(FSM)이 있다. FSM은 수학적인 계산 모델이다. Automaton은 유한한(finite) 개수의 상태(state)를 변화시키는 방식으로 구현한다. Formal language라는 것은 즉, 우리가 이해하는 소프트웨어의 프로그래밍 언어는 이 FSM으로 받아들일 수 있다. 그리고 컴파일러라고 알려진, 해당 언어를 해석하는 작업은 FSM 이론으로부터 파생된 알고리즘으로 할 수 있다.

개발을 하는 사람들이 FSM의 알고리즘까지 아는 경우는 많지 않다. 누구나 자기 전문분야를 발전시키는 데 범위가 있다고 생각하고 효율적으로 공부하기 때문이다. 하지만 그 FSM 알고리즘을 조금씩 뜯어 이해해보면 우리 눈앞에 놓인 세계와 우리가 생각하는 방식이 어떻게 소프트웨어에 반영되는지 느낄 수 있다. 그리고 이 경이로움에 취해 있던 시간이 지나고 나면 서서히 현대의 Automaton이 가질 수 밖에 없는 문제가 눈에 보이기 시작할 것이다.

3. 블록체인과 관련된 소프트웨어는 변화할 것이다



흔히들 블록체인이 왜 혁신의 가능성이 있냐 물었을 때 다들 기존에는 없던 '신뢰'를 만든다고 대답한다. 기존 비즈니스 사업들은 각기 배타적으로 가진 정보가 있고, 그 정보를 주고받을 때 서로를 믿지 못하는데, 블록체인에 있는 정보는 믿을 수 있으니까 혁신이라는 것이다. 이것은 틀린 말이 아니지만 막상 블록체인 프로젝트에 대해서 판단하려고 시도할 때 응용하기가 쉽지 않다. 과연 어떤 정보를 저장해놔야 하는가 생각해보면 막연해진다. 그것은 저장하려는 정보가 애플리케이션의 코드 즉, Automaton이기 때문이다.

초기 비트코인의 경우 그저 코인을 주고받은 정보가 블록체인에 올라갔다. 그리고 이더리움 이후의 dAPP 플랫폼들은 기능 그 자체가 정보로서 올라간다는 것은 잘 알려진 사실이다. 이때 기본으로 갖춰야 하는 것은 language이다. 이더리움은 자체 language인 Solidity를 개발했고, 그 외 기존 c++, c#, java, javascript 등등의 언어를 이용해서 지원하는 플랫폼도 있다. 어느 방법이 되었건 블록체인 위에는 Automaton이 올라가게 된다.
이런 관점은 기존의 블록체인에 '데이터'가 올라간다는 관점과 약간이지만 차이를 내게 된다. 좋은 프로젝트는 어떤 기능(Automaton)이 올라가는가를 잘 정의하는 것에 달려있다는 것이다.

그러므로 블록체인의 dAPP와 그것을 이용하는 외부 서버 둘다 기존에 있던 소프트웨어와 모양이 달라지게 될 것이다. dAPP 입장에서는 '공개해야 하는' 로직들을 꼭 필요한 정보와 엮어서 발전하게 된다. 그리고 블록체인 참여자들이 비즈니스를 발전시킬 수록 새롭게 공개 되어야하는 기능들이 생기며, 거기에 따라 프로세스가 글로벌 단위로 변화할 것이다. dAPP의 구조는 그것을 반영하게 되므로 일반적인 서버가 하지않던 가정을 하거나 어떤 글로벌한 정보를 체크하는 로직들이 많이 들어가게된다. 또한 데이터나 프로세스 둘다 전세계 단위로 쓰이면서 표준이 될 가능성이 높다.

각 dAPP를 사용하는 소프트웨어들의 모양도 많이 변하게 될 것이다. dAPP는 누구나 쓸 수 있도록 공개된 기능이다. 그러므로 해당 기능을 call하면서도 사람들이 쉽게쉽게 쓸 수 있는 방식으로 구현하도록 노력할 것이다. 사실 이 부분이 아주 중요하다. 한국에서 쓰이던 어떤 기능이 중국에 갔을 때 사용하기 어렵다고 가정해보자. 그 기능을 쪼개고 쪼개보면 (1) 공통으로 쓰일 요소가 따로 쓰였거나 (2) 서로 다른 데 한쪽이 표준적이지 않거나 한 경우가 99%일 것이다. 분석을 마쳤으면 블록체인에 공통적인 요소가 들어오거나, 표준을 지키지 못하는 쪽이 효율화가 되어야할 것이다. 그렇게 최적의 프로세스가 발굴 될 것이고 다 같이 사용할 것이므로 그 소프트웨어로 만드는 서비스에 대한 평가요소가 많이 바뀌게 될 것이다.

4. dAPP는 인간사에서 해결할 문제를 잘 정의한 상태여야 한다



수많은 블록체인 프로젝트 백서들을 읽어보았다. 특정 산업군에 종속된 프로젝트들이 대부분 백서에 적는 것은 "이러이러한 데이터가 블록체인에 담기게 된다"라는 것이다.

과연 그 내용에 큰 의미가 있을까?

예를 들어 개인의 부동산 정보나 에너지 사용 정보 혹은 병원 관련 정보 등등을 담은 블록체인이 있다고 어필한다고 하자. 그것 자체만으로 의미를 가지려면 글로벌하게 필요한 주요 정보들을 모두 담고 있어야만 할 것이다. 만약 그저 한국 내 부동산 정보만 담긴 블록체인이라고 치면, 현재 정부가 제공하는 부동산 정보를 보는 것보다 크게 이득이 없다. 물론 블록체인은 엄청난 보안성을 갖고 있지만, 지금 정부의 정보 공유 시스템이 그렇게까지 신뢰를 얻고 있지 못할까? 전혀 그렇지 않다. 그리고 부동산/에너지/병원 정보 등등 국가적으로 중요한 정보들은 정부의 승인 없이는 권위를 얻기도 쉽지 않다. 이 장벽을 뚫고 글로벌한 정보를 어떻게든 모은다면 확실히 한국 정부의 것을 이용하는 것보다 나은 점들이 있긴 하겠지만 득과 비용을 고려하면 고개가 갸우뚱해진다.

결론적으로 블록체인을 데이터 저장소로서 이해하면 곤란하다. 그보다는 블록체인 위에서 돌아갈 Automaton이 있는데, 그것이 어떤 정보들을 필수적으로 필요하냐에 초점을 맞춰야 한다.
그럼 그 Automaton은 어떻게 도출되는가?

인간사의 해결되지 않은 문제로부터 도출된다



물론 인간사 중에서도 기존의 소프트웨어가 해결 못하는 것들을 말한다. 그런 문제들은 비즈니스의 곳곳에 숨어있다. 비즈니스의 종사자들은 그 문제를 말하면 단번에 알아듣지만 일반인들은 들어도 아무런 감각이 없는 그런 것들 말이다. 일반인이 블록체인 프로젝트를 평가하기가 어려운 것도 이해가 될 만하다.
이후에 supply chain 관련 프로젝트를 예시로 들 것이므로 supply chain 분야를 얘기해보겠다. 물품이 배송되는 과정을 각기 다른 사업체에서 조달하므로 단계단계마다 정보를 알기가 어렵다고 한다. 그렇다면 블록체인 위에 그 각 단계의 정보를 올리게 된다면 반드시 혁신이 일어나는가? 절대 아니다. supply chain의 정보가 적극적으로 공유가 안되는 이유는 정보가 주어졌을 때 그것을 응용해 소프트웨어 서비스를 만드는 것이 비용이 들기 때문이다. 어떤 정보를 받았으면, 그것을 해석해서 다시 유저의 화면으로 띄우는 과정까지 개발을 해야한다. 물건이 이동한 정보가 있다면, 이동 전과 이동 후 데이터베이스를 만드는 등등의 부가 행위를 다 해야한다. 어떤 물건 A가 이동하면 내부적으로 이동하는 것을 반영할 로직을 다 만들어야한다. 왜냐하면 A가 이동했다는 사실만 알고 있기에 내부적인 상태를 바꿔줘야 하기 때문이다. 이런 행위들은 정보를 블록체인에 올리건 다같이 협심해서 형식을 만들건 똑같이 해야하는 일이며 블록체인에 정보를 올린다는 것 자체로 효용이 있지 않다.
즉, supply chain의 문제는 물품 배송 정보가 없다는 것이 아니다. 그 정보를 설령 저장/조회할 수 있어도 다루는 것이 어렵다는 것을 포함해서 문제라 하는 것이다. 만약 서로서로 약속해서 정보를 보내도 금방 해석해서 다룰 수 있을 방법이 있다면 그것을 썼을 것이다. 그게 안되기 때문에 '공통 프로토콜'이라는 개념이 있어도 블록체인이 우월할 수 있는 것이다. 블록체인은 형식만 제시하는 것이 아니라 그 위에 있는 애플리케이션으로 필요한 일을 할 것이기 때문이다.

그러므로 Automaton이 올라갈 수 있는 블록체인에 대해서 평가할 방법이 하나 도출이 된다. 그 블록체인이 무엇을 저장하는가가 아니라 그 블록체인의 dAPP들이 무엇을 할 것이냐를 찾아내면 된다.

예시 - Elementh 프로젝트

Elementh는 최근 관심을 갖고 도와주고 있는 프로젝트이다. 그들이 관심이 갔던 이유는
(1) 분명한 문제를 알고 있으며
(2) 그것을 블록체인으로 해결했을 때 큰 반향을 일으킬 것이기 때문
(3) 개발자 위주의 B2B 회사다보니 대중에게 마케팅을 잘 안해 인지도가 떨어져 있기 때문이다.

그래서 좀 더 시끄럽지 않은 환경에서 찬찬히 뜯어보며 발전하는 것을 지켜보는 맛이 있다.

그들의 핵심 아이디어는 간단하다. 인간사에 있어 상품은 코드만으로 인식할 수 없고 해당 상품명으로 분류해야하는 데, 소프트웨어 세상에는 그것을 정확히 정의한 정보가 없다는 것이다. 예를 들어 삼성 갤럭시 8은 색깔이 어떻든 어디에서 생산했든 삼성 갤럭시 8인데 그 자체를 정의한 데이터가 없다. 대부분의 전자상거래 회사들은 생산지에서 제품이 들어오면 대략적으로 딥러닝을 이용해 그것을 알아내지만 한계가 있을 수 밖에 없다.

사람들은 상품의 코드라고 하면 보통 시리얼 번호와 같은 것을 상상하지만, Elementh는 상품 카드라는 것을 정의해서 그 안에 그 상품을 가진 사람들 및 각 물품의 시리얼 번호를 저장하는 구조를 제안했다.

앞에서 거듭 말했듯이, 어떤 정보가 있다는 것만으로는 블록체인의 의미가 별로 없다. 블록체인 위에 이 정보를 이용해 어떤 dAPP가 개발될 수 있거나 개발할 지가 중요하다. Elementh의 경우는 다음과 같이 제시했다.

⦁ 탈중앙화 시장. 블록체인 위에 상품 카드라는 것이 존재하므로 그 카드를 적당한 기준에 따라 늘어놓으면 시장이 된다. 물론 dAPP들은 가상화폐의 기본 결제 기능도 넣어놓을 것이다.
⦁ 물품 추적. 생산자-유통자-판매자-구매자로 이어지는 공급망이 있다. 그들은 이 공급망 조회 API를 만들 예정이다.
⦁ 지리적 위치에 따른 상품 검색.
⦁ 탈중앙화된 메시지 전송. 참여자 간 직접 연락이 가능하게 해주는 것.
⦁ 상점 디자이너. 이미 상품 카드가 있으니까 재고만 확보하면 개인 진열장을 만든다.
⦁ 모조품 검색 기능
⦁ 신용 평가. 모든 거래 내역이 있으므로 신용평가기관이 참여하기가 쉽다.
⦁ 그 외 항공권이나 콘서트 티켓 등등의 생성과 소유권 이전 및 관리 기능

퀴즈. 위의 기능들 중 어떤 기능이 G마켓과 같은 서비스제공자의 일을 많이 덜 것인가?


  • 좋은 예시 에는 탈중앙화 시장이 있겠다. 즉, 또다른 g마켓을 만들려면 얼마나 비용이 들 것인가를 생각해야 한다. 블록체인 환경 하에서는, (1) 내가 만든 시장에 공급해줄 공급자가 있으면 '상품카드'들을 뒤져 그 정보들을 데이터베이스에 넣으면 된다. 그리고 (2) 공급자가 Elementh 체인을 이용해 자기 정보를 올리도록 유도하고 (3) 시시때때로 업데이트를 해주면 된다. 나중에 Elementh 체인의 기능이 많이 발전하면 내 데이터베이스가 meta 정보 외에 필요없어지는 때가 올지도 모른다.

  • 안좋은 예시는 신용 평가가 있겠다. 과연 은행에서 평가하기 위해 필요한 수많은 부가적인 정보를 Elementh 체인에서 제공해줄 수 있으며, 신용 평가 프로세스에 필요한 기능들을 dAPP가 커버할 수 있을 것인가. 이것은 금융 프로토콜이 된다는 것을 쉽게 떠올릴 수 있다. 즉, Elementh 단독으로 진행이 안되며 제3의 금융관련 블록체인과 협업을 해야만 하는 것이다.

결론



해당 프로젝트가 제공할 수 있는 것을 Automaton 단위로 인식하고, 그것이 정말 소프트웨어와 관련된 인간사에서 현재 풀 수 없는 문제인지를 확인했을 때 좀 더 합리적인 프로젝트에 대한 평가가 가능할 것이다.

Sort:  

안녕하세요. 블록체인 프로젝트에 대해 통찰력이 느껴지는 좋은 글 감사합니다. 혹, 태그에 'coinkorea' 항목을 추가하시면 더 많은 분들이 쉽게 글을 접하실 수 있을 것 같습니다! :)

그런게 있었군요 ㅎㅎ 감사합니다

안녕하세요. 글 잘읽었습니다. 흥미롭고 생각해보게 하는 글이네요.

생각하신 결과를 얘기하시면 더 좋은 고찰의 결과를 서로서로 공유할 수 있을 것 같습니다 ㅎ

내공이... 좋은글 감사합니다.

좋은 글 감사합니다ㅎ
@홍보해