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
Request Parameters
Smart contract address (Base58 or Hex)
Function signature (e.g., "balanceOf(address)")
Encoded function parameters (hex)
Address calling the function
TRX amount in SUN (for payable functions)
TRC10 token amount
TRC10 token ID
Use Base58 format (default: true)
Response Body
Execution result
Whether execution succeeded
Response code
Error message if failed
Estimated energy consumption
Return values (hex encoded)
Simulated transaction object
Error Responses
Invalid contract address
Insufficient energy for call
Function reverted
Function doesn't exist
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.