@@ -13,6 +13,8 @@ contract SBT is ISBT, ERC721EnumerableUpgradeable {
1313
1414 /// @dev EOA with rights to allow(add)/disallow(remove) minter.
1515 address private _minterUpdater;
16+ /// @dev The counter to mint new NFTs and track supply.
17+ uint256 private _tokenIdCounter;
1618
1719 /// @dev EOA with minting rights.
1820 mapping (address => bool ) private _minters;
@@ -81,23 +83,33 @@ contract SBT is ISBT, ERC721EnumerableUpgradeable {
8183 uint256 tokenId ,
8284 bytes memory metadata
8385 ) external override onlyMinter {
84- require (tokenId < currentIndex (), "Token not found " );
86+ require (tokenId <= currentIndex (), "Token not found " );
8587 _setTokenURI (tokenId, metadata);
8688 }
8789
8890 function mint (
8991 address to ,
9092 bytes memory metadata
9193 ) external override onlyMinter returns (uint256 tokenId_ ) {
94+ unchecked {
95+ _tokenIdCounter++ ;
96+ }
9297 uint256 currentId = currentIndex ();
9398 _mint (to, currentId);
9499 emit Minted (currentId, to);
95100 _setTokenURI (currentId, metadata);
96101 return currentId;
97102 }
98103
104+ /**
105+ * @dev See {IERC721Enumerable-totalSupply}.
106+ */
107+ function totalSupply () public view override returns (uint256 ) {
108+ return _tokenIdCounter;
109+ }
110+
99111 function _tokenURI (uint256 tokenId ) private view returns (string memory ) {
100- require (tokenId < currentIndex (), "Token not found " );
112+ require (tokenId <= currentIndex (), "Token not found " );
101113
102114 (
103115 string memory name ,
@@ -220,13 +232,17 @@ contract SBT is ISBT, ERC721EnumerableUpgradeable {
220232 }
221233
222234 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 ;
224240 }
225241
226242 function metadataOf (
227243 uint256 tokenId
228244 ) public view override returns (bytes memory ) {
229- require (tokenId < currentIndex (), "Token not found " );
245+ require (tokenId <= currentIndex (), "Token not found " );
230246 return _sbtdata[tokenId];
231247 }
232248
0 commit comments