Decentralized Node-as-a-Service, Pocket Network (1)- Introduction
이번 시리즈에서는 기존 중앙화되어있던 산업인 블록체인 노드 인프라를 탈중앙적으로 제공하는 Pocket Network를 소개합니다. 작성자는 Pocket Network와 아무런 연관이 없음을 미리 알리며, Web3.0 관점에서 프로젝트를 소개하기 위해 작성된 글입니다.
Pocket Network Series
1. Introduction
2. Pocket Network
Author
Jason of Decipher
Seoul Nat’l Univ. Blockchain Academy Decipher(@decipher-media)
Reviewed By 정재환
목차
- Web. 1.0 & 2.0
- Web 2.0의 문제점
- Web 3.0
- Web 3.0 dApp의 구조
- 탈중앙화가 필요한 마지막 열쇠, 노드 인프라
1. Web 1.0 & 2.0
1989년 3월, 유럽 입자 물리 연구소의 컴퓨터 과학자 Tim Berners-Lee가 월드 와이드 웹(World Wide Web)을 만든 이래로, 웹은 과거의 웹1.0, 현재의 웹2.0을 거쳐 웹3.0의 개념이 활발히 언급되고 있습니다. 웹3.0에 대해 알아보기전에, 웹1.0과 웹2.0부터 살펴보겠습니다.
웹1.0(Web 1.0)은 웹2.0(Web2.0)의 개념이 유행하기 전, 1994~2004년까지의 월드 와이드 웹을 일컫습니다. 초기의 웹1.0은 웹 서비스를 운영하고 있는 주체가 사용자들에게 정보를 일방적으로 제공을 하는 방식이었습니다. 사용자 입장에서는 체계적으로 정리된 디렉토리를 검색하고, 운영자가 제공하는 정보를 ‘read’만 할 수 있는 좁은 웹이었습니다. 예를들어 mp3.com이나 Britannica Encyclopedia가 있습니다. 웹1.0에서 사용자가 반대로 운영자에게 정보를 다시 제공하거나, 웹과 소통할 수 있는 방법은 없었습니다. 즉, 웹1.0은 오직 ‘read’만 할 수 있었던 웹이었습니다.
웹2.0(Web 2.0)은 오직 ‘read’만 할 수 있었던 세상인 웹1.0에서 더 나아가 개방, 참여, 공유의 정신을 바탕으로 사용자가 직접 정보를 생산하여 웹과 양방향으로 소통할 수 있는 웹기술을 일컫습니다. 2004년 O’Reilly Media와 Media Live International이 IT 컨퍼런스를 위해 실시한 브레인스토밍에서 처음 명명된 용어이며, 닷컴버블 이후에 살아남은 기업들을 차별화하기 위한 관점에서 웹2.0이라는 명칭이 도입되었습니다. 사용자들 입장에서는 게시판, 댓글, UCC 등과 같은 기능의 추가로 ‘read’를 넘어서 ‘write’를 할 수 있게 되었고, 현재 널리 사용되는 Youtube나 Facebook과 같은 거대 플랫폼이 출현할 수 있었습니다.
2. Web 2.0의 문제점
닷컴버블 이후 2004년부터의 웹2.0은 놀라울 정도의 속도로 성장했습니다. Google과 Amazon을 필두로 웹2.0을 내세우는 수많은 기업들이 나타났고, 현재의 웹2.0 시대를 만들었습니다. 하지만 사용자들이 웹2.0 서비스를 이용하며 많은 문제점들이 대두되어 왔습니다. 웹2.0 플랫폼 소유 기업의 중앙집중적인 성격 때문에, 폐쇄적 운영, 검열, 데이터 주권 침해, 이윤 독점 등의 문제들이 발생해왔습니다.
예를 들어, Facebook, Instagram, Twitter과 같은 소셜미디어 플랫폼을 살펴보겠습니다. 중앙화된 기업이 운영하는 플랫폼이기에 기업 차원에서 마음대로 사용자들을 정보 및 활동을 검열할 수 있으며, 이에 대한 예시로 최근에 미 전 대통령인 트럼프의 계정이 중단되는 사건이 있었습니다. 또한, 이런 중앙화된 플랫폼들은 사용자들의 검색이나 활동 기록 등을 분석하여 광고 기업에 판매하여 이윤을 독점하기도 하며, 사용자들의 데이터 주권을 침해하기도 합니다. 이렇듯, 웹2.0에서는 사용자들이 플랫폼들에 컨텐츠를 제작하여 올려도 진정한 컨텐츠의 주인은 사용자가 아닌 플랫폼의 소유이며, 이로 인해 많은 문제점이 발생합니다.
3. Web 3.0
웹3.0(Web3.0)은 ‘read and write’를 할 수 있었던 세상인 웹2.0에서 더 나아가 초창기 인터넷에 추구했던 가치인 탈중앙 웹을 구현하는 것을 목표로 합니다. 웹3.0은 기존 중앙 주체가 이윤을 거의 독점하던 플랫폼 서비스들을 재구성하여 보다 탈중앙적으로 많은 사람들이 수혜를 받을 수 있도록 합니다. 이를 구현하기 위해서는 자료들과 정보를 탈중앙적으로 분산화하여 현재 집중화된 권력과 데이터를 다시 개인 사용자들에게 돌려줘야 하며, 탈중앙 개방형 프로토콜인 블록체인이 이를 가능하게 합니다.
즉, 웹3.0은 블록체인이라는 새로운 네트워크를 통해 구축되는 새로운 환경입니다. 블록체인 상의 어플리케이션은 디앱(dApp)이라고 불리며 탈중앙화된 어플리케이션(Decentralized Application)의 줄임말입니다. 중앙 운영주체가 존재했던 Web2.0의 플랫폼과 달리, Web3.0은 중앙 운영주체가 없고 오픈소스, 토큰 인센티브 시스템 등을 기반으로 탈중앙적으로 운영되며 소유됩니다. 이는 ‘read’의 웹1.0, ‘read & write’의 웹2.0과 대비되어 ‘read, write & own’의 웹3.0으로 표현될 수 있습니다.
웹3.0의 특징은 주로 블록체인의 특징으로 부터 비롯됩니다. 첫 번째로 블록체인이 스마트 컨트랙트를 통해 모르는 사람들과 신뢰가 없어도(trustless) 믿고 거래를 할 수 있는 환경을 만들어 주기 때문에, 제 3자인 중앙화된 중개인이 필요없다는 특징이 있습니다. 중개인이 사라지기 때문에, 중간에서 발생하는 불필요한 수수료들을 절감하고 사용자들에게 돌아가는 이윤을 극대화할 수 있습니다.
두 번째로 탈중앙화된 웹3.0에서는 정부나 기업같은 어떠한 중앙화된 주체도 개인의 데이터를 검열할 권리가 없습니다. 사용자들의 데이터와 활동은 탈중앙적으로 운영되는 블록체인 및 IPFS와 같은 곳에 기록되기 때문에 중앙화된 주체의 통제 밖이며 그 누구도 이를 검열, 수정 및 삭제를 할 수 없습니다. 웹3.0에서는 웹2.0에서 침해됐던 개인의 데이터 주권을 되찾을 수 있으며 암호화되어 보호됩니다.
마지막으로 중앙주체가 없어도 사용자들은 어플리케이션에 기여를 한 만큼 합의된 규칙에 따라 인센티브를 받아갈 수 있습니다. 기여를 한 만큼 적절한 보상을 주는 토큰 인센티브 시스템을 통해 사용자들은 프로토콜에서 발생하는 수익을 투명하게 보상받을 수 있고, 기존 Web2.0에서 중앙 운영주체에 독점됐던 수익을 분배받을 수 있으며, 어플리케이션과 사용자가 다함께 성장하는 모습을 보여줄 수 있습니다.
웹3.0을 다양한 예시를 통해 살펴봅시다. 첫 번째로는 탈중앙 분산저장 네트워크인 파일코인(Filecoin) 네트워크와 Arweave가 있습니다. 파일코인에서는 기여자들이 IPFS를 위해 남는 하드 드라이브 공간을 기여할 시 기여한 만큼 $FIL 토큰을 통해 보상 받고, 사용자들은 $FIL토큰을 이용하여 P2P 네트워크에서 다른 기여자들의 유휴 저장공간에 자신이 원하는 파일을 저장할 수 있습니다. 비슷하지만 다른 탈중앙 분산저장 네트워크인 Arweave는 영구저장이 가능하다는 강점이 있습니다. 실제로 홍콩과 중국간의 정치적 갈등이 심해지고 있을 가운데, 21살의 학생 운동가인 Ho는 Apple Daily를 Arweave에 저장함으로써 중국 정부의 검열을 피할 수 있었습니다.
두 번째로 현재 글이 게시되어있는 플랫폼인 Medium의 웹3.0 버전인 Mirror.xyz가 있습니다. 크리에이터들은 Mirror.xyz 플랫폼에 아티클이나 NFT를 퍼블리시하는 것 뿐만 아니라 크라우펀딩 모금, 경매, 커뮤니티 투표 등 까지도 진행할 수 있습니다. Mirror.xyz에서 발행되는 아티클들은 모두 탈중앙 스토리지인 Arweave에 저장됩니다. 따라서 크리에이터들은 검열에 저항성을 가지며 진정으로 자신들의 컨텐츠를 소유할 수 있습니다.
세 번째로는 대표적인 웹2.0 구직 플랫폼인 Upwork의 탈중앙 버전인 Braintrust가 있습니다. 전통 구직 시장의 문제점으로는 능력있는 사람을 찾는 것이 어렵고, 짧지 않은 시간이 소요되며, 복잡한 채용시스템 등이 있습니다. 하지만 Braintrust에서는 BTRST라는 ERC-20 토큰을 이용한 인센티브 시스테을 도입하여 누구나 구인, 구직, 헤드헌팅을 할 수 있습니다.
이외의 현재 널리 쓰이고 있는 중앙화된 웹2.0 플랫폼을 대체할 수 있는 탈중앙화된 웹3.0 프로토콜은 위의 그림에서 볼 수 있습니다. 예시를 몇 개 살펴보면, 웹3.0시대가 온다면 스토리지 시스템에서는 Filecoin, arweave가 Amazone AWS, Dropbox를, 데이터 처리는 Ocean protocol이 Snowflake, Google을, DNS에서는 ENS가 Verisign을, 음원시장에선 Audius가 Spotify를, 인력시장에서는 Braintrust가 Upwork를 탈중앙적으로 대체할 수 있습니다.
4. Web 3.0 dApp의 구조
지금까지 웹3.0이 최근 화두에 오르게된 계기를 웹1.0, 웹2.0과 함께 알아보았습니다. 이번 시리즈의 주제인 탈중앙된 노드 인프라 서비스인 Pocket Network가 웹3.0에서 어떤 의미를 가지는지 알아보기위해서는 우선 웹3.0의 dApp의 구조에 대해 알아볼 필요가 있습니다. 웹3.0의 dApp의 구조에 대해 알아보기 이전에, 웹2.0의 어플리케이션의 구조를 먼저 살펴보겠습니다.
웹2.0 어플리케이션은 데이터베이스, 백엔드(Back-end), 프론트엔드(Front-end)로 구성되어 있습니다. 현재 제가 글을 작성하고 있는 Medium 플랫폼을 예시로 들어봅시다. 첫 번째로 사용자의 정보, 글, 코멘트 등의 데이터가 저장되는 데이터베이스가 있고, 두 번째로 사용자가 회원가입을 한다던지, 코멘트를 작성한다던지 플랫폼과 상호작용을 할 시에 어떻게 어플리케이션이 반응을 해야될지 프로그래밍으로 짜여진 백엔드가 있으며, 마지막으로 Medium의 웹사이트의 전체적인 모양이나 어떤 버튼을 통해 상호작용하는지 등의 사용자 인터페이스(User Interface)를 나타내고 있는 프론트엔드가 있습니다.
이제 웹3.0 dApp의 구조를 알아봅시다. 웹2.0과 달리 웹3.0 dApp 에는 중앙화된 중개인이 없습니다. 기존의 중앙화되어있던 데이터베이스는 노드들에 의해 탈중앙적으로 운영되고 유지되는 블록체인으로 대체 됩니다. 중앙화된 데이터베이스와 달리 블록체인 네트워크는 단일 주체에게 속해있지 않고, 합의 알고리즘을 통해 노드들에게 운영되기 때문에 임의로 기존의 데이터를 마음대로 수정 및 삭제하는 중앙집중식 검열이 방지됩니다.
웹3.0에서 블록체인 위에 dApp을 개발하여 올리고 싶다면 백엔드 대신 스마트 컨트랙트(Smart contract)를 블록체인에 배포하면 됩니다. 스마트 컨트랙트는 블록체인 위에서 돌아가는 프로그램이며, 블록체인의 상태 변화에 대한 로직을 정의합니다. 이더리움 네트워크의 경우 Solidity나 Vyper 언어를 통해 작성됩니다. 작성된 스마트 컨트랙트는 바이트코드(Bytecode)로 컴파일된 후 이더리움 가상머신 (Ethereum Virtual Machine, EVM)이 실행하게 됩니다.
프론트엔드는 사용자가 블록체인과 상호작용하는 인터페이스입니다. 프론트엔드가 블록체인 위에 배포된 스마트컨트랙트와 상호작용하기 위해서는 블록체인을 유지하는 노드들 중 하나와 상호작용을 해야합니다. 왜냐하면 노드들만이 EVM에 실행될 트랜잭션에 대한 요청을 네트워크에 전파할 수 있기 때문입니다.
따라서 프론트엔드와 스마트컨트랙트가 상호작용하기 위해서는 노드가 필요한데, 개발자나 사용자가 노드와 상호작용할 수 있는 방법은 두 가지가 있습니다. 개발자가 직접 네트워크의 노드를 셋업하거나, 그렇지 않으면 중앙화된 기업이 제공하는 노드 서비스를 이용해야 합니다. 보통 직접 노드를 세팅하는 것은 또 다른 어려움과 수고가 들기 때문에, 대부분의 개발자가 개발한 dApp은 중앙화된 기업이 제공하는 노드 서비스를 이용하며, 이러한 이유로 대부분의 사용자는 중앙화된 노드 서비스를 통해 블록체인과 상호작용하게 됩니다. 대표적인 노드 서비스 제공 기업으로는 Infura, Alchemy가 있으며, 국내 기업으로는 DSRV가 있습니다.
마저 Web3.0 dApp 구조의 남은 부분을 살펴봅시다. 첫 번째로 저장장소인 스토리지 관련 내용입니다. 블록체인의 블록 용량은 매우 작습니다. 따라서 모든 데이터를 블록체인에 담는 것이 불가능하기 때문에 탈중앙화된 오프체인 스토리지 솔루션인 InterPlantery File System(IPFS)나 SWARM이 필요합니다.
IPFS는 기존의 중앙화된 서버 및 데이터 저장방식이 아닌 P2P방식으로 분산형 파일 시스템에 데이터를 저장하고 인터넷으로 공유하기 위한 프로토콜이입니다. 예시로 토렌트(Torrent)와 같은 서비스가 있으며, 대용량 파일을 여러 개의 조각으로 쪼개서 전 세계 여러 곳에 저장하고 불러오는 서비스입니다. 각자의 개인 저장공간을 기여하도록 별도의 블록체인 네트워크를 통해 인센티브 시스템을 도입한 파일코인(Filecoin)과 같은 프로젝트가 존재합니다.
SWARM은 탈중앙적인 스토리지 네트워크라는 점에서 IPFS와 비슷하지만, 인센티브 시스템이 파일코인과 같이 별도의 네트워크에 존재하는 것이 아닌, 이더리움 네트워크의 스마트 컨트랙트를 통해 존재하는 것이 차이점입니다.
사실 진정한 의미의 탈중앙 dApp이 되기 위해서는 프론트엔드도 웹서버가 아닌, 탈중앙 스토리지 솔루션으로부터 호스팅 해야합니다. 아직까지 프론트엔드를 웹서버에서 호스팅하고 있는 dApp들의 수가 많은데, 진정한 의미의 dApp이라고 말하기는 아직 조금 무리가 있습니다. 이러한 이유로 생기는 문제점들의 예시로는, 작년 12월 북미의 AWS 서버가 잠깐 중단되면서 dydx와 같은 dApp들에 접속이 중단되는 현상이 발생했습니다. 프론트엔드를 탈중앙 스토리지 솔루션으로부터 호스팅하였다면 발생하지 않을 문제입니다.
두 번째로는 블록체인에서 데이터를 요청하는 쿼리(Query) 관련 내용입니다. 더 그래프(The Graph)는 블록체인 위의 데이터를 인덱싱하고 쿼리하는 오프체인 탈중앙 프로토콜이며, 탈중앙 API 프로토콜을 사용하여 블록체인에 저장되어있는 데이터에 대한 정보 요청을 중개합니다. 더 그래프 내의 미리 인덱싱된 Subgraph를 이용하여 블록체인에 저장되어있는 복잡한 정보들을 더욱 더 손쉽게 불러와 활용할 수 있습니다.
마지막으로는 각종 이더리움 스케일링 솔루션입니다. 현재 이더리움의 확장성은 다양한 사용자들과 dApp을 감당하기에 속도가 너무 느리며, 수수료는 비쌉니다. 따라서 다수의 사용자가 사용할 수 있는 진정한 웹3.0의 시대가 오기 위해서는 이더리움 네트워크의 확장성을 개선해줄 수 있는 플라즈마, 밸리디움, zk롤업, 옵티미스틱 롤업과 같은 다양한 이더리움 레이어2 스케일링 솔루션들의 역할이 중요합니다.
5. 탈중앙화가 필요한 마지막 열쇠, 노드 인프라
지금까지 웹3.0 dApp의 구조를 살펴보았습니다. 웹2.0의 프론트엔드는 탈중앙 스토리지 솔루션으로부터 호스팅하는 프론트엔드로, 웹2.0의 백엔드는 스마트 컨트랙트로, 웹2.0의 데이터베이스는 블록체인으로 대체되며, 보다 탈중앙적인 어플리케이션의 모습을 띌 수 있었습니다. 이외에도, 스토리지 솔루션, 데이터 쿼리, 스케일링 솔루션 등 다양한 기능들을 탈중앙적인 방법으로 해결할 수 있었습니다.
하지만 위에서 언급했듯이, 아직 dApp에서 중앙화된 부분이 존재합니다. 바로 프론트엔드와 블록체인의 스마트 컨트랙트가 상호작용하는 노드 API 부분입니다. 현재 대부분의 dApp에서 Infura나 Alchemy와 같은 중앙화된 노드 인프라 기업이 노드API 접근이나, 과거 트랜잭션들에 대한 접근을 이더리움 노드 서비스 형태로 중개하고 판매하고 있습니다.
Infura는 Consensys라는 기업에서 제공하고 있는 노드 서비스이며, 현재 350,000 이상의 개발자들이 사용하고 있습니다. Infura는 개발자들이 노드 셋업을 신경을 쓰지 않고 온전히 dApp 개발에 충실할 수 있도록, 노드와 관련된 인프라와 각종 툴을 제공합니다. Infura에 가입하여 프로젝트를 개설하면 아래 그림과 같이 API Key와 Endpoint를 제공받을 수 있으며, 개발자는 스마트 컨트랙트를 작성할 때 이를 활용하여 손쉽게 노드와 연결할 수 있습니다.
이런 서비스는 dApp 개발자들을 굉장히 편리하게 만들어주지만, 당연히 중앙화된 서비스이기 때문에 이에 따른 문제점이 생기길 마련입니다. 2020년 11월, Infura에 장애가 발생하자 국내외 주요거래소의 이더리움 입출금이 일시 중단되는 현상이 발생했습니다. 위에서 언급했던 프론트엔드가 중앙화된 웹서버에 의존하여 발생했던 문제와 마찬가지로, 노드 서비스 또한 중앙화된 Infura와 같은 서비스에 의존할 경우 탈중앙 네트워크인 블록체인 상의 dApp인데도 불구하고 위와 같은 서비스에 장애를 겪을 수 있습니다.
이러한 문제는 웹3.0에 회의적인 생각을 가지고 있는 암호학자이자 Signal의 전 CEO, Moxie의 에세이에서도 잘 언급되어 있습니다. 탈중앙화된 웹을 위해 블록체인이라는 기술을 사용하는데, 개발자 및 사용자가 블록체인과 통신하는 창구는 결국 중앙화된 기업을 통하는 것은 굉장히 모순입니다. 따라서 진정한 의미의 탈중앙 웹3.0 dApp을 위해서는 노드 인프라 부분이 탈중앙화 되어야할 필요성이 있으며, 이를 해결하기 위해 나온 프로토콜이 바로 Pocket Network입니다.
지금까지 웹3.0에서 왜 탈중앙 노드 서비스가 필요한지 웹1.0부터 시작하여 웹3.0 dApp의 구조까지 살펴보았습니다. 2편에서는 Pocket Network에 대해 자세히 알아보도록 하겠습니다.
Reference
- Web3 ELI5: What is Web3? (https://messari.io/article/web3-eli5-what-is-web3)
- The Architecture of a Web 3.0 application (https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application)
- My first impressions of web3 (https://moxie.org/2022/01/07/web3-first-impressions.html)