getAssetProof

Solana / https://triport.io/sol

Minimum tier: Basic

Solana method guide

Last updated:

How a compressed NFT proof works

A compressed NFT (cNFT) has no account of its own: it is a leaf in a concurrent Merkle tree, whose on-chain account keeps the tree's root, not its leaves. To transfer, burn or delegate the asset, the Bubblegum program (through SPL Account Compression) recomputes that root from the leaf and the sibling hashes on the path up to it, and checks that it matches.

getAssetProof returns exactly those pieces for one asset ID: root, proof (the sibling hashes from the leaf up), node_index, leaf and tree_id. Every change to the same tree moves its root, and a concurrent tree accepts a proof only against its current root or a recent one still in its change-log buffer, so fetch the proof right before building the instruction. Trees with a canopy keep their top levels on-chain, and the instruction then carries only the part of the proof below the canopy.

Sources: Metaplex Bubblegum: concurrent Merkle trees, Digital Asset Standard API specification.

getAssetProof returns the Merkle proof for a single compressed NFT (cNFT), looked up by its Digital Asset Standard (DAS) asset ID. Compressed NFTs are not stored as individual on-chain accounts — they live as leaves in a concurrent Merkle tree, and their authenticity is established by a proof against that tree's root. This method gives you exactly that proof: the leaf, the tree's current root, and the sibling hashes along the path from the leaf to the root.

Use it whenever you need to verify or act on a compressed NFT on-chain — for example, when constructing a Bubblegum transfer, burn, or delegate instruction, which require the proof as input so the program can recompute and check the root. Pair it with getAsset, which returns the asset's metadata and ownership, while getAssetProof returns the cryptographic proof for the same asset.

This method belongs to the sol_das category and requires the basic tier or higher. It is not available on the free tier — a free-tier key will be rejected with an authorization error.

Parameters

This method takes no parameters.

Returns

getAssetProof return value
FieldType
resultobject

Examples

curl https://triport.io/sol \
  -X POST -H 'Content-Type: application/json' \
  -H 'x-token: <api-key>' \
  -d '{"id":1,"method":"getAssetProof","params":[],"jsonrpc":"2.0"}'
const res = await fetch("https://triport.io/sol", {
  method: "POST",
  headers: { "Content-Type": "application/json", "x-token": "<api-key>" },
  body: JSON.stringify({
  "id": 1,
  "method": "getAssetProof",
  "params": [],
  "jsonrpc": "2.0"
}),
});
const data = await res.json();
import requests
resp = requests.post(
    "https://triport.io/sol",
    headers={"x-token": "<api-key>"},
    json={"id":1,"method":"getAssetProof","params":[],"jsonrpc":"2.0"},
)
print(resp.json())

Usage

  1. Transport: HTTP (JSON-RPC).
  2. Chain: Solana.
  3. Clusters: mainnet.
  4. Billing: included in the flat monthly plan, no per-call credits.