获得平衡稳固性

Get balance solidity

我使用 hardhat 来测试 solidity 合约,但我得到了不同的函数结果:

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/utils/Counters.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/math/SafeMath.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
import "hardhat/console.sol";

contract TestContract is ERC721Enumerable, Ownable {
    using SafeMath for uint;
   
    ...

    function getContractBalance() public view onlyOwner returns (uint) {
        return address(this).balance;
    }

    function getUserBalance(address _owner) external view returns (uint) {
        return address(_owner).balance;
    }
}

test.js

...

beforeEach(async function () {
  Token = await ethers.getContractFactory("TestContract");
  [owner, addr1, addr2, ...addrs] = await ethers.getSigners();

  hardhatToken = await Token.deploy("test");
});

it("First test", async function () {
  let total = await hardhatToken.totalSupply() // BigNumber { value: "0" }
  let userBalance2 = await hardhatToken.getUserBalance(owner.address) // BigNumber { value: "9999979080649422213031" }
  let userBalance = await hardhatToken.balanceOf(owner.address) // BigNumber { value: "0" }
  let cBalance = await hardhatToken.getContractBalance() // BigNumber { value: "0" }
})

我认为这是因为不同的单位(ether -> wei),但我不知道为什么。你能解释一下吗?

谢谢

这个函数 returns _owner.

的 eth 数量
function getUserBalance(address _owner) external view returns (uint) {
    return address(_owner).balance;
}

这个函数returns合约拥有的eth数量。

function getContractBalance() public view onlyOwner returns (uint) {
        return address(this).balance;
    }

这个函数returns所有者拥有的TOKEN数量:

balanceOf(owner.address)