mds1 / multicall Goto Github PK
View Code? Open in Web Editor NEWThis project forked from makerdao/multicall
Multicall: Aggregate multiple constant function call results into one
Home Page: https://multicall3.com
License: MIT License
This project forked from makerdao/multicall
Multicall: Aggregate multiple constant function call results into one
Home Page: https://multicall3.com
License: MIT License
Once deployed to the networks outlined in the README
, Multicall3
should be integrated into external libraries.
A list of external libraries that use existing Multicall
or Multicall2
contracts:
Link to explorer: https://explorer.roninchain.com/
Website: https://celo.org/
Explorer: https://explorer.celo.org/
I already funded the deployer account.
Explorer: https://moonriver.moonscan.io/
Would it be possible to add another utility function equivalent to do multiple eth_estimateGas
with some gasleft()
magic ✨
Guess its too hard to get it right
Please deploy MulticallV3 on the Flare Mainnet.
I've sent you 0.5 FLR to pay for deploy costs, you can set 25 gwei as gas price and no priority fee.
Chain | ChainId | RPC endpoint | Explorer | Funds sent | Transaction |
---|---|---|---|---|---|
Flare Mainnet | 14 | https://flare-api.flare.network/ext/C/rpc | https://flare-explorer.flare.network/ | 0.5 FLR | Link to explorer |
Link to blockchain explorer: https://explorer.harmony.one/
Please deploy Multicall v3 to Godwoken Mainnet (https://chainlist.org/chain/71402). Please disregard old RPC on Chainlist. It was used as placeholder. We're updating it. Godwoken Mainnet has just been released - godwokenrises/godwoken-info#36.
Funds have been sent already to: 0x05f32B3cC3888453ff71B01135B34FF8e41263F2. 400 native tokens.
RPC: https://v1.mainnet.godwoken.io/rpc
Block explorer: https://v1.gwscan.com
cc @mds1
0x05f32B3cC3888453ff71B01135B34FF8e41263F2
- https://explorer-testnet.thundercore.com/tx/0x9fb1111dc006657870858811767c0f03e20063099f291773e49264bf4e20279eReally appreciate you took the time to mine the distinct 0xCA11....CA11
deployment address for Multicall3 :)
Please deploy MulticallV3 on the test and canary networks of Flare.
I've sent you more than enough to pay for deploy costs, you can set 25 gwei as gas price and no priority fee.
Chain | Explorer | Funds sent | Transaction |
---|---|---|---|
Coston | https://coston-explorer.flare.network/ | 1 CFLR | Link to explorer |
Songbird | https://songbird-explorer.flare.network/ | 1 SGB | Link to explorer |
Currently, the SDK uses Multicall2. Upgrade to Multicall3 and a factory function.
Hi again :-),
Here are the info about the chain :
ChainID: 1234
Network Name: Step Network
RPC URL: https://rpc.step.network
Currency Symbol: FITFI
Block Explorer URL: https://stepscan.io/
I've transfered FITFI to the deployer account.
0x05f32B3cC3888453ff71B01135B34FF8e41263F2
Really appreciate you took the time to mine the distinct 0xCA11....CA11
deployment address for Multicall3
:)
Looking to add the static address to Kava - Chain ID 2222
RPC: https://evm2.kava.io
We've funded the 0x05f32B3cC3888453ff71B01135B34FF8e41263F2
address with 0.2 KAVA for deployment costs.
Thank you!
Requesting support for Multicall3 on Canto (and its testnet). Can be found here:
Network Name: CANTO
New RPC URL: https://canto.gravitychain.io/
Chain ID: 7700
Currency Symbol: CANTO
Block Explorer URL: https://evm.explorer.canto.io/
Explorer: https://moonbase.moonscan.io/
I've funded the specified address with 5 DEV tokens (TestNet): https://moonbase.moonscan.io/tx/0xb38818de51a430b5acad9cae072431618619786af35df1f9a3cee7518330fa46
Thanks in advance :)
Is it possible to provide the signed transactions without chainId in order to deploy to local networks and subnets, etc?
We have a private chain for internal testing and I want to use the multicall contract with the same address. It's possible if it's deployed with create2 with specific args. Could we achieve it?
Hi there, I'm Jacky from Ape Board!
Ape Board is heavily using Multicall and really love the improvements on MulticallV3!
Do you by any chance have some time to deploy it on Boba, Cronos, Aurora, Astar and Metis?
I saw that the deployment gas used was around 872,776 (rounded up to 900,000),
So I've sent along some deployment costs to 0x05f32B3cC3888453ff71B01135B34FF8e41263F2
on these chains.
Chain | Funds sent | Transaction |
---|---|---|
BOBA | 0.0009 ETH | https://blockexplorer.boba.network/tx/0xc3242...09a696 |
CRONOS | 4.5 CRO | https://cronos.org/explorer/tx/0x193fd...72e92b |
AURORA | 0.000027 ETH | https://aurorascan.dev/tx/0x0af59...1ac04e |
ASTAR | 0.0009 ASTR | https://blockscout.com/astar/tx/0xe2d31...cbff25 |
METIS | 0.0072 METIS | https://andromeda-explorer.metis.io/tx/0x18149...fdb4e8 |
Please let me know if the funds are not enough, so I could send more!
https://fuse.io is a low-cost EVM chain that we at Beefy Finance have contracts deployed on, and would like to take advantage of the static address.
I've funded the 0x05f32B3cC3888453ff71B01135B34FF8e41263F2
address with 1 FUSE, which should be more than enough to deploy the MulticallV3 contract. Chain ID 122
Thank you!
Please deploy MulticallV3 on the 2nd test network of Flare.
I've sent you 1 C2FLR to pay for deploy costs, you can set 25 gwei as gas price and no priority fee.
Chain | Explorer | Funds sent | Transaction |
---|---|---|---|
Coston2 | https://coston2-explorer.flare.network/ | 1 C2FLR | Link to explorer |
Explorer: https://moonscan.io/
Unless I am misunderstanding how I should this, I think that the current pragma is unnecessarily restrictive by being locked to 0.8.12
. I am getting this compiler error in my project, which uses v0.8.17:
Compiler run failed
error[5333]: ParserError: Source file requires different compiler version (current compiler is 0.8.17+commit.8df45f5f.Darwin.appleclang) - note that nightly builds are considered to be strictly less than the released version
--> lib/multicall/src/Multicall3.sol:2:1:
|
2 | pragma solidity 0.8.12;
| ^^^
Is there any specific reason for locking in the pragma to v0.8.12 and not writing it like this?
pragma solidity >=0.8.12 <0.9.0;
It also happens that this is a version that contains an important bug related to abi.encodeCall
, which is highly relevant in the context of Multicall.
Link to block explorer: https://cronoscan.com/
Hi,
I'm new to multicall functions, and trying to use it with my own project in Next.js & ethers.js.
With stateMutability
as payable
, I got a transaction object as result of calling aggregate functions.
If I want to get the results data, they only way I found is to modify the aggregate function's stateMutability
to view
in the ABI file.
May I know why these functions are set as payable
in the first place?
I guess users wants the results data more?
OR, did I use it the wrong way?
If so, what is the correct way for calling aggregate functions with stateMutability
as payable
?
Thanks in advance.
Hey guys, great work with Multicall3! I am currently integrating the contracts with our DefiYield app, moving from v2 to v3. All is great, however, we are missing a few networks. Those are:
OKC: https://www.oklink.com/en/okc
Klaytn: https://scope.klaytn.com/
Milkomeda: https://explorer-mainnet-cardano-evm.c1.milkomeda.com/
KCC: https://explorer.kcc.io/
AURORA https://aurorascan.dev/
Can you guys please deploy on these networks? We will be happy to send funds to cover the deployment cost.
I am working on setting up a way of receiving security advisories for contracts / protocol exploits through our DeFi Threat Matrix repo. Part of this was creating an example advisory through GitHub's security options.
In doing some preliminary research for finding a potential security issue with contracts, I came across this issue raised originally in the Uniswap V3 repo concerning the usage of msg.value
with having payable
This is present when Multicall is used on any contract which reads the value of msg.value. Multicall is a pattern to call several contract endpoints in one transaction, using delegatecall. A contract endpoint may implicitly assume that it is called in a single transaction, by looking at msg.value. Since the value is defined per transaction, calling the same endpoint twice in one multicall means that the same msg.value may be read several times, even though the value was only transferred once.
Adding additional documentation concerning this issue is my suggestion, I looked at the contract's and did not find any disclaimer, I do not know how you would like to document it, etc. Perhaps a @custom:natspec
like :disclaimer
or :advisory
, all up to you.
The draft reference advisory can be found below:
cheers
Hi, thank you for the development of multicall3, it is very useful.
I have a request for a feature that can further reduce node calls. Rather than hitting the eth rpc method eth_getCode, we can instead implement a getCodeMulti method, something like the below:
struct ReturnCode {
address addr;
bytes code;
}
function getCodeMulti(address[] calldata addresses) public payable returns (ReturnCode[] memory returnContracts) {
uint256 length = addresses.length;
returnContracts = new ReturnCode[](length);
address addr;
for (uint256 i=0; i < length;) {
addr = addresses[i];
returnContracts[i] = ReturnCode(addr, addr.code);
unchecked {++ i;}
}
}
This function would allow for users to get bytecode from multiple contract addresses with only one rpc call. This may be out of scope for this project as it would require redeployment accross all networks, but happy to open a PR or contribute where I can if this feature seems like something worth adding.
Hi, awesome contract!
From Optimism docs:
Deprecation notice
We are transitioning our test network to Goerli. We expect Optimistic Kovan to exist until August 15th, 2022.
Could you please deploy it to Optimism Göerli? Thank you!
Please deploy Multicall v3 to Godwoken Testnet (https://chainlist.org/chain/71401).
Funds have been sent already to: 0x05f32B3cC3888453ff71B01135B34FF8e41263F2.
RPC: https://godwoken-testnet-v1.ckbapp.dev/
Block explorers:
More docs if needed: https://startwithnervos.com/godwoken
cc @mds1
Chain Name: Velas
Chain Id: 106
Chain Details: https://chainlist.org/chain/106
Explorer: https://evmexplorer.velas.com/
RPC: https://evmexplorer.velas.com/rpc
Deployer Wallet filled: https://evmexplorer.velas.com/address/0x05f32B3cC3888453ff71B01135B34FF8e41263F2
Hi, this is a request to deploy multicall3 on two chains. Fee coins have been transfer to the deployer account.
First chain :
ChainID: 4689
Network Name: Iotex
RPC URL: https://iotex-mainnet.gateway.pokt.network/v1/lb/6176f902e19001003499f492
Currency Symbol: IOTX
Block Explorer URL: https://iotexscan.io/
Second chain :
ChainID: 32520
Network Name: Bitgert
RPC URL: https://rpc.icecreamswap.com
Currency Symbol: BRISE
Block Explorer URL: https://brisescan.com
OKC (previously known as OEC, OKEX, EXCHAIN)
https://www.oklink.com/en/okc
Sent 0.01 OKT to 0x05f32B3cC3888453ff71B01135B34FF8e41263F2
It's possible to use 0.1 gwei for transaction and it will go through
HECO
https://hecoinfo.com/
Sent 0.05 HT to 0x05f32B3cC3888453ff71B01135B34FF8e41263F2
For HECO gas price is 2.25 gwei
Thank you in advance
Website: https://www.oasisprotocol.org/
Explorer: https://explorer.emerald.oasis.dev/
I already funded the deployer account.
Requesting support for Multicall3 on Polygon zkEVM testnet. The block explorer can be found here:
ChainID: 1422
Network Name: Polygon zkEVM Testnet
RPC URL: https://rpc.public.zkevm-test.net/
Currency Symbol: ETH
Block Explorer URL: https://explorer.public.zkevm-test.net/
Requesting support for Multicall3 on Shardeum Sphinx Betanet. Can be found here:
Network Name: Shardeum Sphinx
New RPC URL: https://sphinx.shardeum.org/
Chain ID: 8082
Currency Symbol: SHM
Block Explorer URL: https://explorer-sphinx.shardeum.org/
https://docs.shardeum.org/network/endpoints
I can send you gas if needed.
Multicall is let's say, "Awesome" and solves many problems for all users, it will be ideal if it is more widely known. Have you thought about creating an ERC? Or have I missed it?
Providing a json file may be useful, as I am using this for an EIP
Perhaps using the chains canonical ChainId as an identifier would be more appropriate (as then you could use get_chainId from the contract to test against the address mapped to the chain_id prefix
e.g.:
[
{
"Network": "Address",
"Mainnet": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Kovan": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Rinkeby": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Görli": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Ropsten": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Sepolia": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Optimism": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Optimism Kovan": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Arbitrum": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Arbitrum Rinkeby": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Polygon": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Mumbai": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Gnosis Chain (xDai)": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Avalanche": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Avalanche Fuji": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Fantom Testnet": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Fantom Opera": "0xcA11bde05977b3631167028862bE2a173976CA11",
"BNB Smart Chain": "0xcA11bde05977b3631167028862bE2a173976CA11",
"BNB Smart Chain Testnet": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Moonbeam": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Moonriver": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Moonbase Alpha Testnet": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Harmony": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Cronos": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Fuse": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Songbird Canary Network": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Coston Testnet": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Boba": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Aurora": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Astar": "0xcA11bde05977b3631167028862bE2a173976CA11",
"OKC": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Heco Chain": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Metis": "0xcA11bde05977b3631167028862bE2a173976CA11",
"RSK": "0xcA11bde05977b3631167028862bE2a173976CA11",
"RSK Testnet": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Evmos": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Evmos Testnet": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Thundercore": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Thundercore Testnet": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Oasis": "0xcA11bde05977b3631167028862bE2a173976CA11",
"Celo": "0xcA11bde05977b3631167028862bE2a173976CA11"
}
]
https://evmos.org/ is a new Polkadot EVM compatible chain.
I've funded the testnet deployer EOA with testnet EVMOS and will try and fund mainnet EOA too.
Evmos Mainnet:
Chain ID: 9001
Node RPC Url: https://eth.bd.evmos.org:8545
Evmos Testnet:
Chain ID: 9000
Node RPC Url: https://eth.bd.evmos.dev:8545 (note .dev (testnet) vs .org)
getBasefee
will either (1) revert, or (2) return something else if 0x48
is some other opcodegetCurrentBlockDifficulty
actually returns the value of the PREVRANDAO
opcode: https://eips.ethereum.org/EIPS/eip-4399Could you please deploy it to telos? Thank you!
Hey @mds1! Is it possible to get the revert reason from the individual calls if any fail? I'm playing around with ethers.js callStatic to pull out the info but the best I can get so far is which call failed, but not why it failed.
Hello,
Here are the info about the chain :
ChainID: 53935
Network Name: DFK Chain
RPC URL: https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc
Currency Symbol: JEWEL
Block Explorer URL: https://subnets.avax.network/defi-kingdoms
I've sent few JEWEL to the deployer account to cover the deploy.
Hey Matt, thanks for building this. I just started playing with it today, and it's awesome.
I was wondering if you know of any good example repositories that could be included in the README? I think that it would be helpful to provide some - for instance, a repo that uses multicall to query the token balances of multiple addresses is probably a common use case.
Hi,
Could you also deploy the Multicall3 contract on the Celo Alfajores testnet?
Website: https://docs.celo.org/network
Explorer: https://explorer.celo.org/alfajores
Chain ID: 44787
I already funded the deployer account.
Thanks 🙏
Link to explorer: https://aurorascan.dev/
Requesting support for Multicall3 on Arbitrum Nova. The block explorer can be found here: https://nova.arbiscan.io/
The chain currently has Multicall2 deployed at: https://nova.arbiscan.io/address/0x5e1eE626420A354BbC9a95FeA1BAd4492e3bcB86
I have already sent 0.01 ETH to 0x05f32B3cC3888453ff71B01135B34FF8e41263F2 :)
Thank you!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.