Я пытаюсь вызвать следующую функцию солидности из ethersjs (в качестве аргумента принимается другой контракт):
function getReservesData(IPoolAddressesProvider provider) public view override...
Я пробовал этот код:
const provider = new ethers.providers.JsonRpcProvider(env.network);
const contract = new ethers.Contract(
'0x...'
[...], // contract json abi
provider
);
const poolAddressProvider = new ethers.Contract(
'0x...'
[...], // pool address provider json abi
provider
);
await contract.getReservesData(poolAddressProvider);
Я получаю следующую ошибку:
core.mjs:6484 ERROR Error: Uncaught (in promise): Error: invalid address or ENS name (argument="name", value="[object Object]", code=INVALID_ARGUMENT, version=contracts/5.5.0)
Error: invalid address or ENS name (argument="name", value="[object Object]", code=INVALID_ARGUMENT, version=contracts/5.5.0)
Возможно, мне не хватает ключевой информации о том, как передать параметр типа контракта.
Решение проблемы
Функция Solidity принимает интерфейс Solidity, который декодируется ABI из addressтипа.
Итак, в JS вам нужно передать адрес пула как, а stringне как ethers.jsэкземпляр Contract.
const poolAddress = "0x123...";
await contract.getReservesData(poolAddress);
Комментариев нет:
Отправить комментарий