신규: Helius가 Light Protocol을 인수했습니다
Solana NFT 압축
블로그/기초

Solana의 NFT 압축 살펴보기

공동 창업자 겸 CEOX의 Mert MumtazLinkedIn의 Mert Mumtaz
읽는 데 8분

최근 암호화폐 업계의 주요 발전 중 하나는 흔히 대체 불가능 토큰, 줄여서 NFT라고 부르는 디지털 자산의 등장입니다. NFT를 사용하면 예술 작품, 게임 아이템, 티켓 같은 디지털 자산을 검열에 구애받지 않고 소유할 수 있습니다. 이러한 자산을 거래하는 활발한 P2P 경제도 구축할 수 있습니다. 실제로 NFT는 디지털 화폐에 이어 암호화폐 분야에서 제품-시장 적합성(PMF)을 확보한 두 번째 주요 애플리케이션이라고 볼 수 있습니다.  

하지만 NFT에도 과제는 있습니다.

특히 Solana에서는 이러한 자산을 온체인에 저장하는 비용이 큰 과제였습니다. Solana의 트랜잭션 수수료는 매우 낮지만, 저장 수수료는 이야기가 다릅니다. 디지털 자산이 디지털 세계 전반에서 널리 사용되려면 최대한 많은 사람이 저장 비용을 감당할 수 있어야 합니다. 바로 이 지점에서 Solana의 NFT 압축이 필요합니다.

NFT 압축을 사용하면 개발자와 크리에이터가 훨씬 적은 비용으로 대량의 NFT를 민팅할 수 있어 차세대 암호화폐 기반 애플리케이션을 구현할 수 있습니다. 게임 아이템이 거래 가능한 NFT이고 게임 경제가 글로벌 경제와 자연스럽게 연결되는 MMORPG를 상상해 보세요. 이런 게임에는 당연히 수백만 개, 심지어 수십억 개의 아이템이 존재합니다. Ethereum 같은 블록체인에서 이를 민팅하려면 막대한 비용이 듭니다. NFT 압축을 사용하면 지금 바로 Solana에서 이를 구현할 수 있습니다.

얼마나 강력한지 예를 들어 살펴보겠습니다. 현재 Ethereum 확장 솔루션인 Polygon에서 NFT 하나를 민팅하는 데는 약 0.05 USD가 듭니다. 즉, Polygon에서 NFT 약 10억 개를 민팅하려면 약 5천만 달러가 필요합니다.

Solana에서 압축을 사용하면 NFT당 약 0.0000005 SOL이 들기 때문에, 이 글을 쓰는 시점 기준 NFT 10억 개의 비용은 약 11,000 USD입니다. 이는 약 5천만 달러 저렴하며, 비용 차이는 약 세 자릿수 규모입니다. 이것이 압축의 힘입니다.

그렇다면 압축은 어떻게 작동할까요? 알아보겠습니다.

Solana NFT 배경지식(선택 사항)

압축을 자세히 살펴보기 전에 Solana에서 NFT가 작동하는 방식을 먼저 알아보겠습니다. 이미 Solana NFT에 익숙하다면 다음 섹션으로 넘어가셔도 됩니다.

Solana의 토큰은 mint 계정과 token 계정, 두 가지 계정 유형을 사용합니다. mint 계정에는 공급량 같은 토큰의 전역 정보가 포함됩니다. token 계정은 토큰을 다른 사용자 계정과 연결합니다.

예를 들어 사용자 A가 1500 USDC를 받으면, 사용자 A의 기본 사용자 계정에서 파생된 USDC token 계정에 해당 토큰이 저장됩니다. 이 과정은 모든 토큰에 적용됩니다. 사용자 A에게 100 USDT를 보내려면 Transfer Program은 먼저 사용자 A의 USDT token 계정이 없을 경우 이를 파생하고, 이미 있다면 해당 계정을 조회합니다.

현실에서 사용하는 기본 지갑 안에 통화별로 여러 주머니를 두는 것과 같습니다. 한 주머니에는 유로를, 다른 주머니에는 달러를 보관하는 식입니다. 하지만 기본 지갑의 소유자는 사용자인 여러분입니다.

Solana의 NFT는 공급량이 하나뿐인 토큰입니다. 즉, 단 하나만 존재합니다. Metaplex는 NFT에 metadata 계정을 연결하는 Token Metadata Program도 도입했습니다. metadata 계정에는 이름, 심볼, 컬렉션은 물론 NFT 이미지 자체와 같은 정보가 포함됩니다. 이 주제만으로도 상당히 깊이 들어갈 수 있으므로 여기서는 더 자세히 다루지 않겠습니다.

압축 배경지식

압축의 목적은 온체인에 저장되는 데이터의 양을 줄이는 것입니다. 이미지 메타데이터 같은 데이터를 Solana 원장의 Merkle 트리에 저장하고, 루트는 온체인에 저장하는 방식으로 이를 구현합니다.

인덱서는 트리와 관련된 모든 트랜잭션을 처리해 Merkle 트리의 현재 상태를 유지합니다. 사용자는 인덱서에서 데이터를 빠르게 가져올 수 있습니다. 온체인 루트는 프로그램 상호작용의 유효성과 보안을 보장합니다. 사용자는 인덱서 데이터와 온체인 루트를 대조해 데이터가 최신 상태이며 유효한지 확인할 수 있습니다.

잠시만요. Merkle 트리가 무엇인가요?

Merkle 트리는 대량의 데이터 무결성을 빠르고 효율적으로 검증할 수 있는 데이터 구조입니다. 데이터를 "리프"라고 부르는 작은 조각으로 나눈 뒤, 이 리프들을 점점 더 큰 "노드"로 결합합니다.

트리의 각 노드는 자식 노드의 해시를 나타냅니다. 부모 노드는 자식 노드의 해시를 결합해 고유한 해시를 생성합니다. 모든 리프가 트리 최상단의 단일 해시로 결합될 때까지 이 과정을 반복합니다. 이 최상단 해시를 "루트 해시"라고 합니다. 개별 리프를 모두 확인하지 않아도 루트 해시를 사용해 트리의 모든 데이터가 완전하며 변경되지 않았는지 검증할 수 있습니다.

Solana 압축은 account compression program을 기반으로 작동합니다. 개발자는 이 프로그램으로 루트 해시를 저장할 Merkle 트리 계정을 생성할 수 있습니다. 그런 다음 새 리프를 추가하거나 기존 리프를 교체할 수 있습니다. 리프를 교체할 때는 항상 “증명 경로”가 필요합니다. 증명 경로는 해당 리프와 루트 해시 계산에 필요한 모든 노드를 포함하는 트리의 최소 하위 집합입니다. 압축 프로그램은 루트 해시를 기준으로 증명을 확인해 데이터가 유효한지 검증합니다. 실제 트리 내용은 온체인에 저장되지 않으므로 이 과정이 필요합니다.

요약하면 압축 프로그램을 통해 개발자는 Merkle 트리를 생성하고 트리 내 항목을 추가하거나 업데이트할 수 있습니다. 각 작업은 Solana 트랜잭션으로 수행되므로 트리 기록은 Solana 원장에서 확인할 수 있습니다. 인덱서나 RPC 제공업체에 장애가 발생하거나 개발자가 제공업체를 변경하려는 경우, 트리 기록을 재실행해 전체 트리를 재구성할 수 있습니다.

마지막으로 데이터 검증과 보안을 위해 트리 루트를 온체인에 저장합니다. 이러한 구조를 결합하면 상태를 온체인에 저장할 필요가 없어져 비용이 줄고 데이터가 효과적으로 “압축”됩니다.

NFT 압축

NFT 압축은 Bubblegum이라는 프로그램을 기반으로 작동합니다. Bubblegum은 압축 프로그램을 사용해 각 NFT를 Merkle 트리에 저장하므로 mint, token, metadata 계정이 필요하지 않습니다. 덕분에 압축 NFT의 비용이 매우 저렴합니다!

압축 NFT 민팅은 Merkle 트리에 새 항목을 추가하는 것만큼 간단합니다. 추가되는 각 항목에는 NFT 이름, 컬렉션, 소유자 등의 정보가 포함됩니다. Bubblegum은 민팅 외에도 다음 메서드를 제공합니다.

  • Transfer
  • Burn
  • Delegate, CancelDelegate
  • Burn
  • Redeem, CancelRedeem
  • Decompress
  • VerifyCreator, SetAndVerifyCreator
  • VerifyCollection, SetAndVerifyCollection

이러한 메서드를 바로 사용할 수 있도록 문서도 준비했습니다.

압축 NFT 읽기

압축 NFT를 읽는 가장 쉬운 방법은 Digital Asset Standard (DAS) API를 사용하는 것입니다. 이는 토큰 조회를 위한 통합 인터페이스를 제공하는 오픈 소스 사양이자 시스템입니다. 이 시스템은 모든 Bubblegum 트랜잭션을 처리하고 Merkle 트리를 저장하는 인덱서를 기반으로 작동합니다. 또한 API를 통해 크리에이터, 컬렉션, 소유자를 기준으로 NFT를 조회할 수 있습니다. 맞습니다. DAS API는 압축 NFT뿐 아니라 일반 Solana NFT에도 적용됩니다! 즉, 단 한 번의 API 호출만으로 온체인 민팅 목록을 가져오거나 사용자 또는 프로그램이 보유한 모든 NFT를 매우 빠르게 확인할 수 있습니다.

이 API에 관한 문서와 시작에 필요한 샘플 코드도 준비했습니다.

압축 활용 사례

이 글을 쓰는 시점에 압축이 출시된 지 불과 몇 주밖에 되지 않았지만, 이미 놀라운 활용 사례들이 개발되고 있습니다. 몇 가지 예를 소개합니다.

  • Dialect는 채팅 내 스티커 팩에 NFT 압축을 사용하고 있습니다
  • Helium은 Helium Hotspot을 나타내는 데 NFT 압축을 사용하고 있습니다
  • Crossmint는 수십만 명에게 에어드롭하기 위해 NFT 압축을 사용하며, 직접 사용해 볼 수 있는 민팅 API도 제공합니다
  • Drip Haus는 대규모 에어드롭에 NFT 압축을 사용하고 있습니다
  • Render는 GPU 렌더링용 전체 장면 그래프를 토큰화할 때 NFT 압축을 활용하기 위해 Solana로 이전하는 방안을 검토하고 있습니다

디지털 자산의 미래를 구축하세요

압축 NFT를 활용할 준비가 되셨나요? 지금 Helius에서 개발을 시작하세요! Helius는 NFT 압축을 지원하며 Devnet과 Mainnet 모두에서 DAS API를 제공합니다. 이메일이나 신용카드 정보를 입력할 필요 없이 Solana 지갑만 연결하면 여기에서 API 키를 무료로 생성할 수 있습니다. 아직 압축 NFT를 민팅하는 방법을 모르시나요? 오픈 소스 Compression Examples 저장소를 확인해 보세요. 여러분이 무엇을 만들지 기대하겠습니다!

Helius 구독하기

최신 Solana 개발 소식을 확인하고 새 게시물 알림을 받아보세요

확대 이미지