GOOGLE ADS

понедельник, 2 мая 2022 г.

Ethers.js: аргументы метода Solidity типа «контракт»: ошибка: неверный адрес или имя ENS

Я пытаюсь вызвать следующую функцию солидности из 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);

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...