Script Usage
Script-mode skill — read this file, then invoke from a bash block:
python3 - <<'EOF'
import sys, json
sys.path.insert(0, "/data/workspace/skills/debank")
from exports import db_chain_list, db_user_total_balance, db_user_all_token_list
print(db_chain_list()[:3])
print(db_user_total_balance(user_addr="0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"))
EOF
Read exports.py for the full list of db_* functions and exact
signatures. Common ones: db_chain_list, db_chain, db_token,
db_user_total_balance, db_user_all_token_list,
db_user_all_simple_protocol_list, db_user_all_complex_protocol_list,
db_user_history_list, db_protocol, db_pre_exec_tx, db_explain_tx.
DeBank
DeBank provides comprehensive blockchain data including wallet portfolios, token balances, transaction history, DeFi protocol positions, NFTs, and transaction simulation.
Function Reference (signatures)
All functions are in exports.py. chain_id uses DeBank's lowercase
codes: eth, bsc, arb, op, base, matic, avax, sol, era,
scrl, linea, mnt, blast, etc. — use db_chain_list() to enumerate.
user_addr is the wallet address (lowercase). protocol_id from
db_protocol_list().
Chain & Token reference
| Function | Description |
|---|---|
db_chain_list() |
List all supported chains. |
db_chain(chain_id) |
One chain's metadata. |
db_gas_market(chain_id) |
Gas prices for a chain. |
db_token(chain_id, token_id) |
Token detail. token_id = contract address (or eth, bnb for native). |
db_token_list_by_ids(chain_id, token_ids) |
Batch token lookup. |
db_token_history_price(chain_id, token_id, start_time, end_time=None) |
Historical prices (unix timestamps). |
db_token_top_holders(chain_id, token_id, start=0) |
Top holders. |
User portfolio (single-chain)
| Function | Description |
|---|---|
db_user_chain_balance(user_addr, chain_id) |
USD value on one chain. |
db_user_token_list(user_addr, chain_id, is_all=None) |
Tokens on one chain. |
db_user_token(user_addr, chain_id, token_id) |
One token balance. |
db_user_simple_protocol_list(user_addr, chain_id) |
DeFi positions (light) on one chain. |
db_user_complex_protocol_list(user_addr, chain_id) |
DeFi positions (detailed) on one chain. |
db_user_nft_list(user_addr, chain_id, is_all=None) |
NFTs on one chain. |
db_user_history_list(user_addr, chain_id, start_time=None, page_count=None) |
Tx history on one chain. |
db_user_chain_net_curve(user_addr, chain_id) |
Net worth curve on one chain. |
db_user_token_authorized_list(user_addr, chain_id) |
Token approvals (security audit). |
db_user_nft_authorized_list(user_addr, chain_id) |
NFT approvals. |
User portfolio (all-chain — heavier calls)
| Function | Description |
|---|---|
db_user_total_balance(user_addr) |
Total USD across all chains + breakdown. |
db_user_total_net_curve(user_addr) |
Net worth curve across all chains. |
db_user_used_chain_list(user_addr) |
Which chains the address has used. |
db_user_all_token_list(user_addr, is_all=None) |
All tokens across all chains. |
db_user_all_simple_protocol_list(user_addr) |
All DeFi positions (light). |
db_user_all_complex_protocol_list(user_addr) |
All DeFi positions (detailed). |
db_user_all_nft_list(user_addr, is_all=None) |
All NFTs. |
db_user_all_history_list(user_addr, start_time=None, page_count=None) |
All tx history. |
db_user_complex_app_list(user_addr) |
All app-level positions (more granular). |
Protocol reference
| Function | Description |
|---|---|
db_protocol(protocol_id) |
Protocol detail. |
db_protocol_list(chain_id) |
Protocols on one chain. |
db_protocol_all_list() |
All protocols across chains. |
db_app_protocol_list() |
App-level protocols (groups). |
db_user_protocol(user_addr, protocol_id) |
User's position in one protocol. |
db_pool(protocol_id, chain_id, pool_id) |
One pool's detail. |
Tx simulation
| Function | Description |
|---|---|
db_pre_exec_tx(user_addr, chain_id, tx) |
Simulate tx before sending. tx = standard tx dict. |
db_explain_tx(user_addr, chain_id, tx) |
Human-readable explanation of a tx. |
DeBank uses snake_case (total_usd_value, chain_id, usd_value).
USD values are floats. Token amounts are floats (already adjusted for
decimals — no need to divide by 10**decimals).
When to Use DeBank
Use DeBank for:
- User Portfolio - Total balance, token holdings, NFTs across all chains
- Transaction History - Historical transactions on single or all chains
- DeFi Positions - Protocol balances and complex portfolio positions
- Token Data - Token details, prices, and top holders
- Transaction Simulation - Pre-execute and explain transactions before submission
- Authorization Tracking - View token and NFT approvals
- Analytics - 24-hour net worth curves and portfolio tracking
Common Workflows
Get User Portfolio
db_user_total_balance(user_addr="0x...") # Total balance across all chains
db_user_all_token_list(user_addr="0x...") # All token holdings
db_user_all_nft_list(user_addr="0x...") # All NFT collections
Check Token Balances on Specific Chain
db_user_token_list(user_addr="0x...", chain_id="eth") # Ethereum tokens
db_user_token_list(user_addr="0x...", chain_id="bsc") # BSC tokens
Get Transaction History
db_user_history_list(user_addr="0x...", chain_id="eth") # Eth transactions
db_user_all_history_list(user_addr="0x...") # All chain transactions
Check DeFi Protocol Positions
db_user_simple_protocol_list(user_addr="0x...", chain_id="eth") # Simple balances
db_user_complex_protocol_list(user_addr="0x...", chain_id="eth") # Detailed positions
db_user_all_complex_protocol_list(user_addr="0x...") # All chains
Token Information
db_token(chain_id="eth", token_id="0x...") # Token details
db_token_history_price(chain_id="eth", token_id="0x...", start_time=1234567890, end_time=1234567990)
db_token_top_holders(chain_id="eth", token_id="0x...") # Top 100 holders
Transaction Simulation
db_pre_exec_tx(user_addr="0x...", chain_id="eth", tx={...}) # Enhanced pre-execution
db_explain_tx(user_addr="0x...", chain_id="eth", tx={...}) # Explain transaction
Protocol Data
db_protocol(protocol_id="uniswap") # Protocol details
db_protocol_list(chain_id="eth") # All protocols on chain
db_protocol_all_list() # All protocols across chains
Chain Information
db_chain_list() # All supported chains
db_chain(chain_id="eth") # Specific chain details
db_gas_market(chain_id="eth") # Gas prices
Important Notes
- API Key: Requires DEBANK_API_KEY environment variable (DeBank Cloud API)
- User Address: Most endpoints require a valid blockchain address (0x... format)
- Chain IDs: Use DeBank chain identifiers (eth, bsc, polygon, arbitrum, optimism, etc.)
- Rate Limits: Be mindful of API rate limits and unit costs
- Unit Costs: Different endpoints have different unit costs (see API documentation)
Chain ID Reference
Common chain identifiers:
- eth → Ethereum Mainnet
- bsc → BNB Smart Chain
- polygon → Polygon
- arbitrum → Arbitrum One
- optimism → Optimism
- avax → Avalanche C-Chain
- ftm → Fantom
- op → Optimism
- base → Base
Important: Use db_chain_list() to get the complete list of supported chains and their identifiers.
Address Format
All user addresses should be in Ethereum format (0x followed by 40 hexadecimal characters):
- Valid: 0x1234567890abcdef1234567890abcdef12345678
- Invalid: 1234567890abcdef1234567890abcdef12345678 (missing 0x prefix)