【问题标题】:sending a transaction requires a signer发送交易需要签名者
【发布时间】:2022-06-18 03:16:28
【问题描述】:

我有一份 NFT 合约,我需要铸造 NFT。我还有第二份合同 用于处理本合约中 NFT 的买卖。

我正在使用 ethers 库。

这是我的配置代码:

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);

}

配置地址:

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

现在我需要将此功能用于 mint nft :

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

但它显示了这个错误:

错误:发送交易需要签名者(operation="sendTransaction", code=UNSUPPORTED_OPERATION, version=contracts/5.5.0)

我该如何解决这个问题?

【问题讨论】:

    标签: ethereum solidity ganache ether


    【解决方案1】:

    在这一行

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

    尝试传递signer 而不是provider

    【讨论】:

    • 还是有问题
    • 会出现同样的错误吗?
    • 你能解释一下为什么显示这个错误吗?
    • 查看answer
    猜你喜欢
    • 2022-08-13
    • 2021-03-31
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 2022-01-04
    • 2020-12-15
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多