rpc多链请求工具-开源

介绍

支持以太坊EVM协议的任意网络(github有合约代码,如果默认配置没有你的网络可以进行合约发布再将地址配置到工具中)

默认支持 ETHBSCHECOMATIC

相对于传统multicall

  1. 传统multicall:有并发限制,不支持同时多链,不支持请求失败,每一次请求都发rpc

  2. 新插件:支持动态配置参数,支持超高并发,支持同时请求多条链,支持配置允许请求失败(合约处理报错),自动聚合多个请求发rpc

npm: https://www.npmjs.com/package/@chainstarter/multicall-client.js

github: https://github.com/ChainStarter/multicall-client.js

欢迎star

使用

下载

npm i @chainstarter/multicall-client.js

config

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
        address: '',//multicall2 address
      },
      [ChainId.rinkeby]: {
        url: 'https://rinkeby.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161',
        address: '0x5ba1e12693dc8f9c48aad8770482f4739beed696'
      }
    }
  }
)

send calls

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

const contractBSC = new Contract(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]
})

multicall contract callData

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

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

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

multicallClient.getBlockHash(135484, ChainId.ETH).then(blockHash =>{
  
})
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值