Transaction Indexing Guide

How transactions get indexed on brale.network, how to construct transaction URLs, and live examples for every transfer type + value type pair.

How Indexing Works

brale.network uses a multi-source reconciliation model. Each transaction can be observed from multiple sources (transfer type RPCs, webhooks, the Brale API) and merged into a single canonical record with a confidence score.

Three ways transactions enter the index

  1. Live ingest — Alchemy Custom Webhooks push ERC-20 Transfer events on Base, Polygon, Celo, and Ethereum to our Cloudflare Worker as soon as each block is indexed; Solana (Helius) is polled every 15 minutes pending Helius webhook cutover.
  2. Historical backfill — Bulk scripts page through the full transaction history for each contract/mint and ingest everything. Checkpointed so restarts resume safely.
  3. On-demand fetch — Visit any transaction URL with a hash. If we don't have it yet, the page fetches it live from the transfer type RPC, ingests it through the reconciler, and renders it immediately.

All three paths go through the same reconciler, which deduplicates on a fingerprint of chain_id:tx_hash:log_index and merges observations by priority.

Transaction URL Structure

Transactions can be loaded using two URL formats:

Full context URL (preferred)

/tx/<transferType>/<valueType>/<hash>
  • transferType — the transfer type slug (e.g. base, solana)
  • valueType — the value type symbol, lowercase (e.g. sbc, cfusd)
  • hash — the on-chain transaction hash or signature

The full context URL narrows the database lookup and renders transfer type / value type context in the page header. Use this format when linking from applications.

Hash-only URL (fallback)

/tx/<hash>

Works for any transaction hash. The explorer will look it up across all transfer types and value types. If the transaction isn't in the database yet, it will attempt on-demand fetching — detecting the transfer type from the hash format (0x-prefixed = EVM, base58 = Solana).

Currently Indexed Pairs

These are the transfer type + value type pairs actively being indexed, along with their on-chain contract addresses and current transaction counts.

Transfer TypeValue TypeContract / Mint
BasecfUSD0x131409B3...a544b6fA
BaseMXNe0x269caE7D...6030E0aF
BaserUSD0xd899C225...B8860eC8
BaseSBC0xfdcC3dd6...33d80798
BaseUSDC0x833589fc...bda02913
BaseUSDGLO0x4F604735...E0225AD3
CeloSBC0xDE093684...D903c52a
CeloUSDGLO0x4F604735...E0225AD3
EthereumrUSD0x2c39fe49...e6b68138
PolygoncfUSD0x6C68dA07...5e4cc5bb
PolygonSBC0xfdcC3dd6...33d80798
PolygonUSDGLO0x4f604735...e0225ad3
SolanacfUSD9Qh5igeYVb...2LdqyT4Y
SolanaCreateXBV8cKPRTdQ...R1Tx1EGF
SolanaHSUSD4FVaHEubcq...ytcGdRvd
SolanaMXNe6zYgzrT7X2...ocYdB9wa
SolanaSBCDBAzBUXaLj...KjhbTGMA
SolanaUSDCEPjFWdd5Au...ZwyTDt1v

Live Transaction Examples

Click any link below to see a real indexed transaction for each pair. These are the most recent transactions in the database.

SolanacfUSDtransfer
Full Context URL
/tx/solana/cfusd/2BYk2KwhbGXJhSAGSGUvjAr...i6NB6H5rfDNtZFhTA8ukqEhDcawrbL
Hash-Only URL
/tx/2BYk2KwhbGXJ...hDcawrbL
SolanaCreateXtransfer
Full Context URL
/tx/solana/createx/2UDgZFfgkFgzknWc29SR8...3g2r7hJUZRp81hvTh69T48XU24YVS9
Hash-Only URL
/tx/2UDgZFfgkFgz...XU24YVS9

On-Demand Transaction Fetching

You can link to any transaction hash for a tracked value type — even one that hasn't been backfilled yet. The explorer will:

  1. Check the local database for the transaction
  2. If not found, detect the transfer type from the hash format
  3. Fetch the transaction from the transfer type RPC (Alchemy for Base, Helius for Solana)
  4. Parse and ingest it through the reconciler
  5. Render the page with live data

This means you can paste any transaction hash from BaseScan or Solscan into the URL and it will work — as long as it involves a tracked value type contract.

Try it: paste a hash from an external explorer

# Base — find any SBC transaction on BaseScan and use its hash: https://brale.network/tx/base/sbc/<paste-hash-here> # Solana — find any cfUSD transaction on Solscan: https://brale.network/tx/solana/cfusd/<paste-signature-here> # Or just use the hash alone (auto-detects transfer type): https://brale.network/tx/<paste-hash-here>

Tracked Contract Addresses

These are the token contracts and mint addresses that brale.network indexes. Transactions involving other contracts are not tracked.

Base

Value TypeContract Address
SBC0xfdcC3dd6671eaB0709A4C0f3F53De9a333d80798
cfUSD0x131409B31bF446737dD04353D43DACada544b6fA

Solana

Value TypeMint Address
SBCDBAzBUXaLj1qANCseUPZz4sp9F8d2sc78C4vKjhbTGMA
cfUSD9Qh5igeYVb9ZC6s6BfNaffycTiNTqv9KhL432LdqyT4Y

Linking From Your Application

To link to a transaction from your app, wallet, or dashboard, construct the URL as:

const txUrl = `https://brale.network/tx/${transferType}/${valueType.toLowerCase()}/${txHash}` // Examples: "https://brale.network/tx/base/sbc/0xabc..." "https://brale.network/tx/solana/cfusd/2yRA..."

Valid transferType values: base, solana, canton, polygon, celo, ethereum
Valid valueType values: usdc, sbc, cfusd, usdglo, hsusd, createx, mxne, rusd

Agent-Friendly Data (Content Negotiation)

Every public page on brale.network supports Accept: text/markdown content negotiation. When an AI agent, LLM, or automated tool sends a request with this header, the same canonical URL returns a structured markdown document instead of HTML.

This means agents can read brale.network data without scraping HTML or parsing the DOM — they get clean, well-structured markdown with the same data the HTML page shows.

How It Works

  1. Send a request to any brale.network page URL
  2. Include the header Accept: text/markdown
  3. Receive a markdown response with Content-Type: text/markdown; charset=utf-8
  4. The response includes an x-markdown-tokens header estimating token count

Supported Pages

PageURL PatternMarkdown Contents
Home/Site overview, concepts, API endpoints, machine-readable resources
All Value Types/valuetypeAggregate stats + per-asset summary with volume, tx count, chains
Single Value Type/valuetype/sbcAsset stats, contracts, recent transactions table
All Transfer Types/transfertypeAggregate stats + per-chain summary
Single Transfer Type/transfertype/baseChain stats, supported value types, recent transactions
Transactions/transactionsPaginated transaction feed with cursor links
Transaction Detail/tx/base/sbc/0x...Full tx data, provenance, raw JSON
Wallet/wallet/base/0x...Wallet history with direction, pagination
Search/search?q=sbcSearch results across all entity types
Glossary/glossaryTerminology definitions

Examples

# Get all value types as markdown curl -H "Accept: text/markdown" https://brale.network/valuetype # Get SBC details as markdown curl -H "Accept: text/markdown" https://brale.network/valuetype/sbc # Get Base transfer type as markdown curl -H "Accept: text/markdown" https://brale.network/transfertype/base # Get a specific transaction as markdown curl -H "Accept: text/markdown" https://brale.network/tx/base/sbc/0x... # Get wallet history as markdown curl -H "Accept: text/markdown" https://brale.network/wallet/base/0x... # Search as markdown curl -H "Accept: text/markdown" "https://brale.network/search?q=sbc" # Without the header, you get normal HTML (browsers work as usual) curl https://brale.network/valuetype

Response Headers

Content-Type: text/markdown; charset=utf-8 Vary: Accept x-markdown-tokens: 1847 Cache-Control: public, max-age=60 Link: </.well-known/api-catalog>; rel="api-catalog", </llms.txt>; rel="describedby"; type="text/plain", </sitemap.xml>; rel="sitemap"; type="application/xml"

The Vary: Accept header ensures caches serve the correct version. The x-markdown-tokens header provides an approximate token count (characters / 4) so agents can estimate context window usage before reading the body.