Skip to content
ethers.js-compatible wrapper around Multicall
JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
.gitignore
LICENSE
README.md
package-lock.json
package.json

README.md

ethcall

Utility library to make calls to Ethereum blockchain.

Uses MakerDAO's Multicall contract to make multiple requests in a single HTTP query. Encodes and decodes data automatically.

Inspired and powered by ethers.js.

npm install ethcall

API

  • Contract(address, abi): create contract instance; calling contract.call_func_name 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

const { ethers } = require('ethers');

const EthCall = require('ethcall');

const erc20Abi = require('./abi/erc20.json');

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

const daiAddress = '0x6b175474e89094c44da98b954eedeac495271d0f';

async function call() {
	const daiContract = new EthCall.Contract(daiAddress, erc20Abi);

	const uniswapDaiPool = '0x2a1530c4c41db0b0b2bb646cb5eb1a67b7158667';

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

	const data = await EthCall.all([ethBalanceCall, daiBalanceCall], provider);

	const ethBalance = data[0];
	const daiBalance = data[1];

	console.log('eth balance', ethBalance.toString());
	console.log('dai balance', daiBalance.toString());
}

call();
You can’t perform that action at this time.