【问题标题】:open zeppelin contracts are missing in node_modulesnode_modules 中缺少 openzeppelin 合约
【发布时间】:2020-06-13 16:48:34
【问题描述】:

我使用 npm install 来安装 open zeppelin。 libray 在 node_modules 中显示,但缺少很多合同。我已经尝试删除它并重新安装,但我总是收到有关丢失合同的错误。

Error: Could not find zeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol from any sources; imported from /home/a/Documents/coin/contracts/token.sol
    at Resolver.<anonymous> (/usr/local/lib/node_modules/truffle/build/webpack:/packages/resolver/dist/lib/resolver.js:53:1)
    at Generator.next (<anonymous>)
    at fulfilled (/usr/local/lib/node_modules/truffle/build/webpack:/packages/resolver/dist/lib/resolver.js:5:42)
    at <anonymous>
Truffle v5.1.28 (core: 5.1.28)
Node v8.10.0

【问题讨论】:

    标签: solidity


    【解决方案1】:

    尽管 ERC20Detailed 仍然存在于 OpenZeppelin 的 online tutorial 中,但当您下载包并查看内部时,它不再存在。因此,我遇到了与您完全相同的问题。

    这是由于 introduced in OpenZeppelin Contracts 3.0 的一项重大更改,即:

    但是,如果您使用的是 ERC20 或 ERC721 代币,则必须 删除所有对可选扩展的引用(ERC20Detailed, ERC721Enumerable 等) - 这些已包含在基础中 合同。

    要让您的代码在 3.0 版中运行,您必须使用标准 ERC20 模块。一个非常基本的导入和使用示例:

    pragma solidity ^0.6.2;
    
    import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
    
    contract MyCoin is ERC20 {
    
      uint public initialSupply = 10000;
    
      constructor() public ERC20("MyCoin", "MC") {
          _mint(msg.sender, initialSupply);
      }
    }
    
    

    【讨论】:

      猜你喜欢
      • 2021-10-18
      • 2021-08-24
      • 1970-01-01
      • 2018-09-03
      • 2021-10-08
      • 2022-07-07
      • 2021-11-14
      • 2019-10-20
      • 1970-01-01
      相关资源
      最近更新 更多