首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenZeppelin起动平衡

OpenZeppelin起动平衡
EN

Ethereum用户
提问于 2019-01-11 17:57:47
回答 2查看 920关注 0票数 1

我相信openzeppelin项目已经更新了他们的StandardToken智能合同,现在被称为ERC20.sol

我遇到的一个问题是,新的smart合同有一些我们以前缺少的功能。在过去,当您将StandardToken导入到智能契约中时,您将能够像这样初始化令牌:

代码语言:javascript
运行
复制
pragma solidity ^0.4.19;  

import "http://github.com/OpenZeppelin/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol";
import "http://github.com/OpenZeppelin/openzeppelin-solidity/contracts/ownership/Ownable.sol";
  
/**  
 * @title ExampleToken is a basic ERC20 
 */  
contract ExampleToken is ERC20, Ownable {  
    uint256 public totalSupply;  
    string public name;  
    string public symbol;  
    uint32 public decimals;  
  
    /**  
     * @dev assign totalSupply to owner of contract
     */  
    constructor() public {  
        symbol = "EXM";  
        name = "ExampleCoin";  
        decimals = 4;  
        totalSupply = 10000000000;  
  
        owner = msg.sender;  
        balances[msg.sender] = totalSupply;  
  
        emit Transfer(0x0, msg.sender, totalSupply);  
    }
}

因为我使用的是新的智能合同,我不能再这么做了:

代码语言:javascript
运行
复制
balances[msg.sender] = totalSupply;  

因为openzeppelin没有实现这个错误,所以我得到了这个错误:

DeclarationError:未声明的标识符。你是说"balanceOf“吗?

balanceOf显然不合适,因为这是一个在给定地址返回余额的函数。

初始化余额最合适的方法是什么?

把它寄到主人的地址好吗?还是把它留在聪明的合同里?是否存在将余额留在智能合同中的风险,这一程序是否被广泛使用?

如果我不应该把它放在智能合同中,那么给合同创建者提供总供给的最好方法是什么?

或者,当StandardToken存在时,是否可以导入以前的openzeppelin智能合同?

EN

回答 2

Ethereum用户

回答已采纳

发布于 2019-01-11 20:00:59

正如Rob所建议的,我应该使用薄荷作为初始供应。我使用的是ERC20Detailedtoken而不是ER20Capped。

首先,导入我建议检查的ERC20Detailedtoken。从前面的代码中,我的实现如下:

代码语言:javascript
运行
复制
pragma solidity ^0.4.19;  

import "http://github.com/OpenZeppelin/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol";
import "http://github.com/OpenZeppelin/openzeppelin-solidity/contracts/ownership/Ownable.sol";
import "http://github.com/OpenZeppelin/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol";

  /**  
  * @title ExampleToken is basic ERC20 Token  
  */  
contract ExampleToken is ERC20, ERC20Detailed, Ownable{  

  uint256 public initialSupply  = 100000000000; 
  string public name;  
  string public symbol;  
  uint32 public decimals;  

  /**  
  * @dev assign totalSupply to account creating this contract 
  */  
  constructor() public ERC20Detailed("ExampleCoin", "EXM", 4) {  

   _mint(msg.sender, initialSupply);

 }}
票数 0
EN

Ethereum用户

发布于 2019-01-11 18:36:51

如果我没有弄错,您将使用ERC20Capped.solmint()令牌作为迁移/部署过程中的第二步。

对于我来说,这似乎是明智的,因为mintable令牌可以完成非mintable令牌所能做的一切。“上限”变体限制了铸币供应,似乎是对构造函数中初始化供应和minter平衡的旧样式的替代。

https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/token/ERC20/ERC20Capped.sol

希望能帮上忙。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/65396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档