Я пытаюсь протестировать свой смарт-контракт в Hardhat, но для этого мне сначала нужно отправить несколько токенов ERC20 в мой контракт (для этого теста я использую USDC).
В своем тесте я выдавал себя за кита USDC, но как мне на самом деле перевести USDC в мой контракт?
it("USDC test", async function () {
const testContract =
await ethers.getContractFactory("TestContract")
.then(contract => contract.deploy());
await testContract.deployed();
// Impersonate USDC whale
await network.provider.request({
method: "hardhat_impersonateAccount",
params: [USDC_WHALE_ADDRESS],
});
const usdcWhale = await ethers.provider.getSigner(USDC_WHALE_ADDRESS);
// Need to transfer USDC from usdcWhale to testContract
});
Чтобы передать токен ERC20, вам сначала нужно развернуть основной контракт токена. Вам понадобится адрес контракта токенов, а также ERC20 АБИ.
const USDC_ADDRESS = "0x6262998ced04146fa42253a5c0af90ca02dfd2a3";
const ERC20ABI = require('./ERC20ABI.json');
const provider = ethers.provider;
const USDC = new ethers.Contract(USDC_ADDRESS, ERC20ABI, provider);
Затем, чтобы перевести 100 USDC с usdcWhale
на testContract
, выполните:
await USDC.connect(usdcWhale).transfer(testContract.address, 100);