많은 개발자에게 Web3라는 용어는 '2021년에 알아두어야 할 것들'과 같은 인기 트윗에서나 볼 법한 하나의 유행어처럼 느껴집니다. 저 역시 개발자로서 오랫동안 그런 인상을 받아왔습니다. 지난 몇 달 동안 저는 Web3 에코시스템이 어떤 식으로 작동하고 왜 중요한지 더 잘 이해하기 위한 탐구를 시작했습니다.

Web3는 일반적으로 인터넷 환경에 대한 분산된 형태의 진화로서 설명됩니다. 소수의 공급자만이 사용자가 웹에서 상호작용하고 일상 생활을 영위하는 방식을 결정하는 역할을 맡는 대신에 사용자 데이터를 독점 데이터베이스에서 해방시키고 블록체인 고유의 인센티브 구조를 통해 중앙집중화 없이 작동할 수 있는 것이 Web3에 기반한 미래의 모습입니다.

2021년 현재 Web3 분야는 몇 년 전과는 상당히 다른 양상으로 흘러가고 있습니다. 일부 개선이 필요하지만, 이더리움과 같은 블록체인은 엄청난 양의 트래픽을 상대적으로 쉽게 처리하고 있으며, Solana와 같은 최신 블록체인이 지난 몇 년간 나타났던 일부 확장성 문제를 완화할 수 있는 확실한 대안으로 떠오르기 시작했습니다.

Cloudflare는 Web3로 미래의 환경을 구축하려는 개발자를 완벽하게 지원할 수 있습니다. 개발자는 Cloudflare가 오늘 오전에 발표한 이더리움 게이트웨이를 통해 Web3 응용 프로그램을 Cloudflare의 안정적인 네트워크에서 확장 가능한 형태로 구축할 수 있습니다. Cloudflare WorkersCloudflare Pages를 사용하여 NFT 또는 대체불가토큰을 배포, 발행 및 렌더링하는 방법을 보여주는 오픈소스 예제도 오늘 공개되었습니다. 여기에서 직접 사용해 보거나, GitHub에 공개된 오픈소스 코드베이스를 이용하여 자체 NFT를 프로덕션에 배포할 수도 있습니다.

Web3로 해결 가능한 문제

온라인에서 접할 수 있는 Web3의 가능성에 대한 이야기들은 분명히 흥분할 만한 내용입니다. 소프트웨어 개발자인 저 역시 "Web3 응용 프로그램이란 대체 무엇이고, 어떻게 하면 만들 수 있는가?"라고 자문해보고는 했습니다.

대부분의 기존 응용 프로그램은 데이터베이스와 해당 데이터베이스에 대한 코드 인터페이스, 그리고 사용자 인터페이스 이 세 부분으로 구성됩니다. 모델 뷰 컨트롤러(Model-View-Controller, MVC) 아키텍처로 대표되는 이 모델은 수십 년 동안 웹 환경에서 애용되어 왔습니다. MVC 아키텍처에서 데이터베이스는 데이터 모델의 스토리지 시스템 역할을 하고, 컨트롤러는 클라이언트가 해당 데이터와 상호 작용하는 방식을 결정합니다. HTML, CSS 및 자바스크립트를 사용하여 보기를 정의하면 이는 해당 데이터를 가져와 표시해주고 데이터 생성 및 업데이트를 위한 상호 작용을 제공합니다.

10억 명의 사용자를 보유한 소셜 미디어 응용 프로그램을 상상해 보십시오. MVC 모델에서는 게시물, 친구 관계, 이벤트 등 매일 생성되는 모든 사용자 생성 콘텐츠가 이 응용 프로그램의 데이터 모델 안에 포함되게 됩니다. 내부적으로 그러한 데이터와 상호 작용할 수 있는 주체는 해당 응용 프로그램용으로 작성된 컨트롤러가 결정합니다. 예를 들어, 비공개 대화에서는 두 사용자만이 대화 내용에 액세스할 수 있습니다. 그러나 이러한 컨트롤러와 해당 응용 프로그램 자체는 해당 데이터에 대한 외부 액세스를 허용하지 않습니다. 소셜 미디어 응용 프로그램이 해당 데이터를 소유하는 한편, 광고를 보거나 웹 추적을 허용하는 대가로 데이터를 '무료로' 임대합니다.

그 순간 저는 Web3가 어떻게 이러한 문제에 대한 강력한 솔루션을 제공할 수 있는지를 깨닫게 되었습니다. MVC 기반의 웹 2.0 응용 프로그램이 '벽으로 둘러싸인 정원', 즉 상호운용성이나 데이터 소유권이 없는 이질적이고 폐쇄된 플랫폼의 모음으로서 정의될 수 있다면, Web3는 설계 이념부터 정확히 그 반대에 해당합니다.

Web3 응용 프로그램은 사실상 두 부분으로 나뉩니다. 블록체인(이 예시에서는 이더리움), 그리고 사용자 인터페이스가 이에 해당합니다. 블록체인은 다시 사용자, 사용자 그룹 또는 조직을 위한 계정과 네트워크에서 발생하는 모든 이벤트에 대한 변경 불가능한 기록 시스템 역할을 하는 블록체인 자체라는 두 부분으로 나뉩니다.

블록체인과 관련하여 무엇보다 중요한 측면은 그러한 블록체인에는 코드 배포가 가능하고, 해당 블록체인의 사용자가 코드를 실행할 수 있다는 사실입니다. 이더리움에서 이는 '스마트 계약'이라고 불립니다. 블록체인에 대해 실행되는 스마트 계약은 기존 MVC 모델에서의 컨트롤러와 같은 역할을 합니다. 스마트 계약은 베일에 둘러싸이기보다 검증 가능한 형태로서 누구에게나 바이너리 코드를 공개합니다.

예시로 들었던 소셜 미디어 응용 프로그램에서의 경우, 이는 사용자가 남긴 어떤 기록도 중앙 데이터베이스에 저장되지 않음을 의미합니다. 그 대신에 사용자는 누구나 검증할 수 있는 프로그램을 사용하여 블록체인 네트워크에 배포된 스마트 계약과 상호 작용하게 됩니다. 개발자는 벽으로 둘러싸인 정원이나 플랫폼에 종속되지 않고서도 해당 정보를 보여주고 간편하게 상호 작용하게 해주는 사용자 인터페이스를 구축해나갈 수 있습니다. 사실, 다른 개발자가 더 나은 사용자 인터페이스나 스마트 계약을 제시할 수도 있으므로, 사용자는 자신의 요구에 가장 잘 맞는 조건을 기준으로 이러한 인터페이스와 계약 사이를 얼마든지 이동할 수 있습니다.

이러한 스마트 계약을 사용하는 작업은 지갑(예: MetaMask에서 관리하는 이더리움 지갑)을 통해 이루어집니다. 지갑은 서비스 제공사가 아닌 사용자의 소유입니다. 즉, 사용자는 본인의 지갑을 가지고(데이터에 대한 최종 권한) 언제든지 원하는 작업을 수행할 수 있습니다. 지갑 자체는 프로그래밍이 가능한 블록체인의 또 다른 측면으로서, 단일 사용자를 나타내는 지갑이거나 전체 조직의 이익을 나타내는 복잡한 다중 서명 지갑일 수도 있습니다. 해당 지갑의 소유자는 자신의 데이터를 어떤 방식으로 사용할 것인지 합의된 결정을 내릴 수 있습니다.

대체불가토큰의 부상

최근 Web3 분야의 가장 큰 변화 중 하나는 NFT, 즉 대체불가토큰(Non-Fungible Token)의 성장입니다. 대체불가토큰은 블록체인에 저장되어 사용자가 거래하고 관련 소유권을 검증할 수 있는 고유 자산입니다. Cloudflare는 2019년에 Cloudflare Ethereum Gateway 발표의 일환으로 이미 NFT에 대한 내용을 다룬 바 있습니다. 그 이후로 NFT는 CryptoPunksBored Ape Yacht Club과 같은 프로젝트에서 매월 수백만 달러의 거래량을 기록하면서 폭발적인 인기를 얻었습니다.

NFT는 벽으로 둘러싸인 정원을 탈피한 환경에서의 데이터의 소유권과 커뮤니티 작동 방식을 나타내기 때문에, Web3 분야의 매력을 더하는 요소입니다. 여러분이 이전에 접해보신 NFT는 아마 매우 시각적인 매체였을 것입니다. CryptoPunks와 Bored Ape Yacht Club은 본질적으로 예술 작품에 해당합니다. Punk 또는 Ape를 구입하여 소셜 미디어의 프로필 사진으로 사용하실 수 있습니다. 그러나 Ape를 구입하는 것은 단지 프로필 사진을 소유하는 것만이 아니며, 그 이면에는 블록체인 검증 자산에 대한 독점적 소유권이 작동합니다.

NFT 계약의 확산으로 사기 발생이 늘어났다는 점에 유의해야 합니다. 블록체인 기반 NFT는 스마트 계약의 체결을 기반으로 소유권을 전달하는 매개체입니다. 이 스마트 계약은 누구나 배포할 수 있으며 어떤 콘텐츠와도 연결이 가능합니다. 상호 작용 중인 계약의 신뢰성과 신원을 스스로 검증하기 전까지는 그 진위 여부가 보장되지 않습니다. 일부 플랫폼은 인증된 계정을 지원할 수 있지만, 몇몇 신뢰할 수 있는 파트너들만 플랫폼에 표시되도록 허용하는 경우도 많습니다. NFT는 여러 접근법을 허용할 만큼 충분히 유연하지만, 신뢰와 관련된 이러한 기본 전제는 명확하게 전달되어야 합니다.

이더리움에 배포된 스마트 계약과 연결된 해당 자산은 거래 및 검증이 가능하며, 프로그램 액세스를 차단하는 방법으로도 사용이 가능합니다. NFT 개발자는 자신의 NFT와 관련한 거래 이벤트에 참여하고 로열티 수수료를 청구하거나, NFT를 '발행' 또는 생성하는 시점에 발행 가격을 청구함으로써 판매 및 거래 수익을 창출하고 준비 중인 대규모 프로젝트의 자금을 조달할 수 있습니다. NFT는 이러한 방식으로 일반적인 웹 응용 프로그램보다 강력한 인센티브 구조를 개발자와 커뮤니티 구성원 사이에 형성할 수 있습니다.

Cloudflare가 구축한 것

Web3(그리고 관련한 Cloudflare의 역할)를 더 잘 이해하려면 엔드 투 엔드 방식으로 Web3 스택을 사용하는 무언가를 개발해야 했습니다.

여러분들도 동일한 작업을 수행하실 수 있도록, 저희는 오늘 NFT를 발행 및 관리하는 방법을 처음부터 끝까지 보여주는 풀스택 응용 프로그램을 오픈 소싱했습니다. 해당 응용 프로그램과 관련한 스마트 계약은 이더리움 프로젝트 및 스마트 계약을 위한 테스트 환경인 이더리움의 Rinkeby 네트워크에 배포 및 검증됩니다. Rinkeby 테스트 네트워크는 실제 이더리움을 사용하지 않고도 실제와 똑같은 워크플로를 통해 메인 블록체인 외부에서 스마트 계약을 테스트해볼 수 있도록 도와줍니다. 프로젝트를 이더리움 메인넷에 배포할 준비가 완료되면, 동일한 계약을 체결하고, 배포 및 검증한 다음, 프로덕션 환경에서 사용하실 수 있습니다.

스마트 계약이 일단 배포되고 나면, ERC-721 사양을 준수하는 NFT 프로젝트 관리 기능이 제공되며, 사용자는 이를 발행하여 OpenSea와 같은 NFT 마켓플레이스 및 자체 웹 응용 프로그램에 표시할 수 있습니다. 저희는 또한 이러한 NFT의 발행을 도와줄 웹 인터페이스와 예제 코드도 제공했으며, 사용자는 호환되는 이더리움 지갑을 설치하고 해당 웹 응용 프로그램을 방문하여 NFT를 신청할 수 있습니다.

NFT 발행이 완료되면, 예제 사용자 인터페이스가 신청된 각 NFT에 대한 메타데이터를 렌더링합니다. ERC-721(NFT) 사양에 따라 배포된 토큰에는 해당 JSON 메타데이터를 제공하는 URL이 포함되어 있어야 합니다. 저희가 Cloudflare Workers로 구축한 이 JSON 엔드포인트는 각각의 고유한 NFT와 특정 이미지에 대한 이름과 설명을 반환합니다. 이 이미지를 호스팅하기 위해 Infura 및 Cloudflare IPFS 게이트웨이를 사용하여 서비스를 고정 및 제공했습니다. Cloudflare의 NFT는 해시값을 통해 콘텐츠를 식별하므로 향후 다른 것으로의 대체가 불가능합니다.

이 오픈 소스 프로젝트에는 NFT 프로젝트를 빌드하는 데 필요한 모든 툴이 포함되어 있습니다. Workers 및 Pages는 성공적인 NFT 출시를 확장하는 데 필요한 모든 툴을 제공해주며, 사용자가 NFT 자산을 지갑 간에 발행하고 거래할 때 이와 관련한 최신 메타데이터도 항상 제공됩니다.

Architecture diagram of Cloudflare’s open-source NFT project
Architecture diagram of Cloudflare’s open-source NFT project

Cloudflare 오픈 소스 NFT 프로젝트의 아키텍처 다이어그램

Cloudflare + Web3

Workers, Pages 및 IPFS 게이트웨이를 비롯한 Cloudflare의 개발자 플랫폼은 원활한 연동을 통해 고객의 NFT 프로젝트 라이프사이클 각 단계에서 확장 가능한 솔루션을 제공합니다. NFT 프로젝트를 프로덕션으로 이동할 경우, Cloudflare의 이더리움IPFS 게이트웨이를 사용하여 해당 프로젝트와 관련한 모든 트래픽을 처리할 수 있습니다.

Cloudflare는 Web3의 밝은 미래를 예상합니다. 세계는 World Wide Web의 초창기에 구상되었던 것과 같은 분산형 인터넷 모델로 되돌아가는 중입니다. Cloudflare가 항상 강조하듯이, 네트워크 자체가 컴퓨터입니다. 메타버스, 탈중앙화 자율조직(Decentralized Autonomous Organization, DAO), 커뮤니티 및 소셜 네트워킹을 위한 NFT, 자금 관리를 위한 탈중앙화 금융(Decentralized Finance, DeFi) 응용 프로그램부터 누구도 아직 생각해내지 못했을 모든 종류의 탈중앙화 응용 프로그램까지, Web3의 미래가 어떤 모습으로 펼쳐지든 Cloudflare는 그 미래를 뒷받침할 것입니다.

창립기념일 주간 Web3 Cloudflare Workers Cloudflare Pages