Comments (3)
can you write me a little demo script and i can debug
from ethereum-multicall.
Hello Josh, thank you for answering;
Here it is script
import {
Multicall,
ContractCallResults,
ContractCallContext,
} from "ethereum-multicall";
import Web3 from "web3";
import { NetworkCoinToken } from "../models/models";
export const GetFinalResultv2 = async () => {
let tokens: any[] = [
{
id: 3,
name: "BNB",
shortName: "BNB",
contractAddress: "0xb8c77482e45f1f44de1745f52c74426c631bdd52",
decimalPlaces: 18,
networkId: 2,
},
{
id: 6,
name: "Uniswap",
shortName: "UNI",
contractAddress: "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984",
networkId: 2,
},
];
const walletAddress = "0xA9D1e08C7793af67e9d92fe308d5697FB81d3E43";
const contractCallContext: ContractCallContext[] = tokens.map(
(token: NetworkCoinToken) => ({
reference: token.contractAddress || "",
context: token.name,
contractAddress: token.contractAddress || "",
abi: [
{
name: "balanceOf",
type: "function",
stateMutability: "view",
inputs: [
{
name: "_owner",
type: "address",
},
],
outputs: [
{
name: "balance",
type: "uint256",
},
],
},
],
calls: [
{
reference: token.contractAddress || "",
methodName: "balanceOf",
methodParameters: [walletAddress || ""],
},
],
})
);
const multicall = new Multicall({
tryAggregate: true,
multicallCustomContractAddress:
"0xcA11bde05977b3631167028862bE2a173976CA11",
nodeUrl: "https://eth.merkle.io",
});
const getBlock = async (url: string) => {
try {
const web3 = new Web3(url);
const block = await web3.eth.getBlock(14353600);
return block;
} catch (error: any) {
console.log(error);
}
};
const getData = async () => {
let resultData: ContractCallResults | null = null;
try {
const numberBl = await getBlock("https://eth.merkle.io");
resultData = await multicall.call(contractCallContext, {
blockNumber: Number(numberBl?.number).toString(),
});
if (resultData) {
const currentResult =
resultData?.results[0]?.callsReturnContext[0]?.returnValues[0]?.hex;
const balance = currentResult ? BigInt(currentResult).toString() : "0";
console.log(balance);
return resultData;
// const balanceFormated = formatBalance(balance, numberToFormat);
}
} catch (error: any) {
console.log(error);
}
};
const finalData: any = (await getData()) || [];
console.log(finalData);
return finalData;
};
It works for me from the date when the multicall address was deployed on etherscan.
https://etherscan.io/address/0xca11bde05977b3631167028862be2a173976ca11#code
from ethereum-multicall.
I asked Matt from mds1 for same issue and he told me : "This is correct, you will not be able to use Multicall3 to read historical data from before Multicall3 was deployed. A workaround is to use geth's state overrides and place the Multicall3 bytecode at the expected address as part of your call." Can i somehow do workaround using this libary. And also can i provide chainId without requesting to get him from get_chainId or net_version bcs i already know wich chainId i want?
from ethereum-multicall.
Related Issues (20)
- multicall.call result success is true but no tx is sent to blockchain HOT 1
- Can we get multicall on Core Chain Mainnet HOT 1
- Accessing Multicall3 Contract Methods HOT 2
- returnValues is an array of values instead of an array of objects HOT 1
- Multicall fails on Arbitrum for most RPCs HOT 2
- How to get eth call data
- Does the repository support ethers ^6.6.0 HOT 6
- Multicall for zkSync Era (324) HOT 1
- Base Chain Support HOT 1
- Cleanup non issue
- Multicall get balances of a native currency in a wallet HOT 1
- Uncaught (in promise) Error: invalid address (argument="address", value=0, code=INVALID_ARGUMENT, version=address/5.7.0) (argument=null, value=0, code=INVALID_ARGUMENT, version=abi/5.7.0) HOT 1
- Execution failed
- Built-in support for Oasis Sapphire HOT 3
- Polygon zkEvm Mainnet blocNumber issue HOT 1
- Tron Mainnet
- Add support for Manta pacific chain
- Fix for Base Testnet (Sepolia)
- How to make multi call to native token (ETH)? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ethereum-multicall.