В моем тесте 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)
});
Любые идеи о том, как исправить эту ошибку? Я уверен, что адреса, которые я использую, на самом деле не занесены в черный список, учитывая, что они недавно перевели USDC на etherscan.
Я понял свою ошибку. Эта строка вызывала ошибку:
await USDC.connect(usdcWhale).approve(addresses.tokens.usdc, 10000);
Первоначально я думал, что мне нужно одобрить сам контракт USDC, чтобы потратить мои токены, однако в этом нет необходимости, если я просто вызываю функцию transfer()
.
Удаление этой строки исправило ошибку.