@rudra-xyz/web3-plugin-multicall
v0.1.0
Published
A web3.js 4.x Plugin for Interacting With Multicall Contract
Downloads
26
Maintainers
Readme
web3-plugin-multicall
The Multicall Web3.js Plugin enhances the functionality of the Web3.js library, enabling smooth and efficient interaction with the Multicall3.
Prerequisites
Installation
Note: Make sure you have installed the web3 version 4.0.3 or above.
yarn add @rudra-xyz/web3-plugin-multicall
Basic Usage
This plugin completely supports the Multicall3 contract functions. For detailed instructions on how to use the Multicall3 contract, please refer to this repo.
import { Web3 } from "web3";
import { MulticallPlugin } from '@rudra-xyz/web3-plugin-multicall';
import { ERC20_ABI } from "./abis/erc20";
const main = async () => {
const web3 = new Web3("https://eth.public-rpc.com");
web3.registerPlugin(new MulticallPlugin());
const erc20 = new web3.eth.Contract(
ERC20_ABI,
"0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984", // UNI Token on Ethereum mainnet
);
const calls = [
{
target: web3.multicall.contractAddress,
callData: web3.multicall.getLastBlockHash().encodeABI(),
},
{
target: erc20.options.address!,
callData: erc20.methods.totalSupply().encodeABI(),
},
];
const results = await web3.multicall.aggregate(calls).call();
console.log(results.returnData)
/*
[
'0x6471e50c10d51e141a41fdaebe5e3a4ec76deac3534009ab7d009b0eab6dcfba',
'0x0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000'
]
*/
};
main();
Reference
License
This app is open-source and licensed under the MIT license. For more details, check the License file.