NOVO: Helius adquire a Light Protocol
compressão de NFTs na Solana
Blog/Fundamentos

Explorando a compressão de NFTs na Solana

Cofundador e CEOMert Mumtaz no XMert Mumtaz no LinkedIn
8 min de leitura

Um dos avanços recentes no universo cripto foi o surgimento dos ativos digitais — conhecidos como tokens não fungíveis ou, de forma abreviada, NFTs. Os NFTs permitem a propriedade de ativos digitais resistente à censura, como obras de arte, itens de jogos e ingressos, além de viabilizar economias peer-to-peer dinâmicas em torno desses ativos. Na verdade, pode-se dizer que os NFTs são a segunda grande aplicação a alcançar adequação entre produto e mercado (PMF) no setor cripto, depois do conceito de dinheiro digital.  

No entanto, os NFTs também apresentam desafios.

Um grande desafio específico da Solana tem sido o custo de armazenar esses ativos on-chain. Embora a Solana tenha taxas de transação muito baixas, o mesmo não acontece com as taxas de armazenamento. Para que os ativos digitais sejam realmente onipresentes no mundo digital, o custo de armazená-los precisa ser o mais acessível possível. É aí que entra a compressão de NFTs na Solana.

A compressão de NFTs viabiliza a próxima geração de aplicações baseadas em cripto, permitindo que desenvolvedores e criadores cunhem grandes quantidades de NFTs a custos significativamente menores. Imagine um MMORPG no qual os itens do jogo sejam NFTs negociáveis e a economia do jogo esteja perfeitamente integrada ao restante da economia global. Naturalmente, esses jogos teriam milhões ou até bilhões de itens, cuja cunhagem custaria uma fortuna em uma blockchain como a Ethereum. A compressão de NFTs torna isso possível na Solana — agora mesmo.

Para entender o potencial disso, vejamos um exemplo: atualmente, a Polygon, uma solução de escalabilidade para a Ethereum, cobra cerca de US$ 0,05 para cunhar um NFT. Isso significa que custaria aproximadamente US$ 50 milhões para cunhar cerca de um bilhão de NFTs na Polygon.

Na Solana, com compressão, o custo será de aproximadamente 0,0000005 SOL por NFT. Portanto, no momento em que este artigo foi escrito, um bilhão de NFTs custaria cerca de US$ 11 mil. Isso representa uma economia de ~US$ 50 milhões ou um custo cerca de três ordens de grandeza menor. Esse é o poder da compressão.

Mas como a compressão funciona? Vamos descobrir.

Contexto sobre NFTs na Solana (opcional)

Antes de nos aprofundarmos na compressão, vamos revisar como os NFTs funcionam na Solana. Se você já tem experiência com NFTs na Solana, pode pular para a próxima seção.

Os tokens na Solana usam dois tipos de contas: contas de mint e contas de token. A conta de mint contém informações globais sobre um token, como o fornecimento. A conta de token associa o token a outra conta de usuário.

Por exemplo, se o Usuário A receber 1.500 USDC, a conta de token USDC do Usuário A, derivada de sua conta de usuário principal, armazenará esses tokens. Esse processo se aplica a todos os tokens. Se eu quiser enviar 100 USDT ao Usuário A, o Transfer Program primeiro derivará a conta de token USDT do Usuário A, caso ela não exista, ou a localizará, caso já exista.

É como ter várias bolsas diferentes dentro da sua carteira principal no mundo físico, uma para cada moeda. Você guarda euros em uma bolsa, dólares em outra e assim por diante — mas a carteira principal pertence a você, o usuário.

Os NFTs na Solana são tokens com fornecimento único, ou seja, existe apenas um de cada. A Metaplex também introduziu o chamado Token Metadata Program, que vincula uma conta de metadata ao NFT. A conta de metadata inclui informações como nome, símbolo, coleção e, claro, a própria imagem do NFT. Esse é um assunto bastante complexo por si só, então não vamos nos aprofundar nele.

Contexto sobre compressão

O objetivo da compressão é reduzir a quantidade de dados armazenados on-chain. Isso é feito armazenando os dados, como os metadados da imagem, em árvores de Merkle no livro-razão da Solana e armazenando suas raízes on-chain.

Os indexadores mantêm o estado atual da árvore de Merkle ao processar todas as transações que envolvem a árvore. Os usuários podem recuperar seus dados rapidamente no indexador. A raiz on-chain garante que as interações com o programa sejam válidas e seguras. Os usuários também podem comparar os dados do indexador com a raiz on-chain para verificar se estão atualizados e são válidos.

Certo — vamos com calma. O que é uma árvore de Merkle?

Uma árvore de Merkle é uma estrutura de dados que permite verificar a integridade de grandes quantidades de dados com rapidez e eficiência. Ela divide os dados em partes menores, chamadas de "folhas", e depois combina essas folhas em "nós" cada vez maiores.

Cada nó da árvore representa um hash de seus nós filhos. O nó pai combina os hashes de seus nós filhos para criar seu próprio hash exclusivo. Esse processo é repetido até que todas as folhas sejam combinadas em um único hash no topo da árvore, chamado de "hash raiz". O hash raiz pode ser usado para verificar se todos os dados da árvore estão completos e inalterados, sem precisar conferir cada folha individualmente.

A compressão na Solana é viabilizada pelo programa de compressão de contas. O programa permite que os desenvolvedores criem uma conta de árvore de Merkle que armazena o hash raiz. Em seguida, eles podem adicionar novas folhas ou substituir as existentes. Toda substituição de folha exige um “caminho de prova”, que é o menor subconjunto da árvore contendo a folha e todos os nós necessários para calcular o hash raiz. O programa de compressão compara a prova com o hash raiz para verificar se os dados são válidos. Isso é necessário porque o conteúdo real da árvore não é armazenado on-chain.

Em resumo, o programa de compressão permite que os desenvolvedores criem árvores de Merkle e adicionem ou atualizem itens dentro delas. O histórico da árvore fica disponível no livro-razão da Solana, pois cada ação é realizada por meio de transações da Solana. Toda a árvore pode ser reconstruída reproduzindo seu histórico caso um indexador ou provedor de RPC fique indisponível ou o desenvolvedor queira trocar de provedor.

Por fim, a raiz da árvore é armazenada on-chain para garantir a verificação e a segurança dos dados. Com tudo isso, o sistema elimina a necessidade de armazenar o estado on-chain, reduzindo custos e efetivamente “comprimindo” os dados.

Compressão de NFTs

A compressão de NFTs é viabilizada por um programa chamado Bubblegum. O Bubblegum usa o programa de compressão para armazenar cada NFT em uma árvore de Merkle, eliminando a necessidade das contas de mint, token e metadata. É isso que torna os NFTs comprimidos tão baratos!

Cunhar um NFT comprimido é tão simples quanto adicionar um novo item à árvore de Merkle. Cada item adicionado inclui informações como nome, coleção e proprietário do NFT, entre outras. Além da cunhagem, o Bubblegum também oferece os seguintes métodos:

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

Também adicionamos uma documentação para ajudar você a começar a usar esses métodos. Confira aqui.

Leitura de NFTs comprimidos

A maneira mais fácil de ler NFTs comprimidos é por meio da API do Digital Asset Standard (DAS), uma especificação e um sistema de código aberto que fornecem uma interface unificada para consultar tokens. O sistema é viabilizado por um indexador que processa todas as transações do Bubblegum e armazena as árvores de Merkle. Além disso, a API permite que os usuários consultem NFTs por criador, coleção e proprietário. Sim, você leu certo. A DAS API não se aplica apenas a NFTs comprimidos, mas também a NFTs comuns da Solana! Isso significa que você pode obter listas de cunhagem on-chain ou visualizar todos os NFTs mantidos por um usuário ou programa em uma única chamada de API, com altíssima velocidade.

Também preparamos uma documentação sobre essa API e incluímos até mesmo exemplos de código para você começar. Confira aqui.

Casos de uso da compressão

No momento em que este artigo foi escrito, a compressão estava disponível havia apenas algumas semanas, e casos de uso incríveis já estavam sendo desenvolvidos. Veja alguns exemplos:

  • A Dialect usa a compressão de NFTs em seus pacotes de figurinhas para chats
  • A Helium usa a compressão de NFTs para representar seus Helium Hotspots
  • A Crossmint usa a compressão de NFTs para distribuir airdrops a centenas de milhares de pessoas e oferece uma API de cunhagem para você experimentar
  • A Drip Haus usa a compressão de NFTs para realizar airdrops em massa
  • A Render está considerando migrar para a Solana a fim de aproveitar a compressão de NFTs para tokenizar grafos de cena completos destinados à renderização por GPU

Comece a construir o futuro dos ativos digitais

Quer trabalhar com NFTs comprimidos? Você pode começar a desenvolver com a Helius hoje mesmo! A Helius oferece suporte à compressão de NFTs e disponibiliza a DAS API tanto na Devnet quanto na Mainnet. Você pode gerar uma chave de API gratuitamente aqui, sem informar e-mail nem dados de cartão de crédito — basta conectar sua carteira Solana. Ainda não sabe como cunhar um NFT comprimido? Confira nosso repositório de código aberto Compression Examples. Mal podemos esperar para ver o que você vai criar!

Assine a Helius

Acompanhe as novidades mais recentes do desenvolvimento Solana e receba atualizações quando publicarmos

Imagem ampliada