Lendo Assets Comprimidos (DAS)
Compressed NFTs não têm contas por asset legíveis via getAccountInfo. Apps de produção usam a DAS API para buscar metadata de asset, campos de compressão e merkle proofs para transferências.
Busque em todas as páginas da documentação
Compressed NFTs não têm contas por asset legíveis via getAccountInfo. Apps de produção usam a DAS API para buscar metadata de asset, campos de compressão e merkle proofs para transferências.
const asset = await dasRpc("getAsset", { id: "CNFT_ID" });
const proof = await dasRpc("getAssetProof", { id: "CNFT_ID" });const collection = await dasRpc("getAssetsByGroup", {
groupKey: "collection",
groupValue: "COLLECTION_ID",
page: 1,
limit: 100,
});Quando usar:
const DAS_RPC = process.env.DAS_RPC_URL!;
async function dasRpc<T>(method: string, params: unknown): Promise<T> {
const res = await fetch(DAS_RPC, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ jsonrpc: "2.0", id: 1, method, params }),
});
const json = await res.json();
if (json.error) throw new Error(json.error.message);
return json.result as T;
}
type DasAsset = {
id: string;
compression?: {
eligible: boolean;
compressed: boolean;
leaf_id: number;
tree: string;
seq: number;
};
content?: { metadata?: { name?: string } };
};
type AssetProof = {
root: string;
proof: string[];
node_index: number;
leaf: string;
tree_id: string;
};
const assetId = "CNFT_ASSET_ID_FROM_PRIOR_QUERY";
const asset = await dasRpc<DasAsset>("getAsset", { id: assetId });
console.log("name:", asset.content?.metadata?.name);
console.log("tree:", asset.compression?.tree);
console.log("leaf:", asset.compression?.leaf_id);
const proof = await dasRpc<AssetProof>("getAssetProof", { id: assetId });
console.log("proof nodes:", proof.proof.length);
console.log("root:", proof.root);import { createSolanaRpc } from "@solana/kit";
// Standard RPC for sending txs; DAS for reads and proofs
const txRpc = createSolanaRpc(process.env.RPC_URL!);O que isso demonstra:
getAsset retorna metadata compression para cNFTsgetAssetProof fornece hashes irmãos para instruções Bubblegumid retornado pelo DAS consistentemente - não só pubkey da árvoregetAssetProof deve corresponder ao root atual - atualize antes do build da txgetAssetsByGroup lista cNFTs de coleção com paginação| Campo | Significado |
|---|---|
compression.tree | Pubkey da conta merkle tree |
compression.leaf_id | Índice da folha na árvore |
compression.seq | Sequência para atualizações concorrentes |
id | Identificador de asset DAS para chamadas de follow-up |
// Cache asset metadata longer than proofs
// proofs TTL: seconds to minutes during active mint windowsid de getAssetsByOwner.seq - raros problemas de update concorrente. Correção: inclua seq mais recente do asset no builder de transferência quando necessário.| Alternativa | Use quando | Não use quando |
|---|---|---|
| Indexer merkle self-hosted | Controle total | MVP rápido |
| APIs Helius/Tensor | Conveniência SDK vendor | DAS padrão basta |
| Leituras só on-chain | Impossível para metadata completa | Produtos cNFT |
Folhas não são contas completas - indexers reconstruem estado e expõem API unificada.
Asset: metadata + campos compression. Proof: irmãos merkle para transações.
Sempre que root da árvore muda - busque novamente por transação em períodos ativos.
getAssetsByGroup com chave/valor de agrupamento de coleção.
Específico do provider - confirme DAS devnet no dashboard.
Escale tier de API; cache metadata; minimize buscas de proof.
Tipicamente indica tipo compressed NFT no schema DAS.
Veja rpc-websockets-das-api/the-das-api para setup geral.
Siga expectativa do SDK Metaplex ao alimentar transferência Bubblegum - use builders oficiais quando possível.
Lag de indexer - retry; verifique sucesso da tx de mint no explorer.
Produto diferente - foco cNFT aqui; DAS cobre múltiplas interfaces.
fetch para DAS; kit para envio de transação após build com Umi/mpl-bubblegum.
Versões da stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 e LiteSVM 0.6.x.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026