쉽게 설명한 NFT - 1/2

TL;DR

시작하며

최근 몸담은 팀에서 NFT 이야기가 나와서, 선행 공부하는 느낌으로 기본적인 이더리움 개념을 공부하고, hardhat 으로 간단한 NFT를 테스트넷에 올려봤다.

나같이 재미로 시작하지만 진짜 쓸 수 있는 코인을 개발을 해보고 싶은 개발자들을 위해서,

먼저 토큰 전반적인 개념설명을 간단히 공유해본다. (다음글에서는 초보 토큰 개발자의 공부방법에 대한 가이드를 간단히…)

본 글은 이더리움을 기준으로 설명한다. 그리고 정확하지 않겠지만(그렇다고 틀리진 않음) 개발자가 쉽게 개념을 잡기 위해서 단순화하거나 약간의 비약을 통해서 설명한다.

스마트 컨트랙트란?

스마트 컨트랙트1는 블록체인 위에서 돌아가는 어플리케이션이다.

일단 어플리케이션 소스코드에 해당하는 컨트랙트를 블록체인에 올려둔다.

일반적으로 어플리케이션이 돌아가기 위해서는 CPU, RAM, Storage(DB) 가 기본적으로 필요한데

CPU, RAM 은 블록체인 참여자들의 자원을 쓰고 DB 대신 블록체인에 내용을 기록해둔다.

즉, 컨트랙트를 올리는 작업, 컨트랙트가 포함한 어플리케이션을 실행하는 작업 등은 블록체인위에서 동작하므로 블록체인의 신뢰성을 그대로 반영한다.(느린 처리시간까지도…)

당연히 위의 작업들을 실행할때 서버역할을 해준 참여자에게 비용을 이더리움으로 지불해야 하며 이 비용을 가스비용(gas fee) 라고 부른다.

이 가스비용은 데이터의 크기, 어플리케이션의 실행시간에 비례해서 비싸진다.

토큰 !== 코인

현재 모든 스마트 컨트랙트의 부산물은 토큰이다.

이더리움 코인의 관점에서 보자면, 이더리움을 내고 환전한 외화라고 볼 수 있고,

스마트 컨트랙트 관점에서 보자면, 어플리케이션이 만든 비즈니스 가치(DB 에 저장된 정보) 라고 볼 수 있다.

이 토큰은 현재 크게 ERC20, ERC721, ERC1155 의 3종류가 있다고 보면 된다.

ERC == EIP 이고, 파이썬으로 치면 PIP 랑 같다.

ERC20, 721, 1155 는 토큰의 표준을 정의한 인터페이스 문서라고 보면 된다.

ERC20

일반적으로 말하는 코인이 ERC20 이라고 보면 된다. ERC20 은 교환가능한 토큰이다.

교환 가능하다는 말은 모든 토큰이 동일한 가치를 가진다는 말로 해석하면 된다.

ERC721, ERC1155

ERC721 은 보통 NFT 라고 부르는 토큰이다.

NFT(non fungible token)는 교환 불가능한 토큰이라는 뜻이며, 개별 토큰이 각각의 가치를 가진다.

위의 크립토 키티를 예로 들면 저 각각의 고양이(?) 가 하나의 토큰이다. 각 고양이는 고유한 값인 토큰아이디를 가진다.

그리고 각 토큰 아이디별로 서로 다른 이미지 주소를 가져야 위처럼 서로 다른 그림이 보여질 수 있다.

ERC721 표준에서는 메타데이터라는 곳을 통해 이미지나 기타 정보들(고양이의 나이나 스토리라던지), 이 메타데이터는 일반적으로 JSON 데이터를 가리키는 URI (tokenURI) 로 표현된다.

ECR1155 는 ERC721 과 거의 같지만, 한 종류(?)의 토큰이 여러개 발행될 수 있다.(토큰 A를 100개 한정으로 발행할 수 있다)

IPFS

위의 개별고양이 이미지를 A회사가 운영하는 서버에 저장해두었다고 하자.

해당 서버가 다운되면 내 고양이 이미지를 볼 수 없다. 회사가 인수되어서 서비스를 중단한다면 내 고양이 이미지가 사라지게 되고 토큰도 가치를 잃게 된다.

이것은 특정한 서비스나 회사에 의해 내 이미지가 변경될수도 있고 사라질 수도 있다는 의미이고 분산된 소유권을 추구하는 블록체인 세상에서는 있을 수 없는 일이다.

따라서 이 이미지와 기타 데이터들도 블록체인에 저장해두는 것이 자연스러울 것이다.

하지만 메인넷으로 불리는 이더리움 체인에 이미지나 동영상을 저장하는 것은 엄청난 가스비용을 사용하게 된다.

토큰의 가치(?) 보다 토큰의 데이터 타입에 따라 가스비용이 실제 토큰 가격보다 더 큰 경우가 생길 수 있다.

따라서 이것을 이더리움 외부에서 블록체인처럼 분산 저장하는 방식이 IPFS2 이다.

IPFS 는 로케이션 기준으로 리소스를 가져오는게 아니라(기존 WWW 방식) 컨텐츠 기준으로 리소스를 가져온다(토렌트 생각하면 됨)

오라클

컴퓨터 시스템은 기본적으로 pseudo 랜덤을 쓰기 때문에 시드와 알고리즘만 동일하면, 분산 시스템간 다음 랜덤값을 결정적으로 만들 수 있다.

블록체인의 노드들도 비슷하게 동작한다. (그래야 다른 노드가 만든 블록을 내가 검증할 수 있으므로)

위와 같이 재현 가능한 연산을 결정적연산, 재현이 불가능한 연산을 비결정적 연산이라고 부르는데,

오라클은 이더리움 네트워크 관점에서 비결정적인 값을 out-of-chain 방식으로 네트워크로 가져오는 외부 서비스라고 볼 수 있다.

NFT 에서 랜덤한 토큰아이디 생성을 위해 많이 쓰이는 chainlink 의 VRF 가 대표적인 오라클 서비스이다.

Web 3.0

개인적으로 컴퓨터 사이언스의 발전방향은 비즈니스 로직에 더 집중할 수 있는 환경으로 가는 것이라고 생각한다.

DDD 가 그렇고 서버리스가 그렇다. 인프라를 비즈니스 로직과 분리해내고 운영에 대한 고민을 제거해서 비즈니스 로직에 집중하게 만들어 준다.

같은 관점으로 웹을 보면 웹 3.0의 방향도 어느정도 예측할 수 있다고 본다.

웹 1.0은 WWW 의 시기였다. 다양한 웹 페이지들이 생겼고 하이퍼링크를 통해 서로간에 단순한 형태로 연결되어 있었다.

비즈니스 로직 자체가 단순하고 데이터를 개별 서비스가 보유하고 있기 때문에 모노리스, 레이어드 아키텍쳐로도 충분한 시기였고 운영에 대한 부담이 적었다.

웹 2.0은 OpenAPI 와 매쉬업의 시기였다. 서비스들은 각자의 데이터를 API 라는 나름 표준화된 형태로 공유하기 시작했고, 그 API 들을 이용해서 더 많은 서비스들이 생기고 더 많은 데이터들이 생성되었다.

비즈니스 로직이 외부의 데이터를 참조하기 시작하면서 분산화 되었다. 마이크로서비스, 이벤트 기반의 아키텍쳐들이 나왔고 운영에 대한 부담이 커졌다.

운영에 대한 부담을 줄이기 위해서 인프라를 추상화하는 과정이 계속 되었고 vm, 컨테이너를 거쳐 서버리스까지 오게 되었다.

서버리스의 핵심은 pay for value 이다. 시간당으로 과금하는 것이 아니라 사용자의 비즈니스 로직이 실행된 만큼만 비용을 내는 것이다.

서버리스가 vm 이나 컨테이너에 비해서 인프라가 추상화 된것은 맞지만 운영에 대한 부담이 아예 없는 것은 아니다.

이런 관점에서 블록체인은 웹 2.0이 서버리스로 구현된 형태라고 생각한다. (많은 스마트 컨트랙트는 기존의 OpenAPI 처럼 자신의 인터페이스를 오픈해두고 있다. 심지어 소스코드도 체인에 저장되기 때문에 누구나 열람할 수 있다.)

즉, 데이터베이스를 포함한 인프라스트럭쳐를 블록체인에 위임함으로써 pay for value를 극한으로 구현한 형태이다.

이 관점에서는 블록체인이 곧 웹이고 우리는 스마트 컨트랙트라는 어플리케이션을 서버리스 형태로 배포하게 되고, 사용자는 어플리케이션을 실행하고 어플리케이션의 무거운 정도에 따라 비용을 지불한다.

따라서 블록체인 에코시스템 자체가 웹의 역할을 대체하고 있으므로 웹 3.0 이라고 부를 수 있을 것이다.

NFT 는 사기인가?

스마트 컨트랙트가 없는 블록체인은 사기라고 생각한다.

블록체인을 유지하는 것이 아무런 비즈니스 가치를 만들지 못하기 때문에 블록체인 네트워크를 유지하게 하는 동력이 너무 불안정하기 때문이다. (유동성에 따라 컴퓨팅 파워가 왔다갔다 하는 컴퓨터를 누가 쓰고 싶을까?)

하지만 스마트 컨트랙트가 있는 블록체인은 좀 다른데, 아직 판단하기 이르다고 생각한다.

이더리움을 생각해보면, 유동성이라는 인센티브를 기반으로 컴퓨팅 파워를 유지시키고, 해당 컴퓨팅 파워 위에서 비즈니스 로직을 돌려서 유동성을 유입시키는 방식이다.

코인이라는 유동성이 없이 비즈니스 로직 실행만의 유동성으로 이더리움 네트워크를 현재이상의 컴퓨팅파워로 유지할 수 있어야 한다는 건데,

현재는 가스피를 올리자니 각 비즈니스 로직이 그만큼의 가치를 가지는 것은 쉽지 않고, 가스피를 내리자니 유동성이 적어지는 딜레마 상황인 것이다.

(또, 이더리움의 가격이 내리면 가스피의 현물가격이 내려가는데 그러자니 인센티브가 적어지니 컴퓨팅파워가 줄어드는 문제…)

따라서 비즈니스로직 만으로 유동성을 해결할 수 있겠다는 킬러 컨텐츠가 나오면 웹을 대체할만한 뭔가가 될 것이고, 아니라면 결국 유동성 기반의 비즈니스로직들만 남게되는 상황이 될 것이다.

(현재 NFT 이미지 거래와 약간 사행성으로 보이는 게임들이 대부분인데 가스피를 우회하는 비즈니스 로직이 현재는 이것밖에 없기 때문)

마치며

요즘 메타버스가 주목받는 이유도 유동성을 유입과 컴퓨팅파워를 유지하는 것을 한번에 해결할 수 있는 방법이라 그런게 아닐까 싶다.

즉, 메타버스도 사기인가? 에 대한 질문은 블록체인에 대한 답과 동시에 나올것 같다 ㅋㅋ