Hi guys. I have a problem with my contract which inherits the openzeppelin ERC721URIStorage contract.
I just cannot verify it using brownie even if i have all the variables in place (etherscan api key and the infuria project id).
Note that i am able to verify other contracts.
The solidity code is the following:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
contract JonaNFT is ERC721URIStorage {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
uint256 private nftLimit = 4;
constructor() ERC721("JonaNFT", "JNA") {}
function mintJonaNft(string memory tokenURI) public returns (uint256) {
require(_tokenIds.current() < 4, "All NFT minted");
uint256 newItemId = _tokenIds.current();
_mint(msg.sender, newItemId);
_setTokenURI(newItemId, tokenURI);
_tokenIds.increment();
return newItemId;
}
}
the verify python code is:
from brownie import JonaNFT, network, config
from scripts.helpful_scripts import get_account
from web3 import Web3
tokenId_to_metadata = {
"0": "https://gateway.pinata.cloud/ipfs/QmSFR5s4Gt8Njp6kLD1ifSjTWgzWSLaruyqdwfkD3x8vBR",
"1": "",
"2": "",
"3": "",
}
def deploy():
account = get_account()
jonaNFT = JonaNFT.deploy({"from": account})
def createAllNft():
account = get_account()
for index in range(0, 4, 1):
creating_tx = JonaNFT[-1].mintJonaNft(
tokenId_to_metadata[f"{index}"], {"from": account}
)
creating_tx.wait(1)
print("New token has been created!")
def createSingeNft(toeknId):
account = get_account()
creating_tx = JonaNFT[-1].mintJonaNft(
tokenId_to_metadata[f"{toeknId}"], {"from": account}
)
creating_tx.wait(1)
print("New token has been created!")
def printNftInfo(tokenId):
print(JonaNFT[-1].ownerOf(tokenId))
print(JonaNFT[-1].tokenURI(tokenId))
def main():
# deploy()
# createAllNft()
# createSingeNft(0)
# printNftInfo(0)
JonaNFT.publish_source(JonaNFT[-1])
The error i recive is:
Running 'scripts\create_nfts.py::main'...
File "C:\Users\andre\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\brownie\_cli\run.py", line 49, in main
return_value, frame = run(
File "C:\Users\andre\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\brownie\project\scripts.py", line 103, in run
return_value = f_locals[method_name](*args, **kwargs)
File ".\scripts\create_nfts.py", line 47, in main
JonaNFT.publish_source(JonaNFT[-1])
File "C:\Users\andre\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\brownie\network\contract.py", line 410, in publish_source
contract_info = self.get_verification_info()
File "C:\Users\andre\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\brownie\network\contract.py", line 315, in get_verification_info
build_json = self._project._build.get(name)
File "C:\Users\andre\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\brownie\project\build.py", line 124, in get
return self._interfaces[key]
KeyError: 'OpenZeppelin/openzeppelin-contracts@4.6.0/Address'