The DAS API
A Digital Asset Standard (DAS) API expõe metadados ricos de ativos para tokens, NFTs e cNFTs comprimidos via endpoints RPC com DAS habilitado.
Receita
Cartão de receita para referência rápida - pronto para copiar e colar.
// DAS methods use JSON-RPC on DAS-enabled provider URLs
const DAS_RPC = "https://mainnet.helius-rpc.com/?api-key=YOUR_KEY";
const body = {
jsonrpc: "2.0",
id: 1,
method: "getAsset",
params: { id: "ASSET_ID_OR_MINT" },
};
const res = await fetch(DAS_RPC, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(body),
});
const { result } = await res.json();
console.log(result?.content?.metadata?.name);Quando usar:
- Renderizar galerias NFT com nomes e imagens.
- Ler árvores cNFT comprimidas sem parsing manual de merkle.
- Token-gating por ownership de ativo entre coleções.
- Visões de portfólio de carteira além de
getTokenAccountsByOwnerbruto.
Exemplo Prático
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;
}
// Assets owned by wallet
const assets = await dasRpc<{ items: unknown[] }>("getAssetsByOwner", {
ownerAddress: "WALLET_PUBKEY",
page: 1,
limit: 50,
});
console.log("count:", assets.items?.length);
// Single asset detail
const asset = await dasRpc<unknown>("getAsset", { id: "ASSET_ID" });
console.log(asset);O que isso demonstra:
- DAS estende JSON-RPC com métodos centrados em ativos como
getAsset,getAssetsByOwner. - Parâmetros de paginação variam por provedor - verifique docs Helius/Triton.
- Combine com RPC padrão para transações e contas de programa customizadas.
Aprofundamento
Como funciona
- Indexers atrás do provedor agregam metadados de token on-chain, programas MPL e provas de compressão.
getAssetretorna JSON unificado para ativos padrão, comprimidos e fungíveis onde suportado.- Não faz parte do RPC Solana vanilla - deve usar endpoint com DAS habilitado.
@solana/kittrata RPC padrão; DAS frequentemente usafetchou SDK do provedor até unificação no kit.
Métodos DAS comuns
| Método | Propósito |
|---|---|
getAsset | Ativo único por id |
getAssetsByOwner | Portfólio de carteira |
getAssetsByGroup | Consultas de coleção |
searchAssets | Descoberta filtrada |
Notas TypeScript
// Pair DAS reads with kit sends
import { createSolanaRpc } from "@solana/kit";
const txRpc = createSolanaRpc(process.env.RPC_URL!);
// DAS_RPC separate URL on same provider dashboardErros comuns
- RPC público vanilla - métodos DAS retornam erros ou 404. Correção: habilite DAS no plano do provedor.
- Confusão de asset id - mint, metadata PDA e id DAS diferem para cNFTs. Correção: use id retornado por consulta DAS anterior.
- Metadados obsoletos - JSON off-chain atrasado em atualizações de imagem. Correção: política de refresh + cache bust em URIs.
- Lacunas de paginação - mints concorrentes durante paging perdem itens. Correção: paginação baseada em cursor se provedor suportar.
- Misturar DAS com GPA bruto - caminhos de lógica duplicados. Correção: DAS para carteiras; GPA só para estado de programa customizado.
Alternativas
| Alternativa | Use quando | Não use quando |
|---|---|---|
getTokenAccountsByOwner | Só saldos SPL simples | Riqueza de metadados NFT |
| Indexer customizado | Controle total do schema | Galeria MVP rápida |
| Leituras Metaplex SDK | Metadata PDA low-level | Ergonomia de ativo comprimido |
| APIs de explorer | Analytics ad-hoc | Dependência de app em produção |
FAQs
Quais provedores suportam DAS?
Helius, Triton e outros anunciam DAS - verifique flag de feature no dashboard da API key.
DAS cobre NFTs comprimidos?
Sim - valor principal são leituras unificadas para cNFTs Bubblegum sem decodificação manual de prova.
Posso usar DAS em devnet?
Depende do provedor - muitas features DAS visam mainnet; verifique matriz de suporte devnet.
DAS está no @solana/kit 7.0.0?
RPC padrão do kit cobre métodos de validador; DAS tipicamente usa JSON-RPC do provedor via fetch ou SDK do vendor.
Como obter ativos de coleção?
getAssetsByGroup com chave/valor de grupo (ex.: endereço de coleção verificada) conforme schema do provedor.
O que é asset id para cNFT?
Identificador computado pelo provedor - não assuma igual ao endereço leaf sem verificar resposta getAsset.
Rate limits em DAS?
Separado das cotas RPC padrão - monitore 429 em endpoints de portfólio.
DAS pode substituir indexing?
Para carteiras read-heavy sim; analytics ainda precisam indexers customizados para eventos arbitrários de programa.
Quão frescos são dados DAS?
Sub-slot a segundos atrás da chain dependendo do indexer - não idêntico a leituras processed.
Como DAS se relaciona com docs de state compression?
Veja Reading Compressed Assets DAS para padrões específicos de cNFT.
Relacionados
- RPC Basics - JSON-RPC padrão
- Core RPC Methods - leituras low-level de conta
- Reading Compressed Assets DAS - foco cNFT
- RPC Providers - quem hospeda DAS
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.