TRON上智能合约方法的调用与以太坊基本一致,以下是一个具体例子,用于演示: - 调用智能合约方法,一次请求调用多个合约方法:
function main() {
let usdtAddress = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t" // token usdt contract address
let data1 = exchange.IO("encode", usdtAddress, "name") // call function: name
let data2 = exchange.IO("encode", usdtAddress, "decimals") // call function: decimals
let data3 = exchange.IO("encode", usdtAddress, "balanceOf", "TKCG...") // call function: balanceOf
var data = []
data.push([usdtAddress, data1])
data.push([usdtAddress, data2])
data.push([usdtAddress, data3])
exchange.IO("abi", "TGXuuKAb4bnrn137u39EKbYzKNXvdCes98", `[{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct TronMulticall.Call[]","name":"calls","type":"tuple[]"}],"name":"aggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}],"stateMutability":"view","type":"function"}]`)
let ret = exchange.IO("api", "TGXuuKAb4bnrn137u39EKbYzKNXvdCes98", "aggregate", data)
Log("name:", exchange.IO("decode", "string", ret["returnData"][0]))
Log("decimals:", exchange.IO("decode", "uint8", ret["returnData"][1]))
Log("balanceOf:", exchange.IO("decode", "uint256", ret["returnData"][2]))
}
输出内容:
信息 balanceOf: 6890251
信息 decimals: 6
信息 name: Tether USD