joshstevens19 / ethereum-multicall

Ability to call many ethereum constant function calls in 1 JSONRPC request
MIT License
366 stars 94 forks source link

Does the repository support ethers ^6.6.0 #60

Open xuht724 opened 1 year ago

xuht724 commented 1 year ago

I am using

const { Multicall } = require("ethereum-multicall");
const poolABI = require('./utils/uniswapPairV2ABI.json');
const { ethers } = require("ethers");
const { wsURL } = require("./config.js");
const { Web3 } = require("web3");

const rpcURL = "My RPC URL";
// const web3 = new Web3(rpcURL);
const calls = [
    { methodName: 'token0', methodParameters: [] },
    { methodName: 'token1', methodParameters: [] },
    { methodName: 'factory', methodParameters: [] }
];

// A pair address
const contractAddress = "0xB6909B960DbbE7392D405429eB2b3649752b4838";

const callObject = {
    reference: "result0",
    contractAddress: contractAddress,
    abi: poolABI,
    calls: calls
};

const provider = new ethers.JsonRpcProvider(rpcURL);
console.log(provider);

const myMulticall = new Multicall({
    ethersProvider: provider,
    tryAggregate: true,
});
async function getResult() {
    let resp = await myMulticall.call(callObject);
    console.log(resp.results.result0.callsReturnContext);

}
getResult();

It throws out the error Error: invalid signer or provider (argument="signerOrProvider", value={}, code=INVALID_ARGUMENT, version=contracts/5.7.0)

The ethers version is 6.6.1. I want to ask if the error is caused by the version conflict.

joshstevens19 commented 1 year ago

most likely will take a look this week

odlainepre commented 1 year ago

Right now only use "nodeUrl" with ethers ^6.6.0:

const multicall = new Multicall({ nodeUrl: REST_RPC.POLYGON, tryAggregate: true, })

joshstevens19 commented 1 year ago

oops let this one slip i guess ethers ^6.6.0 did some breaking changes will add to my list and support thanks for the code above

bradens commented 12 months ago

Would really like to see this as well. Is anyone actively working on this?

joshstevens19 commented 11 months ago

no but its pretty easy change PR welcome we can keep support for old one as well as you pass in the instance we can just add support for ethers 6 @bradens

bradens commented 11 months ago

no but its pretty easy change PR welcome we can keep support for old one as well as you pass in the instance we can just add support for ethers 6 @bradens

Got a PR up for you here: https://github.com/joshstevens19/ethereum-multicall/pull/72