Error: reverted with reason string 'Blacklistable: account is blacklisted'

Error: reverted with reason string 'Blacklistable: account is blacklisted'

在我的 Hardhat 测试中,我试图模拟一个 USDC 账户,这样我就可以将 USDC 转移到一个测试地址。问题是无论我尝试模拟哪个地址,我总是会收到以下错误:

Error: VM Exception while processing transaction: reverted with reason string 'Blacklistable: account is blacklisted'

相关代码如下:

it("USDC Test", async function () {
    const provider = ethers.provider;
    const USDC = new ethers.Contract(addresses.tokens.usdc, abis.ERC20, provider);

    // Impersonate USDC whale
    await network.provider.request({
        method: "hardhat_impersonateAccount",
        params: [addresses.whales.usdc],
    });
    const usdcWhale = await ethers.provider.getSigner(addresses.whales.usdc);

    // Approve and transfer USDC to test address
    await USDC.connect(usdcWhale).approve(addresses.tokens.usdc, 10000);
    await USDC.connect(usdcWhale).transfer(addresses.test.address1, 10000)
});

关于如何修复此错误的任何想法?我确定我使用的地址实际上并未列入黑名单,因为他们最近在 etherscan 上转移了 USDC。

我意识到我的错误。此行导致错误:

await USDC.connect(usdcWhale).approve(addresses.tokens.usdc, 10000);

我原本以为我需要批准 USDC 合约本身才能使用我的代币,但是如果我只是调用 transfer() 函数则不需要。

删除此行修复了错误。