Indexing Data
Background
Naming Convention
ZK Proofs
Getting Started
1
Configure Indexer Access
Network
RPC Endpoint
let indexer_url = "https://devnet.data-anchor.termina.technology/";
let data_anchor_client = DataAnchorClient::builder()
.payer(payer)
.program_id(program_id)
.indexer_from_url(&indexer_url)
.await?
.build_with_config(config)
.await?;INDEXER_URL="https://devnet.indexer.data-anchor.termina.technology/"2
3
Query by Blober PDA
let blobs = data_anchor_client
.get_blobs_by_blober(namespace.into(), None)
.await?;use chrono::{DateTime, Utc};
let start_time = DateTime::parse_from_rfc3339("2025-06-01T00:00:00Z")?.with_timezone(&Utc);
let end_time = DateTime::parse_from_rfc3339("2025-06-30T00:00:00Z")?.with_timezone(&Utc);
let time_range = Some((start_time, end_time));
let blobs = data_anchor_client
.get_blobs_by_blober(namespace.into(), time_range)
.await?;data-anchor \
--indexer-url $INDEXER_URL \
indexer blobs-for-blober \
--blober <BLOBER_PUBKEY>
--start "2025-06-01T00:00:00Z" \
--end "2025-06-30T00:00:00Z"4
Query by Network and Namespace
let network_name = "your_network";
let network_blobs = data_anchor_client
.get_blobs_by_network(network_name.to_string(), time_range)
.await?;let namespace = "user.network";
let payer_pubkey = Some(your_payer_pubkey);
let namespace_blobs = data_anchor_client
.get_blobs_by_namespace_for_payer(namespace.into(), payer_pubkey, time_range)
.await?;data-anchor \
--indexer-url $INDEXER_URL \
indexer blobs-for-network \
--network-name <NETWORK_NAME> \
--start "2025-06-01T00:00:00Z" \
--end "2025-06-30T00:00:00Z"data-anchor \
--indexer-url $INDEXER_URL \
indexer blobs-for-namespace \
--namespace <NAMESPACE> \
--payer-pubkey <PAYER_PUBKEY> \
--start "2025-06-01T00:00:00Z" \
--end "2025-06-30T00:00:00Z"5
Query by Payer Address
let payer_pubkey = your_payer_pubkey;
let network_name = "your_network";
let payer_blobs = data_anchor_client
.get_blobs_by_payer(payer_pubkey, network_name.to_string(), time_range)
.await?;data-anchor \
--indexer-url $INDEXER_URL \
indexer blobs-for-payer \
--blob-payer <PAYER_PUBKEY> \
--network-name <NETWORK_NAME> \
--start "2025-06-01T00:00:00Z" \
--end "2025-06-30T00:00:00Z"6
Retrieve Proofs
let proof_type = CustomerElf::DataCorrectness;
let request_id = data_anchor_client
.checkpoint_custom_proof(slot, blober_pda, proof_type)
.await?;
let status = data_anchor_client
.get_proof_request_status(request_id)
.await?;data-anchor \
--namespace $NAMESPACE \
--indexer-url $INDEXER_URL \
blober configure-checkpoint \
--authority data-correctness
data-anchor \
--namespace $NAMESPACE \
--indexer-url $INDEXER_URL \
indexer zk-proof \
--slot <SLOT_NUMBER> \
--proof-type data-correctness7
Process Blob Metadata
let blobs = data_anchor_client.get_blobs(slot, namespace.into()).await?;
for blob in blobs {
println!("Blob ID: {}", blob.id);
println!("Slot: {}", blob.slot);
println!("Timestamp: {}", blob.timestamp);
println!("Data length: {} bytes", blob.data.len());
// Your original uploaded data is ready to use
let original_data = blob.data;
// Process original_data as needed
}data-anchor \
--namespace $NAMESPACE \
--indexer-url $INDEXER_URL \
indexer blobs <SLOT_NUMBER>Last updated