@@ -13,6 +13,8 @@ contract SBT is ISBT, ERC721EnumerableUpgradeable {
13
13
14
14
/// @dev EOA with rights to allow(add)/disallow(remove) minter.
15
15
address private _minterUpdater;
16
+ /// @dev The counter to mint new NFTs and track supply.
17
+ uint256 private _tokenIdCounter;
16
18
17
19
/// @dev EOA with minting rights.
18
20
mapping (address => bool ) private _minters;
@@ -81,23 +83,33 @@ contract SBT is ISBT, ERC721EnumerableUpgradeable {
81
83
uint256 tokenId ,
82
84
bytes memory metadata
83
85
) external override onlyMinter {
84
- require (tokenId < currentIndex (), "Token not found " );
86
+ require (tokenId <= currentIndex (), "Token not found " );
85
87
_setTokenURI (tokenId, metadata);
86
88
}
87
89
88
90
function mint (
89
91
address to ,
90
92
bytes memory metadata
91
93
) external override onlyMinter returns (uint256 tokenId_ ) {
94
+ unchecked {
95
+ _tokenIdCounter++ ;
96
+ }
92
97
uint256 currentId = currentIndex ();
93
98
_mint (to, currentId);
94
99
emit Minted (currentId, to);
95
100
_setTokenURI (currentId, metadata);
96
101
return currentId;
97
102
}
98
103
104
+ /**
105
+ * @dev See {IERC721Enumerable-totalSupply}.
106
+ */
107
+ function totalSupply () public view override returns (uint256 ) {
108
+ return _tokenIdCounter;
109
+ }
110
+
99
111
function _tokenURI (uint256 tokenId ) private view returns (string memory ) {
100
- require (tokenId < currentIndex (), "Token not found " );
112
+ require (tokenId <= currentIndex (), "Token not found " );
101
113
102
114
(
103
115
string memory name ,
@@ -220,13 +232,17 @@ contract SBT is ISBT, ERC721EnumerableUpgradeable {
220
232
}
221
233
222
234
function currentIndex () public view override returns (uint256 ) {
223
- return super .totalSupply ();
235
+ return totalSupply ();
236
+ }
237
+
238
+ function nextIndex () public view override returns (uint256 ) {
239
+ return currentIndex () + 1 ;
224
240
}
225
241
226
242
function metadataOf (
227
243
uint256 tokenId
228
244
) public view override returns (bytes memory ) {
229
- require (tokenId < currentIndex (), "Token not found " );
245
+ require (tokenId <= currentIndex (), "Token not found " );
230
246
return _sbtdata[tokenId];
231
247
}
232
248
0 commit comments