首页 > 其他分享 >openzeppelin/contracts/utils/Counters.sol" not found

openzeppelin/contracts/utils/Counters.sol" not found

时间:2024-10-04 08:49:09浏览次数:6  
标签:tokenIdCounter contracts utils sol openzeppelin Counters

运行以下

// SPDX-License-Identifier: MIT
pragma solidity 0.7.5;

import {Counters} from "@openzeppelin/contracts/utils/Counters.sol";

contract MyToken is ERC721, Pausable, Ownable {
        using Counters for Counters.Counter;
        Counters.Counter private _tokenIdCounter;

        function safeMint(address receiver) public onlyOwner {
            uint256 tokenId = _tokenIdCounter.current();
            _safeMint(_receiver, tokenId);
            _tokenIdCounter.increment();
        }

 

报错

ParserError: Source "project:/node_modules/openzeppelin/contracts/utils/Counters.sol" not found
 --> project:/contracts/tests.sol:4:1:
  |
4 | import "../node_modules/openzeppelin/contracts/utils/Counters.sol";
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 

使用 unit 类型代替 counter

contract MyToken is ERC721, Pausable, Ownable {
        uint256 private _tokenIdCounter;

        function safeMint(address receiver) public onlyOwner {
            uint256 tokenId = _tokenIdCounter;
            _safeMint(_receiver, tokenId);
            _tokenIdCounter += 1;
        }
}

 

标签:tokenIdCounter,contracts,utils,sol,openzeppelin,Counters
From: https://www.cnblogs.com/apenote/p/18446284

相关文章

  • CF2018E2 Solution
    CF2018E2Solution先考虑E1的做法。首先我们如果钦定一组\(k\)条线段的话,容易求出最大组数。简单来讲就是将所有端点按照右端点排序,这样只需要考虑一个偏序,然后扫描,将区间\([l_i,r_i]\)加一,当发现某个点的值为\(k\)时,就说明分成了一组方案。此时我们一定清空,然后记录当......
  • Solution - Atcoder ARC157E XXYX Binary Tree
    考虑这个不存在\(\texttt{YY}\)的限制,与\(\texttt{XX}\)个数为变量的限制相比较,看起来\(\texttt{Y}\)就更特殊,于是考虑从\(\texttt{Y}\)的视角来分析问题。同时考虑到因为有\(A+B+C=n-1\),所以\(\texttt{XX}\)其实也不是很重要,因为只需要让\(\texttt{XY}\)和......
  • Solution - Atcoder ARC157D YY Garden
    考虑到因为有横轴数轴两部分的限制,不妨先固定下来一部分的限制再处理另一部分。对于这题来说横轴竖轴本质是相同的,于是不妨考虑固定横轴。如果知道了横轴的分割,那么对于竖轴上就可以根据分割情况知道合法的分割了。即考虑记\(f_i\)为考虑了竖轴的前\(i\)列,第\(i\)列为最......
  • 《地狱之刃2:塞娜的史诗》游戏启动时崩溃黑屏弹窗“找不到api-ms-win-core-console-l1-
    在启动《地狱之刃2:塞娜的史诗》时,崩溃黑屏并弹窗显示“找不到api-ms-win-core-console-l1-2-0.dll”文件,这十分棘手。此问题的解决可能需要特定操作。现在为您详细讲解解决办法,助您摆脱这一困境。本篇将为大家带来《地狱之刃2:塞娜的史诗》游戏启动时崩溃黑屏弹窗“找不到api-ms......
  • 视频格式转换 CoolUtils Total Movie Converter v4.1 中文授权版
    CoolUtilsTotalMovieConverter 是一款适用于PC端的视频格式转换软件,支持转换几乎所有常见的视频格式。无论你需要将视频转换为AVI、FLV、MPG、WMV、MPEG等格式,还是想将视频优化用于XBox、iPhone、iPad等设备,这款工具都能帮你实现。新版添加了“VideoToDevice”功能,确......
  • 音频格式转换软件 Coolutils Total Audio Converter 序列号
    CoolutilsTotalAudioConverter,音频转换器,可以将音频文件转换为WAV,MP3,OGG,WMA,APE,FLAC,MP4,AAC,MPC等音频格式。支持将CD转换无损格式,CUE分割APE和FLAC文件、自动化批量转换。该版本已内置序列号,可以使用全部功能。软件截图:使用说明:1、将压缩文件解压到固定......
  • 使用WebClient 快速发起请求(不使用WebClientUtils工具类)
    使用WebClient发起网络请求_webclient工具类-CSDN博客文章浏览阅读717次,点赞9次,收藏8次。使用WebClient发起网络请求_webclient工具类https://blog.csdn.net/qq_43544074/article/details/137044825这个是使用工具类发起的,下面就不使用工具类进行快速发起。同样的导入依赖<......
  • 使用 Anchor 和 QuickNode 在 Solana 上创建NFT: 2024 版指南
    gg欢迎来到本教程。今天,我们将使用 SolanaPlayground、QuickNode RPC和一个IPFS服务,在Anchor/Rust中创建一个Solana程序,以直接在链上铸造NFT。作为预备步骤,我们将在去中心化存储服务中准备我们的NFT图像和元数据。我们将使用QuickNode IPFS,这是一个IPFS存储......
  • AT_abc_373F Solution
    AT_abc_373FSolution\(O(n^3)\)的dp很容易想到,枚举重量,枚举物品,枚举物品选择数量,我们考虑把它优化到\(O(n^2)\),显然重量与物品的枚举不能避免,所以我们考虑省去数量的枚举。记\(num_{i,j}\)表示总质量为i价值达到最大时,j选择了多少个,对于当前枚举的重量i,我们枚举......
  • Solution - Kilonova 2837 P2
    先考虑q2。考虑到如果是以\(2^N\)为入手点因为进位的原因看起来就做不了。于是考虑以\(M\)为前缀入手。考虑刻画出\(M\)为前缀的数\(x\)的形式。可以考虑根据\(M\)后面的位数\(k\)来刻画,有\(x\in\bigcup_{k=0}^{\lfloor{\frac{L}{\log_210}}\rfloor}[M\tim......