Um compressed NFT (cNFT) é um ativo digital único cujo ownership e metadata vivem como hash de folha numa árvore Merkle, não como um conjunto completo de contas Solana pagando rent por item. A chain armazena uma conta de árvore pequena (root, canopy, changelog). Indexadores reconstruem folhas e servem provas para que carteiras e programas possam provar e atualizar um asset específico.
State compression é o padrão mais amplo: muitos registros compartilham uma árvore Merkle concorrente, e cada atualização prova que a folha nova é consistente com a root atual. Bubblegum é a camada NFT da Metaplex sobre o programa SPL Account Compression - mint, transfer, burn e vínculo de coleção em escala.
Esta página é o guarda-chuva de State Compression & cNFTs. Páginas irmãs aprofundam basics, mecânica de árvore, Bubblegum, DAS, transferências e custos.
cNFTs comprimem estado NFT por item em folhas Merkle sob uma árvore concorrente; integridade on-chain é uma root (e canopy), enquanto indexadores DAS guardam dados de folha e provas para leituras e mutações.
Por que Importa: NFTs Token Metadata ou Core completos pagam rent por mint, metadata e contas relacionadas. Em dezenas de milhares a milhões de itens (inventários de jogos, POAPs, drops generativos grandes), esse rent domina. Compressão amortiza storage para que custo marginal de mint seja sobretudo taxas de transação.
Quando Usar: Ativos únicos de alto volume onde rent por conta é proibitivo; airdrops em lote; credenciais de fidelidade ou presença; itens de jogo em escala 10k+ com requisitos leves de marketplace.
Limitações / Trade-offs: Você depende de um indexador com DAS para UX de produção; transferências precisam de provas frescas e mais contas/CU que uma transferência simples de token; composabilidade on-chain (escrow, colateral DeFi) é mais fina que para NFTs baseados em conta completos.
Tópicos Relacionados: State compression basics, how compression works, Bubblegum minting, DAS reading, transferring cNFTs, cost and trade-offs.
Na Solana, dados duráveis vivem em contas que devem permanecer rent-exempt. Um NFT Metaplex Token Metadata clássico tipicamente envolve mint, conta de token (ou ATA), metadata e muitas vezes contas de edition. Cada uma trava lamports para rent. Multiplique por 100.000 itens e o custo de capital vira decisão de produto.
cNFTs invertem esse modelo. Uma conta de árvore guarda estado resumido para até 2^maxDepth folhas. Cada mint insere (ou depois substitui) um hash de folha que compromete ownership e campos de metadata, em vez de uma nova conta de dados de longa duração. Você ainda hospeda JSON e mídia off-chain (Arweave, IPFS, HTTPS). O que muda é onde unicidade e prova de ownership vivem on-chain.
Dado a root e um caminho de hashes irmãos (uma prova), você pode verificar que uma folha pertence à árvore sem armazenar toda folha on-chain.
State compression usa uma árvore Merkle concorrente para que múltiplas atualizações possam aterrissar sem tratar a árvore como estrutura single-writer. A conta mantém um changelog de roots recentes e um buffer dimensionado por maxBufferSize para que atualizações concorrentes de folha ainda possam verificar.
Canopy depth armazena nós de prova superiores na conta de árvore. Canopies mais profundos custam mais rent adiantado e encolhem as contas de prova que você deve passar na transferência. Esse trade-off é central no design de árvore de produção.
Clientes costumam usar Metaplex Umi com mpl-bubblegum e mpl-account-compression para criar árvore e mint, com @solana/kit 7.0.0 para envios RPC gerais. Programas Anchor que integram cNFTs usam o mesmo modelo de prova; não inventam um segundo runtime de compressão.
Na criação você fixa capacidade aproximadamente como 2^maxDepth folhas:
maxDepth
Folhas máx aprox
14
16,384
20
~1,048,576
24
~16.7M
Você não redimensiona depth casualmente depois. Subdimensionar força segunda árvore, coleções divididas ou migração dolorosa. Planeje supply mais folga (muitas vezes 2x-4x), balanceado contra rent maior para árvores e canopies mais profundos.
maxBufferSize suporta atualizações concorrentes contra o changelog. canopyDepth encurta provas em transações. Árvores profundas sem canopy costumam estourar limites de tamanho de transação; canopy é como equipes mantêm transferências aterrissáveis.
Bubblegum define um formato de metadata comprimida (name, uri, seller fee, creators, campos de collection e hashes relacionados). Ownership é codificado com o leaf owner (e delegates opcionais). Mudar owner significa substituir o hash da folha para que o hash novo corresponda ao payload de ownership novo na mesma árvore.
Por isso transferências não são spl_token::transfer. Não há saldo clássico de token para debitar. A instrução prova "esta folha está na árvore sob root R" e instala uma folha nova no mesmo índice com compromisso de owner novo.
RPC padrão responde "quais bytes esta conta guarda?" cNFTs não alocam uma conta por asset, e a conta de árvore não lista todo nome e imagem. Sem indexador que seguiu eventos de compressão e Bubblegum, uma carteira não pode listar inventário do owner nem montar prova válida.
A Digital Asset Standard (DAS) API é a superfície de leitura comum:
Método
Uso típico
getAsset
Metadata de asset único + campos de compressão (árvore, leaf id, seq)
getAssetProof
Root, array de prova sibling, índices para instruções Bubblegum
getAssetsByGroup / searchAssets
Galerias de coleção e inventários de owner
Provas ficam stale quando a root da árvore avança. Clientes devem refetch imediatamente antes de assinar. Cachear metadata com TTL é ok; cachear provas por minutos é modo de falha comum.
Wallet / dapp | | 1. getAsset(id) + getAssetProof(id) --> DAS RPC | | 2. Build Bubblegum transfer ix | - merkle tree, leaf owner signer, new leaf owner | - root, data/creator hashes, nonce/index | - proof nodes as remaining accounts v Bubblegum --> CPI verify + replace leaf v Account Compression --> root + changelog update v Indexer --> DAS state catches up
Modos de falha mapeiam para este caminho: root stale, ordem de prova errada, comprimento de prova ajustado por canopy faltando, limites de CU ou tamanho de tx, signer de leaf owner errado, ou lag de indexador que confunde "tx teve sucesso" com "galeria já atualizou."
Adiantado: rent da árvore (depth, buffer, canopy).
Por mint: taxas de transação (e priority fees sob contenção), não rent completo de conta por NFT.
Contínuo: tiers DAS, engenharia de pipeline de provas, suporte de envio e CU maior que uma transferência Core simples.
Abaixo de algumas centenas de 1/1s de prestígio, Metaplex Core costuma ser mais simples. Em escala generativa ou de jogo multi-milhar, economia de rent de cNFT domina se você aceita dependência de indexador e UX de prova. Colateral DeFi e composição profunda de programa ainda favorecem padrões baseados em conta a menos que parceiros suportem fluxos comprimidos.
Clientes @solana/kit 7.0.0 ainda usam RPC ordinário para submit/confirm; DAS é superfície de método separada (muitas vezes a mesma URL do vendor). Valide CU e tamanho de tx em ferramentas Agave 4.1.1 / Solana CLI 3.0.10 antes de janelas de mint mainnet.
Eficiência extrema de custo por item; supply enorme
DAS + complexidade de prova; composabilidade mais fraca
Jogos, POAPs, generativo grande, fidelidade em escala
Metaplex Core
Modelo on-chain mais limpo; transferências mais simples
Contas e rent por item
Coleções de tamanho médio, arte, integração de programa mais forte
Token Metadata (legado)
Suporte amplo de marketplace histórico
Contas mais pesadas; stack mais antiga
Venues que ainda exigem contas TM clássicas
Múltiplas árvores
Isolam risco e janelas de mint
UX de inventário dividido; mais autoridades
Drops paralelos, isolamento de autoridade
Canopy alto
Txs de update menores
Rent de árvore maior
Árvores profundas com transferências frequentes
Tree authority é segurança operacional. Compromisso da autoridade de mint ou árvore é incidente de coleção inteira. Use multisig ou autoridades de programa bem governadas.
Vínculo de coleção ainda importa para marketplaces e getAssetsByGroup. Planeje fluxos de verificação de coleção antes de mint em massa para que agrupamento DAS funcione no dia um.
Janelas de mint em lote precisam de priority fees, envio consciente de rate e monitoramento de lag. Mint on-chain bem-sucedido invisível no DAS por minutos é ticket de suporte, não bug da chain.
Programas que fazem escrow ou roteiam cNFTs devem falar contas Bubblegum e compressão, não transferência Token Program. Contas de prova inflam listas de remaining-accounts. Sob Agave 4.1.1, verificação de prova aninhada é mais pesada que uma única transferência SPL. Prefira SDKs validados a verificação de prova feita à mão.
Se você precisa de colateral DeFi ou CPI profundo em protocolos de terceiros, valide suporte de parceiros antes de escolher cNFT. Compressão otimiza economia de storage, não composabilidade universal.
Tempo da chain - transação aterrissou e root avançou.
Tempo do indexador - DAS reflete a folha nova.
Tempo do cliente - prova para a próxima ação ainda é válida contra a root.
Telemetria deve cobrir falhas de fetch de prova, falhas de simulação de transferência (root stale), lag DAS após rajadas de mint e preenchimento da árvore vs 2^maxDepth. Alerte bem antes da última folha.
State compression generalizou "faça hash de muitas coisas, armazene a root." Bubblegum especializou isso para metadata NFT. DAS padronizou leituras de carteira para digital assets. Separe caminho de escrita (Bubblegum + compressão + RPC ordinário) de caminho de leitura (DAS) em config, retries e SLAs - mesmo enquanto Umi, kit e clientes Anchor 0.32.1 melhoram ergonomia.
"cNFTs são NFTs grátis." Rent de árvore, taxas, assinaturas DAS e engenharia de prova são reais. Você economiza rent de conta por item, não todo custo.
"Posso ler um cNFT com getAccountInfo no asset id." Não há conta de dados completa por item. Use DAS getAsset e métodos relacionados.
"Uma prova é permanente como chave privada." Provas são válidas relativas a uma root. Mints e transferências concorrentes as invalidam rapidamente.
"Compressão significa metadata totalmente on-chain." A chain compromete hashes e ownership; mídia e JSON ainda ficam off-chain na URI na folha.
"Qualquer marketplace ou protocolo DeFi vai funcionar." Muitas integrações assumem NFTs baseados em conta. Confirme suporte comprimido explicitamente.
"Posso expandir depth da árvore depois se viralizar." Depth é decisão na criação. Planeje folga ou estratégia multi-árvore adiantado.
"RPC vanilla sem DAS é ok se eu guardar folhas no meu DB." Você vira o indexador: disponibilidade, reorgs, correção de prova e UX multi-carteira caem em você.
Um cNFT é um asset único representado como folha Merkle sob uma árvore concorrente, com integridade de root on-chain e dados de folha e provas off-chain (DAS) para leituras e transferências.
Como state compression difere de "zipar" dados de conta?
Não faz gzip de bytes de conta. Substitui muitas contas por compromissos criptográficos: folhas off-chain ou em indexadores, root e canopy on-chain, provas em cada update.
O que Bubblegum adiciona sobre o programa de compressão?
Semântica NFT: campos de metadata, ownership de folha, fluxos mint/transfer/burn e comportamento relacionado a coleção, implementados como instruções que dirigem operações verificadas de append/replace de folha.
Por que preciso de árvore Merkle concorrente em vez de árvore simples?
Muitos mints e transferências podem bater na mesma árvore perto um do outro. O design concorrente mais changelog/buffer deixa o programa verificar updates sem exigir reescrita global serializada da árvore inteira a cada vez.
O que é o canopy e por que pagar por ele?
Nós canopy são níveis Merkle superiores armazenados na conta de árvore para clientes passarem menos contas de prova por transação, trocando rent adiantado maior por transações de update menores e mais confiáveis.
Como escolho maxDepth?
Estime supply de pico, adicione folga (muitas vezes 2x-4x) e escolha a menor depth que cabe nessa capacidade aceitando o rent de árvore e tamanhos de prova correspondentes.
Como carteiras listam cNFTs de um usuário?
Através de métodos DAS como searchAssets ou queries filtradas por owner, usando campos de compressão e asset ids retornados pelo indexador - não escaneando uma conta por NFT.
Por que minha transferência falhou após prova bem-sucedida minutos antes?
A root da árvore provavelmente avançou (outra atividade na árvore). Refetch getAssetProof imediatamente antes de montar e assinar a transferência.
Transferências cNFT são atômicas on-chain?
Sim. A transferência Bubblegum e replace de folha de compressão têm sucesso ou falham numa transação; lag de indexador não desfaz a transição de root on-chain.
Quando devo preferir Metaplex Core a cNFTs?
Quando tamanho de coleção é modesto, você quer transferências mais simples e composabilidade genérica mais forte, e rent por item é aceitável relativo ao valor do produto.
Compressão remove a necessidade de Arweave ou IPFS?
Não. Hashes de folha ainda tipicamente comprometem uma URI de metadata e campos relacionados. Permanência e hospedagem de conteúdo permanecem escolha de design off-chain.
Meu programa Anchor pode mintar cNFTs?
Sim, compondo com contas e instruções Bubblegum/compressão (muitas vezes via CPI ou transações multi-ix montadas pelo cliente). Você ainda precisa de provas corretas, config de árvore e DAS para leituras - Anchor 0.32.1 não remove o modelo de compressão.
Qual o principal risco operacional no lançamento de mint?
Esgotamento de capacidade da árvore ou overload/lag DAS que esconde mints bem-sucedidos das galerias. Dimensione árvores cedo e faça load-test de tiers de indexador antes do mint público.