使用 HardHat 访问智能合约公共变量的最佳方式是什么?

Neo*_*ang 5 javascript blockchain ethereum solidity smartcontracts

我想测试我的智能合约,但不知道部署联系人后如何访问公共变量?例如:

contract NFT is ERC721, Ownable {
using SafeMath for uint256;

bool public  isActive = False;

uint256 public startingIndexBlock;

uint256 public startingIndex;
}
Run Code Online (Sandbox Code Playgroud)

isActive 我想访问将合同部署到本地环境中的变量run.js,代码如下:

    async function main() {

    const [owner] = await hre.ethers.getSigners();

    console.log(
    "Deploying contracts with the account:",
    owner.address
    );

    const contractFactory = await hre.ethers.getContractFactory("ApeNFT");

    // Deploy contract with the correct constructor arguments
    const contract = await contractFactory.deploy("Mom", "MM" ,10000, 0);

    let isActive = await contract.isActive.toString();
    }
Run Code Online (Sandbox Code Playgroud)

在这里,我永远无法获取 isActive 的值。有谁知道如何解决这个问题?

Yil*_*maz 9

如果您的设置正确,任何您定义为公共的内容,solidity 都会分配一个 getter 函数。

// contract.isActive()
let isActive = await contract.isActive().toString();
console.log(isActive)
Run Code Online (Sandbox Code Playgroud)