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

如何用Ethers.js访问智能合约外部定义的常量MAX_TARGETS

能否用Ethers.js访问合约外定义的MAX_TARGETS常量?

不能直接访问,原因如下:

  • 你定义的MAX_TARGETS是合约外部的全局常量,不属于Dummy合约的范畴。Solidity编译时,这个常量会被直接替换成字面量256,不会被写入合约的字节码或ABI中。
  • 部署Dummy合约后,链上的合约实例里没有这个常量的相关数据,合约ABI也不会包含它的信息,自然没法用Ethers.js读取到。

如果想让这个常量能通过Ethers.js访问,需要把它放到合约内部并加上public修饰符:

pragma solidity ^0.8.0;

contract Dummy {
    uint256 public constant MAX_TARGETS = 256;
}

这样编译后,Solidity会自动为该常量生成一个public的getter方法,ABI里也会包含这个方法的定义。部署后用Ethers.js可以这样读取:

const dummyContract = new ethers.Contract(合约地址, ABI, 提供者);
const maxTargets = await dummyContract.MAX_TARGETS();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:09:52