1.4.2 • Published 2 years ago

@chainstarter/multicall-client.js v1.4.2

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

multicall-client.js

config v1.0.0

import {config, ChainId} from "@chainstarter/multicall-client.js";
ChainId.rinkeby = 4
const multicallConfig = config(
  {
    defaultChainId: 1,
    delay: 100,//debounce
    timeout: 20000,//ms
    maxCalls: 500,//Single request contains call
    allowFailure: true,//The result structure is different
    rpc: {
      [ChainId.ETH]: {
        url: '',// rpc url (https|wss)
        address: '',//multicall2 address
      },
      [ChainId.rinkeby]: {
        url: 'https://rinkeby.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161',
        address: '0x5ba1e12693dc8f9c48aad8770482f4739beed696'
      }
    }
  }
)

query calls v1.0.0

import {Contract, multicallClient} from "@chainstarter/multicall-client.js";

const contractBSC = new Contract(abi, address, ChainId.BSC);
// typescript:
// const contractBSC: any = new Contract(abi, address, ChainId.BSC);
// const contractBSC = newContract(abi, address, ChainId.BSC);
const contractHECO = new Contract(abi, address, ChainId.HECO);
const contractETH = new Contract(abi, address, ChainId.ETH);

const calls = [
        contractBSC.balanceOf(account),
        contractHECO.balanceOf(account),
        contractETH.balanceOf(account)
      ]
multicallClient(calls).then(result => {
	// allowFailure = true
	// result type = [[success, call1result], [success, call2result], [success, call3result]]
	// allowFailure = false
	// result type = [call1result, call2result, call3result]
})

getBlockInfo v1.0.0

import {multicallClient} from "@chainstarter/multicall-client.js";

multicallClient.getBlockInfo(ChainId.ETH).then(blockInfo =>{
  // blockInfo: {number, coinbase, difficulty, gasLimit, Timestamp, hash}
})

getEthBalance v1.0.0

import {multicallClient} from "@chainstarter/multicall-client.js";

multicallClient.getEthBalance(account, ChainId.ETH).then(ethBalance =>{
  
})

getBlockHash v1.0.0

import {multicallClient} from "@chainstarter/multicall-client.js";

multicallClient.getBlockHash(135484, ChainId.ETH).then(blockHash =>{
  
})

send transaction v1.3.1

import {Contract, multicallClientSend} from "@chainstarter/multicall-client.js";

/**
 import {useWeb3React} from "@web3-react/core";
 const {library} = useWeb3React()
 const provider = library.provider
 */
const provider = window.ethereum

const contractETH = new Contract(abi, address, ChainId.ETH);
multicallClientSend([
  contract.getRewardA(account),
  contract.getRewardB(account),
  contract.getRewardA(account2),
  contract.getRewardB(account3)
], provider).send({
  from: '',
  //...
}).on('transactionHash', (hash) => {
 
}).on('receipt', (rec) => {
    
}).on('error', (err) => {
    
  })

getTransactionReceipt v1.3.2

import {multicallClient} from "@chainstarter/multicall-client.js";

    multicallClient.getTransactionReceipt(transactionHash, ChainId.BSC).then(res => {
      
    }).catch(()=>{
      
    })

getWeb3 v1.3.2

import {getWeb3} from "@chainstarter/multicall-client.js";
const web3 = getWeb3(ChainId.BSC)
var contract = new web3.eth.Contract(contractABI, adderss);
//get event
contract.getPastEvents('EventA', {filter: {}, fromBlock: 10000, toBlock: 'latest'}).then((res) => {
  console.log(res)
})

support overloaded v1.4.0

Contract

contract A {
    function f() public pure returns (uint8 out) {
        out = 1;
    }

    function f(uint256 n) public pure returns (uint256 out) {
        out = n;
    }
    function f(uint256 n, address addr) public pure returns (uint256 out) {
        if(addr == address(0)){
            out = 0;
        } else{
            out =  n;
        }

    }
}

ABI

[
	{
		"inputs": [],
		"name": "f",
		"outputs": [
			{
				"internalType": "uint8",
				"name": "out",
				"type": "uint8"
			}
		],
		"stateMutability": "pure",
		"type": "function"
	},
	{
		"inputs": [
			{
				"internalType": "uint256",
				"name": "n",
				"type": "uint256"
			},
			{
				"internalType": "address",
				"name": "addr",
				"type": "address"
			}
		],
		"name": "f",
		"outputs": [
			{
				"internalType": "uint256",
				"name": "out",
				"type": "uint256"
			}
		],
		"stateMutability": "pure",
		"type": "function"
	},
	{
		"inputs": [
			{
				"internalType": "uint256",
				"name": "n",
				"type": "uint256"
			}
		],
		"name": "f",
		"outputs": [
			{
				"internalType": "uint256",
				"name": "out",
				"type": "uint256"
			}
		],
		"stateMutability": "pure",
		"type": "function"
	}
]
import {Contract, multicallClient} from "@chainstarter/multicall-client.js";

const contractETH = new Contract(abi, address, ChainId.ETH);

const calls = [
  contractETH.f(),// default overloaded last = f(uint256,address)
  contractETH["f()"](),
  contractETH["f(uint256)"](1),
  contractETH["f(uint256,address)"](1,0x0000000000000000000000000000000000000000),
      ]
multicallClient(calls).then(result => {
	//...
})
1.4.2

2 years ago

1.4.1

2 years ago

1.3.5

2 years ago

1.3.4

2 years ago

1.3.3

2 years ago

1.4.0

2 years ago

1.3.2

2 years ago

1.2.0

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

1.2.1

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.1.8

2 years ago

1.0.9

2 years ago

1.1.7

2 years ago

1.0.8

2 years ago

1.1.6

2 years ago

1.1.5

2 years ago

1.1.4

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago