wallet/triggerconstantcontract - Call View Func...
Call smart contract view functions without creating transactions, read contract state data instantly via Dwellir's optimized TRON RPC endpoint.
Zero-Cost Contract Reads
Dwellir's TRON infrastructure enables instant contract state queries without consuming energy or bandwidth. Read smart contract data in real-time without transaction fees.
Execute smart contract view/pure functions without creating a blockchain transaction. Perfect for reading contract state, calculating values, or retrieving stored data.
Use Cases
wallet/triggerconstantcontract is essential for:
- Token Balance Queries - Check TRC20 token balances
- Price Feeds - Read oracle price data
- Game State - Query game contract states
- DeFi Positions - Check liquidity pool shares
- Contract Verification - Test function outputs
Implementation Examples
# Call TRC20 balanceOf function
curl -X POST "https://api-tron-mainnet.n.dwellir.com/YOUR_API_KEY/wallet/triggerconstantcontract" \
-H "Content-Type: application/json" \
-d '{
"contract_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
"function_selector": "balanceOf(address)",
"parameter": "000000000000000000000000a614f803b6fd780986a42c78ec9c7f77e6ded13c",
"visible": true
}'
# Get token name
curl -X POST "https://api-tron-mainnet.n.dwellir.com/YOUR_API_KEY/wallet/triggerconstantcontract" \
-H "Content-Type: application/json" \
-d '{
"contract_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
"function_selector": "name()",
"visible": true
}'
# Get token symbol
curl -X POST "https://api-tron-mainnet.n.dwellir.com/YOUR_API_KEY/wallet/triggerconstantcontract" \
-H "Content-Type: application/json" \
-d '{
"contract_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
"function_selector": "symbol()",
"visible": true
}'
# Get total supply
curl -X POST "https://api-tron-mainnet.n.dwellir.com/YOUR_API_KEY/wallet/triggerconstantcontract" \
-H "Content-Type: application/json" \
-d '{
"contract_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
"function_selector": "totalSupply()",
"visible": true
}'
# Parse balance result with jq
curl -s -X POST "https://api-tron-mainnet.n.dwellir.com/YOUR_API_KEY/wallet/triggerconstantcontract" \
-H "Content-Type: application/json" \
-d '{
"contract_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
"function_selector": "balanceOf(address)",
"parameter": "000000000000000000000000a614f803b6fd780986a42c78ec9c7f77e6ded13c",
"visible": true
}' | jq '{
success: .result.result,
energy_used: .energy_used,
balance_hex: .constant_result[0],
balance_decimal: (.constant_result[0] | ltrimstr("0x") |
if . == "" then "0" else . end |
tonumber | tostring)
}'
# Script to check multiple token balances
#!/bin/bash
API_KEY="YOUR_API_KEY"
USER_ADDRESS_HEX="000000000000000000000000a614f803b6fd780986a42c78ec9c7f77e6ded13c"
TOKENS=(
"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t:USDT"
"TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR:WTRX"
)
for token_info in "${TOKENS[@]}"; do
IFS=':' read -r addr symbol <<< "$token_info"
echo "Checking $symbol balance..."
response=$(curl -s -X POST \
"https://api-tron-mainnet.n.dwellir.com/$API_KEY/wallet/triggerconstantcontract" \
-H "Content-Type: application/json" \
-d "{
\"contract_address\": \"$addr\",
\"function_selector\": \"balanceOf(address)\",
\"parameter\": \"$USER_ADDRESS_HEX\",
\"visible\": true
}")
balance=$(echo "$response" | jq -r '.constant_result[0]')
if [ "$balance" != "null" ] && [ "$balance" != "" ]; then
# Convert hex to decimal (simplified)
echo " Raw: $balance"
else
echo " Error or zero balance"
fi
echo ""
doneCommon Use Cases
1. Token Balance Checker
async function checkTokenBalance(tokenAddress, userAddress) {
const token = new TRC20Contract('API_KEY', tokenAddress);
try {
const [symbol, decimals, balance] = await Promise.all([
token.symbol(),
token.getDecimals(),
token.balanceOf(userAddress)
]);
return {
token: symbol,
balance: balance.formatted,
decimals: decimals,
hasBalance: BigInt(balance.raw) > 0n
};
} catch (error) {
return {
error: 'Failed to fetch token data',
details: error.message
};
}
}2. DEX Price Monitor
async function monitorDexPrice(poolAddress) {
const getPrice = async () => {
const result = await callContractView(
poolAddress,
'getReserves()'
);
const reserves = parseReserves(result.constant_result[0]);
return calculatePrice(reserves.token0, reserves.token1);
};
return setInterval(async () => {
const price = await getPrice();
console.log(`Current price: ${price}`);
}, 10000); // Check every 10 seconds
}3. Multi-Call Pattern
async function getCompleteTokenInfo(tokenAddress) {
const functions = [
'name()',
'symbol()',
'decimals()',
'totalSupply()'
];
const results = await Promise.all(
functions.map(fn =>
callContractView(tokenAddress, fn)
)
);
return {
name: decodeString(results[0].constant_result[0]),
symbol: decodeString(results[1].constant_result[0]),
decimals: decodeUint256(results[2].constant_result[0]),
totalSupply: decodeUint256(results[3].constant_result[0])
};
}Best Practices
- Cache Results - Cache view function results appropriately
- Batch Calls - Group multiple calls for efficiency
- Handle Errors - Always check result.result for success
- Estimate Energy - Monitor energy_used for optimization
- Validate Input - Ensure parameters are properly encoded
Related Methods
- wallet/triggersmartcontract - Execute state-changing functions
- wallet/getcontract - Get contract information
- wallet/estimateenergy - Estimate energy consumption
Need help? Contact support or visit our TRON documentation.
wallet/triggersmartcontract
Execute TRON smart contract functions, read contract state, and interact with TRC20 tokens via Dwellir's optimized smart contract RPC endpoints.
wallet/getcontract
Retrieve TRON smart contract information including bytecode, ABI, and metadata. Essential for contract verification and interaction via Dwellir RPC.