【问题标题】:How Do I Add A checkBalance Function To This ERC20 Smart Contract如何向这个 ERC20 智能合约添加 checkBalance 功能
【发布时间】:2019-08-08 14:02:21
【问题描述】:

在 Remix Ethereum Firefox 中部署此令牌后,我需要知道它的余额。我想知道在哪里添加 checkBalance 功能。请帮助伙计们。这是我的第一个 ERC20 智能合约。

pragma solidity ^0.5.0;

contract TusharCoin {

  uint256 public totalSupply;  
  string public name;  
  string public symbol;  
  uint32 public decimals;
  address public owner;

  mapping(address => uint256 ) balances;

  event Transfer(address to, uint256 amount);

  constructor () public {
    symbol  = "TUSHAR";  
    name = "TusharCoin";  
    decimals = 5;  
    totalSupply = 100000000000;
    owner = msg.sender;  
    balances[msg.sender] = totalSupply;
    emit Transfer(msg.sender, totalSupply);
    }
 }

【问题讨论】:

    标签: ethereum solidity remix


    【解决方案1】:

    您的代币目前不是 ERC20 代币,因为它还没有完全实现 ERC20 标准。

    要在现有合约中添加 balanceOf 函数,您可以添加以下内容:

        function balanceOf(address account) public view returns (uint256) {
            return balances[account];
        }
    

    如果您正在创建自己的 ERC20 实现,那么您应该考虑使用 SafeMath,详情请参阅文档:https://docs.openzeppelin.com/contracts/2.x/utilities#math

    如果您正在创建 ERC20 代币,您可能需要查看 OpenZeppelin Contracts 实现,看看这是否满足您的需求。详情见文档:https://docs.openzeppelin.com/contracts/2.x/tokens#ERC20

    您可以使用从 OpenZeppelin Contracts 实现继承的 Remix 部署的示例 ERC20 令牌使用您指定的名称、符号、小数和 totalSupply:

    pragma solidity ^0.5.0;
    
    import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.3.0/contracts/token/ERC20/ERC20.sol";
    import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.3.0/contracts/token/ERC20/ERC20Detailed.sol";
    
    contract Token is ERC20, ERC20Detailed {
    
        constructor () public ERC20Detailed("Tushar Token", "TUSHAR", 5) {
            _mint(msg.sender, 1000000 * (10 ** uint256(decimals())));
        }
    }
    

    如果您对使用 OpenZeppelin 有任何疑问,可以在社区论坛中提问:https://forum.openzeppelin.com/

    披露:我是 OpenZeppelin 的社区经理

    【讨论】:

      【解决方案2】:

      下面,我提到了 checkBalance 功能。在 ERC20 标准中 checkBalance 函数被表述为 balanceOf 函数。 在功能上,view表示只能读不能写

      function balanceOf(address accountAddress) public view returns (uint256) {
          return balances[accountAddress];
      }
      

      完整的源代码。

      pragma solidity ^0.5.0;
      
      contract TusharCoin {
      
        uint256 public totalSupply;  
        string public name;  
        string public symbol;  
        uint32 public decimals;
        address public owner;
      
        mapping(address => uint256 ) balances;
      
        event Transfer(address to, uint256 amount);
      
        constructor () public {
          symbol  = "TUSHAR";  
          name = "TusharCoin";  
          decimals = 5;  
          totalSupply = 100000000000;
          owner = msg.sender;  
          balances[msg.sender] = totalSupply;
          emit Transfer(msg.sender, totalSupply);
          }
      
          function balanceOf(address accountAddress) public view returns (uint256) {
              return balances[accountAddress];
          }
       }
      

      如果您想要 ERC20 的完整代码。告诉我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-17
        • 2022-01-01
        • 2021-12-28
        • 2021-12-17
        • 2021-04-26
        • 2022-01-20
        • 1970-01-01
        相关资源
        最近更新 更多