Skip to content

Make multiple Ethereum network requests in a single HTTP query. ethcall for ethers v5.

License

Notifications You must be signed in to change notification settings

pickle-finance/ethers-multicall

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ethers-multicall

Make multiple Ethereum network requests in a single HTTP query. ethcall for ethers v5.

Fork details

This is a fork used by Pickle Finance, adding the following functionality:

  1. Support for OKExChain
  2. Support for Arbitrum

API

  • Contract(address, abi): Create contract instance; calling contract.callFuncName will yield a call object
  • all(calls): Execute all calls in a single request
  • calls: List of helper call methods
  • getEthBalance(address): Returns account ether balance

Example

import { Contract, Provider } from "ethers-multicall";
import { ethers } from "ethers";

import erc20Abi from "./abi/erc20.json";

const infuraKey = "INSERT_YOUR_KEY_HERE";
const provider = new ethers.providers.InfuraProvider("mainnet", infuraKey);

const daiAddress = "0x6b175474e89094c44da98b954eedeac495271d0f";

async function call() {
  const ethcallProvider = new Provider(provider);

  await ethcallProvider.init(); // Only required when `chainId` is not provided in the `Provider` constructor

  const daiContract = new Contract(daiAddress, erc20Abi);

  const uniswapDaiPool = "0x2a1530c4c41db0b0b2bb646cb5eb1a67b7158667";

  const ethBalanceCall = ethcallProvider.getEthBalance(uniswapDaiPool);
  const daiBalanceCall = daiContract.balanceOf(uniswapDaiPool);

  const [ethBalance, daiBalance] = await ethcallProvider.all([
    ethBalanceCall,
    daiBalanceCall,
  ]);

  console.log("ETH Balance:", ethBalance.toString());
  console.log("DAI Balance:", daiBalance.toString());
}

call();

About

Make multiple Ethereum network requests in a single HTTP query. ethcall for ethers v5.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 100.0%