
Research
/Security News
npm Author Qix Compromised via Phishing Email in Major Supply Chain Attack
npm author Qix’s account was compromised, with malicious versions of popular packages like chalk-template, color-convert, and strip-ansi published.
ethers-multicall-provider
Advanced tools
⚡🕰️ Drop-in solution to batch smart contract RPC calls in a single RPC query via Multicall!
⚡🚀 Call any set of functions from any set of smart contracts in a single RPC query, seamlessly using ethers' providers API!
Querying an RPC endpoint can be very costly (100+ queries) when loading data from multiple smart contracts. With multicall, batch these queries into a single, on-chain query, without additional over-head!
ethers-multicall-provider
is a drop-in solution batching ALL smart contract calls!- const provider = getDefaultProvider("...");
+ const provider = MulticallWrapper.wrap(getDefaultProvider("..."));
[!WARNING]
Ethers made changes to theirProvider
&Signer
classes throughout v6, that are breaking types. For versionsv6.7
tov6.10
, useethers-multicall-provider@6.2.0
. For later versions, useethers-multicall-provider@6.3.0
.
npm install ethers-multicall-provider
yarn add ethers-multicall-provider
[!WARNING]
This version is deprecated and probably is not as efficient as with v6.
npm install ethers-multicall-provider@3.1.2
yarn add ethers-multicall-provider@3.1.2
Wrap any ethers provider using MulticallWrapper.wrap
and use the wrapped provider anywhere you want to batch calls!
import { ethers } from "ethers";
import { MulticallWrapper } from "ethers-multicall-provider";
const provider = MulticallWrapper.wrap(getDefaultProvider("..."));
MulticallWrapper.isMulticallProvider(provider); // Returns true, only useful for type safety.
let uni = new ethers.Contract("0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984", UniAbi, provider);
// Calls performed simultaneously are automatically batched when using the multicall provider.
Promise.all([
uni.name(),
uni.symbol(),
uni.decimals(),
uni.inexistantFunction().catch(() => "default value"),
]).then(console.log);
// When batching calls is no longer expected, just disable it.
provider.isMulticallEnabled = false;
// Calls performed simultaneously will still perform 2 separate on-chain calls.
Promise.all([uni.name(), uni.symbol()]).then(console.log);
msg.sender
overrideBecause calls are batched through the Multicall contract, all calls will inherently have the Multicall contract as msg.sender
. This has no impact on most queries, because most of the time msg.sender
is not used in view functions ; but it may introduce unexpected behaviors in specific smart contracts.
To circumvent this, just use the default ethers provider in places where you don't want msg.sender
to be overriden.
Starting from ethers-v6
, network is no longer cached in the provider, so that each RPC call first requests the network and updates the provider consequently. Using ethers-multicall-provider
, the first network the provider is connected to is cached and can only be changed by calling fetchNetwork()
.
FAQs
⚡🕰️ Drop-in solution to batch smart contract RPC calls in a single RPC query via Multicall!
The npm package ethers-multicall-provider receives a total of 28,748 weekly downloads. As such, ethers-multicall-provider popularity was classified as popular.
We found that ethers-multicall-provider demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
npm author Qix’s account was compromised, with malicious versions of popular packages like chalk-template, color-convert, and strip-ansi published.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.