You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Hedera区块链网络免费执行智能合约只读调用?

Hedera智能合约免费只读调用解决方案

你当前的问题核心是用错了API类型:ContractExecuteTransaction是用来提交修改链上状态的交易,哪怕你的函数是只读的,只要走交易流程就会消耗HBAR——因为交易需要被节点打包确认。要实现免费的只读调用,必须用查询类的ContractCallQuery。

正确的代码实现如下:

// 创建只读查询实例
const query = new ContractCallQuery()
    .setContractId(newContractId)
    .setFunction("get_message")
    .setQueryPayment(0); // 显式设置0费用,确保无HBAR消耗

// 执行查询并解析结果
const response = await query.execute(client);
// 根据合约函数返回类型解析,这里返回字符串用getString(0)
const message = response.getString(0);
console.log("获取到的消息:", message);

关键说明:

  • ContractCallQuery属于Hedera的查询操作,仅读取链上数据,不会修改状态,因此不需要消耗HBAR
  • 显式调用setQueryPayment(0)可以强制SDK不发起费用支付请求,避免不必要的扣费(部分SDK版本默认已处理,但显式设置更稳妥)
  • 解析返回值时要和合约函数的返回类型匹配,比如返回整数用getInt64(0),返回布尔值用getBool(0)等

内容的提问来源于stack exchange,提问作者Acehilm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:35:17