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()
函数则不需要。
删除此行修复了错误。
在我的 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()
函数则不需要。
删除此行修复了错误。