Ceramic Network에 주목해야하는 이유

Web3 데이터 세상을 위한 기본 레이어

Ceramic Network에 주목해야하는 이유

데이터 in Web3

웹과 Web3

우리는 흔히 인터넷을 웹이라고 부른다. 이는 1989년에 처음 등장한 월드 와이드 웹이 사실상 인터넷을 사용한 첫번째 브라우저이기 때문일 것이다. 내가 생각하였을 때, 최초의 브라우저에 ‘Web’이라는 단어를 사용한 이유는 미래의 인터넷의 모습을 사람들이 서로 거미줄처럼 연결되어서 상호작용할 수 있는 공간으로 예상했기 때문일 것이다.

현재의 인터넷은 소수의 플랫폼들이 이끌고 있는, 처음 우리가 인터넷을 만들었을 때 상상하였던 모습과는 차이가 있다. 유저들은 소수의 플랫폼들을 거점으로 다른 유저들과 상호작용하거나, 자신의 데이터를 생성, 저장한다.

Web3는 여러가지 방식으로 설명할 수 있지만, 나는 Web3를 인터넷이 원래 목표했던 바를 이루기 위한 움직임이라고 설명하고 싶다. 처음 인터넷의 목표가 인터넷에 접속가능한 누구나 자유롭게 정보에 접근하고, 교환하고, 다른 누군가와 소통할 수 있게 하는 것과 비슷하게, Web3는 이와 같은 가치를 유저들이 다른 프로토콜이나 누군가에게 위탁하지 않은 채로 지킬 수 있는 것을 목표로 한다.

데이터

태초의 인터넷의 목표를 이루기 위해서는 유저들이 자신의 데이터를 직접 소유할 수 있는 시스템이 마련되어야 한다. 데이터는 디지털 세상의 가장 중요한 원자재로서, 대부분의 플랫폼들은 축적된 유저들의 데이터를 바탕으로 서비스나 알고리즘을 제공하여서 수익을 창출하고 있다.

왜?

누군가는 ‘굳이 내가 내 데이터를 왜 소유해야해?’라는 질문을 할 수 있다. 여기에 대한 답은 두가지이다.

첫번째는, 내 데이터이기 때문이다. 당연한 말이지만, 내 집이나 내 차이기 때문에 내가 소유하는 것처럼, 내 데이터이기 때문에 내가 소유하는 것이 상식적이다. 다만, 현재까지는 소유할 수 있는 시스템이 마련되지 않았기 때문에, 그 누구도 이를 자연스럽게 여기지 못하였던 것일 뿐이다.

두번째는 유저들이 직접 자신의 데이터를 소유함으로써, 더 나은 UX(User Experience)를 경험할 수 있기 때문이다. 예를 들어, 내가 스포티파이를 사용하다가 애플 뮤직으로 옮기면, 애플 뮤직은 나에 대한 데이터가 없기 때문에, 곧바로 나에 대한 최적화된 추천 서비스를 제공할 수 없다. 하지만, 만약에 내 음악 취향과 청취 기록에 대한 데이터를 내가 소유하고 있다면, 애플 뮤직에 기존의 스포티파이에서 축적한 나의 데이터에 대한 접근 권한을 줘서 곧바로 최적화된 추천 서비스를 받을 수 있다.

아직은 갈 길이 멀다

데이터에 대한 Web3의 방향성은 명확하지만, 아직은 갈 길이 멀다.

첫째, 지갑 주소와 체인에 따라서 정보들이 파편화되어 있다. 여러 지갑과 체인을 사용하는 유저의 경우에는, 유저가 Web3 상에서 생성한 데이터들이 유저를 중심으로 모아지는 것이 아니라, 각 지갑과 체인에 따라서 나눠서 저장된다.

둘째, 표현할 수 있는 데이터의 종류에 한계가 있다. 정적인 데이터들은 어느정도 표현할 수 있지만, 시간에 따라서 업데이트하는 것이 자연스러운 유저 프로필 정보나 의료 기록등은 아직 표현할 수 없다.

셋째, 비용이다. 모든 데이터를 온체인 상에 저장하는 것은 매우 비용적으로 비효율적이기 때문에, 이에 대한 근본적인 해결 방법이 필요하다.


Ceramic Network 소개하기

개요

Ceramic Network를 한줄로 소개하자면, 유저가 자신의 데이터와 신원을 소유하고, 업데이트할 수 있도록 도와주는 기반시설을 제공하는 프로토콜이다. Ceramic Network는 개발자들을 위한 프로토콜로, 유저 자치적 데이터나 신원을 자신의 dApp에 적용시키고 싶은 개발자들은 Ceramic Network에서 제공하는 기능들을 이용하여서 더 쉽고, 간단하게 만들 수 있다.

vs 기존 탈중앙화 저장 솔루션

Ceramic Network는 IPFS를 기반으로 만들어져 있는데, 기존의 탈중앙화 저장 솔루션(ex: IPFS, FIlecoin, Sia…)와 가지는 가장 큰 차별점은 가변적인 데이터를 저장할 수 있다는 것이다. 가변적인 데이터란, 유저가 원하면 시간에 따라서 변경하거나, 업데이트할 수 있는 데이터를 말한다. 우리가 인터넷을 사용할 때, 아이디를 변경하거나, 배송 주소를 변경하거나 할때, 이 데이터들이 전부 여기에 해당한다.

구성 요소

Ceramic Network는 여러가지 것들로 구성되어 있지만, 그 중에서 가장 핵심적인 Network, Data Models, DID에 대하여 알아보자.


어디에 | Network

네트워크

Ceramic Network는 노드들이 서로 소통할 수 있는 libp2p 기반의 네트워크이다. Libp2p는 IPFS에서 제공하는 탈중앙화된 P2P 네트워크를 만들때 필요한 프로토콜, 라이브러리 등을 제공하는 프로젝트로, 이더리움 2.0이나 폴카닷 역시 libp2p를 사용한다고 한다.

그래서 엄밀히 따지자면, Ceramic Network는 탈중앙화된 데이터베이스는 맞지만, 블록체인은 아닌 것 같다. 생각해보면, Ceramic Network는 개인의 데이터를 보관하는 용도로 사용되는 데이터베이스이기 때문에, 이중 지불 문제를 해결할 필요가 없고, 이는 Ceramic Network의 노드들이 굳이 하나의 전역 상태(global state)나 동기적(synchronous)으로 트랜젝션을 처리할 필요가 없기 때문에, 꼭 블록체인일 필요는 없다.

Stream

앞서 언급한 연속적이고, 가변적인 데이터를 Ceramic Network에서는 Stream이라고 한다. 각 Stream은 여러개의 Commit으로 이루어져 있다. Commit의 종류는 다음과 같다.

Genesis Commit

말 그대로 해당 stream의 첫번째 commit이다.

Signed Commit

유저가 자신의 stream의 상태를 업데이트하고 싶을 때, 그 내용과 함꼐 자신의 퍼블릭 키로 사인하는 commit이다.

Anchor Commit

Ceramic Network는 레이어 2들이 하는 것과 비슷하게 일정 시간 간격으로 그 사이 발생한 트랜젝션들을 모아서 이더리움 체인에 발행(Publish)하고, anchor commit은 그 순간의 이더리움의 timestamp를 포함한다. 이렇게 하는 이유는 stream 내의 commit들의 시간 순서를 기록하기 위하여서이다.

오버뷰

(Ceramic: Building Web3 Apps with Sovereign Data | ETHGlobal)

노드

유저들의 데이터, stream은 Ceramic Network의 노드들에 의하여 저장된다. 노드들은 stream을 저장하는 것 외에도 유저들의 요청에 따라서 Stream을 업데이트하고, 쿼리에 대한 요청을 처리하고, 다른 노드들과 소통하는 등 여러 역할을 맡는다.


어떻게 | Data Models

ERC-20

이더리움 생태계에서 프로토콜 A의 토큰을 프로토콜 B에서 사용할 수 있도록 가능케 한 것은 바로 ERC-20 토큰 프레임워크이다. 만약, ERC-20이 없고, 각 프로토콜마다 각자의 규격을 사용하여 토큰을 만들었다면, DeFi만의 강점인 상호 호환성(Composability)는 불가능하였을 것이다. 이더리움에는 ERC-20 외에도, ERC-721, ERC-1155, ERC-4626 등 각자의 용도에 맞게 서로 다른 프레임워크들이 존재한다.

Data Models

Data ModelsCeramic Network가 준비한 데이터들을 위한 오픈-소스 프레임워크이다. 토큰과 비슷하게, 데이터의 경우에도 소셜 그래프, 유저 프로필, DAO 제안, 트윗, 평판과 같이 각각의 용도에 따라서 별도의 프레임워크가 필요하다. 이를 위하여 Data Models Registry라는 공간을 통하여 개발자들은 자신이 필요한 Data Model을 생성하고, 기존에 만들어진 Data Model를 사용할 수도 있다. 현재 이 공간에는 소셜 그래프나 기본적인 유저 프로필에 대한 Data Model이 존재한다.

상세 구조

Data Model의 상세 구조는 다음과 같다.

(Ceramic Sovereign Data with Ceramic | ETHGlobal)

각 Data Model은 JSON 형식으로 되어 있는데, Data Model의 이름, 설명, 그리고 schema로 이루어져 있다. 이 schema가 바로 데이터의 형식을 나타내는 부분으로, 위 예시의 데이터는 제목, 설명, 종류, 속성을 key 값으로 가진다.

UX와 DX의 발전

Data Models가 상용화되게 되면, 유저의 경험(UX)와 개발자의 경험(DX)가 모두 발전할 수 있다.

예를 들어, 스포티파이와 애플 뮤직이 모두 음악 청취 프로필에 대한 Data Model을 사용한다고 하자. 유저 입장에서는 스포티파이를 사용하다가 애플 뮤직으로 옮겨도, 자신이 허락만 해주면 애플 뮤직에서는 유저의 음악 청취 프로필에 대한 Data Model을 가져와서 바로 사용할 수 있다. 이는 유저 입장에서 자신의 데이터를 프로토콜 간에 자유롭게 가지고 다닐 수 있게 하고, 원활한 사용 경험을 누릴 수 있다.

이제 개발자 측면을 살펴보자. 만약 내가 새로운 Web3 소셜 프로토콜을 만들고 싶다고 하였을 때, 기존에는 아예 0에서부터 유저들의 데이터를 쌓아야 하였지만, Ceramic Network의 Data Models Registry의 소셜 그래프에 대한 Data Model을 사용한다면, 유저들이 자신의 데이터를 바로 사용할 수 있기 때문에 새로운 유저들을 온보딩시키가 더 쉬워지고, 존재하는 데이터를 바탕으로 기존에는 불가능하였던 서비스를 제공할 수 있다.

$FIRE

아직까지 Ceramic Network의 네이티브 토큰은 없지만, Ceramic Network의 Head of Growth, Lauren Feld가 해당 팟캐스트에서 밝힌 내용에 따르면, 곧 출시될 네이티브 토큰인 $FIRE는 다음과 같은 기능을 가진다고 한다.

여러 개발자들이 Data Models Registry에 자신만의 Data Models를 올려두면, 개발자들은 $FIRE 토큰을 가지고 자신이 생각하였을 때 유용한 Data Models를 추천할 수 있고, 많은 추천을 받은 Data Models를 만든 개발자는 보상을 받는다. 즉, Ceramic Network는 토큰 인센티브를 통하여 개발자들이 다양하고, 퀄리티 높고, 유용한 Data Models들을 만들기 원하는 것 같다.


누가 | DID

DID

Ceramic Network는 유저들이 DID를 통하여 자신의 데이터를 소유할 수 있도록 한다. DID에 대한 기초적인 내용은 나의 이전 글에서 확인할 수 있다.

(Ceramic: Building Web3 Apps with Sovereign Data | ETHGlobal)

위 이미지와 같이, Ceramic Network는 유저들의 정보를 DID와 Data Model의 테이블로 보관한다.

여러 DID의 종류

Ceramic Network이 지원하는 DID의 종류는 다음과 같다.

3ID DID

3ID DID는 Stream의 고유한 식별자인 StreamID를 사용하는 Ceramic Network에서 만든 DID로, 동시에 여러개의 키에 대한 지원은 물론, 키 변경(key rotation)도 지원한다. 3ID Connect라는 것을 사용하면, 유저들은 자신의 블록체인 지갑 주소를 통하여 3ID DID를 손쉽게 생성할 수 있다.

did:3:<해당 DID Document를 저장하는 StreamID>

Key DID

Key DID는 가장 간단한 형태의 DID로, 하나의 퍼블릭 키에 하나의 DID가 연결된다.

did:key:<퍼블릭 키>

NFT DID

NFT DID는 해당 NFT의 보유자에 의하여 관리되는 DID로, 만약 해당 NFT가 다른 사람에게 판매되면, DID의 주인은 옮겨진다.

did:nft:<체인ID_토큰종류:컨트랙트주소>

예시는 다음과 같다. 
did:nft:eip155:4_erc721:0xe2a6a2da2408e1c944c045162852ef2056e235ab_1
eip155:4 : Rinkeby testnet
erc721   : 토큰 종류
0xe2a... : 컨트랙트 주소

Safe DID

Safe DID는 Gnosis Safe 스마트 컨트랙트에 의하여 관리되는 DID로, 해당 컨트랙트의 주인들은 Safe DID의 주인이 되고, 주로 DAO나 다른 다중 서명 방식을 사용하는 주체들이 사용하기에 적합하다.

did:safe:<체인ID:컨트랙트주소>

예시는 다음과 같다. 
did:safe:eip155:1:0xff6229bc3655cf0204e850b54397d3651f5198c4
eip155:1 : Ethereum mainnet
0xff62...: Gnosis Safe 컨트랙트 주소

데모

Ceramic Web Playground에서 Ceramic Network에 대한 간단한 체험을 해볼 수 있다. 아래의 데모는 Web Playground의 튜토리얼, 해당 글팟캐스트를 함께 참고하였다.

이더리움 지갑 주소로 DID 생성하기

Ceramic Network를 사용하기 위해서는 앞서 알아보았듯이, DID가 필요하다. Web Playground에 처음 메타마스크를 연결하면, 3ID Connect를 통해 내 지갑 주소를 바탕으로 3ID DID를 생성해준다. 내 DID를 확인하기 위해서는 콘솔 창에 ceramic.did.id를 통해 확인할 수 있다.

Stream 만들기

  1. create 메서드로 key로 이름, value로 MOYED를 가지는 DataStream을 만들었다.
  2. content 메서드로 DataStream 의 내용을 읽을 수 있다.
  3. id.toString() 메서드로 DataStream 의 StreamID를 읽을 수 있다.
  4. update 메서드로 DataStream 의 내용을 업데이트할 수 있다.
  5. 이 때, StreamID는 변경되지 않는다.

Data Model 만들기

  1. 이름과 나이를 속성으로 가지는 schema 를 만들었다.
  2. schemaStream 변수에 만든 schema 를 저장한다. schemStream 은 Data Model로서 사용할 수 있다.
  3. 앞서 만든 schema를 사용하여서 key가 이름과 나이이고, value가 MOYED, 22인 데이터를 profile 변수에 저장한다. 이 때, schemStreamcommitId 를 추가 파라미터로 제공한다.

실제 적용 사례

DAOhaus

DAOhaus는 사람들이 DAO를 더 쉽게 만들고, 참여하도록 도와주는 프로토콜이다. DAO는 누구나 방향성을 제안하고, 서로 함께 의사결정을 내리는 형태이기 때문에, 다른 DAO 멤버들이 어떠한 일을 해왔고, 어떤 사람인지에 대한 정보가 필요하다. 이를 위하여, DAOhaus는 Ceramic Network를 통하여 유저들이 프로필을 생성하고, DAOhaus 내의 여러 DAO에서 공통적으로 사용할 수 있게 한다.

(DAOhaus adds functionality for rich member profiles for DAOs | Lauren Feld)

Orbis.club

Orbis는 탈중앙화 소셜 미디어 플랫폼이다. 유저들이 Orbis에서 프로필을 생성하면, 그 즉시 Ceramic Network의 DID로 생성되고, 게시하는 모든 글들은 Stream으로서 해당 DID에 저장된다.

(Orbis, the web3 social network | @OrbisClub)

마무리

Ceramic Network는 앞으로 탈중앙화된 신원과 데이터를 사용하고 싶은 많은 프로토콜들의 기반 레이어 역할을 할 것으로 기대된다. 물론 아직 의료 데이터와 같이 개인 프라이버시가 필요한 데이터는 어떻게 처리해야할지나 점차 많은 데이터가 Ceramic Network에 저장되었을 때 발생할 수 있는 노드의 부담이나 확장성 문제 등이 있지만, 기존에 개념에서 머물렀던 DID를 실제 사용할 수 있는 형태로 구현해내었다는 점에서 이미 성과를 내었다고 생각한다. 또한, Data Models의 경우, 많은 개발자들이 사용하면 할수록 점점 Web3 데이터 규격에 대한 합의가 생길 것이고, 이는 데이터 간의 상호 운용성을 크게 증가시켜서 유저 입장에서 기존에는 불가능하였던 여러 활동들이 가능케 할 것으로 기대된다.