우리는 애플리케이션이 필요하다
이 글은 2023년에 쓰는 처음이자 마지막 블록체인 글이며 블록체인에 대한 나의 다양한 회의적인 시각과 개인적인 희망을 담아 원하는 발전 방향을 제시한다.
우리는 실패하고 있다
이 글을 쓰기 위해 펜을 잡은 2023년 1월 24일에는 수 많은 블록체인들이 있으며, 매일 같이 트위터에서 존재감을 드러내고 있다. 대표적으로 이더리움, 폴리곤, 아발란체, 옵티미즘, 아비트럼, 코스모스, 솔라나, 앱토스, 스이 등이 있다. 이더리움을 제외한 많은 블록체인들은 이더리움의 부족한 블록 공간을 채우겠다고 선언하면서 성장했다.
그리고 2022년 테라와 FTX 붕괴와 미 연준의 인플레이션 억제를 위한 유동성 회수로 암호화폐 시장 전체적으로 가격이 급락하면서, 블록체인은 수요를 잃고 오히려 공급이 넘치는 상황이 연출되게 된다.
앱토스는 블록에 반드시 투표 트랜잭션을 포함하기 때문에 최소 2개의 트랜잭션은 블록에 포함된다. 즉, 위 그림에서 실질적인 유저 트랜잭션은 1개에 불과하다. 멀티체인 내러티브를 가진 코스모스 생태계 지표를 보면, 얼마나 많은 블록들이 비어 있는 채로 생성되고 있는지 직관적으로 알 수 있다.
이 시장에서 대장격인 이더리움 또한, 일간 활성 계정 수가 평균 10만~20만개로, 2년전인 2020년 수준으로 회귀하였다. 그 동안, 이더리움은 여러번의 업데이트를 통해 블록의 Gas Limit을 3000만 수준으로 확장하였다.
활성 계정 수를 다루는 차트는 보낸 이와 받은 이 주소를 모두 포함해서 더블 카운팅 하고 있다. 또한 화이트리스트를 딴다거나 에어드랍을 받기위해 다 계정을 쓰는 블록체인의 전통 문화를 감안하면 실제 유저는 절반에도 못 미칠 것이다
위에서 나열한 현상들은 우리에게 블록체인 수요는 감소하고 공급은 늘어나고 있다는 것을 시사한다. 넘치는 공급에도 불구하고 지금 또 다른 L1/L2 블록체인들이 출시를 앞두고 있다. 왜 우리는 애플리케이션 개발에는 외면한 채 인프라 확장에만 집중하고 있을까? 불필요한 인프라를 개발하기 위해 많은 금액과 시간이 소모되고 있지만, 블록체인 개발 커뮤니티가 이 문제에 대해 침묵하고 있는 이유가 무엇일까?
모두가 공감할 수 있는 정답은 아니겠지만, 필자의 생각으로는 블록 공간에 대한 수요는 없어도 메인넷 코인에 대한 수요는 있기 때문일 것이다.
소프트웨어를 만드는 사람으로써 우리의 목표는 사용자의 필요를 충족시킬 수 있는 제품을 만드는 것이다. 아무리 잘 만든 소프트웨어를 개발해도 사용자들이 필요로 하지 않는다면 외면받을 수 밖에 없다. 실리콘밸리의 전설이자 Y 콤비네이터의 창업자 폴 그레이엄은 성공적인 스타트업의 조건으로 “사용자들이 정말로 원하는 것을 만들어라” 라고 조언한다. 인프라에 대한 수요는 없고 메인넷 코인에 대한 수요만 존재하는 지금의 현실이 소프트웨어 개발자인 우리들에게 이야기 해주는 비극적인 주제는 단 한가지이다. 우리는 철저히 실패하고 있다.
기술 발전의 장벽
1903년 12월 17일 라이트 형제가 동력비행에 성공하면서 비행기의 시대가 열렸고, 1864년 맥스웰이 전파의 존재를 주장한 이래 1901년 최초로 대서양을 횡단하는 무선통신을 성공하면서 인터넷 발달의 기반을 다졌다. 메르세데스-벤츠의 공동 창립자 카를 벤츠(Karl Benz)는 1886년 최초의 가솔린 자동차를 발명하였다. 이렇게 나열하고 보면 현대 사회에서 누리는 많은 기술들은 약 120~150여년 전에 시작되었다. 그 당시를 살고 있던 사람들은 산업혁명시기와 겹쳐서 급격하게 바뀌는 삶을 보면서 미래가 급진적으로 바뀔 것이라고 상상했을 것이다.
사실 실제 세상은 과거 사람들이 생각했던 것 보다 훨씬 정적이다. 내가 역사 발전의 중간에 서 있어서 무딘 걸지는 몰라도 세상과 나 자신에 대한 의식을 자각하기 시작한 시절부터 지금까지 큰 변화는 느껴지지 않는다. 기술의 발전은 초기에 급격하게 일어나지만 무언가 장벽이 있어서 성장 곡선이 사실은 지수 함수가 아니라 로그 함수 였던 건 아닐까? ( 레이 커즈와일은 《특이점이 온다》에서 기술의 발전은 가속도가 붙는다고 주장했다. )
우리는 빛 보다 빠른 물체가 없음을 안다. 그래서 빛보다 빨리 한국에서 미국으로 정보를 전송할 수는 없기 때문에 레이턴시는 필연적으로 일정 시간 이상 존재한다. 트랜지스터의 크기는 더 이상 작아지기 힘들기 때문에 코어 수를 늘리는 멀티 코어 컴퓨팅이 현재 대세로 자리잡았다. (삼전이 1나노 반도체를 양산하겠다고 선언하면서 이 한계를 다시 한 번 넘으려고 한다. 이 전자과 괴물들..)
사르트르의 소설책 《구토》의 주인공 로캉탱은 누군가 물수제비를 하는 모습을 보고 본인도 물수제비를 하고자 조약돌을 들고선 문득 구토를 할 것 같은 매스꺼움을 느꼈다. 존재에 대해 필연성을 부여하던 시대에 살던 주인공은 어떤 인과적 이유없이 우연히 존재하는 조약돌을 쥐고는 세상의 과잉에 대해 자각하며 매스꺼움을 느낀다. 이 글을 쓰고 있는 나도 요즘 몇몇 블록체인 기술들의 존재가 필연적이 아니라는 생각을 하기 시작하면서 매스꺼움을 느끼고 있다. 블록체인 인프라도 과잉이다.
토마스 쿤은 과학자들이 세상을 바라보는 어떤 틀에 갇혀서 연구하고 있다고 생각했으며 이를 《과학혁명의 구조》 에서 패러다임이라고 불렀다. 토마스 쿤은 과학의 패러다임이 변화되는 과정을 정상과학 – 위기 – 혁명의 세 단계로 나누었다. 필자가 생각하기에는 web 3.0 을 위해 블록체인을 이용한다는 패러다임은 위기 단계에 있다. 패러다임 전환을 통해 큰 혁명이 있어야 한다고 생각한다. 아마 새로운 패러다임은 지금의 “블록체인”과 같은 구조는 아닐 것이다. 필자가 생각하는 근거를 한 번 알아보자.
다중 리더 복제 구조
블록체인은 데이터베이스와 동일하게 해석하면 다중 리더의 복제 데이터베이스 구조라고 볼 수 있다.
흔히 Web 2.0라고 불리는 플랫폼에서는 대규모 스케일의 데이터를 처리하기 위해서 단일 리더 구조의 데이터베이스를 많이 사용하며 사용자에게는 복제 지연에 따른 데이터 불일치를 숨기는 방향으로 개발한다. 예를 들어, 미국에서 트위터를 하고 있는 Alice의 트윗이 실제로 한국에 살고 있는 나에게 까지 도달하는데는 필연적인 레이턴시가 존재한다. 플랫폼은 이 사실을 숨기기 위해 실제 트윗을 작성한 당사자인 “Alice” 에게는 본인이 쓴 내용은 항상 보여주고 한국에 있는 “나”는 잠시 후에 복제되어서 온 데이터를 받아보며 Alice와 나를 동기화 한다
블록체인과 비슷한 다중 리더 복제 구조는 데이터가 안정화 되기 까지의 시간 등의 문제로 인해 중요한 데이터에 대해서는 사용하기 어렵다. 예를 들어, 동일한 데이터에 대한 쓰기가 여러 리더에 요청으로 동시에 도착할 때 최종적인 데이터가 서로 다르게 수렴하지 않도록 이 충돌을 어떤 방식으로든 해소해야 한다. 보통은 쓰기 요청에 대해 단조 시계를 붙여서 더 높은 버전의 데이터로 덮어쓰는 최종 쓰기 승리 (Last Write Win)이라는 전략을 사용한다.
블록체인에서는 이 쓰기 충돌을 해소하기 위해 분기 선택 규칙을 사용한다. 비트코인은 작업증명으로 탄생한 블록들 중에서 가장 긴 블록을 선택하고 초기 이더리움은 블록 트리 중에서 가장 무거운 서브 트리를 선택하는 방식으로 쓰기 충돌을 해소하며, 전체 트랜잭션에 대한 줄을 세운다.
충돌 회피
실제로는 다중 리더 복제 DB에서는 데이터에 충돌 외에도 서로 인과 관계가 일치하지 않는다거나, 시간이 갑자기 이동한다거나 하는 등의 문제가 발생할 수 있다. 그래서 글로벌 스케일의 시스템이 아니라면, 대부분 이 충돌 자체를 문제 삼지 않게 하기 위해 단일 리더의 복제 시스템을 이용한다. 블록체인에서도 마찬가지로 한 시점에 여러 리더가 존재할 수 있는 구조라면 이 충돌을 해소하기 까지 많은 시간이 걸리기 때문에 사용자 경험에 매우 좋지 않다.
현재까지 알려진 블록이 최신인줄 알았는데 실제로는 더 무거운 서브 트리가 나타나면 모든 노드는 그 데이터를 최종적으로 따라야 한다. 이렇게 현재까지의 진실로 알려진 블록이 갑자기 지워지고 새로운 블록을 채택하는 현상을 Block Reorg 라고 부른다. 폴리곤 메인넷은 하루에도 크고 작은 Reorg가 발생하고 있다. 그래서 거래소들은 데이터가 충분히 모든 노드에 수렴할 때 까지 기다리면서 사용자의 트랜잭션을 컨펌한다.
PBFT 에서는 이런 데이터가 즉각 컨펌되게 하기 위해 블록을 생성할 때마다 1/3 + 1이상의 노드가 투표에 참여해야 한다. 많은 네트워크 트래픽을 요구하기 때문에 성능이 매우 느리고 리더의 숫자를 무한정 늘릴 수 없다는 제약이 있다. 몇몇 블록체인들은 BFT계열의 레이턴시 증가 문제를 해결하기 위해 한 순간에 존재할 수 있는 리더의 개수를 소수로 제한하는 알고리즘을 사용한다. 알고랜드는 VRF를 통해 리더를 단 한명으로 선출하고 아발란체의 Snowman++ 에서는 전체 검증자 중에서 일부를 사전에 선택한다.
인과성을 해치는 요청의 경우 파티션 키를 잡아서 동일한 파티션에 밀어 넣는 것으로 문제를 해결할 수 있지만, 중요한 비즈니스를 개발할 때 하나의 키로만 순서를 맞추기에는 인과성 문제를 모두 해결하기 어려운 케이스가 있다. 그래서 은행처럼 중요한 트랜잭션을 다루는 시스템은 단일 데이터베이스로 해결하는 경우가 흔하다. — 토스 | Slash 2022
낙관적 동시성
대규모 트랜잭션 처리에 쓰이는 낙관적 동시성의 기본적인 아이디어는 다수의 트랜잭션이 서로 충돌하지 않을 것이라고 가정하고 병렬로 처리한 다음, 만약 충돌이 생기면 그 때 해소하겠다는 전략을 취한다. 이는 실제로 트랜잭션이 충돌하지 않으면 순서대로 줄을 세워서 처리하는 것 보다 더 높은 처리량을 기록할 수 있다.
실제로는 충돌이 자주 발생할수록 처리량이 낮아진다. 그래서 전통적인 데이터베이스에서는 고립 수준(Isolation Level)을 통해 일련의 트랜잭션 집합 안에서 충돌이 발생하는 정도와 순차적으로 처리되는 트랜잭션의 비율을 결정한다.
일부 블록체인들은 이런 낙관적 동시성 아이디어를 도입해서 처리량을 높이고자 한다. 앱토스는 BlockSTM을 통해 낙관적 동시성을 구현했다. Solana는 스마트 컨트랙트를 작성할 때 어카운트 라는 이름으로 모든 종속된 데이터를 트랜잭션에 포함해서 넘기고 Sealevel VM에서 트랜잭션 사이의 종속 관계를 사전에 파악하고 병렬 처리할 건 병렬처리 하고, 순차처리 해야하는 건 순차처리하는 재밌는 방식을 사용한다.
하지만 서술했듯이 실제로 데이터 충돌이 자주 발생하면 결국 전체 순서를 맞춰서 순차 처리하는 이더리움과 비교해서 더 좋을게 없다. 아니, 더 나쁘다. 실제 인터넷 세상에서는 구글,네이버,카카오,아마존,넷플릭스 처럼 하나의 플랫폼이 모든 트래픽을 점유하는 승자독식구조이다. 블록체인 세상이라고 사는 사람이 달라진게 아니다.
모든 사람이 유니스왑을 통해 거래한다면 트랜잭션은 병렬처리 될 수 없다. 낙관적 동시성을 도입했다는 블록체인은 실제로는 알고리즘 보다는 참여가능한 검증자의 수준을 높여서 성능 혜택을 봤다. 솔라나는 검증자가 되기위해 128GB의 메모리와 12개의 CPU코어 이상을 권장한다. 그래서 앱토스, 솔라나, 스이 등이 아무리 TPS 자랑을 해도 현실적으로는 3000~4000 TPS 정도로 수렴하지 않을까 생각한다.
Stateless Blockchain
모든 리더에 데이터가 복제되어야 한다는 블록체인 패러다임의 문제를 회피하고자, 각 노드들은 전체 데이터를 저장하는 대신 글로벌 상태에 대해 작은 증명(Commitment)만 업로드 하는 무상태 블록체인(Stateless Blockchain)을 제안하기도 했다.
하지만, 지금까지 알려진 모든 stateless 블록체인들은 유저가 제출한 증명이 너무 자주 무효화 되기 때문에 유저가 지속적으로 블록체인을 관찰해야 한다는 문제점이 있다. 이더리움, 솔라나를 쓰는 우리는 오프라인 상태에서 외부 활동을 하더라도 우리의 자산 데이터가 그대로 저장되어 있지만 이런 암호학적 stateless 블록체인은 항상 인터넷에 연결하면서 주기적으로 데이터를 가져오고 증명을 업데이트 해야한다.
제안
지금까지 두 가지 이야기를 했다. 소프트웨어 개발자로써 우리들은 사용자의 요구를 충족하는데 실패하고 있다는 주장과 블록체인 패러다임의 한계로 인해 성장할 수 있는 확장성은 제약이 존재한다고 주장했다. 그래서 이곳에서 필자가 제안하는 블록체인의 활용처는 금융 및 자산화 플랫폼으로만 사용할 것을 제안한다.
먼저, 인프라는 지금도 계속 수평확장되고 있지만 궁극적으로는 UI/UX 문제를 해결하지 못하고 있다. 다수의 블록체인이 공존하고 있는 멀티체인 패러다임이 주류로 잡는다고 하더라도 사용자들은 비동기로 자산이 이동하는 경험을 하기 때문에 복잡한 UI/UX와 어려운 접근성이 허들로 작용할 것이다.
이를 해결하려면 결국 단일 블록체인을 사용하며 고도화 하는 방향으로 개발해야 할 것이다. 하지만 성장할 수 있는 확장성에는 제한이 있기 때문에 궁극적으로 블록체인을 ‘덜’ 사용하는 방향으로 개발하는 것이 바람직하다. 탈중앙화된 소셜 미디어를 구현할 때 모든 로직을 스마트 컨트랙트로 구현하는 것은 낭비다.
Web3.0은 자본의 소유권과 자본의 이동을 인터넷 세상에서 가능케 했다는 것에서 의의가 크다. 필자는 이 자본에 관한 용도 이외에 블록체인을 써야하는 정당성을 아직까지 납득하지 못했다. Steem 블록체인 처럼 실제 포스팅된 글을 블록에 올려서 저장하면서 블록 공간을 낭비할 필요가 없다고 생각한다.
필자는 신뢰가 필요없는 시스템 보다는 사회에서 보증하는 신용을 더 신뢰한다. 이미 블록체인은 신뢰가 필요없는 시스템에서 해킹 당하고, 러그 당하면서 사람들의 신뢰를 잃었다. 오히려 법적으로 잘 통제된 기존 전통 금융이 더 믿음이 간다. 이를 부정한다면 계좌에 매달 들어오는 급여를 메타마스크로 옮겨야 할 것이다
자본이 접근하지 않았던 무형자산을 자본이 접근하기 쉽게 바꾸고, 서로를 모르는 두 당사자가 서로의 자산을 거래하고, 국경을 넘어서 송금하는 등 금융 플랫폼으로써의 블록체인이 활용될 때야 말로 그 존재 의미가 빛이 난다.
이 이야기에 대해 DSRV의 개발자이시자 Boom labs 코어 컨트리뷰터이신 Sigrid Jin님께서는 블록체인을 탈 중앙화 관점이 아니라, 비기술 섹터가 가지고 있던 영역을 소프트웨어로 가져오는 트로이목마로써 가능하다는 조언을 해주셨습니다. 감사합니다.
꼭 블록체인이 아니어도 된다
최근 미디엄이 오픈한 me.dm을 보면서 이것이 web3.0이 나아가야 할 방향이구나 느꼈다. me.dm은 실제로는 mastodon 이라는 오픈소스를 기반으로 동작한다. 다수의 서버들이 소셜 네트워크 서비스를 구성하는데 서로 다른 주체에 의해 운영되는 서버들이 ActivityPub 프로토콜 아래에서 정보를 교환하고 발견한다.
실제로 me.dm에서 쓴 글은 mastodon.social 에서 발견되고 그 역도 가능하다. 여기서는 “Social networking that’s not for sale. Stay in control of your own timeline” 라고 말한다 ! 그렇다. 탈중앙화는 꼭 합의에 형태로 구현되지 않아도 되며 꼭 완벽한 탈중앙화를 이룰 필요는 없다. 중요한 건 사용자들이 정말로 원하는 것을 제공한하는 거라고 생각한다. 사람들은 블록체인 버전의 트위터 보다 검열없는 타임라인과 광고없는 소셜미디어를 원하는 것 처럼 말이다.
사람들은 진심으로 탈중앙화를 원하는게 아니라 자신의 자산이 안전하게 보관되는 것을 필요로 한다. 그 방법이 탈중앙화된 블록체인이 아니라 다른 중앙화된 방식으로 보관되어도 괜찮다고 생각한다. 은행에서 발행한 디지털 포인트를 자유롭게 현금화 가능하게 법이 허락하고 API를 통해 누구나 확장 프로그램을 만들 수 있게 했어도 지금과 같은 규모로 디지털 자산 시장은 성장했을 것이다.
우리는 또 다른 블록체인의 출시와 메인넷 코인들의 펌핑과 덤핑보다 애플리케이션이 필요하다. 맨날 똑같은 기능의 이름만 다른 Dex, 대출, 스테이블 코인, nft 복사 붙여넣기 말고 실제 애플리케이션이 개발되길 기대한다. 그런 의미에서 필자는 그 어떤 서비스보다 STEPN과 Reddit이 블록체인에 기여한 점이 크다고 생각한다.