Skip to content

Adding a thin Multicall3 client #3535

Open
@DefiDebauchery

Description

What feature should we add?

I quite enjoy and appreciate the multicall.py project, which utilizes web3py for transport. However, this package is in need of some maintenance, and since Multicall3 is fairly ubiquitous among most EVM chains, web3py might benefit from having a native module, similar to how it supports ENS.

Basic needs:

  • Ability to easily make single or multiple calls
  • Transparently compatible with Sync or Async Web3 instances
  • A constant default address, regardless of which Provider/Network you're using
  • ...but with the ability to override the address (in the case of zkSync)
  • A flag for whether any sub-calls within a multicall can fail (IOW: blockAndAggregate vs tryBlockAndAggregate)
  • Definable GAS_LIMIT for read calls, which differ on some smaller chains.

Nice to have:

  • Assign results to a defined key (no transformation needed)
  • Access to Multicall block functions, such as getBlockNumber(), getEthBalance(), to add to a Multicall execution
  • seth-style calls (e.g. ['balanceOf(address)(uint256)', my_address]), without having to initiate a Contract instance

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions