Search code examples
ethereumsolidityganacheether

sending a transaction requires a signer


I have an NFT Contract and I need to mint NFTs. Also I have a second contract for handling buying and selling NFTs into this contract.

I am using the ethers library.

this is my code for config:

static async Initial(): Promise<any> {

    let provider = new ethers.providers.JsonRpcProvider(config.contractConfig.url);
    const signer = provider.getSigner();
    
    this.tokenContract = new ethers.Contract(config.contractConfig.nftAddress, NFT.abi, provider);
    this.dNFT = new ethers.Contract(config.contractConfig.dortajNftAddress, DNFT.abi, signer);

}

config address:

  export default {
     nftAddress: '0x444F15B115ED9663DAE46786a34AA3F6E8c0B57D',
     dortajNftAddress: '0x8e4bE2a3BD1169596c38952D8e837b20D419Bcd1',
     url : 'HTTP://127.0.0.1:7545'
   }

now i need to use this function for mint nft :

        let transaction = await this.tokenContract.mintToken();
        const tx = await transaction.wait();

but it show me this error:

Error: sending a transaction requires a signer (operation="sendTransaction", code=UNSUPPORTED_OPERATION, version=contracts/5.5.0)

How can I solve this problem?


Solution

  • In this line

    this.tokenContract = new ethers.Contract(config.contractConfig.nftAddress, NFT.abi, provider);
    

    try to pass signer instead of provider.